Se você é um administrador de sistemas, é importante que tenha uma maneira consistente de gerenciar todos os servidores e computadores que está usando. Os sistemas de gerenciamento de configuração podem simplificar bastante o processo. Eles gerenciam todos os sistemas de forma eficiente a partir de um local central.
No Linux, existem múltiplos sistemas de gerenciamento de configuração disponíveis. Por exemplo, Puppet, Chef, Ansible, Bcfg2, Juju, CFEngine, etc. Embora ferramentas como o Puppet e o Chef tendam a ser mais complexas e avançadas, o Ansible oferece simplicidade e facilidade de uso. Você não precisa instalar nenhum software de cliente adicional nos nós para fazer o Ansible funcionar. Em vez disso, o Ansible usa SSH para gerenciar e automatizar sistemas. O Ansible é um software de código aberto. Ele também é altamente escalável, consistente e confiável.
Este guia demonstra como instalar e configurar o Ansible no Ubuntu 20.04.
Ansible no Ubuntu
O Ansible pode realizar três tipos de automação:
-
Provisionamento: Ele pode estabelecer vários servidores de acordo com as necessidades da infraestrutura.
-
Gerenciamento de configuração: Ele pode realizar várias alterações de configuração nos servidores. Por exemplo, iniciar e parar serviços, instalar aplicativos e atualizações, implementar políticas de segurança, etc.
-
Implantação de aplicativos: Ele facilita o DevOps com a implantação automatizada de aplicativos desenvolvidos internamente no sistema de produção.
O Ansible pode funcionar perfeitamente em quase qualquer ambiente de TI – sejam servidores hospedados ou tradicionais, plataformas de virtualização ou na nuvem. Ele também suporta o gerenciamento de vários sistemas, como bancos de dados, redes, firewalls, dispositivos de armazenamento e muitos outros. A CloudSigma também suporta o Ansible para a nossa infraestrutura em nuvem.
Pré-requisitos
Para este guia, precisamos de algumas máquinas:
-
Nó de controle: O nó de controle é o nó central que se conecta a todos os nós host, emite tarefas e gerencia vários aspectos do sistema. O nó de controle pode ser qualquer coisa – uma máquina local ou um servidor remoto.
-
Nó host: Os hosts do Ansible são as máquinas que o nó de controle do Ansible pode automatizar.
Como o título do guia sugere, espera-se que todas essas máquinas estejam configuradas com o Ubuntu 20.04 com os pacotes mais recentes. Aqui está um guia rápido sobre configuração de um servidor Ubuntu. Como o Ansible usa SSH para se conectar às máquinas, todos os nós host devem estar configurados corretamente com chaves SSH com o nó de controle. Certifique-se de que todos os nós host tenham a chave SSH pública do nó de controle adicionada ao authentication_keys arquivo. Siga nosso tutorial para aprender como gerar e adicionar chaves SSH a servidores Linux.
Passo 1: Instalando o Ansible
No caso do Ubuntu, não há necessidade de nenhuma configuração adicional de pacote ou repositório. O Ansible está disponível diretamente nos servidores de pacotes oficiais do Ubuntu. A realização de quaisquer alterações no nível do sistema requer acesso administrativo – o usuário root ou um usuário não-root com privilégio sudo. O arquivo sudoers gerencia a permissão sudo para usuários e grupos.
Primeiro, instalaremos o Ansible no computador que servirá como nó de controle. Para instalar o Ansible no nó de controle, execute os seguintes comandos:
|
1 |
sudo apt update |

|
1 |
sudo apt install ansible -y |

Se você for usar uma senha como mecanismo de autenticação SSH, precisará ter o pacote sshpass instalado:
|
1 |
sudo apt install sshpass |

Passo 2: Configurando o Arquivo de Inventário
No Ansible, o arquivo de inventário contém informações sobre todos os hosts que o ansible gerenciará. Podem ser dezenas ou centenas de servidores registrados no arquivo de inventário. Geralmente, o arquivo de inventário é usado para estabelecer variáveis que serão válidas apenas para os hosts ou grupos. É uma técnica útil na escrita de playbooks e templates. Certas variáveis também podem influenciar como um playbook é executado.
O Ansible vem com um arquivo de inventário padrão. Primeiro, abra o arquivo em um editor de texto:
|
1 |
sudo vim /etc/ansible/hosts |

Por padrão, o arquivo de inventário contém vários exemplos para referência. Aqui está um exemplo com um grupo chamado servers contendo três servidores diferentes. A variável ansible_python_interpreter define o interpretador Python para todos os hosts incluídos no inventário. Com a diretiva ansible_user, podemos declarar a conta de usuário à qual o Ansible se conectará:
|
1 2 3 4 5 6 7 |
[servers] server_1 ansible_host=<server_1_ip> ansible_user=<server_1_username> server_2 ansible_host=<server_2_ip> ansible_user=<server_2_username> server_3 ansible_host=<server_3_ip> ansible_user=<server_3_username> [all:vars] ansible_python_interpreter=/usr/bin/python3 |

Em seguida, salve o arquivo e feche o editor. Para verificar o inventário, execute o seguinte comando:
|
1 |
ansible-inventory --list -y |
A saída deve ser parecida com isto:

Passo 3: Teste de Conexão
Após configurar o arquivo de inventário, precisamos testar se o Ansible consegue se conectar a esses servidores via SSH. Podemos fazer isso simplesmente enviando um ping para todos os nós hosts. A partir do nó de controle, envie um ping para todos os nós hosts:
|
1 |
ansible all -m ping |
O módulo ping verifica as seguintes coisas:
-
Acessibilidade do host
-
Validade das credenciais SSH
-
Os hosts podem executar módulos do Ansible usando Python
A saída deve ser parecida com isto:

Se a resposta de um nó específico for pong, isso significa que o nó está pronto para executar comandos e playbooks do Ansible no servidor.
Passo 4: Executando Comandos Ad-Hoc
Este é um passo opcional. No entanto, pode ser útil para verificar a funcionalidade completa do Ansible nos servidores remotos. Esta seção também pode servir como uma introdução básica ao uso e configuração adicionais do Ansible. Assim que confirmarmos a conectividade com os nós, podemos começar a executar comandos ad-hoc e playbooks. Qualquer comando que você executaria normalmente nos servidores remotos pode ser executado com o Ansible em todos os servidores.
Aqui, execute o seguinte comando. Ele verificará o uso do disco em todos os nós ao mesmo tempo:
|
1 |
ansible all -a "df -h" |

Também podemos executar vários módulos do Ansible usando o recurso de comando ad-hoc, assim como executamos o ping módulo para testes. Por exemplo, o apt módulo funciona com o gerenciador de pacotes APT no Ubuntu. Ele pode gerenciar pacotes em um nó Ubuntu remoto. Observe que ele requer permissão de root para fazer alterações em nível de sistema. O nó remoto deve permitir o login como root ou o usuário deve ter permissão para executar tarefas administrativas.
No exemplo a seguir, o Ansible instala o Nginx em todos os nós hosts:
|
1 |
ansible all -m apt -a "name=nginx state=latest" -u root |
Que tal executar comandos em apenas um único servidor? Usaremos o apelido do servidor (atribuído no arquivo de inventário) para especificar o servidor:
|
1 |
ansible server_1 -a "df -h" -u cloudsigma |

Também podemos especificar múltiplos servidores. Declare o apelido de cada servidor de destino com dois pontos como delimitador:
|
1 |
ansible server_1:server_2:server_3 -a "df -h" -u cloudsigma |

Considerações Finais
Neste guia, mostramos um método passo a passo para instalar o Ansible e configurar um arquivo de inventário para executar comandos ad-hoc a partir do nó de controle do Ansible. Uma vez configurado, o nó de controle pode executar qualquer comando ou playbook que você desejar nos hosts.
Boa computação!
Comentários
Nenhum comentário ainda. Seja o primeiro.