Ansible - Automatizando o Data Center
Este documento foi criado com a intenção de ser um tutorial Quick-Start. Para uma referência completa do Ansible, exemplos e boas práticas, visite seu site oficial.
Parte 2: Instalação / Configuração inicial
Instalação
Convenções: para simplificar, chamaremos a máquina que gerencia as outras de Master e as máquinas gerenciadas, de Slaves. Para esse tutorial, usaremos o Ubuntu 12.04 LTS.Como foi falado anteriormente, o setup do Ansible é muito simples. Ele pede um mínimo de pacotes no Master, todos plenamente disponíveis nos repositórios da própria distro.
Assim, o setup do tutorial compõe-se de: duas VMs Ubuntu 12.04: uma Master e outra Slave. Mas, nada impede de você usar seu Desktop como Master e apenas uma VM como Slave.
Pré-requisitos gerais:
- Master e Slave conseguem conectar uma à outra via: ssh operador@<ip>
- Master e Slave podem instalar normalmente pacotes via apt-get.
- O usuário padrão na Master e Slave é operador. E ele pode tem permissão de sudo su -.
Configuração do Master:
Logue no Master, com o usuário operador. Instale os seguintes pacotes:
sudo apt-get install python-paramiko python-yaml python-jinja2 sshpass git
Instalação do Ansible:
Crie um diretório que conterá, tanto o Ansible, quando a infraestrutura de gerenciamento:
mkdir ~/manager
$ mkdir -p ~/manager/{hosts,books}
Agora, instale o Ansible:
cd ~/manager
$ git clone https://github.com/ansible/ansible.git
Aguarde o download do Ansible via Git.
Configuração inicial
Nesse momento, o Ansible está instalado em ~/manager/ansible. Para ativá-lo, execute:source ~/manager/ansible/hacking/env-setup
Digitando ansible, sem parâmetros, já deveria trazer o Help dele. É recomendável colocar em seu ~/.bashrc, para facilitar, o comando:
source ~/manager/ansible/hacking/env-setup
O próximo passo, é a criação de um arquivo de hosts. Esse arquivo lista os seus servidores e os parâmetros de acesso. Então, crie o arquivo usando o editor de textos de sua preferência, como no exemplo abaixo:
vim ~/manager/hosts/ansible_hosts
Como exemplo, criaremos um grupo chamado AppServers com apenas a Slave de testes. O conteúdo do arquivo está listado abaixo (substitua de acordo com seu ambiente). No exemplo abaixo, temos uma VM VirtualBox rodando na mesma máquina, com a porta SSH/22 "nateada" para 51222.
[AppServers]
127.0.0.1 ansible_ssh_port=51222 ansible_ssh_user=operador ansible_ssh_pass=opersenha01
127.0.0.1 ansible_ssh_port=51222 ansible_ssh_user=operador ansible_ssh_pass=opersenha01
O próximo passo, é exportar a variável ANSIBLE_HOSTS. Ela aponta para o o arquivo ansible_hosts que contém os Slaves que você quer administrar.
Em nosso caso, exportaremos assim:
export ANSIBLE_HOSTS=~/manager/hosts/ansible_hosts
Obs.: recomendo colocar a linha acima também em seu .bashrc.
Para testar a configuração:
ansible all -m ping
Deveria responder algo assim:
$ ansible all -m ping
127.0.0.1 | success >> {
"changed": false,
"ping": "pong"
}
Se der erro, revise o seguintes passos:
1. Usuário/senha do arquivo ansible_hosts.
2. Pode ser necessário instalar o pacote python-simplejson na máquina Slave:
# apt-get install python-simplejson
Outros exemplos, usando módulos:
ansible all -m shell -a 'touch ~/teste.txt'
$ ansible all -m shell -a 'date'
$ ansible all -m file -a 'path=~/teste.txt owner=operador group=operador mode=0664'
Artigo bem completo, mas não ficou claro tudo que este software faz. Podia ter tirado uns prints e explicado melhor, não ?