Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução Ansible
Introdução
Ansible é uma ferramenta de automação de T.I. Ele pode configurar systemas, instalar programas e
orquestrar tarefas de T.I. simples ou complexas.
O maior objetivo so Ansible é ser simples e fácil de usar, com foco em segurança e confiabilidade, com
o mínimos de pré-requisitos e movimentação de partes (recursos e bibliotecas).
v
Primariamente utiliza o SSH como ferramenta de transporte, havendo também outras possibilidades.
Objetiva possuir uma linguagem que possa ser interpretada por seres humanos e auditável em todas as
suas tarefas.
Instalar o Ansible é uma tarefa relativamente simples, podendo ser feita de 3 maneiras:
O ansible-core 2.11 e o Ansible 4 vão ter como dependência leve o Python 3.8.
No futuro, os ansible-core 2.12 and Ansible 5.0.0 vão exigir o Python 3.8 ou mais novo.
On Fedora:
$ sudo dnf install ansible
v
On RHEL and CentOS:
$ sudo yum install ansible
$ python3 -m venv ansible # Cria um ambiente virtual chamado ansible, se ainda não existir
$ source ansible/bin/activate # Ativa o ambiente virtual ansible
$ pip3 install ansible # Instala o ansible dentro do ambiente virtual criado
Os conceitos que citamos abaixo são comuns em todos os usos do Ansible. Você deve conhecer estes
conceitos para praticamente todos os sistemas de automação.
Aqui vamos citar as informações mais básicas para o entendimento da estrutura do Ansible:
- Control node; v
- Managed nodes;
- Inventory;
- Collections;
- Modules;
- Tasks;
- Playbooks;
Conhecendo o Ansible
Control node
Qualquer máquina com o Ansible instalado. Você deve ser capaz de rodar comandos e executar
playbooks através dos comandos ansible ou ansible-playbook.
Você pode usar qualquer computador com Python instalado como Control Node (nó de controle).
v
Laptops, desktops e servidores (mais indicado). No entanto, não pode utilizar uma máquina com
Windows.
Managed nodes
Managed nodes, ou nós gerenciados, são todo e qualquer dispositivo de rede ou servidor gerenciado
pelo Ansible.
Nós gerenciados por vezes são chamados de “hosts”. O Ansible não precisa ser instalado nos nós
v
gerenciados, contudo existem alguns pré-requisitos para um dispositivo ser gerenciado pelo Ansible:
Apesar de não precisar de um “daemon” ansible rodando nos nós, você precisa conseguir se
comunicar com o nó gerenciado. Para a maior parte dos casos, o Ansible utiliza uma conexão SSH e
faz a transferência dos módulos e informações via SFTP.
Para o “hosts” que podem rodar python, você precisa de um Python 2 (2.6 ou superior) ou Python 3
(version 3.5 ou superior).
Importante lembrar que alguns módulos podem necessitar de complementos adicionais instalados no
“host”. Isto deve estar informado dentro da documentação do módulo.
Conhecendo o Ansible
Collections
Collections são um formato de distribuição de conteúdo para o Ansible. Um Collection pode conter
playbooks, roles, modules, e plugins.
Modules
Cada módulo tem um uso particular, desde administrar usuários, até adicionar VLANs em um switch.
v
Você faz a invocação de um módulo através de uma “task”, ou invocar diferentes módulos através de
um playbook.
Tasks
Playbooks
São listas ordenadas de tasks (tarefas). Esta lista fica salva dentro de um arquivo e você pode rodar
quantas vezes você quizer, que elas sempre serão executadas me todos os nós, na ordem correta,
Primeiro temos que criar a chave ssh do usuário utilizado para o Ansible. O nome “admin” é apenas um
conceito, não uma obrigação de nome.
Não obrigatóriamente o usuário que usaremos junto aos hosts administrados terá o mesmo nome do
v
usuário do Controler, mas isso facilita as coisas do dia a dia.
$ ssh-keygen
Você agora vai copiar a chave para dentro do home do usuário com o qual você quer se conectar, ou
seja, o usuário do host que será gerenciado.
Esta chave vai proporcionar que você realize esta mesma conexão no futuro sem senha. Por motivos
v
técnicos, este usuário precisa possuir uma senha e poder utilizar o ssh por senha e por chave.
Aconselhamos que o usuário destino possua sudo (também sem senha) configurado.
Agora você deve copiar a chave ssh para todos os hosts da solução:
$ ssh-copy-id <user>@<host>
$ ssh user@host
Estrutura inicial
Caso a máquina gerenciada não possua sudo sem senha, você pode configurar com o seguinte
comando:
Agora vamos criar a estrutura inicial de diretório para organização do nosso ambiente. Esta estrutura é
apenas o início do que será o projeto, para os primeiros comandos.
$ mkdir ~/ansible-aula-intro
$ mkdir ~/ansible-aula-intro/inventories/staging -p
Entrando no diretório:
$ cd ~/ansible-aula-intro/
Conhecendo o Ansible
Agora vamos criar o arquivo hosts.yml. Este arquivo serve para que o ansible saiba onde ele deve
aplicar as tasks configuradas:
$ vim ~/ansible-aula-intro/inventories/staging/hosts.yml
v
Conhecendo o Ansible
mail.example.com
[wordpress]
foo.example.com v
bar.example.com
[dbservers]
one.example.com
two.example.com
three.example.com
Conhecendo o Ansible
all:
hosts:
mail.example.com:
children: v
wordpress:
hosts:
foo.example.com:
bar.example.com:
dbservers:
hosts:
one.example.com:
two.example.com:
three.example.com:
Conhecendo o Ansible
Ansible ad-hoc