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, como nginx.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 comando ansible-playbook -i inventory install.yml
  • /stor/docker: diretório que está armazenando o arquivo docker-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: