Você está na página 1de 4

24/02/2016 Ansible 

­ Conceitos básicos | Daniel Bruno

Daniel Bruno
Keep It Simple

Ansible – Conceitos básicos
Posted on July 16, 2015 by Daniel Bruno

O Ansible é uma ferramenta que, inicialmente pode ser categorizada como gerenciador de configuração
(configuration management), e comparado a ferramentas bastante populares como o Puppet, Salt, Chef e outos.
Mas também pode ser perfeitamente utilizado como ferramenta de deploy e orquestração de tarefas.

A comunidade de usuários e desenvolvedores do Ansible tem crescido bastante, eu particularmente acompanho a
migração na infraestrutura do Projeto Fedora do Puppet para o Ansible. O Ansible tem também uma comunidade
oficial chamada Ansible Galaxy[0], onde é possível obter playbooks para vários tipos de tarefas, e também
compartilhar os seus playbooks.

Para ajudar a ter uma ideia melhor sobre a ferramenta, vou comentar algumas características, e em seguida
mostrar alguns exemplos de instalação do Ansible e aplicação do playbook.

Playbooks – Como são chamados os arquivos de gerenciamento de configuração, é onde você irá escrever os
perfis dos seus servidores, e as tarefas que devem ser executadas. Algo bem legal a respeito dos playbooks, é sua
simplicidade, que segue o padrão YAML, que torna bastante fácil para escrever e também para ler outros
playbooks.

Agentless – Não é necessário a instalação de agentes nos servidores que serão gerenciados. O servidor com o
Ansible realiza uma coleta das informações dos servidores de destino utilizando o OpenSSH para saber o estado, e
se é necessário realizar alguma alteração, e se houver diferença entre o que está escrito no playbook, e com o
estado atual do servidor de destino, o Ansible realiza as tarefas que estão escritas.

Módulos – Existe uma grande quantidade de módulos integrados para realizar vários tipos de tarefas, como por
exemplo testar a conectividade com servidores remotos, gerenciar serviços, e uns módulos que eu particularmente
gosto bastante são os módulos  para interagir com provedores de Cloud, isso ajuda bastante em tarefas de
escalabilidade de infraestrutura. É possível criar e configurar servidores, interagir com Load Balancers e etc.

Inventário – O inventário é um arquivo onde o Ansible controla grupos de hosts, e no playbook você pode
referenciar determinado grupo que já está previamente configurado no inventário. Por exemplo, você pode criar
um grupo chamado banco de dados e outro grupo chamado web, onde os hosts do grupo banco de dados serão
configurados com um banco de dados MariaDB, e os hosts do grupo web, serão configurados com uma aplicação
web, que ler e escreve nos hosts do grupo banco de dados. Em um post mais a frente, vou mostrar como gerar
inventários para ambientes dinâmicos, por exemplo com Autoscale, e utilizando o Ansible para fazer a
configuração dos hosts e aplicação, usarei como exemplo ambientes na AWS e Rackspace.

Instalação

Para os exemplos, usarei 2 hosts na Digital Ocean, na zona NYC3 que tem suporte a rede interna. 
O primeiro host, onde o Ansible será instalado, vou chamar de master, e o segundo host vou chamar lamp1. 
O host lamp1 está previamente configurado com a chave publica do host master.

O primeiro passo é habilitar o repositório Epel[1] na sua instalação, para isso faça a instalação do pacote RPM e

http://dbruno.org/ansible/ 1/4
24/02/2016 Ansible ­ Conceitos básicos | Daniel Bruno

instale:

wget https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel­release­7­5.noarch.rpm 

Instale o pacote:

yum install epel­release­7­5.noarch.rpm 

Se a instalação do repositório Epel ocorrer sem problemas, já é possível instalar o Ansible através do Yum.

yum install ansible 

Pronto, se não houve nenhum erro, o Ansible está instalado e pronto para trabalhar.

Configuração e inventário

Agora no inventário, vamos criar um grupo chamado lamp, e adicionar o host lamp1. 
O arquivo padrão de configuração do inventário é o /etc/ansible/hosts, esse arquivo pode ser alterado em
/etc/ansible/ansible.cfg,

inventory      = /etc/ansible/hosts 

