saltstack: use um módulo Python nos dois estados e no pilar

1

Eu tenho um módulo personalizado com uma função que eu posso usar nos meus estados assim

{% set myvar = salt['mymodule.myfunction']() %}

Agora eu quero / preciso usá-lo no meu pilar. Eu tentei chamar da mesma maneira, mas recebi um erro

Jinja variable 'salt.loader.LazyLoader object' has no attribute 'mymodule.myfunction'

Existe alguma maneira de declarar este módulo e funcionar como válido no pilar?

Obrigado

editar

A função real é uma regex simples para converter o ID do servidor em uma forma abreviada dele. Eu finalmente implementei a funcionalidade real com o Jinja nos dois estados e no pilar, e funciona. Eu quero usá-lo em estados e pilar para ser capaz de carregar um arquivo .sls, se existir para substituir a configuração padrão por per-minion.

Então, meu problema está realmente resolvido, mas a questão por trás: como ter um módulo (execução) que pode ser carregado nos estados e no pilar, ainda é relevante, eu acho. Eu posso renomear minha pergunta.

    
por daks 16.08.2016 / 14:05

2 respostas

1

A compilação do pilar acontece no mestre, não no servo. Isso significa que os módulos disponíveis somente na árvore salt://... (por exemplo, em salt://_modules ) não podem ser usados dentro de arquivos de pilar.

Para usar o módulo em um arquivo de pilar, ele também deve estar disponível para o mestre. Na configuração padrão, isso deve ser possível copiando o módulo para /var/cache/salt/master/extmods/modules . Para evitar a necessidade de manter os módulos em dois locais, pode-se simplesmente adicionar um link de símbolo:

ln -s /srv/salt/_modules /var/cache/salt/master/extmods/modules

Dependendo dos valores das opções extension_modules e module_dirs em /etc/salt/master , o caminho real que deve ser usado pode ser diferente.

    
por 28.02.2017 / 14:40
0

Essa pode não ser exatamente a solução correta, mas há um mecanismo dentro do Salt para gerar dados de pilar chamando pilar externo . Que permite usar qualquer informação definida fora do sal. Observe que você precisará atualizar a opção ext_pillar na configuração do seu sal-mestre para configurar a interface ext_pillar a ser executada.

Para uma lista completa das funções disponíveis do ext_pillar, consulte: link

    
por 20.09.2016 / 00:17