Você deve usar o Ansible para automação?

Como você se sentiria se só precisasse apertar um botão e todos os seus sistemas estivessem atualizados, todos os pacotes necessários instalados e prontos para funcionar? Parece fantástico, certo?

No mundo moderno de TI, os engenheiros de DevOps estão transformando esse sonho em realidade. Agora temos ferramentas como o Ansible, que torna os processos de gerenciamento de TI mais gerenciáveis ​​e rápidos com alguns cliques, reduzindo erros e a entrada manual de um ser humano.

Continue lendo para aprender tudo o que você precisa saber sobre o Ansible, incluindo uma breve visão geral de como usá-lo.

O que é Ansible?

Ansible é um poderoso mecanismo de automação de código aberto. É multiplataforma, permitindo que os desenvolvedores gerenciem dispositivos de qualquer sistema operacional, incluindo Windows, macOS e Linux.

O Ansible oferece uma gama de recursos: gerenciamento de configuração, provisionamento de nuvem de implantação de aplicativo, atualizações de sistema, automação de segurança, entrega contínua e muito mais. É uma ferramenta leve e não requer software ou pacotes adicionais para ser executado, o que facilita sua implantação.

Principais Recursos Ansible

A seguir estão alguns dos recursos oferecidos pelo Ansible como uma ferramenta de automação.

Implantação de aplicativo

O Ansible permite que os desenvolvedores implantem aplicativos em servidores de forma rápida e fácil. Ele elimina a necessidade de escrever código personalizado ou executar o gerenciamento de pacotes manualmente. Em vez disso, você define as tarefas necessárias para que um aplicativo seja executado e as execute remotamente no sistema de destino em vez de usar os manuais do Ansible. Você pode enviar um único Playbook para vários dispositivos simultaneamente e executar o aplicativo em vários servidores.

Provisionamento em nuvem

O provisionamento em nuvem é o método de instalação, configuração e gerenciamento de recursos de computação em nuvem.

O Ansible permite automatizar tarefas de provisionamento em nuvem, incluindo configuração da infraestrutura, configuração de hosts, gerenciamento de interfaces de rede, gerenciamento de firewalls e usuários em hosts remotos.

Gerenciamento de configurações

O gerenciamento de configuração é outro recurso do Ansible. Usando playbooks Ansible ou comandos ad-hoc, você pode colocar seus sistemas rapidamente em operação com alguns comandos. Como o Ansible usa YAML como a linguagem de configuração padrão, é fácil criar tarefas em um formato legível por humanos e executá-las em máquinas remotas.

Por exemplo, se você tiver um servidor provisionado recentemente, poderá usar o Ansible para atualizar o sistema, instalar os pacotes necessários e iniciar os serviços no servidor.

Automação de Segurança

O Ansible é útil em tarefas de automação de segurança. Por exemplo, usando alguns comandos Ansible, você pode configurar regras de firewall personalizadas, verificar se há malware, limpar seu sistema usando ferramentas personalizadas e muito mais. Ele também permite que você monitore a saúde do seu sistema e faça backups do sistema rapidamente em caso de falha.

Ele também usa SSH para autenticar usuários e executar comandos em hosts remotos, tornando-o muito seguro de usar.

Relacionado: Por que a segurança de software é uma habilidade que todos os programadores deveriam ter

Arquitetura Ansible

Vamos aprender mais sobre as partes que compõem o Ansible Engine.

Os inventários

O Ansible gerencia hosts remotos por meio de inventários. Um inventário é um arquivo de texto simples que contém endereços IP e nomes de host de máquinas remotas. Os hosts no arquivo de inventário podem ser organizados em vários grupos, como servidores da web, bancos de dados, backups, etc. Organizar hosts em grupos ajuda os usuários a executar comandos em um grupo específico de máquinas.

Nota: Você deve preencher o arquivo de inventário Ansible com pelo menos um host antes de executar qualquer tarefa.

Playbooks

