Ter Ansible instalado na máquina, caso não tenha, podemos utilizar diretamente de um container https://github.com/raffaeldutra/docker-ansible.
Utilizar infraestrura como código de uma maneira simplificada onde tudo é basicamente controlado via script e automatizado por ele.
A infraestrutura fica hospedada na AWS sendo facilmente possível reconstruir toda o ambiente do zero.
Pensando em trazer o máximo de automação possível dentro do contexto que foi solicitado, segui na linha onde o meu endpoint (public dns) da AWS seria o ponto de entrada para toda a configuração com Ansible.
Ao final, cada ferramenta foi escolhida principalmente pelos seguintes motivos:
Utilizado AWS devido a praticidade de utilizar recursos com Terraform e pelo maior contato que tenho com ela e o tempo para realizar o teste.
Terraform é a escolha principal para trazer uma infraestrutura do zero e o maior motivo de utilizar esta ferramenta é a facilidade de consumir recursos de Cloud Providers, como AWS.
Praticamente qualquer OS Linux vem com Python instalado e a única coisa que precisamos fazer é configurar o host e chaves.
A grande decisão de utilizar Ansible ou não é pela fácil implementação que ela proporciona, basta SSH e Python e você irá fazer automação de processos/tarefas.
Para instalar Docker com Ansible, eu utilizei uma role desenvolvida por mim que pode ser encontrada em https://galaxy.ansible.com/raffaeldutra/ansible_docker_role
Nginx tem inúmeras funcionalidades, como proxy reverso para email, balanceador de carga para http, tcp,udp e baixo consumo de memória ram. Também uma sintaxe mais simples ao meu ver que Apache.
Gitlab é uma ferramenta completa para pipelines de software e automação de processos e respositório de código.
Para utilizar Gitlab neste desafio, tive que alterar a url que o Gitlab atendia, pois por padrão ele não é feito para ser acessado via caminhos relativos, portanto realizei o seguinte procedimento abaixo e automatizei o processo com Ansible. https://docs.gitlab.com/ee/install/relative_url.html
Para construir e publicar a imagem da aplicação, foi utilizado Docker Hub, por dois motivos:
Todo o deploy se encontra no script runme.sh.
Este script necessita dois parâmetros.
Ação
Nome do cliente
Ação é o que desejamos fazer, como:
Nome do cliente
Para executar o script, digite no terminal bash runme.sh e verifique a saída. A saída é bem explicativa com uma ajuda de quais funcionalidades podemos realizar.
Sintaxe básica de Utilização: bash runme.sh [OPÇÃO] [NOME DO CLIENTE]
Durante o processo de criação da infraestrutura na AWS com Terraform foram criadas as chaves de acesso ao servidor, elas estão em /tmp/tls_key.pem em sua máquina.
Content type
Image
Digest
Size
18.3 MB
Last updated
over 7 years ago
docker pull raffaeldutra/king-infra