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.yml
com 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:



