Slsファイルの単一の状態を呼び出せません。
これは機能します:
salt-ssh w123 state.sls monitoring
これは機能します:
salt-ssh w123 state.show_sls monitoring
上記の出力の1つの項目:
monitoring_packages:
----------
__env__:
base
__sls__:
monitoring.packages
pkg:
|_
----------
pkgs:
- python-psutil
- installed
|_
----------
order:
10000
次に、slsファイル全体ではなく、monitoring_packages
のみを呼び出します。
失敗する:
salt:/srv # salt-ssh w123 state.sls_id monitoring_packages monitoring
w123:
Data failed to compile:
----------
No matching sls found for 'monitoring' in env 'base'
失敗する:
salt:/srv # salt-ssh w123 state.single monitoring.monitoring_packages
w123:
TypeError encountered executing state.single: single() takes at least 2 arguments (1 given)
単一の州を呼び出す方法monitoring_packages
?
salt:/srv # salt-ssh --version
salt-ssh 2015.8.3 (Beryllium)
私はこの投稿に出くわしましたが、通常のsalt呼び出しでこれを行う方法を理解しようとしました(つまり、ではありません) salt-ssh)。
次のSLSファイル(foo.sls)がある場合:
bar:
file.managed:
- source: salt://some/file
次のコマンドを実行して、状態ファイル内のそのエントリのみを実行できます。
salt '*' state.sls_id bar foo
また、私もこれを知りませんでした。答えは Googleグループディスカッション のコメントにあります ここ がコミットを指していました。
これは既知の問題のようです: https://github.com/saltstack/salt/issues/2925
Salt-sshの外でも動作します。関数をそのラッパーに追加する必要があるようです。
salt '*target*' state.sls monitoring.<sls_file_name> <task name> -l debug
例:settings.slsという名前のslsファイルを使用してelasticserachの状態があり、そのファイル内にタスクrestart_elastic_searchがあるとします。ここで、この特定のタスクを呼び出します。
salt '*elastic*' state.sls elasticsearch.settings restart_elastic_search -l debug