Automação Ansible, do CLI para uma solução mais Enterprise

por Deivid Pilla / Terça, 10 de Fevereiro de 2020

O que é Ansible? É uma plataforma open source de automação. É uma linguagem simples de automação que pode descrever perfeitamente uma infraestrutura TI em playbooks do Ansible. O Ansible é uma poderosa ferramenta de automação e pode ser adaptar a muitos fluxos de trabalho e em diferentes ambientes.

O Ansible é simples
Os playbooks do Ansible fornecem uma automação legível. Isso significa que os playbooks são ferramentas de automação que também podem ser facilmente lidos, compreendidos e alterados. Não é necessário ter conhecimentos especiais de programação para escrevê-los. Os playbooks executam tarefas em ordem. A simplicidade do design dos playbooks os tornam utilizáveis por qualquer equipe.

O Ansible é poderoso
Você pode usar o Ansible para implantar aplicativos, para gerenciamento de configuração, automação de fluxos de trabalho e automação de redes. O Ansible pode ser usado para orquestrar todo o ciclo de vida do aplicativo.

Pontos fortes:
Suporte multiplataforma: O Ansible oferece suporte sema gente para o Linux, Windows, UNIX e dispositivos de rede, em ambientes físicos, virtuais, de nuvem e em contêineres.
Automação legível: Os playbooks do Ansible, são escritos como arquivos de texto usando linguagem YAML, são fáceis de ler e ajudam a garantir que todos entendam.
Descrição perfeita de aplicativos: Qualquer alteração pode ser feita pelos playbooks do Ansible e cada aspecto do seu ambiente de aplicativo ou infraestrutura pode ser descrito e documentado.
Fácil de gerenciar em controle de versão: Os playbooks e projetos do Ansible são textos simples. Eles podem ser tratados como código-fonte e colocados em seu sistema de controle de versão existente.
Compatível com inventários dinâmicos: A lista de máquinas que o Ansible gerência pode ser atualizada dinamicamente a partir de fontes externas para capturar a lista atual correta de todos os servidores gerenciados a todo momento, independente da infraestrutura ou localização.

O Ansible funciona sem Agente
O Ansible não possui um agente, o que facilita muito a automação. O Ansible se conecta aos hosts que ele gerencia usando OpenSSH ou WinRM e executa tarefas, frequentemente (mas não sempre) enviando por push pequenos programas chamados de módulos do Ansible para esses hosts.

Ansible: a linguagem do DevOps
ARTIGO: Automação Ansible

O Ansible é a primeira linguagem de automação que pode ser lida e escrita em toda a TI. É também a única ferramenta somente de automação que pode automatizar o ciclo de vida do aplicativo e o pipeline de entrega contínua do início ao fim.

Conceitos de arquitetura do Ansible
Existem dois tipos de máquinas na arquitetura do Ansible: os nós de controle e os hosts gerenciados. O Ansible é instalado e executado a partir de um nó de controle e esta máquina também tem cópias dos arquivos de projeto do Ansible.

Os hosts gerenciados são listados em um inventário, que também organiza esses sistemas em grupos para um gerenciamento coletivo mais fácil. O inventário pode ser definido em um arquivo de texto estático ou dinamicamente determinado por scripts que obtêm informações de fontes externas.

ARTIGO: Automação Ansible

Os usuários do Ansible criam ações de alto nível para garantir que um host ou grupo de hosts esteja em um estado em particular. Uma ação realiza uma série de tarefas no host ou nos hosts na ordem especificada pela ação. Essas ações são expressas em formato YAML em um arquivo de texto. Um arquivo que contém uma ou mais ações é chamado de playbook. Cada tarefa executa um módulo com argumentos específicos. O Ansible tem centenas de módulos úteis que podem realizar uma grande variedade de tarefas de automação. Eles podem agir em arquivos de sistema, instalar software ou fazer chamadas de API.

Quando usado em uma tarefa, um módulo geralmente garante que algo em particular na máquina esteja em um determinado estado. Por exemplo, uma tarefa que usa um módulo pode garantir que um arquivo exista e tenha permissões e conteúdo particulares, enquanto uma tarefa que usa outro módulo pode garantir que um sistema de arquivos específico seja montado. Se o sistema não estiver nesse estado, a tarefa deverá colocá-lo em tal estado. Se o sistema já estiver nesse estado, a tarefa não fará nada.

O Ansible também usa plugins. Plugins são códigos que você pode adicionar ao Ansible para estendê-lo e adaptá-lo a novos usos e plataformas.

Casos de uso
Diferente de outras ferramentas, o Ansible combina e une a orquestração com o gerenciamento de configuração, o provisionamento e a implantação de aplicativos em uma plataforma fácil de usar.