Os manuais do Ansible são arquivos de texto simples escritos em YAML (YAML Ain't Markup Language). Eles contêm instruções ou comandos a serem executados em um host remoto para realizar uma tarefa específica.

Como os manuais do Ansible são escritos em YAML, eles estão na forma de um formato legível por humanos. Isso o torna muito fácil de usar e entender o Ansible, pois os usuários não precisam dominar a nova sintaxe. Cada manual compreende pelo menos uma ou mais tarefas executadas em todos ou em hosts específicos.

Relacionado:

Módulos

O Ansible fornece módulos aos usuários. Módulos são comandos que ajudam a gerenciar um host remoto a partir do nó de controle. Esses módulos permitem que o Ansible gerencie usuários, instale e desinstale pacotes, atualize sistemas, etc. Eles são executados em Playbooks para tarefas específicas conforme necessário. O Ansible oferece mais de 4600 módulos. Confira todos os módulos Ansible.

Plugins

A arquitetura Ansible permite plug-ins personalizados. Eles ajudam a estender ou melhorar a funcionalidade básica do mecanismo Ansible. Embora venha com vários plug-ins por padrão, você também pode criar plug-ins personalizados para atender às suas necessidades.

API

O Ansible estende a funcionalidade, fornecendo aos usuários vários terminais de API para depuração, execução de comandos, retornos de chamada e muito mais.

Leia mais: O que API significa? Exemplos de como usar APIs

Introdução ao Ansible

O Ansible é fácil e rápido de configurar e usar. Esta seção demonstrará como instalar o Ansible em uma máquina host, configurar hosts remotos e executar tarefas básicas de automação.

O Ansible é multiplataforma e, portanto, suportado pelos principais sistemas operacionais. Para simplificar, este guia discutirá a instalação do Ansible em uma distribuição Linux baseada em Debian. Verifique o processo de instalação do Ansible para outros sistemas operacionais.

Comece editando o arquivo /etc/apt/sources.list

 sudo vim /etc/apt/sources.list

Dentro do arquivo, adicione as seguintes entradas:

 deb http: // ppa.launchpad.net/ansible/ansible/ubuntu trusty main

A entrada acima irá adicionar Ubuntu PPA aos repositórios Debian, permitindo que você instale o Ansible.

Em seguida, execute os comandos abaixo:

 $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
$ sudo apt update
$ sudo apt install ansible -y

O primeiro comando adiciona as chaves necessárias.

Os comandos a seguir atualizam os repositórios de software e, por fim, instalam o Ansible.

Agora que você tem o Ansible instalado em seu sistema, prossiga.

Criação de um inventário

A primeira etapa antes de executar qualquer tarefa de automação do Ansible é configurar um arquivo de inventário de host.

O arquivo de inventário padrão está localizado em / etc / ansible / hosts . Usando seu editor de texto favorito, adicione os endereços IP dos hosts remotos que deseja automatizar.

 $ sudo vim /etc/apt/hosts

Salve o arquivo e feche.

Criação de um manual simples

Os manuais do Ansible permitem que os usuários automatizem tarefas definindo os comandos que são executados no host remoto.

Você criará um manual simples do Ansible que instala o Apache Web Server, cria uma regra de firewall para permitir o Apache e reinicia o serviço

Ansible usa YAML como a linguagem de configuração padrão para seus manuais.

Crie um arquivo YAML usando o comando touch como:

 $ touch first-playbook.yaml

Usando seu editor de texto, adicione as entradas conforme mostrado no exemplo de manual abaixo:

 $ vim first-ansible-playbook.yaml
 ---
- hosts: all
become: true
tasks:
- name: Update apt packages
apt:
state: latest
update_cache: yes
- name: Install Apache
apt:
name: apache2
state: latest
- name: Install UFW Firewall
apt:
name: ufw
state: latest
- name: Allow HTTP ufw
ufw:
state: enabled
rule: allow
port: "80"
proto: tcp
- name: Restart Apache
service:
name: apache2
state: restarted

No manual acima, comece especificando os hosts que você deseja executar. Como há apenas um host no arquivo de inventário, defina os hosts como todos.

Em seguida, defina a instrução tornar-se, que permite que as tarefas do manual sejam executadas como root.

As linhas anteriores definem as tarefas a serem realizadas no host remoto. Eles incluem um nome que descreve as funções e as tarefas reais a serem executadas no host.

O primeiro diz ao Ansible para atualizar o cache do repositório; isso corresponde ao comando:

 $ sudo apt-get update

A instrução a seguir instala a versão mais recente do servidor da web Apache.

Em seguida, está a tarefa de instalação do firewall UFW. Isso requer a ativação e a permissão da porta 80, que o Apache usa no protocolo TCP.

Finalmente, a última declaração reinicia o servidor web Apache.

Execute Ansible Playbooks

Para executar o manual do Ansible, precisamos usar o comando ansible-playbook , que vem com o Ansible na instalação.

Para executar o arquivo first-playbook.yaml, use o comando:

 $ ansible-playbook --user=ubuntu first-playbook.yaml

No comando acima, a opção –user é passada, que especifica o usuário no host remoto.

NOTA: Certifique-se de ter as chaves SSH instaladas no host remoto.

Depois de executar o comando acima, você obterá uma saída conforme mostrado.

O exemplo acima mostra que todos os comandos foram executados com sucesso no host remoto.

Verificar tarefas

Para verificar se as tarefas do manual foram executadas com êxito, abra o navegador e navegue até o endereço IP do host remoto.

Se os comandos foram executados e o servidor Apache está em execução, você verá a página padrão do Apache Ubuntu como:

Você deve usar o Ansible?

Para encerrar, está claro que o Ansible é uma ferramenta poderosa. Sua flexibilidade, recursos e capacidades o tornam uma ferramenta promissora para tarefas de automação atuais e futuras. Se você é um engenheiro de DevOps que busca automatizar suas tarefas de TI com rapidez e facilidade, o Ansible terá um papel significativo em sua jornada.