SaltStack: Wywołaj pojedynczy stan pliku SLS

12

Nie mogę wywołać pojedynczego stanu pliku SLS.

Działa cały plik SLS

To działa:

salt-ssh w123 state.sls monitoring

To działa:

salt-ssh w123 state.show_sls monitoring

Jedna pozycja powyższej produkcji:

monitoring_packages:
    ----------
    __env__:
        base
    __sls__:
        monitoring.packages
    pkg:
        |_
          ----------
          pkgs:
              - python-psutil
        - installed
        |_
          ----------
          order:
              10000

Co próbowałem

Teraz chcę tylko zadzwonić monitoring_packages, a nie cały plik sls:

Nie działa:

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'

Nie działa:

salt:/srv # salt-ssh w123 state.single monitoring.monitoring_packages
w123:
    TypeError encountered executing state.single: single() takes at least 2 arguments (1 given)

Pytanie

Jak nazwać mój pojedynczy stan monitoring_packages?

Wersja

salt:/srv # salt-ssh --version
salt-ssh 2015.8.3 (Beryllium)
guettli
źródło

Odpowiedzi:

11

Natknąłem się na ten post, jednocześnie próbując wymyślić, jak to zrobić za pomocą zwykłych wywołań soli (tj. Nie salt-ssh ).

Jeśli masz następujący plik SLS (foo.sls):

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

Możesz uruchomić następującą komendę, aby wykonać tylko ten wpis w pliku stanu:

salt '*' state.sls_id bar foo

I znowu tego też nie wiedziałem. Odpowiedź znalazłem w komentarzu w dyskusji grupowej Google, która wskazywała na tutaj zatwierdzenie .

Mikrofon
źródło
0
salt '*target*' state.sls  monitoring.<sls_file_name> <task name> -l debug

Przykład: Załóżmy, że mam stan dla elasticserach z plikiem SLS o nazwie settings.sls, a wewnątrz tego pliku załóżmy, że mam zadanie restart_elastic_search, teraz chcę wywołać to konkretne zadanie.

salt '*elastic*' state.sls  elasticsearch.settings restart_elastic_search -l debug
Vaibhav Jain
źródło