Gerenciamento de configuração: A centralização da implantação e do gerenciamento de arquivos de configuração é um caso de uso comum do Ansible.
Implantação de aplicativos: Ao definir os aplicativos com o Ansible e gerenciar as implantações com o Ansible Tower, as equipes podem gerenciar todo o ciclo de vida do aplicativo com muito mais eficiência desde o desenvolvimento até a produção.
Provisionamento: Os aplicativos precisam ser implantados ou instalados nos sistemas. O Ansible e o Ansible Tower podem ajudar a aperfeiçoar o processo de provisionamento de sistemas, quer você esteja inicializando PXE, lançando servidores bare-metal ou máquinas virtuais, ou criando máquinas virtuais ou instâncias de nuvem a partir de modelos.
Entrega contínua: A criação de um pipeline CI/CD precisa da coordenação e do comprometimento de várias equipes. Você não conseguirá realizá-la sem uma plataforma de automação simples que todos em sua organização possam usar.
Segurança e conformidade: Quando sua política de segurança está definida no Ansible, é possível integrar a verificação e a remediação de políticas de segurança de todo o site a outros processos automatizados.
Orquestração: Por si só, as configurações não são suficientes para definir seu ambiente. Você precisa decidir de que forma as múltiplas configurações interagem e garantir que componentes discrepantes possam ser gerenciados como um todo.

Pense de forma declarativa
ARTIGO: Automação Ansible

O Ansible é uma ferramenta de estado desejado. Ele aborda o problema de como automatizar implantações de TI ao expressá-las nos termos do estado no qual você deseja que seus sistemas estejam.

O objetivo do Ansible é levar seus sistemas ao estado desejado, fazendo apenas as alterações que forem necessárias.

Inventário do Ansible
Um inventário define uma coleção de hosts que o Ansible gerenciará. Esses hosts também podem ser atribuídos a grupos, que podem ser gerenciados de forma coletiva. Os grupos podem conter grupos filhos e os hosts podem ser membros de múltiplos grupos.

Um arquivo de inventário estático é um arquivo de texto semelhante a um arquivo INI que especifica os hosts gerenciados aos quais o Ansible é direcionado. Em sua forma mais simples, um inventário estático é uma lista de nomes de hosts ou endereços IP de hosts gerenciados, cada um em uma linha única:

[webservers]
web[1:2].example.com
192.168.3.7


[db-servers]
db1.example.com
db2.example.com


[producao]
web1.example.com
web2.example.com
db1.example.com


[desenvolvimento]
web3.example.com
192.168.3.7
db2.example.com

Configuração do Ansible
O comportamento de uma instalação do Ansible pode ser personalizado com a modificação das definições do arquivo de configuração do Ansible. O Ansible seleciona seu arquivo de configuração de uma das várias localizações possíveis no nó de controle.

Uso do /etc/ansible/ansible.cfg O pacote ansible oferece um arquivo de configuração de base localizado em /etc/ansible/ ansible.cfg. Esse arquivo é utilizado caso nenhum outro arquivo de configuração seja encontrado.

Uso do ~/.ansible.cfg O Ansible procura por um ~/.ansible.cfg no diretório pessoal do usuário. Essa configuração será usada no lugar de /etc/ansible/ansible.cfg se existir e se não houver nenhum arquivo ansible.cfg no diretório de trabalho atual.

Uso do ./ansible.cfg Se existir um arquivo ansible.cfg no diretório no qual o comando ansible for executado, ele será usado em vez do arquivo global ou do arquivo pessoal do usuário. Isso permite que os administradores criem uma estrutura de diretórios em que diferentes ambientes ou projetos são armazenados em diretórios separados, em que cada diretório contém um arquivo de configuração criado com um conjunto exclusivo de configurações.

Palybooks Ansible e Comandos ad hoc
Um comando ad hoc é uma maneira de executar rapidamente uma única tarefa do Ansible que você não precisa salvar para que seja executada novamente depois. Eles são operações simples de uma linha que podem ser executadas sem escrever um playbook.

Eles são úteis para testes e alterações rápidas. Por exemplo, você pode usar um comando ad hoc para garantir que uma determinada linha exista no arquivo /etc/hosts em um grupo de servidores. Você pode usar outro comando para reiniciar de forma eficiente um serviço em muitas máquinas diferentes ou para garantir que um pacote de software em particular esteja atualizado.

Execução de comandos ad hoc

# ansible all -m command -a "uname -a"
# ansible webservers -m service -a "name=httpd state=restart"

