Por: @eduardoh Publicado em: 2022-08-23
Ambiente Bastion iTFLEX
Objetivo
O ambiente “Bastion” é responsável por gerenciar a infraestrutura interna da iTFLEX via Ansible/AWX.
Nele há playbooks de atualização de ambiente, provisionamento de infraestrutura padrão (softwares e configurações), entre outros.
Basta informarmos IP, usuário e senha da máquina que queremos aplicar a playbook e então executar para que tenhamos o ambiente completamente provisionado e padronizado.
A estrutura
A stack foi desenvolvida para executar baseada em microserviços utilizando Docker.
Topologia
O cenário anterior mostra a disposição dos containers no host itflex-bastion-01 (192.168.47.80).
Containers
awx_task: responsável pela execução das tarefas Ansible nos targets.awx_web: responsável pela integração do motor a interface web.awx_postgres: banco de dados para armazenamento dos dados.awx_redis: banco de dados baseado em memória.
Volumes
Priorizamos trabalhar com um número maior de volumes para garantir a persistência de dados, assim como do banco de dados, até arquivos estáticos utilizados pelos containers.
awx-static-files: armazena os dados estáticos, comonginx.conf, etc.awx-vol-ansible-projects: armazena as playbooks do Ansible.awx-vol-postgres-db: armazena o conteúdo do banco de dados Postgres.awx-vol-redis-db: armazena o conteúdo do banco de dados Redis.awx-vol-redis-socket: armazena o socket do serviço Redis.awx-vol-rsyslog-config: armazena as configurações do serviço Rsyslog.awx-vol-rsyslog-socket: armazena o socket do serviço Rsyslog.awx-vol-supervisor-socket: armazena o socket do serviço Supervisor.
Acesso
Atualmente o serviço está privado a LAN, por isso não foi utilizado certificado digital HTTPS, sendo assim basta acessar o IP 192.168.47.80 via navegador.
Arquivos
A estrutura de implantação foi escrita para realizar todo deploy no diretório /stor.
/stor/installer: arquivos para deploy do ambiente AWX escritos em Ansible, para rodar, copie toda pasta para o novo servidor, dentro da pasta execute o comandoansible-playbook -i inventory install.yml/stor/docker: diretório que está armazenando o arquivodocker-compose.ymlcom as especificações para deploy do ambiente./stor/volumes: diretório que armazena todos os volumes utilizados pelos containers.
Adicionando novas playbooks
Para inserirmos novas playbooks para utilização via AWX, devemos acessar o servidor itflex-bastion-01 e então copiar a playbook para o diretório /stor/volumes/awx/awx-vol-ansible-projects/. Dentro dessa pasta devemos manter o seguinte padrão:
├── nome-playbook
│ ├── playbook.yml
│ └── roles
│ ├── defaults
│ │ └── main.yml
│ ├── handlers
│ │ └── main.yml
│ └── tasks
│ └── main.yml
Assim o AWX irá reconhecer o conteúdo e disponibilizar via interface.
Para facilitar, um exemplo de arquivo playbook.yml é o seguinte:
---
- name: Install Docker
hosts: all
gather_facts: yes
roles:
- {role: check_vars}
- {role: install_docker}
...
Agora devemos criar um novo projeto informando o caminho da nossa playbook:
Depois vamos criar um novo template para utilizar nosso projeto adicionado no passo anterior:
O formato mais simples para execução da playbook é utilizarmos da seguinte forma:
Agora vamos executar nosso template e completar as variáveis que indicamos para solicitar no momento da execução: