Boa tarde.
Pra qualquer utilidade do Handlers, ele sempre tem que está no topo do código? Eu não poderia cria-lo junto com a identação que se faz necessário a utilização dele ?
Boa tarde.
Pra qualquer utilidade do Handlers, ele sempre tem que está no topo do código? Eu não poderia cria-lo junto com a identação que se faz necessário a utilização dele ?
Olá, Diego!
Entendo sua dúvida sobre a localização dos Handlers no código do Ansible. Na verdade, os Handlers não precisam necessariamente estar no topo do código. Eles podem ser colocados em qualquer lugar que faça sentido para a organização do seu playbook.
No exemplo do texto, o Handler "restart mysql" foi colocado após a definição dos hosts e antes das tasks:
- hosts: database
handlers:
- name: restart mysql
service:
name: mysql
state: restart
become: yes
tasks:
No entanto, poderia estar em outro lugar, desde que ainda dentro do bloco de hosts. O importante é que o Handler esteja definido antes de ser chamado.
Por exemplo, você pode ter uma estrutura de playbook como esta:
- hosts: database
tasks:
- name: 'Configura MySQL para aceitar conexões remotas'
copy:
src: 'files/my.cnf'
dest: '/etc/mysql/my.cnf'
become: yes
notify:
- restart mysql
handlers:
- name: restart mysql
service:
name: mysql
state: restart
become: yes
Neste caso, o Handler "restart mysql" está definido após a task que o chama, mas ainda dentro do mesmo bloco de hosts. Isso é perfeitamente válido e o Ansible irá executar o Handler corretamente quando for chamado pela task.
Espero ter ajudado e bons estudos!