SaltStack: Chame um único estado de um arquivo sls

12

Não consigo chamar um único estado de um arquivo sls.

Todo o arquivo sls funciona

Isso funciona:

salt-ssh w123 state.sls monitoring

Isso funciona:

salt-ssh w123 state.show_sls monitoring

Um item da saída acima:

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

O que eu tentei

Agora quero chamar apenas monitoring_packages , não todo o arquivo sls:

Falha:

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'

Falha:

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

Pergunta

Como chamar meu estado único monitoring_packages ?

Versão

salt:/srv # salt-ssh --version
salt-ssh 2015.8.3 (Beryllium)
    
por guettli 31.05.2016 / 09:10

3 respostas

10

Me deparei com este post enquanto também tentava descobrir como fazer isso com chamadas salt regulares (ou seja, não salt-ssh ).

Se você tiver o seguinte arquivo SLS (foo.sls):

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

Você pode executar o seguinte comando para executar apenas essa entrada no arquivo de estado:

salt '*' state.sls_id bar foo

E novamente, eu também não sabia disso. Eu encontrei a resposta em um comentário em uma discussão do grupo do Google que apontou para um commit < a href="https://github.com/saltstack/salt/commit/3b20382505056bc47545fe2665d0ff3bf1e01572"> aqui .

    
por 11.07.2017 / 15:32
1

Parece que este é um problema já conhecido: link

Funciona fora do salt-ssh. Parece que a função precisa ser adicionada a esse wrapper.

    
por 15.06.2016 / 18:05
0
salt '*target*' state.sls  monitoring.<sls_file_name> <task name> -l debug

Exemplo: Suponha que eu tenha um estado para elasticserach com um arquivo sls chamado settings.sls e dentro desse arquivo suponha que eu tenha a tarefa restart_elastic_search, agora eu quero chamar essa tarefa específica.

salt '*elastic*' state.sls  elasticsearch.settings restart_elastic_search -l debug
    
por 18.03.2019 / 12:53

Tags