Ansible Playbook: Garanta que um processo esteja sendo executado em qualquer nó de um cluster?

4

O Ansible torna fácil garantir que um processo esteja sendo executado em todos os hosts.

Eu poderia fazer algo como:

---
- hosts: app_cluster
  tasks: 

  - name: Look for the "foo" process
    shell: ps -ef |  grep foo | grep -v grep
    register: process_list
    changed_when: false  

  - name: Start "foo" if needed
    shell: nohup /bin/foo &
    when: "process_list.stdout.find('foo') == -1"  

No entanto, preciso ter exatamente uma instância de um determinado processo no cluster. Ie. ele pode ser executado em qualquer host, contanto que esteja em execução em algum lugar e desde que exista apenas um desses processos em qualquer lugar no cluster.

Poderia haver uma maneira conveniente de fazer isso em um playbook ansioso?

    
por Roy 16.11.2015 / 22:10

1 resposta

1

Você pode usar o parâmetro run_once , conforme descrito no link , para que a tarefa seja apenas executado no primeiro host do lote. Leve em consideração que você não pode especificar a ordem, mas é de alguma forma "previsível" (mais informações em link )

    
por 14.12.2015 / 15:32