Sobes.tech
Junior — Middle

Como pode modernizar a execução de tarefas no Ansible para as executar simultaneamente em vários hosts em vez de executar sequencialmente?

sobes.tech IA

Resposta da IA

No Ansible, por padrão, as tarefas são executadas em paralelo em vários hosts, mas dentro de um mesmo host, elas são executadas sequencialmente. Se desejar executar várias tarefas simultaneamente em um único host, pode usar o módulo async e o parâmetro poll.

Exemplo de execução assíncrona de uma tarefa:

- name: Executar uma tarefa longa de forma assíncrona
  command: /path/to/long_task.sh
  async: 3600       # tempo máximo de execução em segundos
  poll: 0           # não esperar a tarefa terminar

Isso permitirá iniciar a tarefa e passar imediatamente para a próxima, sem esperar que ela termine.

Se a questão for executar tarefas em paralelo em diferentes hosts, esse é o comportamento padrão do Ansible, que pode ser configurado através do parâmetro forks na configuração, aumentando o número de conexões simultâneas.

Exemplo de configuração do número de conexões paralelas:

[defaults]
forks = 20

Assim, para executar tarefas simultaneamente em vários hosts, aumente forks, e para executar tarefas em paralelo em um único host, use async e poll.