Ansible quando condicional

Ansible quando condicional
Ansible suporta avaliações condicionais antes de executar uma tarefa específica nos hosts de destino. Se a condição definida for verdadeira, Ansible irá em frente e executará a tarefa. Se a condição não for verdadeira (não atendida), Ansible irá pular a tarefa especificada.

Para implementar condições em Ansible, usamos o Quando a palavra -chave. A palavra -chave leva expressões booleanas com base em um valor ou em uma variável de tarefas ou fatos anteriores coletados dos hosts remotos.

Este guia ensinará como implementar as condições em manuais de Ansible usando a palavra -chave quando.

Ansible quando condicionais: uso básico

Quando a palavra -chave é uma sintaxe simples:

Quando: (condição booleana)

Garanta passar uma condição que avalie para verdadeira ou falsa.

Por exemplo:

Quando: Ansible_pkg_mgr == "yum"
Quando: Ansible_user_shell "=="/Bin/Bash "

Se você deseja combinar várias condições, pode usar operadores lógicos como e, ou e não.

Quando: (condição1) e (condição2)
Quando: (condição1) ou (condição2)

Para entender como usar o Ansible quando a palavra -chave, usaremos exemplos práticos.

Exemplo 1

O primeiro exemplo criará um usuário se o usuário especificado não existir no host remoto.

---
- Hosts: todos
Gather_facts: Não
tornar verdade
tarefas:
- Nome: checkIfdirectoryExist
Estado:
Caminho: /Home /Ubuntu
Registro: Dir
- Nome: CreateFileIfDirectoryExists
arquivo:
caminho:/home/ubuntu/arquivo.TXT
Estado: toque
Quando: dir.Estado.existe

O exemplo acima começa verificando se o diretório inicial do usuário do Ubuntu estiver disponível. Em seguida, usamos a condição quando criar um arquivo de texto se o diretório estiver disponível.

Exemplo 2

O próximo exemplo desliga todos os hosts remotos do Ubuntu usando uma condição quando.

---
- Hosts: todos
Gather_Facts: Sim
tornar verdade
tarefas:
- Nome: Shutdownubuntuservers
comando: /sbin /desligamento-tnow
Quando: Ansible_facts ['Os_family'] == "Ubuntu"

No exemplo acima, usamos fatos reunidos para avaliar se os servidores são da família Ubuntu. Se for verdade, desligue os servidores.

Exemplo 3

No exemplo abaixo, combinamos duas condições que usam um e operador.

---
- Hosts: todos
Gather_Facts: Sim
tornar verdade
tarefas:
- Nome: InstalapacheServer
Ansible.construídas em.pacote:
Nome: httpd
Estado: mais recente
Quando: (Ansible_facts ['Os_family'] == "Debian") e
(Ansible_facts ['Ansible_distribution_major_version'] == 10)

O exemplo acima verifica se os hosts são hosts Debian e se a versão de distribuição for igual ao Debian 10.

Exemplo 4

Instalamos o servidor da web do Apache no manual abaixo se a família host for um host de Debian ou Ubuntu.

O manual usa um lógico ou operador.

---
- Hosts: todos
Gather_Facts: Sim
tornar verdade
tarefas:
- Nome: InstalapacheServer
Ansible.construídas em.pacote:
Nome: httpd
Estado: mais recente
Quando: (Ansible_facts ['Os_family'] == "Debian") ou
(Ansible_facts ['Os_family'] == "Ubuntu")

Exemplo 5

Considere o manual abaixo que atualiza o servidor nginx para a versão mais recente usando o operador Not Operator.

---
- Hosts: todos
- Shell: /sbin /nginx-v2> & 1
Registro: versão
Gather_Facts: Sim
tornar verdade

tarefas:
- Nome: InstalapacheServer
Ansible.construídas em.pacote:
Nome: nginx
Estado: mais recente
Quando: ('"nginx/1.19.0 "Notinversion.stdout ')

Se a saída do servidor nginx não for a versão atual, instale a versão atual do pacote.

Conclusão

Neste guia, discutimos como trabalhar com condicionais em Ansible usando a palavra -chave quando.

Obrigado pela leitura!