Pesquisa de site

Entenda os componentes principais do Ansible – Parte 1


O exame Red Hat Certified Specialist in Ansible Automation (EX407) é um novo programa de certificação da Red Hat que testa suas habilidades para usar o Ansible para automatizar a configuração de sistemas e aplicações.

A série será intitulada “The Red Hat Certified Specialist in Ansible Automation exam (EX407)” e abrange os seguintes objetivos do exame com base no Red Hat Enterprise Linux 7.5 e Ansible 2.7, que abordaremos nesta série Ansible:

Para ver as taxas e se inscrever para um exame em seu país, consulte a página do exame Ansible Automation.

Nesta Parte 1 da série Ansible, discutiremos uma visão geral básica dos componentes principais do Ansible.

Entenda os componentes principais do Ansible

Ansible é uma plataforma de automação gratuita e de código aberto da RedHat que permite gerenciar e controlar vários servidores a partir de um local central. É especialmente ideal quando você tem tarefas múltiplas e repetitivas que precisam ser executadas. Portanto, em vez de fazer login em cada um desses nós remotos e realizar suas tarefas, você pode fazer isso confortavelmente a partir de um local central e gerenciar confortavelmente seus servidores.

Isso é benéfico quando você deseja manter a consistência na implantação de aplicativos, reduzir erros humanos e automatizar tarefas repetitivas e um tanto mundanas.

Claro, existem outras alternativas ao Ansible, como Puppet, Chef e Salt. No entanto, Ansible é preferido principalmente porque é fácil de usar e simples de aprender.

Por que é simples aprender, você pode perguntar? Isso ocorre porque o Ansible usa YAML (Yet Another Markup Language) em seus trabalhos de configuração e automação que são legíveis por humanos e bastante fáceis de seguir. YAML usa o protocolo SSH para se comunicar com servidores remotos, ao contrário de outras plataformas de automação que exigem a instalação de um agente em nós remotos para se comunicar com eles.

Antes de começarmos com o Ansible, é importante que você se familiarize com algumas terminologias básicas para não se perder ou se confundir à medida que avançamos.

Inventário

Um inventário é um arquivo de texto que contém uma lista de servidores ou nós que você está gerenciando e configurando. Normalmente, os servidores são listados com base em seus nomes de host ou endereços IP.

Um arquivo de inventário pode conter sistemas remotos definidos por seus endereços IP, conforme mostrado:

10.200.50.50
10.200.50.51
10.200.50.52

Alternativamente, eles podem ser listados de acordo com grupos. No exemplo abaixo, temos servidores colocados em 2 grupos – servidores web e bancos de dados. Dessa forma, eles podem ser referenciados de acordo com seus nomes de grupo e não com seus endereços IP. Isto simplifica ainda mais os processos de operação.

[webservers]
10.200.50.60
10.200.50.61

[databases]
10.200.50.70
10.200.50.71

Você pode ter vários grupos com vários servidores se estiver em um ambiente de produção grande.

Livro de cantadas

Um manual é um conjunto de scripts de gerenciamento de configuração que definem como as tarefas devem ser executadas em hosts remotos ou em um grupo de máquinas host. Os scripts ou instruções são escritos no formato YAML.

Por exemplo, você pode ter um arquivo playbook para instalar o servidor web Apache no CentOS 7 e chamá-lo de httpd.yml.

Para criar o manual execute o comando.

touch playbook_name.yml

Por exemplo, para criar um playbook chamado httpd, execute o comando.

touch httpd.yml

Um arquivo YAML começa com 3 hífens conforme mostrado. Dentro do arquivo, adicione as seguintes instruções.

---
- name: This installs and starts Apache webserver
  hosts: webservers

  tasks:
  - name: Install Apache Webserver 
    yum:   name=httpd  state=latest

 - name: check httpd status
    service:   name=httpd  state=started

O manual acima instala o servidor web Apache em sistemas remotos definidos como servidores web no arquivo de inventário. Após a instalação do servidor web, o Ansible verifica posteriormente se o servidor web Apache está iniciado e em execução.

Módulos

Módulos são unidades discretas de código usadas em manuais para executar comandos em hosts ou servidores remotos. Cada módulo é seguido por um argumento.

O formato básico de um módulo é chave: valor.

- name: Install apache packages 
    yum:   name=httpd  state=present

No trecho de código YAML acima, -name e yum são módulos.

Tocam

Um play ansible é um script ou instrução que define a tarefa a ser realizada em um servidor. Uma coleção de peças constitui um manual. Em outras palavras, um playbook é uma coleção de múltiplas jogadas, cada uma das quais estipula claramente a tarefa a ser realizada em um servidor. As peças existem no formato YAML.

Variáveis

Se você tem experiência em programação, provavelmente já usou variáveis. Basicamente, uma variável representa um valor. Uma variável pode incluir letras, números e sublinhados, mas DEVE sempre começar com letras.

Variáveis são usadas quando as instruções variam de um sistema para outro. Isto é especialmente verdadeiro durante a configuração de vários serviços e recursos.

Existem 3 tipos principais de variáveis:

  • Variáveis do manual
  • Variáveis de inventário
  • Variáveis especiais

No Ansible, as variáveis são definidas primeiro usando vars k, seguidas pelo nome da variável e pelo valor.

A sintaxe é conforme mostrado:

vars:
Var name1: ‘My first variable’
	Var name2:  ‘My second variable’

Considere o código abaixo.

- hosts: webservers
  vars: 
    - web_directory:/var/www/html/

No exemplo acima, a variável aqui é web_directory e instrui o ansible a criar um diretório no caminho /var/www/html/.

Fatos

Fatos são propriedades do sistema coletadas pelo Ansible quando ele executa um playbook em um sistema host. As propriedades incluem nome do host, família do sistema operacional, tipo de CPU e núcleos de CPU, para mencionar alguns.

Para ter uma ideia da quantidade de fatos disponíveis para uso, emita o comando.

ansible localhost -m setup

Como você pode ver, um grande número de fatos foi exibido por padrão. Você pode restringir ainda mais os resultados usando o parâmetro de filtro conforme mostrado.

ansible localhost -m setup -a "filter=*ipv4"

Arquivos de configuração

No Ansible, um arquivo de configuração é um arquivo que contém diferentes configurações de parâmetros que determinam como o Ansible é executado. O arquivo de configuração padrão é o arquivo ansible.cfg localizado no diretório /etc/ansible/.

Você pode visualizar o arquivo de configuração executando:

cat /etc/ansible/ansible.cfg

Como você pode observar, vários parâmetros estão incluídos, como caminhos de arquivo inventário e biblioteca, usuário sudo, filtros de plugins, módulos, etc. e modificando os valores nele contidos.

Além disso, você pode ter vários arquivos de configuração trabalhando com o Ansible, além do arquivo de configuração padrão.

Resumo

Depois de examinar os componentes principais do Ansible, esperamos que você consiga mantê-los ao seu alcance e escolhê-los à medida que avançamos. Junte-se a nós em seu próximo tópico.