
.::更新-解決済み::。
@wirap の支援のおかげで、動作するようになりました。スクリプト ディレクトリをシンボリックリンクし/etc/salt/states/scripts
、このtest.sls
構成を使用して動作するようになりました。
/root/bin/updater/scripts/pam-setup-access:
file.managed:
- name: /tmp/pam-setup-access
- source: salt://scripts/pam-setup-access
- mode: 0700
run_script:
cmd.run:
- name: /tmp/pam-setup-access
file.absent:
- name: /tmp/pam-setup-access
私はsalt-sshを初めて使用しており、いくつかの情報を探していますここ管理ボックス ( /root/bin/updater/scripts/pam-setup-access
) にあるスクリプトを、ルートアクセス権を持つリモート ノードで実行する方法について。
ファイルを作成したのですがstate
(下記)、どこに配置すればいいのかわかりません。salt-sshドキュメント言及しただけな/etc/salt/master
ので調べてみましたがこれらのドキュメントvagrant とパッケージのインストールに特有のようです。
add script:
file.managed:
- name: pam-setup-access
- source: /root/bin/updater/scripts/pam-setup-access
run script:
cmd.run:
- name: pam-setup-access
最後に、最初のリンクに示されているように、現在のディレクトリから状態ファイルを単純に実行してみましたが、イライラするばかりでした。何が足りないのでしょうか?
# salt-ssh '*' state.apply test.sls
nod0:
[CRITICAL] Unable to import msgpack or msgpack_pure python modules
Function state.apply is not available
nod1:
[CRITICAL] Unable to import msgpack or msgpack_pure python modules
Function state.apply is not available
。:: アップデート ::。
マスターとは別のネットワーク (DMZ) に複数の「ミニオン」が存在するため、salt-ssh を使用する必要があります。私の理解では、従来の salt 設定では、ミニオンが salt マスターに接続する必要があります。
投稿後、salt-sshをインストールしましたソルトスタックリポジトリこれにより、上記のエラーは解消されたようですmsgpack
。また、上記の Vagrant 固有のリンクの例をいくつか変更し、の下にmaster
ファイルとstates
ディレクトリを追加しました/etc/salt
。状態ファイル (上記) を の下に配置しました/etc/salt/states/test.sls
。結果は以下のとおりです。
@wirap の提案に従って、add script
との間にアンダースコアを追加しました。これにより、以下に示すようにさらに進みました。クライアントまたはサーバーのスクリプト パスに関連するエラーがあるようです。まだわかりません。ファイル名のみ (.sls 拡張子なし) で呼び出す必要があるようです。run script
state.apply
.sls
/etc/salt/マスター:
file_roots:
base:
- /etc/salt/states
今 salt-ssh を起動すると、次のようになります:
# salt-ssh '*' state.apply test
nod0:
----------
ID: add_script
Function: file.managed
Name: pam-setup-access
Result: False
Comment: Specified file pam-setup-access is not an absolute path
Started: 11:53:50.237379
Duration: 0.602 ms
Changes:
----------
ID: run_script
Function: cmd.run
Name: pam-setup-access
Result: False
Comment: Command "pam-setup-access" run
Started: 11:53:50.238629
Duration: 8.297 ms
Changes:
----------
pid:
1037
retcode:
127
stderr:
/bin/bash: pam-setup-access: command not found
stdout:
Summary for nod0
------------
Succeeded: 0 (changed=1)
Failed: 2
------------
Total states run: 2
Total run time: 8.899 ms
nod1:
----------
ID: add_script
Function: file.managed
Name: pam-setup-access
Result: False
Comment: Specified file pam-setup-access is not an absolute path
Started: 11:53:50.476743
Duration: 0.555 ms
Changes:
----------
ID: run_script
Function: cmd.run
Name: pam-setup-access
Result: False
Comment: Command "pam-setup-access" run
Started: 11:53:50.477906
Duration: 7.5 ms
Changes:
----------
pid:
30772
retcode:
127
stderr:
/bin/bash: pam-setup-access: command not found
stdout:
Summary for nod1
------------
Succeeded: 0 (changed=1)
Failed: 2
------------
Total states run: 2
Total run time: 8.055 ms
答え1
- salt-ssh (「salt-minion をインストールせずに ssh 経由で salt コマンドと状態を実行します。」) を使用しますか? この方法は、minions に salt-minion をインストールできない場合にのみ実行する必要があります。
- 状態はどこに保存しましたか?通常は/etc/salt/masterの設定で次のように記述します。状態ファイルを置くパス
- 例で示されている状態をそのまま使用しないでください。ID 宣言(
add script:
)。 - エラーメッセージは私には分かりません。このスレッドここ次のような提案をします。「msgpack エラーは、まったく関係がないため、非常に誤解を招きます。1 つのミニオンの server.conf ファイルの 1 つに無効な utf-8 があり、もう 1 つのミニオンにはそのファイルが存在しないようです。」状態 ID にスペース (' ') が含まれている可能性が強く疑われます。私の経験では、状態ファイルまたはピラーに無効な文字が含まれていると、SaltStack は非常に誤解を招くエラー メッセージを表示することがあります。
追加のヒント:
- 見てここ状態ツリーの設定方法については、こちらをご覧ください。
- SaltStackのプリインストール版(docker、Vagrant?)を使って、すでに動作しているものを使って、どのように動作するかを学ぶのもいいでしょう。UtahDaveはSaltStackでかなり活動的なので、彼のものを使うのがいいでしょう。デモ(免責事項: これを自分でテストしたわけではありません!)
アップデート: file.managedを使用する場合:
source
のパラメータはfile.managed
、ターゲットではなく、マスター上のパス(状態パスを基準とした相対パス)です。- ターゲット上のパスを指定する必要があるため、エラーが発生します。「指定されたファイル pam-setup-access は絶対パスではありません」
例:
/root/bin/updater/scripts/pam-setup-access
file.managed:
- source: salt://files/pam-setup-access
は以下と同じです:
some-arbitrary-id
file.managed:
- name: /root/bin/updater/scripts/pam-setup-access
- source: salt://files/pam-setup-access
https://docs.saltstack.com/en/develop/ref/states/all/salt.states.file.html#module-salt.states.file
cmd.run の場合も同様です。
読む一般的なSaltStack チュートリアル。状態を設計するときに、salt-ssh と salt のどちらを使用するかは問題ではありません。混乱しないでください。