Vamos agora explorar em detalhes o Inventário Ansible e como ele desempenha um papel crucial no gerenciamento e organização da infraestrutura de servidores.
O que é o Inventário Ansible?
O Inventário Ansible é o núcleo do gerenciamento de servidores, onde informações essenciais sobre os seus servidores são armazenadas. Tradicionalmente, esse inventário era mantido em um arquivo estático, porém, o verdadeiro potencial do Ansible é revelado quando se utiliza um inventário dinâmico.
Introduzindo o Inventário Dinâmico
O Inventário Dinâmico leva o gerenciamento de servidores a um novo patamar, permitindo atualizações em tempo real. Adeus aos arquivos estáticos! Em vez disso, o inventário dinâmico busca informações dos servidores em tempo real a partir de fontes externas, como provedores de nuvem ou bancos de dados.
Por que Optar pelo Inventário Dinâmico?
- Atualizações em Tempo Real: As mudanças são refletidas instantaneamente.
- Adaptabilidade: Ideal para ambientes dinâmicos.
- Magia na Categorização: Facilita a organização eficiente de categorias de servidores.
- Hierarquia Estruturada: Relações entre pai e filho trazem ordem à organização.
Conectando o Mundo Real ao Ansible
O Inventário Dinâmico se integra perfeitamente ao seu ambiente. Se você estiver utilizando serviços como AWS, Azure ou qualquer grande plataforma de nuvem, o Ansible pode automaticamente obter detalhes dos seus servidores. E caso haja mudanças na sua infraestrutura, não se preocupe – o Ansible permanece em sincronia.
Com o Inventário Ansible, você não precisa lidar com o gerenciamento individual de servidores. É possível aproveitar o conceito de agrupamento para categorizar servidores com base em funções, localizações ou outros critérios relevantes. Precisa atualizar os servidores web? Basta direcionar o grupo “web_servers” – é simples assim!
INI vs. YAML
O Ansible oferece suporte a dois formatos de sintaxe para inventários: INI e YAML. O formato INI é direto, enquanto o formato YAML acrescenta flexibilidade e estrutura, adaptando-se à escala e complexidade do seu ambiente de TI.
A flexibilidade desses formatos de inventário permite agrupar servidores com base em funções (por exemplo, servidores web, servidores de banco de dados), localizações geográficas (por exemplo, EUA, Europa, Ásia) ou qualquer critério essencial para a dinâmica da sua organização.
Utilizando os Formatos de Inventário do Ansible
- Formato INI
- Formato YAML
Escolhendo o Modelo de Organização Adequado
Assim como uma empresa escolhe o organograma certo, o seu projeto deve selecionar o formato de inventário que se alinha perfeitamente com as suas necessidades. Seja optando pela simplicidade do INI ou pela flexibilidade do YAML, a chave está em garantir uma colaboração eficaz entre os seus servidores e departamentos para alcançar os objetivos organizacionais.
Agora, vamos explorar como os formatos INI e YAML desempenham um papel crucial na definição e organização da sua infraestrutura, proporcionando a flexibilidade e clareza necessárias para a execução eficaz de playbooks Ansible.
Formatos de Inventário
É possível criar um arquivo de inventário em um dos diversos formatos disponíveis, dependendo dos plugins de inventário utilizados. Os formatos mais comuns são INI e YAML.
Formato INI
O inventário baseado em arquivo INI utiliza seções para agrupar ou relacionar hosts, com entradas em seções (por exemplo, [grupo_1]) representando grupos. Cada host é listado sob essas seções com nomes únicos, e variáveis podem ser atribuídas diretamente a hosts usando pares chave/valor. Além disso, é possível definir grupos de grupos e variáveis especiais. O formato INI é conhecido pela sua simplicidade e é adequado para inventários básicos.
Formato YAML
O inventário baseado em YAML deve começar com o grupo “all” e conter entradas para hosts, variáveis e grupos filhos. Entradas para hosts podem conter subentradas que serão tratadas como variáveis, enquanto as entradas para variáveis são usadas para definir variáveis de grupo. O formato YAML é estruturado e altamente legível, sendo ideal para ambientes mais complexos com necessidades de variáveis aninhadas.
Cenário Prático: Pré-Requisitos – 3 Máquinas Virtuais
- Servidor – 1 CPU – 1GB RAM (Python 2.7) – Servidor Ansible
- Node1 – 1 CPU – 1GB RAM (Python 2.6 e superior) – Cliente Ansible
- Node2 – 1 CPU – 1GB RAM (Python 2.6 e superior) – Cliente Ansible
Do usuário “ansible”, execute o seguinte comando:
ansible all -m ping
Este comando “ping” deve retornar com um status “pong” na cor verde.
Configuração do Arquivo ansible.cfg
O arquivo ansible.cfg é a configuração do Ansible, uma ferramenta popular de automação de código aberto. Nele, você pode definir várias configurações, como a localização padrão do inventário e o usuário remoto a ser usado ao conectar-se aos hosts remotos. Abaixo está um exemplo simples de um arquivo ansible.cfg:
[defaults]
inventory = /caminho/para/seu/inventario
remote_user = usuario_remoto
Você pode personalizar essas configurações conforme suas necessidades específicas e considerações de segurança. Certifique-se de ter as permissões adequadas ao lidar com informações sensíveis.
Exemplo de Inventário Ansible
O arquivo de inventário Ansible (geralmente chamado de “hosts”) é onde você lista seus hosts e os agrupa em categorias. No seu exemplo, você tem dois grupos: [prod] e [backup], cada um contendo um único host (node1 e node2, respectivamente).
Você pode listar os hosts em diferentes grupos usando o comando “ansible” com a opção “–list”. Eis como isso funciona:
- `ansible all –list`: Lista todos os hosts, incluindo node1 e node2.
ansible prod --list
: Lista apenas os hosts no grupo [prod], que neste caso é apenas o node1.ansible backup --list
: Lista apenas os hosts no grupo [backup], que neste caso é apenas o node2.
Executando Playbooks Ansible
Agora, vamos considerar um cenário prático em que você deseja implantar várias tarefas em servidores listados no seu arquivo de inventário. Além disso, você deseja garantir que uma determinada tarefa seja executada exclusivamente nos servidores pertencentes ao grupo “prod”.
Para isso, você pode criar um playbook Ansible que inclui várias tarefas, com uma tarefa direcionada especificamente aos hosts no grupo “prod”. Abaixo está um exemplo de playbook que você pode usar:
---
- name: Instalar e Configurar HTTPD
hosts: all
tasks:
- name: Instalar o httpd
yum:
name: httpd
state: latest
- name: Reiniciar o httpd nos servidores "prod"
service:
name: httpd
state: restarted
when: "'prod' in group_names"
Este playbook foi projetado para instalar e configurar o servidor HTTP Apache (httpd) em todos os servidores. Além disso, inclui uma tarefa para reiniciar o serviço HTTPD, mas essa tarefa é executada condicionalmente apenas nos servidores do grupo “prod”.
Executando o Playbook Ansible
Para executar o playbook, siga estas etapas:
- Crie um arquivo YAML contendo o playbook, como mostrado acima.
- Salve o arquivo com uma extensão
.yml
, por exemplo,meuplaybook.yml
. - Execute o playbook com o seguinte comando:
ansible-playbook meuplaybook.yml
O playbook será aplicado aos servidores especificados no seu arquivo de inventário.
O gerenciamento de inventário é uma parte fundamental do uso eficaz do Ansible. A escolha entre inventário estático e dinâmico, bem como entre os formatos INI e YAML, depende da escala e complexidade do seu ambiente. O Ansible oferece flexibilidade para atender a uma variedade de cenários.
Com o Ansible, você pode automatizar tarefas em servidores de forma eficaz, garantindo que a automação seja aplicada apenas onde for necessário. Com um inventário bem organizado e a escolha do formato certo, você estará pronto para automatizar com eficiência as operações de gerenciamento de servidores na sua infraestrutura.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.