O argumento "all e webservers" é para especificar o host ou grupo de hosts gerenciados que o comando ad hoc deverá ser executado. Neste exemplo, no primeiro comando, será executado em todos os hosts listados no inventário, e no segundo comando, sobre os hosts pertencentes ao grupo chamado webservers.

A opção -m recebe como argumento o nome do módulo no qual o Ansible deverá executar. Os módulos são pequenos programas escritos em python que são usado para implementar as tarefas. A opção -a recebe a lista desses argumentos como uma string entre aspas.

Consultando os módulos Ansible

# ansible-doc -l
# ansible webservers -m service -a "name=httpd state=restart"

Para consultar os módulos e as strings usamos o comando ansible-doc. O primeiro comando lista todos os módulos disponíveis no sistema, já o segundo comando podemos ter uma visão da documentação de um determinado módulo, no exemplo, o módulo "service", onde teremos a descrição do módulo e de todos os argumentos e exemplos de utilização.

Playbooks Ansible

Para entender melhor o formato de um playbook, revisar um exemplo de comando ad hoc:

# ansible -m user -a "name=axel uid=4000 groups=wheel state=present" servera.example.com

No exemplo de comando ad hoc acima, é criado um usuário com nome "axel" pertencente ao grupo "wheel", com uid "4000".

Ele pode ser reescrito como uma ação simples de uma tarefa e salvo em um playbook. O playbook resultante poderá ter o seguinte conteúdo.

---
- name: Configuração de novos usuários
hosts: servera.example.com
tasks:
  - name: Criar novo usuário Axel
   user:
    name: axel
    uid: 4000
    state: present

Um playbook é um arquivo de texto escrito em formato YAML e é normalmente salvo com a extensão yml. O playbook usa primariamente o recuo com caracteres de espaço para indicar a estrutura de seus dados.

O que é Ansible Tower | AWX?
É um framework para controlar, garantir, proteger e gerenciar sua automação Ansible com uma UI e RESTfull API. Ansible AWX é um projeto upstream para o Red Hat Ansible Tower.

A medida que o time vai amadurecendo com automatização, podemos ver a necessidade de migrar para uma solução que possibilita centralizar tudo em um único lugar, com logs, auditoria, segurança e poder delegar as tarefas para outros usuários, criar workflow e surveys, e tudo isso em um ambiente gráfico.

IMAGEM

Ansible Tower: https://www.ansible.com/products/tower
Ansible AWX: https://github.com/ansible/awx

Por que Ansible Tower ou AWX?
O Ansible Tower ou AWX superam muitos desses problemas, fornecendo uma estrutura para executar e gerenciar o Ansible com eficiência em escala. O Tower e AWX facilita a administração, mantendo a segurança da organização, introduzindo recursos de uma interface web centralizada para gerenciamento dos playbooks, controle de acesso baseado em roles (RBAC) e registro e auditoria centralizados. Sua API REST garante que o Tower ou AWX se integre facilmente aos fluxos de trabalho e conjuntos de ferramentas existentes de uma empresa.

Os recursos de API e notificação da Tower e AWX facilitam a associação de playbooks Ansible a outras ferramentas, como Jenkins, entre outras, para permitir integração e implantação contínuas.

Conhecimento é a Chave
Com Ansible Tower ou AWX você pode configurar, orquestrar e automatizar toda sua infraestrutura e ter tudo logado em um simples dashboard, além de integrar com outras ferramentas para torna-lo ainda mais poderoso.

ARTIGO: Automação Ansible

Alguns dos principais recursos:

▶ Ansible Tower ou AWX continua sendo simples, poderoso e sem agente;
▶ O Tower ou AWX fornece uma solução de automação mais Enterprise;
▶ Assume o controle entre equipes e organizações distribuídas;
▶ Usa credenciais individuais para executar os playbooks;
▶ Audita e reporta atividades de automação e gerenciamento;
▶ Controle de acesso e armazenamento seguro das credenciais;
▶ Conecta com LDAP, AD, SAML e outros serviços de autenticação;
▶ Permite que usuários automatizam sem conhecimento prévio de Ansible;
▶ Criar surveys para configurar a automatização em tempo de execução;
▶ Criar workflows para interligar automatização;
▶ Dashboard único de gerenciamento e auditoria.

Em um próximo tópico irei abordar mais sobre a ferramenta, parte de instalação, e mostrar na prática o uso do Ansible AWX.

Está com dúvidas ou precisa falar com algum atendente? Clique aqui e entre em contato.

FAÇA SEU LOGIN

CRIE SUA CONTA

ESQUECEU SEUS DADOS?

LIGAMOS PRA VOCÊ

Preencha o formulário abaixo e entraremos em contato!

TOP