Saiba tudo sobre automação com Ansible neste guia completo!
A automação com Ansible pode ser uma ferramenta bem interessante para quem atua na no ciclo de desenvolvimento de softwares, seja na infraestrutura ou desenvolvimento. As aplicações estão cada vez mais complexas e envolvem uma série de dependências e serviços para funcionarem corretamente. Trata-se de um verdadeiro desafio até mesmo para os programadores ou administradores mais experientes.
Automatizar as rotinas de instalação das dependências, atualizar todos os pacotes com a mesma versão, validar a disponibilidade dos serviços e agilizar os deploys são demandas relevantes para conseguir desenvolver sistemas escaláveis e com portabilidade.
Essas atividades não são nada triviais e conhecer um pouco mais sobre a automação com Ansible pode ajudar bastante nessas tarefas. Continue a leitura deste artigo para obter mais informações.
Entenda o que é o Ansible
Trata-se de uma ferramenta open source para automação e provisionamento ágeis. O projeto inicial é de Michael DeHaan e hoje conta com o apoio ativo da comunidade e da Red Hat.
O componente Ansible é de fácil aprendizado pelos desenvolvedores. A comunicação com os clientes (nodes) ocorre via SSH e dispensa qualquer necessidade de agentes. Para o correto funcionamento, é preciso instalar o pacote Python2 nativo na maior parte das distribuições dos sistemas operacionais Linux.
O objetivo é conseguir automatizar a execução de tarefas repetitivas como:
- instalação, configuração e atualização de pacotes;
- configuração e deploy das aplicações nos ambientes de desenvolvimento, de testes e de produção;
- gerenciamento das permissões de acesso dos usuários.
Estrutura
É interessante comentar que a estrutura do Ansible se subdivide em diversos componentes interligados entre si. Os elementos são: Inventory, Modules, Tasks, Plays, Playbooks, Roles, Handlers e Ansible Galaxy. Vamos conhecer cada um desses itens nos tópicos a seguir.
Inventory
Um arquivo de inventário no qual se deve declarar quais serão os nós e hosts-alvos gerenciados pelo servidor Ansible.
Modules
São os controladores dos serviços, pacotes, arquivos e recursos do host remoto. Os modules realizam efetivamente os trabalhos de processamento e automatização. Com isso, consegue-se inicializar um ou mais serviços, alterar os arquivos com base em templates, instalar um pacote específico e adicionar repositórios via PPA.
Tasks
As tasks são as tarefas executadas no host. Trata-se da menor unidade de trabalho com as definições dos pacotes de instalação, das cópias de arquivos e das configurações dos servidores.
Elas podem contar com um ou vários modules e representam ações simples como:
- instalar uma base de dados;
- configurar um servidor na web;
- definir uma regra de firewall;
- copiar os arquivos de configuração para o host.
Plays
Os plays são um conjunto de tasks. Por exemplo, o play “Configurar um banco de dados no servidor web” pode conter as seguintes atividades:
- instalar os pacotes;
- definir as senhas para os usuários administradores;
- criar o esquema do banco de dados;
- definir os perfis de acesso.
O play também define as propriedades e configurações de cada uma das tasks, como nome dos hosts, portas http e permissões de usuário.
Playbooks
Os playbooks são um conjunto de vários plays. Trata-se de uma introdução para as tasks escritas em YAML com as chaves e os valores para execução nos hosts. A ideia é conseguir configurar uma política ou os passos de um processo de configuração.
Com isso, essas instruções ficam mais fáceis de serem lidas pelos programadores, que conseguem realizar os deploys das máquinas remotas e delegar ações com hosts diferentes por meio da comunicação com os servidores de monitoramento.
Um exemplo de playbook: “preparar o site com um back-end da base de dados”.
Roles
Trata-se das funções para salvar e organizar manuais e para compartilhar e reutilizar os playbooks. O objetivo é automatizar a configuração completa dos servidores web por meio de uma função já bem escrita e compartilhada pelos desenvolvedores mais experientes. Esses itens são bastante configuráveis e reutilizáveis para atender aos requisitos de um deploy.
Handlers
São itens de configuração opcionais e ativados pelas tasks por meio de notificações. Essa funcionalidade tem uma forte ligação com o princípio da idempotência.
Caso mais de uma task notifique a execução de um handler, o processamento dessa instrução ocorrerá apenas uma vez no fim dos blocos das tasks. Por exemplo, depois de instalar e configurar um serviço, é recomendado reiniciá-lo. Logo, utilizar um handler pode ser interessante.
Ansible Galaxy
É um repositório online para carregar as funções e compartilhá-las com os outros desenvolvedores. Esse item é integrado ao GitHub e as roles ficam organizadas em repositórios Git.
Esses componentes são uma maneira inteligente de organizar e priorizar a execução das tarefas. Pode-se também separar a instalação do banco de dados e do servidor web em playbooks e em roles diferentes. A maior parte das roles no Ansible Galaxy instala e configura as aplicações conjuntas e individuais.
Características
O Ansible possui várias características que facilitam a execução automatizada de várias tarefas ao mesmo tempo, provendo um sistema avançado de gerenciamento de configurações para os desenvolvedores. Dentre todas as qualidades podemos destacar:
- utilização da linguagem Jinja2 para templates;
- escrito em Python;
- suporte de linguagem própria com base no YAML;
- utilização de SSH para conexão com os hosts;
- não instalação de agentes nos hosts remotos;
- grande quantidade de códigos no GitHub;
- arquitetura master to nodes;
- manutenções simples;
- fácil instalação;
- integrável com linguagens com suporte ao JSON;
- módulos centrais para RubyGems, MongoDB e RabbitMQ;
- suporte ao “dry run”;
- foco em ambientes complexos e na nuvem.
Funcionamento
Falaremos agora sobre o funcionamento mais detalhado dos componentes da ferramenta Ansible. Trata-se de uma implementação dos conceitos de multiprocessamento e de paralelismo na execução de instruções. Nos tópicos a seguir, você compreenderá melhor as funcionalidades desse sistema de automação de rotinas.
Utilização da idempotência
Já falamos desse termo antes e podemos perceber a sua relevância quando aprofundamos os nossos conhecimentos sobre automação com Ansible.
Esse conceito consiste em executar operações várias vezes sem alterar os resultados da aplicação inicial. Você define o estado final desejado e o Ansible decide sobre a execução ou não da tarefa. Para conseguir a idempotência, é preciso utilizar o atributo create.
O Ansible executa apenas as instruções do comando se o arquivo especificado não existir. Caso contrário, você pode usar o remove.
A ferramenta Ansible possui diversos módulos e as operações mais comuns não precisam do módulo de comando. Por exemplo, há módulos para configurar sistemas de arquivos, alterar os iptables e gerenciar as entradas cron. Todos esses módulos são idempotentes por default e é preferível que você os reutilize.
Automatização de mudanças
Suponha um projeto para criar e excluir uma solução de monitoramento simultaneamente. Por exemplo, remover o Nagios e trocá-lo pelo Zabbix. Essa mudança automática é bem mais fácil com o uso do Ansible porque a escrita dos playbooks é intuitiva. É possível também revisar e atualizar periodicamente os seus pacotes com as correções das versões mais recentes do Ansible.
Coleta contínua de informações
Muito da automação com Ansible ocorre porque seus componentes coletam informações constantemente. Antes de executar uma tarefa, o Ansible invoca a configuração do módulo especial que se conecta ao host e recolhe dados como endereço IP, arquitetura da CPU, espaço em disco e memória disponível.
Pode ser interessante também invocar esse módulo manualmente para conseguir coletar as informações sobre os seus hosts.
Armazenamento de dados confidenciais
Ao solicitar informações sigilosas como login e senhas dos bancos de dados, é interessante mantê-las criptografadas, em vez de armazená-las em texto simples. O Ansible possui a ferramenta de linha de comando ansible-vault para criar e gerenciar arquivos com criptografia. Assim, é possível controlar quais usuários poderão acessá-los.
Agilização de tarefas
Por meio da cláusula with_items, o Ansible cria uma variável {{item}} com o valor para a iteração. Assim, os módulos conseguem lidar com várias coleções de itens e agilizar a execução de uma tarefa várias vezes mesmo com parâmetros de configuração diferentes.
Atualizações de segurança
O Ansible é um sistema de gerenciamento de configuração robusto e simples. Configurar um patch de segurança para servidores vulneráveis é uma tarefa relativamente fácil para os desenvolvedores. Por meio de um playbook, é possível atualizar as variantes do Red Hat (ou qualquer outro sistema operacional). Consegue-se, por exemplo, corrigir e reiniciar 20% dos servidores toda vez que houver atualizações nos hosts do arquivo de inventário.
Veja as vantagens da automação com Ansible
Muito bem, agora você já conhece a estrutura, as características e os detalhes de funcionamento da ferramenta de automação Ansible. Confira, então, 5 vantagens desse poderoso sistema de gerenciamento de configurações.
Rápida implementação
Quando se fala em automação de TI, é intuitivo lembrar das soluções para gerenciamento de configurações como o Ansible. Trata-se de uma ferramenta de rápida implementação, visto que possui componentes padronizados e compatíveis com as principais tecnologias de desenvolvimento de sistemas.
O ambiente de implantação de um software deve ser confiável, escalável, rápido e aderente às inovações trazidas pela cultura DevOps.
Com isso, é possível realizar o deploy das aplicações em produção, provisionar os servidores de banco de dados e automatizar a execução de procedimentos repetitivos.
O Ansible trabalha com arquivos YAML, nos quais os playbooks possuem tarefas como “yum”, “mkdir” e “useradd” no arquivo .ini. O mapeamento de todas essas informações viabiliza a rápida implementação de novos sistemas informatizados.
Linguagem acessível
A gestão estratégica de TI envolve uma linguagem acessível para os desenvolvedores de sistemas. Estamos na Era Digital e precisamos nos familiarizar cada vez mais com os termos ligados à tecnologia e à inovação.
A automação com Ansible ocorre por meio da interligação de vários componentes padronizados. Trata-se de um sistema para otimizar a configuração de softwares com várias instruções de programação e informações intuitivas que facilitam muito o trabalho dos programadores.
Coordenação de tarefas
A automação de processos requer uma coordenação de tarefas para ser efetiva. O sistema Ansible consegue organizar informações e priorizar a ordem mais apropriada para executar as instruções de configuração dos sistemas nos ambientes de testes, desenvolvimento e produção, em um esforço coordenado que auxilia os programadores no momento da manutenção e implantação das aplicações.
Segurança
A plataforma Ansible trabalha com o armazenamento criptografado das informações mais críticas para a configuração de um sistema. Esse é um componente fundamental para um desenvolvimento de software seguro e de acordo com as particularidades da gestão da sua infraestrutura de TI.
Inovação
Transformação Digital e experiência do usuário são dois termos frequentes quando se fala em inovação. Os componentes do Ansible facilitam a configuração rápida e controlada dos sistemas no ambiente de produção.
Essa facilidade permite aos técnicos e gestores direcionarem seus esforços para as demandas mais críticas. Assim, ganha-se mais tempo para aprimorar continuamente os seus processos de negócio e se adaptar às tendências de cloud para os próximos anos.
Conheça as as vantagens da utilização da versão Enterprise do Ansible
Muito bem, falamos sobre as 5 principais vantagens de utilizar a automação com Ansible. Confira agora as principais soluções para o seu negócio.
Red Hat Ansible Tower
O Ansible Tower consiste em uma arquitetura para controlar, proteger e otimizar as rotinas de automação via APIs RESTful. Trata-se de uma solução para equipes de desenvolvimento distribuídas de empresas de médio e grande porte. Pode-se destacar os seguintes itens:
- agendamento de tarefas;
- acesso ao portal do cliente Red Hat;
- integrações com registros em logs externos;
- gerenciamento gráfico de inventários;
- atualizações em tempo real;
- painel de interfaces gráficas do usuário.
Red Hat Ansible Engine
O Ansible Engine é um ambiente de execução com vários módulos para que desenvolvedores em equipes pequenas consigam automatizar a execução das rotinas diárias. Essa é uma ferramenta integrável ao Red Hat Enterprise Linux com suportes para a plataforma de execução e para o ciclo de vida dos principais módulos.
Red Hat Ansible Network Automation
O Ansible Network Automation inclui o Ansible Tower, o Ansible Engine e o suporte Red Hat para os módulos de rede específicos. Essa ferramenta automatiza os nós de rede para conseguir acessar os serviços básicos, testa e valida os estados de rede atuais e monitora constantemente a conformidade para verificar eventuais desvios nas configurações.
Essas são as principais informações sobre automação com Ansible que você precisa saber para melhorar continuamente os seus processos de desenvolvimento de softwares.
Gostou do guia? Então, entre em contato conosco e veja como podemos ajudá-lo. O seu retorno é muito importante para nós.