Estou apenas começando a implantar o SaltStack nos meus servidores. Então, eu tenho o seguinte arquivo /srv/salt/postfix/init.sls
:
# Ensure postfix installed and set to autostart on boot
postfix:
pkg.installed: []
service.running:
- require:
- pkg: postfix
- enable: True
# Restart on change to main.cf or any of the *.db files
postfix.restart:
service.running:
- require:
- pkg: postfix
- name: postfix
- watch:
- file: "/etc/postfix/main.cf"
- file: "/etc/postfix/*.db"
# Without this, first watch above fails
/etc/postfix/main.cf:
file.exists: []
/etc/postfix/canonical:
file.managed:
- require:
- pkg: postfix
- source: salt://postfix/canonical
- template: jinja
/etc/postfix/canonical.db:
cmd.wait:
- name: /usr/sbin/postmap /etc/postfix/canonical
- watch:
- file: /etc/postfix/canonical
Basicamente, quero reiniciar o Postfix sempre que o arquivo /etc/postfix/canonical.db
for alterado.
Mas sempre que executo esse estado, sempre recebo um erro para o estado postfix.restart
:
ID: postfix.restart
Function: service.running
Name: postfix
Result: False
Comment: The following requisites were not found:
watch:
file: /etc/postfix/*.db
Started:
Duration:
Changes:
Outros estados são executados perfeitamente.
Eu sou um novato w.r.t. SaltStack, então, por favor, me ajude a descobrir onde eu errei ... e se eu realmente escrevi uma fórmula 'apropriada' SaltStack.
Obrigado!
PS: salt --version
retorna salt 2015.5.0 (Lithium)
e eu estou no Ubuntu.
PPS: Alterar de *.db
para canonical.db
não altera o resultado: ainda há erro no requisito watch:
.
PPPS: eu originalmente coloquei a sub-rotina cmd.wait
sob o trabalho /etc/postfix/canonical
e a separei em um trabalho diferente porque achei que o erro era devido a watch:
não encontrar o trabalho.
ATUALIZAÇÃO: EPÍLOGO
Eu desisti da estratégia original e usei uma estratégia baseada em GNU make
.
Referência: link
Então o init.sls
agora é assim:
postfix:
pkg.installed: []
service.running:
- require:
- pkg: postfix
- enable: True
make:
pkg.installed: []
/etc/postfix/Makefile:
file.managed:
- require:
- pkg: postfix
- pkg: make
- source: salt://postfix/Makefile
refresh_db:
cmd.run:
- require:
- pkg: postfix
- pkg: make
- name: make
- cwd: /etc/postfix
- order: last ## IMPORTANT! This will force this particular job to run at the very last
/etc/postfix/canonical:
file.managed:
- require:
- pkg: postfix
- source: salt://postfix/canonical
- template: jinja
Obrigado por tentar responder à minha pergunta!