1
resposta

Handlers | Ordem do código

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 ?

1 resposta

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!