Topicos Recents
-
Element click intercepted
Geral7 -
Dica de ferramentas para testes visuais
Geral4 -
Erro ao executar testes automatizados com o Chrome [Capybara + Selenium + Docker]
Geral1 -
Problemas com o nightwatch
Geral1 -
Ajuda com Curso
Geral5 -
Como você mapearia este elemento?
Geral12 -
Questionário sobre testes automatizados em aplicativos móveis
Geral4 -
A arte de desenvolver testes - Cucumber + Capybara
Artigos e Tutoriais44 -
Como abrir todos os link de uma página
Geral2 -
QA Analyst/Project Lead (Florianópolis/Remote)
Vagas1 -
QA Engineer - (Pinheiro)
Vagas1 -
Teste de Stress
Geral5 -
Tester que não programa, leia isso por favor.
Artigos e Tutoriais6 -
Executar tags em features diferentes no Cucumber
Geral1 -
QA, trate sua automação como software
Artigos e Tutoriais5 -
[Survey] - Testes automatizados em aplicativos móveis
Geral6 -
Cucumber para javascript Duvida
Artigos e Tutoriais2 -
Vagas QA PL e Sr - São Paulo
Vagas1 -
Episode 010 - The Automate or Die Special - The Evil Tester Show
Feed de Blogs e Posts2 -
Ruby In Tests
Artigos e Tutoriais7
Utilizando o Ansible para provisionar ambientes
-
Depois de um tempo sem postar, venho falar de uma ferramenta que gosto muito: o Ansible. Para mostrar como funciona o Ansible, criaremos um blog na plataforma Ghost e esse será executado em um container Docker utilizando a imagem Ghost. Veremos como utilizar o Ansible e de quebra, como usá-lo juntamente com uma imagem Docker.
Vamos aprender a utilizar o Ansible:
Uma visão geral da estrutura de pastas do Ansible:
Inventory:
Na pasta hosts definimos o inventário das nossas máquinas que serão executados os playbooks (já veremos o que isso significa), no exemplo abaixo, temos um inventário chamado de blog-server, que contém apenas uma máquina inventariada.
Poderíamos ter outros inventários no mesmo arquivo ou outras máquinas inventariadas. Bastaria adicionar o endereço, login e senha dos outros servidores.
Ansible.cfg:
No arquivo ansible.cfg definimos qual será o inventário padrão e ignoramos a pergunta relacionada ao desejo de adicionar o IP da máquina ao arquivo known_hosts.
Playbooks:
Podemos dizer que um playbook é uma receita, onde é definido o que será provisionado nos nossos inventários. Fazendo uma analogia, seria um passo a passo para uma receita de bolo.
Nesse exemplo temos 3 passos a serem executadas, config-basic, docker, start-services. É importante dizer que esses passos são executados sequencialmente. Abaixo veremos o que cada um deles faz:
Roles:
Na pasta roles temos o seguinte formato:
Roles config-basic files tasks docker files tasks start-services files tasks
Dentro de cada role, existe a pasta files, onde ficam os arquivos que serão utilizados para configurar algo no provisionamento do ambiente. Dentro da pasta tasks ficam as tarefas que serão executadas para provisionar o ambiente desejado. Por padrão o Ansible sempre procura dentro da pasta tasks um arquivo main.yml.
config-basic:
Abaixo temos o nosso arquivo main.yml com tarefas para configurar: timezone, language, criação de um usuário, adicionar o usuário no grupo de sudo e instala o unzip na máquina provisionada.
Docker:
Dentro da pasta files temos um arquivo do docker-compose.yml para subir o blog que desejamos na máquina provisionada.
Dentro da pasta tasks temos uma tarefa para adicionar o arquivo docker-compose.yml para dentro da home do usuário.
Agora tempos a tarefa para instalar o Docker na máquina que irá ser provisionada.
Próxima tarefa é para instalar o docker-compose na máquina provisionada.
Agora o arquivo main.yml tem apenas os imports das tarefas que estão na mesma role, dessa forma, fica mais organizado do que adicionar todas as tarefas no mesmo arquivo.
Start-services: E por último, vamos executar o comando para “startar” o serviço com o docker-compose.
Para provisionar uma máquina e rodar o blog com o Ghost, basta executar o comando:
ansible-playbook blog-server.yml
Ao executar este comando será apresentada a imagem abaixo, quando finalizar o provisionamento do nosso blog.
Ao acessar a máquina que provisionamos, podemos ver o nosso blog em execução, pronto para configurarmos.
É isso pessoal, espero que tenham gostado desse post. Até o próximo.
Referencias
http://docs.ansible.com/ansible/playbooks_best_practices.html https://www.ansible.com/
http://rafaelchiavegatto.com.br/2016/10/11/utilizando-o-ansible-para-provisionar-ambientes/