Por: @eduardoh Publicado em: 2022-12-08
IaC iTFLEX
Objetivo
Este documento tem como objetivo explicar como foi constituído o conceito IaC (Infrastructure as Code) na iTFLEX.
Repositório
Os principais recursos utilizados nessa transformação digital, estão disponíveis no repositório do Gitlab aqui!
Este repositório é privado e restrito, para ter acesso ao conteúdo, solicite acesso ao Maurício, Vilmar ou Eduardo.
Neste repositório estão contidos scripts, playbooks Ansible, Dockerfiles, entre outros conteúdos.
Utilização
Além do armazenamento, o objetivo é centralizar informações dos servidores da iTFLEX e integrá-las ao AWX, assim podendo padronizar nossa infraestrutura de servidores.
Todos os recursos disponíveis, foram testados e ou estão rodando na iTFLEX, como exemplo temos o Zabbix DevOps, Grafana DevOps e o próprio AWX.
O principal objetivo do repositório é utilizar ele como centralizador de playbooks Ansible e inventário dos servidores da iTFLEX, assim podemos integrar ao AWX e executar nossas playbooks, facilitando a administração.
Preparando o ambiente para executar o Ansible
Antes de executar nossas playbooks Ansible, um script Python foi criado para facilitar a criação de usuário e importação de chave SSH, para permitir que o Ansible conecte no servidor destino, suba privilégios como root e execute as ações necessária.
Você pode copiar o conteúdo do script e criar um arquivo no servidor destino, ou então clonar o mesmo.
Após possuir o script, basta executar via Python: python3 script.py
Utilizando o AWX
Este tutorial é dividido em duas partes, a primeira é quando queremos criar algo do zero ou editar o que já existe, a parte dois é como executar nossas playbooks.
Parte 1 - Criando/atualizando nossas playbooks
1 - Clone o repositório iac-itflex
, preferencialmente via SSH para facilitar os commits seguintes:
2 - Após clonado, teremos acesso ao repositório remoto, inicialmente devemos criar o nosso arquivo de inventário, onde queremos executar nossa playbook. Observe que já existem alguns arquivos, utilize o mesmo padrão para criar um novo:
- Crie uma pasta para separar o grupo de hosts para execução.
- Crie um arquivo simples chamado
hosts
e dentro dele respeite a identação e também o formato. Quando o host possuí registro DNS publicado pode-se utilizar o nome, caso contrário pode-se usar o IP.
3 - Crie o arquivo no diretório ansible/playbooks/nome-playbook.yml
para definir qual role iremos executar. Nesse arquivo também devemos permitir que o usuário padrão iac-itflex-user
criado anteriormente, tenha poderes de root
, com o parâmetro become: yes
, os demais parâmetros você pode verificar a necessidade e alterar caso precisar:
4 - Agora devemos criar a role, com as definições necessárias que queremos executar em nosso ambiente. Lembre-se sempre de respeitar a indentação dos arquivos e a hierarquia de diretórios e arquivos do Ansible:
5 - Após finalizar a criação, devemos sincronizar nosso repositório do Gitlab no AWX para depois inserir nosso novo inventário e nossa playbook. Vá até a interface do AWX e atualize o projeto iac-itflex
:
6 - Agora vamos adicionar o inventário ao AWX:
-
Definimos um nome e uma descrição, para lembrar que o inventário foi sincronizado a partir do Gitlab:
-
Precisamos indicar o arquivo de inventário que criamos nos passos anteriores:
-
Depois de criar e sincronizar, na aba
Hosts
teremos os nossos hosts importados corretamente:
7 - Adicionando nossa Playbook ao AWX:
-
Vá até a aba
Templates
, defina o nome da Playbook e as configurações necessárias, vamos selecionar para sempre perguntar sobre inventário e credenciais no momento da execução da Playbook: -
Agora com a Playbook criada, podemos executar em nossos servidores de destino:
Parte 2 - Executando uma Playbook no AWX
1 - Acesse a interface do AWX e vá até Templates
, escolha qual Playbook deseja executar e clique sbre o “foguete”:
2 - Agora vamos definir alguns parâmetros de execução, como inventário e credenciais:
3 - Agora basta aguardar a Playbook executar e ao final será exibido um relatório como esse: