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 ?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!