Então eu tenho este manual
- hosts: localhost
gather_facts: no
vars:
this_thing_is_true: true
use_handler: false
tasks:
- debug:
msg: 'Notifying handlers'
changed_when: this_thing_is_true
notify:
- me
handlers:
- name: me
debug:
msg: 'I have been notified'
when: use_handler is true
E quando eu executo, como esperado, o manipulador não funciona.
# ansible-playbook handler.yml
PLAY [localhost] ***************************************************************
TASK [debug] *******************************************************************
changed: [localhost] => {
"msg": "Notifying handlers"
}
RUNNING HANDLER [me] ***********************************************************
skipping: [localhost]
Posso ativar o manipulador alterando a use_handler
variável no manual.
# ansible-playbook handler.yml
PLAY [localhost] ***************************************************************
TASK [debug] *******************************************************************
changed: [localhost] => {
"msg": "Notifying handlers"
}
RUNNING HANDLER [me] ***********************************************************
ok: [localhost] => {
"msg": "I have been notified"
}
No entanto, pensei que isso também ativaria o manipulador... mas isso não acontece.
# ansible-playbook -e use_handler=true handler.yml
PLAY [localhost] ***************************************************************
TASK [debug] *******************************************************************
changed: [localhost] => {
"msg": "Notifying handlers"
}
RUNNING HANDLER [me] ***********************************************************
skipping: [localhost]
Estou fazendo algo errado?
Recebi minha resposta em outro fórum
O problema é que é impraticável passar um bool para uma execução com variáveis extras do estilo key=value na linha de comando. Para definir um bool, você precisará usar JSON. Contemplar:
Outra opção era substituir a verificação booleana no meu manipulador por uma verificação de string
Alterar a condição
Você pode testar se quiser
is true
. Uma variável booleana simples pode ser usada em um teste.