web-dev-qa-db-ja.com

SaltStack:slsファイルの単一の状態を呼び出す

Slsファイルの単一の状態を呼び出せません。

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)
12
guettli

私はこの投稿に出くわしましたが、通常のsalt呼び出しでこれを行う方法を理解しようとしました(つまり、ではありません) salt-ssh)。

次のSLSファイル(foo.sls)がある場合:

bar:
   file.managed:
       - source: salt://some/file

次のコマンドを実行して、状態ファイル内のそのエントリのみを実行できます。

salt '*' state.sls_id bar foo

また、私もこれを知りませんでした。答えは Googleグループディスカッション のコメントにあります ここ がコミットを指していました。

11
Mike

これは既知の問題のようです: https://github.com/saltstack/salt/issues/2925

Salt-sshの外でも動作します。関数をそのラッパーに追加する必要があるようです。

2
Ch3LL
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
0
Vaibhav Jain