Para o nosso exemplo vamos usar o arquivo padrão e adicionar o host lamp1 ao grupo lamp. Edite o arquivo
/etc/ansible/hosts, e adicione as linhas abaixo:

[lamp] 
lamp1 

Para fazer um teste, use o módulo de ping para testar a conectividade do host master para o host lamp1.

ansible ­m ping lamp1 
lamp1 | success >> { 
    "changed": false,  
    "ping": "pong" 

Se acontecer algum erro com este teste, possivelmente está relacionado a autenticação via SSH.

Playbook

Vamos escrever um playbook para instalar e configurar um ambiente LAMP (Linux, Apache, MariaDB e PHP).

Tecnicamente não há nenhum impedimento de onde os playbooks devem ser armazenados, nos nossos exemplos
vamos utilizar o path /usr/local/etc/playbooks.

http://dbruno.org/ansible/ 2/4
24/02/2016 Ansible ­ Conceitos básicos | Daniel Bruno

O playbook para instalação do nosso ambiente LAMP e da aplicação /usr/local/etc/playbooks/lamp.yml.

­­­ 
­ name: Configurar ambiente LAMP 
  hosts: lamp 
  tasks: 
   ­ name: Instalar Apache (HTTPD) 
     yum: name=httpd 
 
   ­ name: Iniciar HTTPD 
     service: name=httpd state=started 
 
   ­ name: Instalar PHP 
     yum: name="{{item}}" 
     with_items: 
           ­ php 
           ­ php­common 
           ­ php­cli 
 
   ­ name: Instalar MariaDB 
     yum: name=mariadb­server 
 
   ­ name: Instalar python­mysqldb 
     yum: name=MySQL­python 
 
   ­ name: Iniciar MariaDB 
     service: name=mariadb state=started 
 
   ­ name: Definir usuario e senha 
     mysql_user: login_user=root login_password=123456 user=root password=123456 state=present 

Agora vamos executar nosso playbook e acompanhar o resultado:

ansible­playbook /usr/local/etc/playbooks/lamp.yml 

O resultado esperado é instalação no host lamp1 dos pacotes do Apache httpd, PHP e o MariaDB configuado com
a senha “123456” para o usuário root. 
O pacote MySQL­python é um requisito para que o Ansible consiga interagir com o banco de dados.

O playbook feito para este post é bastante simples, mas eu acredito que dá pra apresentar bem a ideia do
funcionamento do Ansible, porém se você pretende adotar o Ansible em ambientes corporativos, eu aconselho
uma boa leitura da documentação, e também o livro Ansible: Up & Running, onde cada ponto é explicado
detalhadamente e também com muitos exemplos práticos. 
Uma outra dica, caso não pretenda investir realizando testes em algum provedor na nuvem, é a utilização do
Vagrant. No Vagrant é possível carregar um playbook no Vagrant File como provisionamento.

Caso tenha alguma sugestão sobre este post, ou dúvidas, fique a vontade para entrar em contato, ou deixar um
comentário.

[0] – http://galaxy.ansible.com/ 
[1] – https://fedoraproject.org/wiki/EPEL

Referências: 

http://dbruno.org/ansible/ 3/4
24/02/2016 Ansible ­ Conceitos básicos | Daniel Bruno

Hochstein, Lorin. Ansible: Up and Running. ” O’Reilly Media, Inc.”, 2014. 
Ansible Documentation. About Ansible. Disponível em: <http://docs.ansible.com/>. Acesso em: 14 Jul. 2015.

This entry was posted in Ansible, Cloud, Fedora, GNU/Linux, Python and tagged Ansible, CentOS, Fedora, GNU/Linux. Bookmark the permalink.

1 Comment Daniel Bruno   Weslley Ribeiro

  Recommend ⤤ Share Sort by Best

Join the discussion…

Gessé Rocha  •  4 months ago
Bacana essa introdução ao Ansible, valeu por compartilhar!
△  ▽ • Reply • Share › 

✉ Subscribe d Add Disqus to your site Add Disqus Add ὑ Privacy

Daniel Bruno
Proudly powered by WordPress.

http://dbruno.org/ansible/ 4/4

Você também pode gostar