Ansible na prática #2 – estrutura de um playbook

Provisionando um laboratório para estudar o Ansible e outras coisas

Por: Adelmo da Silva – consultor de sistemas

Depois do último artigo, Ansible na prática: instalação e configuração #1, hoje daremos mais um passo rumo à automação. Vamos entender a estrutura de um playbook no Ansible. Como já mostrei nos artigos anteriores, um playbook é um arquivo YAML que contém as instruções para a automação de tarefas em um ambiente de TI. Ele descreve o conjunto de acções que o Ansible deve executar em um conjunto de servidores pré-definidos no arquivo de inventário do Ansible. No playbook indicamos em qual grupo de servidores, ou dispositivos (lembrando que o Ansible trabalha em tanto com Servidores quanto dispositivos de rede, tais como Switches, Roteadores, etc).

O esqueleto de um playbook

A primeira coisa que é necessário, muito necessário, extremamente necessário, é entender a indentação de um arquivo de playbook. Uma vez que a base para este arquivo é a linguagem YAML, toda sua estrutura se baseia em uma indentação de três espaços a partir de início da linha superior. Calma! Eu explico. Por exemplo:

new_cognito

tasks:

  – name: Coletando o FQDN do servidor

    shell:

      command: hostname

new_cognito

Repare que entre a linha TASKS, que marca o início das tarefas e a declaração da primeira tarefa (- name) começa a partir da terceira letra (‘s’) da linha de cima. E, na linha abaixo do módulo SHELL, o COMMAND inicia na terceira letra (‘e’) do módulo. Pois, toda linha que é parte interna de uma linha anterior, deve ser iniciada na terceira letra de sua predecessora. Isso é a indentação do arquivo YAML de um playbook. No começo, pode parecer confuso, mas ao avançarmos, vai ficando mais simples. Agora, vamos ao que interessa: a estrutura.

Vamos lá! Bora meter a mão na massa!

Em um playbook básico, temos a seguinte estrutura:

Ansible na prática #2 -  estrutura de um playbookCréditos: D.R

new_cognito
  1. Separadores YAML: são usados para indicar o início de um novo documento YAML. Esses separadores são opcionais e podem ser usados para separar vários documentos YAML em um único arquivo.
  2. Descrição Inicial do Playbook: descrição do objectivo final do playbook. Nesta secção costuma-se declarar várias opções, tais como descrito na imagem:
    1. Name: Descrição geral do playbook
    2. Hosts: grupo / hostname / IP declarado no inventário do ansible
    3. Become: é utilizada para executar comandos ou tarefas como um usuário diferente, geralmente como um superusuário ou root.
  3. Tasks: identifica o início da seções onde serão criadas as tarefas
  4. Descrição de uma tarefa:
    1. Name: Descrição da tarefa
    2. Apt: módulo a ser utilizado no playbook
    3. Update_cache: opção interna do módulo

O Ansible possui milhares de módulos para vários sistemas operacionais, cloud computing e dispositivos de rede, entre outros.

Uma regra importante para um playbook é a estrutura lógica das tarefas. Por exemplo, é necessário actualizar o sistema antes de se instalar um MySql e o PHP em um Ubuntu. Para isso é indispensável que pense antes de montar um playbook. Pare, pense e escreva. Três passos para uma bela estrutura em seu playbook. Mas não basta só falar, vamos na prática.

Vamos criar um playbook que actualize o cache, instale o Apache2 e depois o MariaDB no ubuntu.  Logo depois, sejam iniciados e habilitados após o boot:

new_cognito

– name: Atualizar cache, instalar Apache2 e MariaDB

  hosts: webservers

  become: true

  tasks:

new_cognito

    – name: Atualizar cache do apt

      apt:

          update_cache: yes

    – name: Instalar o Apache2

new_cognito

      apt:

          name: apache2

          state: present

    – name: Instalar o MariaDB

new_cognito

      apt:

          name: mariadb-server

          state: present

    – name: Iniciar e habilitar o Apache2

new_cognito

      service:

          name: apache2

           state: started

        enabled: yes

new_cognito

    – name: Iniciar e habilitar o MariaDB

      service:

          name: mariadb

          state: started

new_cognito

        enabled: yes

Pronto. Salve este playbooks com o nome de webserverss.yaml. Agora que temos nosso playbook, vamos rodar este camarada. Para isso, vamos usar o comando ansible-playbook, que é o comando próprio para executar um playbook no ansible:

ansible-playbook webserverss.yaml

 

new_cognito

Após este comando, você deverá ver a saída abaixo:

PLAY [Atualizar cache, instalar Apache2 e MariaDB] ************************************

TASK [Atualizar cache do apt] *********************************************************

changed: webservers

new_cognito

TASK [Instalar o Apache2] *************************************************************

changed: webservers

TASK [Instalar o MariaDB] ************************************************************

changed: webservers

new_cognito

TASK [Iniciar e habilitar o Apache2] **************************************************

changed: webservers

TASK [Iniciar e habilitar o MariaDB] **************************************************

changed: webservers

new_cognito

PLAY RECAP ***************************************************************************

seu-servidor  : ok=5    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

A saída mostra o status de cada tarefa executada. Se uma tarefa resultou em alterações (instalação ou configuração), é exibido “changed”. Caso contrário, é exibido “ok”. No final, um resumo é fornecido, mostrando o número total de tarefas executadas, quantas tiveram alterações, quantas falharam, etc. Neste exemplo, todas as tarefas foram concluídas com sucesso (ok) e resultaram em alterações (changed).

Pronto! Temos um sistema actualizado e com o MariaDB e Apache instalados e prontos para uso.

new_cognito

Imagine fazer isso em 10, 20, ou mais servidores ao mesmo tempo? Imagine o tempo economizado utilizando este tipo de playbook? Teríamos tempo de sobra para aquele cafezinho, hein…?

Até a próxima Ansible na Prática.

 

Partilhar artigo:

Versao3 - Cópia

Somos um portal de notícias, voltado às tecnologias de informação e inovação tecnológica. Informamos com Rigor, Objectividade e Imparcialidade. Primamos pela qualidade, oferecendo aos nossos leitores, a inclusão tecnológica e a literacia digital

+(244) 930747817

info@pti.ao | redaccao@pti.ao

Mais Lidas

Últimos Artigos

Desenvolvido Por SP Media