O que é run_once em Ansible

O que é run_once em Ansible
O parâmetro Ansible run_once desvia o loop perdido e força uma tarefa específica a ser executada no primeiro host no lote. O resultado pode ser aplicado a outros hosts ativos no manual.

Este guia discutirá como você pode usar o módulo Ansible Run_once para executar um conjunto de operações.

Uso básico

O parâmetro Ansible run_once é aplicado a uma tarefa específica que você deseja ser executada no primeiro host.

O manual de exemplo a seguir mostra como você pode definir o parâmetro run_once em um manual.

---
- Hosts: todos
#…
tarefas:
- Nome: Execute este comando uma vez
shell: comando
run_once: true

O manual de exemplo acima mostra a sintaxe geral para implementar uma tarefa run_once.

Vejamos alguns exemplos e veja vários casos de uso do parâmetro run_once.

Exemplo 1

Implementaremos um manual simples que baixe um arquivo zip de um URL em nosso primeiro exemplo. Como não faz sentido reduzir repetidamente o arquivo em cada host, podemos usar o parâmetro run_once.

Pegue o manual de exemplo mostrado abaixo:

---
- Hosts: todos
Gather_Facts: Sim
tarefas:
- Nome: Download Arquivo apenas uma vez
run_once: true
get_url:
URL: https: // file-examples-com.Github.io/uploads/2017/02/zip_10mb.fecho eclair
dest: ~/zip_10mb.fecho eclair
- Nome: UNACRIVE
UNARCIVO:
SRC: ~/ZIP_10MB.fecho eclair
dest: ~/zip_10mb

O manual de exemplo acima vai baixar o arquivo no primeiro lote e depois desarquivo nos hosts remotos.

Exemplo 2

O próximo manual de amostra cria um arquivo de um repositório Git.

---
- Hosts: todos
Gather_Facts: Sim
tarefas:
- Nome: Crie Arquivo a partir de repo
git:
repo: https: // github.com/amostras/repo.git
dest:/home/user/repo
Arquivo:/Home/Usuário/Repo.fecho eclair
run_once: true

Exemplo 3

Também podemos usar o parâmetro run_once para criar um backup e depois sincronizar o banco de dados com os hosts remotos usando o protocolo RSYNC. Considere o manual de exemplo abaixo:

---
- Hosts: todos
Gather_Facts: Sim
tornar verdade
tarefas:
- Nome: Crie um arquivo de backup
arquivo:
caminho:
/var/log/
/Custom/All
dest: /backup /system0-backup.BZ2
Formato: BZ2
Remova: Não
run_once: true
- Nome: Backup de sincronização com rsync
sincronizar:
src: /backup /system0-backup.BZ2
dest: rsync: // Inventory_hostname/backups

O manual criará um arquivo de backup na localhost e sincroniza os arquivos a todos os hosts remotos.

Exemplo 4

O manual de exemplo usa o parâmetro run_once para enviar e -mail para todos os hosts.

---
- Hosts: todos
Gather_Facts: Sim
tornar verdade
tarefas:
- Nome: Crie um arquivo de backup
LOCAL_ACTION:
Módulo: Mail
Assunto: "Correio da Ansible."
para: ubuntu@localhost
Corpo: "Atualizado para a nova versão Redis."
run_once: true

O manual envia e -mail para um usuário específico.

Conclusão

Este guia mostra como usar o parâmetro run_once no Ansible para executar uma tarefa em um único host e aplicar os resultados a outros hosts.