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-usercriado 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:

  • Primeiro vamos adicionar um novo inventário:

  • Definimos um nome e uma descrição, para lembrar que o inventário foi sincronizado a partir do Gitlab:

  • Agora vamos até a aba Sources do nosso inventário:

  • 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: