Skip to content

Ansible

Bruno Ramos edited this page Feb 28, 2022 · 2 revisions

Ansible

É uma ferramenta Open-Source, para orquestração e gerenciamento de configuração. Também conhecido como IaC(Infra As Code). Serve para automatização e padronização de configuração de hosts virtuais (VM e bare metal), possui uma arquitetura simples.

Arquitetura

  • Possuem 2 tipos de máquinas, Control Node e Managed Hosts, o Control é a máquina no qual configuramos o ansible e executamos remotamente todo a configuração dos hosts virtuais, já os Managed são os hosts virtuais no qual serão configurados através do Control Node;
  • Na Control Machine, fica a instalação do Ansible;
  • Dentro da Control Node, temos o Host Inventory no qual é um arquivo de texto com os IP’s mapeados da vm’s que desejamos configurar;
  • A comunicação é efetuada via SSH;
  • Não é necessário instalar agent no managed host.

Core Modules - Executam a maioria das atividades de administrador do S.O, exemplo: Criar usuários/diretórios, ativar/desativar aplicativos;
Custom Modules - São módulos que são criados por nós, desenvolvido em PY;
Playbooks - Arquivos YAML, com os passo a passo do que será configurado nos hosts virtuais;
Plugins - Extensão de funcionalidades(exemplo envio de e-mails, mensagens e etc);
Host Inventory - É o arquivo de texto com a lista de hosts/ips que serão gerenciados pelo Ansible;
Ansible Galaxy - É o local onde podemos pegar roles(tarefas) já desenvolvidas pela comunidade, semelhante ao Docker Hub.

Papéis e Requisitos

Control Node - É acessado por um DevOps(Sysadmin) e inicializam as operações através do Control Node;
Requisitos

  • Python 2.7,3.5 ou superior;
  • Sistema Linux, Mac, não tem suporte a Windows, por isso não é recomendado utilizar Windows em ambiente de produção;
Managed Host - Login, instalação dos módulos e execução dos comandos remotamente;
Requisitos
  • SSH habilitado;
  • Python 2.4 ou superior;

Arquitetura do Lab

  • Controle Nod: Ansible e playbooks
  • APP01
    • Java - OpenJDK-Notes App(REST);
    • Maven
  • DB01: MySQL

Servidores: control-node, app01 e db01

Todos os hosts terão configuração de rede privada, configurados com seus devidos hostnames, aplicado configuração de forward port para a aplicação 8080 - app01 e configuração de forward port para a db 3306 - app01, e por fim nstalação do Ansible no control-node
Após realizado este provisionamento, é para termos 3 servidores criados, todos com comunicação entre eles, pode ser realizado também o mapeamento dos endereços no arquivo hosts do control-node:

192.168.1.2 control-node
192.168.1.3 app01
192.168.1.4 db01

E no arquivo /etc/ansible/hosts, podemos criar grupos para os servidores:
$ cat /etc/ansible/hosts [apps]
app01
[dbs]
db01

Correção de relação de confiança(Acesso via SSH entre os servidores)

Criar dentro da control_node uma chave SSH, com o comando $ ssh-keygen. Copiar a id_rsa.pub e inserir em arquivos de provisionamento para liberar o acesso. Caso já tenha provisionado as VMS, acessar o diretório no qual encontra o arquivo Vagrantfile e rodar $ vagrant reload - - provision. Para verificar se tudo ocorreu certo, basta rodar $ ansible -m ping all

Playbooks

São arquivos de configuração baseado em YAML, com sequência de passos realizados de forma remotamente pelo Ansible

Rodar um playbook $ ansible-playbook nome.yml

Rodar um playbook sem executar $ ansible-playbook nome.yml –check

Pratica Don’t repeat yourself(DRY)

Teste API:

INSERT: curl -H “Content-Type:application/json” –data @note.json http://api01:8080/api/notes
LIST: curl http://app01:8080/api/notes
DELETE: curl -x DELETE -H “Content-Type:application/json” http://app01:8080/api/notes/1

Clone this wiki locally