Nesta etapa, você escreverá seu primeiro Ansible Playbook. Um playbook é um arquivo escrito em formato YAML que descreve um conjunto de tarefas a serem executadas em seus hosts gerenciados. Você criará um playbook que instala o servidor web Apache (httpd) e inicia seu serviço na máquina localhost definida em seu inventário.
-
Primeiro, use o editor de texto nano para criar um novo arquivo chamado apache.yml. Este arquivo conterá seu playbook.
nano apache.yml
-
Dentro do editor nano, você definirá um "play". Um play é a unidade central de um playbook e mapeia um grupo de hosts para um conjunto de tarefas. Adicione o seguinte conteúdo a apache.yml.
---: Este é um marcador YAML padrão indicando o início de um documento.
- name: ...: Este é o início do seu play. Dar um nome descritivo é uma boa prática.
hosts: webservers: Isso diz ao Ansible para executar este play em todos os hosts do grupo webservers do seu arquivo de inventário.
become: true: Isso instrui o Ansible a usar a escalada de privilégios (como sudo) para executar as tarefas. Isso é necessário para ações como instalar software ou gerenciar serviços.
tasks:: Esta palavra-chave inicia a lista de tarefas a serem realizadas.
---
- name: Install and start Apache web server
hosts: webservers
become: true
tasks:
-
Agora, adicione as tarefas ao seu playbook. Cada tarefa é uma única ação que chama um módulo Ansible. A indentação é crítica em YAML, portanto, certifique-se de que as tarefas estejam corretamente indentadas sob a seção tasks:.
- Tarefa 1: Instalar httpd. Esta tarefa usa o módulo
ansible.builtin.dnf para garantir que o pacote httpd esteja instalado. O parâmetro state: present significa que o Ansible instalará o pacote se ele estiver ausente e não fará nada se ele já estiver instalado.
- Tarefa 2: Iniciar o serviço httpd. Esta tarefa usa o módulo
ansible.builtin.service. state: started garante que o serviço esteja em execução e enabled: true garante que ele será iniciado automaticamente na inicialização do sistema.
Adicione as seguintes tarefas ao seu arquivo apache.yml, diretamente abaixo da linha tasks::
- name: Install httpd package
ansible.builtin.dnf:
name: httpd
state: present
- name: Start and enable httpd service
ansible.builtin.service:
name: httpd
state: started
enabled: true
-
Seu playbook apache.yml completo deve agora parecer com isto. Verifique cuidadosamente a indentação.
---
- name: Install and start Apache web server
hosts: webservers
become: true
tasks:
- name: Install httpd package
ansible.builtin.dnf:
name: httpd
state: present
- name: Start and enable httpd service
ansible.builtin.service:
name: httpd
state: started
enabled: true
Salve o arquivo e saia do nano (Ctrl+O, Enter, Ctrl+X).
-
Antes de executar seu playbook, é uma boa prática verificá-lo em busca de erros de sintaxe usando o comando ansible-playbook com a flag --syntax-check.
ansible-playbook --syntax-check apache.yml
Se a sintaxe estiver correta, o comando imprimirá o nome do arquivo do playbook sem erros.
playbook: apache.yml
-
Agora, execute o playbook.
ansible-playbook apache.yml
O Ansible executará as tarefas. Como esta é a primeira execução, você verá o status changed para ambas as tarefas, indicando que o estado do sistema foi modificado.
PLAY [Install and start Apache web server] *************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Install httpd package] ***************************************************
changed: [localhost]
TASK [Start and enable httpd service] ******************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
-
Finalmente, verifique se o servidor web Apache está em execução usando curl para solicitar a página web padrão do localhost.
curl http://localhost
Você deverá ver a Página de Teste Padrão do Apache, o que confirma que seu playbook funcionou com sucesso.
<html>
<head>
<title>Test Page</title>
</head>
<body>
<h1>Test Page</h1>
<p>This is the default test page for the Apache HTTP server.</p>
</body>
</html>