Nesta etapa, você aprenderá como usar variáveis em um playbook Ansible. Variáveis são essenciais para tornar sua automação flexível, reutilizável e mais fácil de ler e manter. Em vez de codificar valores como nomes de pacotes ou caminhos de arquivos diretamente em suas tarefas, você pode defini-los como variáveis e referenciá-los em todo o playbook. Criaremos um playbook simples que usa variáveis para instalar o servidor web Apache (httpd) e implantar uma página web básica.
-
Navegar para o Diretório do Projeto
Primeiro, certifique-se de que você está no diretório de trabalho correto. Todo o seu trabalho para este laboratório será feito dentro do diretório ~/project, que foi criado para você.
cd ~/project
Instale o pacote ansible-core.
sudo dnf install -y ansible-core
-
Criar o Playbook Ansible
Agora, vamos criar nosso arquivo de playbook. Vamos chamá-lo de playbook.yml. Você pode usar um editor de texto de linha de comando como nano para criar e editar o arquivo.
nano playbook.yml
Este comando abre um arquivo vazio no editor nano. Agora, adicione a parte inicial do playbook. Esta seção define o nome do play, o host de destino (localhost, já que estamos executando na mesma máquina) e uma seção vars onde definiremos nossas variáveis.
---
- name: Deploy Apache using variables
hosts: localhost
become: true
vars:
web_pkg: httpd
web_content: "Hello from Ansible Variables"
Aqui está uma descrição da estrutura do playbook:
hosts: localhost: Especifica que o playbook deve ser executado na máquina local.
become: true: Diz ao Ansible para usar a escalada de privilégios (equivalente a sudo) para as tarefas, o que é necessário para instalar software.
vars: Este é um dicionário onde definimos nossos pares chave-valor para variáveis. Definimos web_pkg para o nome do pacote e web_content para o conteúdo da nossa página web de teste.
-
Adicionar Tarefas ao Playbook
Em seguida, abaixo da seção vars, adicione as tasks que usarão essas variáveis. A primeira tarefa instalará o pacote Apache e a segunda criará um arquivo index.html. Adicione o seguinte bloco tasks ao seu arquivo playbook.yml enquanto ainda estiver no editor nano.
tasks:
- name: Install the latest version of Apache
ansible.builtin.dnf:
name: "{{ web_pkg }}"
state: latest
- name: Create a basic index.html file
ansible.builtin.copy:
content: "{{ web_content }}"
dest: /var/www/html/index.html
Observe como usamos {{ nome_da_variavel }} para referenciar as variáveis que definimos anteriormente. Esta é a templateização Jinja2, que o Ansible usa para variáveis. Isso torna as definições de tarefas genéricas; se você quisesse instalar o Nginx em vez disso, precisaria apenas alterar a variável web_pkg, não a tarefa em si.
-
Revisar e Salvar o Playbook
Seu arquivo playbook.yml completo agora deve se parecer com isto. Verifique o conteúdo e a indentação, pois o YAML é muito sensível ao espaçamento.
---
- name: Deploy Apache using variables
hosts: localhost
become: true
vars:
web_pkg: httpd
web_content: "Hello from Ansible Variables"
tasks:
- name: Install the latest version of Apache
ansible.builtin.dnf:
name: "{{ web_pkg }}"
state: latest
- name: Create a basic index.html file
ansible.builtin.copy:
content: "{{ web_content }}"
dest: /var/www/html/index.html
Para salvar o arquivo no nano, pressione Ctrl+X, depois Y para confirmar as alterações e, finalmente, Enter para escrever o arquivo com o nome playbook.yml.
-
Verificar a Sintaxe do Playbook
Antes de executar um playbook, é sempre uma boa prática verificar sua sintaxe em busca de erros.
ansible-playbook --syntax-check playbook.yml
Se a sintaxe estiver correta, você verá o caminho do arquivo do playbook como saída, confirmando que ele é válido:
playbook: playbook.yml
Se você vir algum erro, reabra o arquivo com nano playbook.yml e corrija-os. Preste muita atenção à indentação correta (geralmente dois espaços).
-
Executar o Playbook
Agora, execute o playbook. O Ansible se conectará ao localhost, lerá as variáveis e executará as tarefas.
ansible-playbook playbook.yml
Você deverá ver uma saída indicando a execução bem-sucedida de cada tarefa. O status changed significa que o Ansible fez uma modificação no sistema, como instalar um pacote ou criar um arquivo.
PLAY [Deploy Apache using variables] *******************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Install the latest version of Apache] ************************************
changed: [localhost]
TASK [Create a basic index.html file] ******************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Se você executar o playbook uma segunda vez, as tarefas deverão relatar ok em vez de changed, porque o pacote já está instalado e o arquivo já possui o conteúdo correto. Isso demonstra a idempotência do Ansible.
-
Verificar a Configuração Manualmente
Embora o playbook tenha sido concluído, você pode verificar manualmente se as tarefas funcionaram como esperado. Primeiro, verifique se o pacote httpd foi instalado:
rpm -q httpd
A saída deve mostrar o nome e a versão do pacote:
httpd-2.4.57-7.el9.x86_64
Em seguida, verifique o conteúdo do arquivo index.html:
cat /var/www/html/index.html
A saída deve corresponder ao valor da sua variável web_content:
Hello from Ansible Variables
Você usou com sucesso variáveis em um playbook Ansible para configurar um sistema.