Olá, pessoal!
Hoje vamos falar sobre uma ferramenta que cada vez mais quem trabalha com Docker acaba utilizando, que é o Ansible. À primeira vista, muitas pessoas acham que ambas ferramentas fazem a mesma coisa, apresentando uma solução para gerenciamento de configurações através de meios diferentes. Na realidade, a união das duas ferramentas torna o ambiente de implantações de softwares limpo, confiável e rápido.
Ansible
É uma ferramenta de automatização de tarefas semelhante a Puppet e Chef, porém muito mais poderosa e a queridinha do pessoal de DevOps hoje. Com ela é possível fazer o deploy de aplicações, provisionar servidores, automatizar tarefas, entre outras funções.
O Ansible trabalha com arquivos YAML, o principal arquivo de configuração é chamado de PLAYBOOK, onde você coloca todas as tarefas que serão executadas “yum”, ”mkdir”, ”useradd” e no arquivo .ini você adiciona os servidores onde o Ansible irá executar esse PLAYBOOK. Cada um deles possui roles, que são as informações de provisionamento. Após definir as roles, você definirá em quais hosts essas roles serão executadas.
Dentro das roles existem as tasks, handlers, variaveis e templates:
- Tasks: Tarefas de provisionamento que serão executadas;
- Handlers: Tarefas para manipular serviços e arquivos;
- Templates: Arquivos para serem transformados em configurações dentro das máquinas;
- Variaveis: Valores que são definidos para serem usados dentro das tasks, handlers e templates.
O Ansible é uma ferramenta muito mais simples que seus concorrentes citados anteriormente, já que ele não precisa da instalação de agents nos servidores no qual ele irá executar.
É possível utilizar Docker e Ansible em conjuntos para resolver duas situações: omplantação de containers e criação de imagens.
Na implantação de containers é possível fazer toda a parte de orquestração, configuração e provisionamento com containers, sem precisar fazer a instalação de agents dentro dos containers
Já na criação de imagens:
Exemplo de Playbook:
# Mysql service name for drupal application mysqlservice: mysqld # Mysql port for drupal application mysql_port: 3306 # Database name for the drupal application dbname: databasename # Mysql Username for drupal application dbuser: root
Exemplo de configuração do arquivo do Ansible:
[defaults] inventory = /etc/ansible/inventory host_key_checking = False priva_key_file = ~/.sh/id_rsa callback_plugins = /opt/ansible-plugins/callbacks connection_plugins = /opt/ansible-plugins/connections
Então, pessoal, hoje fizemos apenas uma pequena introdução ao Ansible. Em nossos próximos artigos vamos trazer algo como Jenkins, Travis e também faremos um grande artigo mostrando como podemos criar um ambiente com Docker, Jenkins e Ansible.
Obrigado!
Veja o artigo usando como referência clicando neste link.