Ansible · 8 min read · Dec 19, 2025

Como Instalar e Configurar o Ansible no Ubuntu 20.04

Ansible é uma ferramenta de gerenciamento de configuração muito popular projetada para simplificar o processo de controle de um grande número de servidores. Você pode controlar quantos servidores quiser e executar processos neles simultaneamente a partir de um único nó.

O Ansible não requer nenhum software especial a ser instalado nos nós do servidor e pode controlá-los via SSH.

Neste guia, aprenderemos como instalar e configurar o Ansible em um servidor Ubuntu 20.04.

Pré-requisitos

  • Dois ou mais sistemas de servidor baseados em Ubuntu 20.04 com o servidor OpenSSH instalado.
  • Tanto o servidor quanto os nós são acessíveis via endereços IP públicos.
  • Um usuário não-root com privilégios sudo configurado no servidor Ansible e um usuário root com uma senha configurada nos clientes Ansible.

Instalar Ansible

O repositório oficial do Ansible não suporta o Ubuntu 20.04 devido a um bug na biblioteca python do Ubuntu no momento da redação deste tutorial.

Felizmente, o Ubuntu vem com o Ansible 2.9, que é o que iremos instalar. Execute o seguinte comando para instalar o Ansible.

$ sudo apt install ansible -y

Teste sua instalação executando o seguinte comando.

$ ansible --version
ansible 2.9.6
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/username/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]

Configurando o Arquivo de Inventário

Para poder se conectar a vários hosts, você precisa de um arquivo que registrará os detalhes dos nós. Este arquivo é chamado de Arquivo de Inventário.

Dependendo de quantos servidores você deseja controlar, o arquivo de Inventário do Ansible também permite que você os organize em grupos e subgrupos. Você também pode definir variáveis personalizadas aplicáveis a hosts ou grupos selecionados, que podem ser usadas posteriormente ao passar as instruções.

O Ansible vem com um arquivo de Inventário padrão disponível em /etc/ansible/hosts. Abra-o com o editor Nano.

$ sudo nano /etc/ansible/hosts

Cole o seguinte código no final do arquivo.

[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113

[all:vars]
ansible_python_interpreter=/usr/bin/python3

A seção servers define a lista de nós aos quais você deseja se conectar. Você pode criar quantos grupos quiser para organizar servidores em vários grupos.

O grupo all:vars define o parâmetro ansible_python_interpreter em todos os hosts do inventário. Isso garante que o Ansible use o executável Python 3 em vez do Python 2, que foi removido das versões recentes do Ubuntu.

Quando terminar, salve e feche o arquivo pressionando CTRL+X, depois Y e ENTER para confirmar suas alterações.

Nota: Você também pode criar seu próprio arquivo de Inventário em qualquer local de sua escolha, que pode ser passado usando o parâmetro -i ao executar comandos do Ansible.

Você pode verificar sua lista de inventário pelo seguinte comando.

$ ansible-inventory --list -y
all:
  children:
    servers:
      hosts:
        server1:
          ansible_host: 203.0.113.111
          ansible_python_interpreter: /usr/bin/python3
        server2:
          ansible_host: 203.0.113.112
          ansible_python_interpreter: /usr/bin/python3
        server3:
          ansible_host: 203.0.113.113
          ansible_python_interpreter: /usr/bin/python3
    ungrouped: {}

Organizando Servidores em Grupos e Subgrupos

Esta é uma dica útil se você tiver muitos servidores, com alguns servidores desempenhando funções específicas. Por exemplo, você pode usar esse método para agrupar servidores web e servidores de banco de dados separadamente. Você pode até fazer um host parte de vários grupos. Para conseguir isso, seu arquivo de inventário deve se parecer com o seguinte.

[webservers]
203.0.113.111
203.0.113.112

[dbservers]
203.0.113.113
server_hostname

[development]
203.0.113.111
203.0.113.113

[production]
203.0.113.112
server_hostname

Configurar Chaves SSH

Para que o Ansible possa se conectar aos servidores, você deve configurar chaves SSH entre seu servidor Ansible e os hosts especificados no arquivo de inventário. Isso funcionará apenas se os clientes Ansible não tiverem uma chave pública habilitada e tiverem uma conta root habilitada com uma senha.

Use os seguintes passos para criar e configurar uma chave SSH para o Ansible e seus nós.

Crie a chave para o Ansible.

$ ssh-keygen -t rsa -b 4096 -C "Chave Ansible"

Copie a chave pública para suas contas nos servidores remotos. Para isso, usaremos o comando ssh-copy-id.

$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]

É isso. Agora o Ansible deve ser capaz de se comunicar com seus servidores.

Configurar Chaves SSH em Nós com Chave Pública Existente

Se os clientes já tiverem chaves públicas habilitadas, você terá que seguir certos passos extras. Para isso, você precisa criar um novo usuário acessível apenas pelo Ansible em cada servidor nó. Esse usuário terá privilégios sudo acessíveis sem senha e poderá ser acessado apenas a partir do seu servidor ansible.

Para criar um usuário ansible, execute o seguinte comando.

$ sudo adduser ansible

Escolha uma senha forte e deixe todos os outros campos vazios.

Agora, configure o acesso sudo sem senha para esse usuário através do seguinte comando.

$ echo "ansible ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ansible

Agora que você adicionou e configurou o novo usuário, pode copiar a chave SSH do seu servidor ansible para o servidor nó usando o seguinte comando.

$ ssh-copy-id [email protected]

Você será solicitado a inserir a senha do usuário ansible. Digite-a e a chave SSH será copiada.

Em seguida, desative o login baseado em senha para o usuário ansible no servidor nó.

$ sudo usermod -L ansible

Agora, seu servidor nó só é acessível a partir do servidor Ansible, uma vez que apenas esse servidor possui a chave pública para ele e você não pode usá-la com privilégios sudo no servidor nó diretamente, uma vez que o login por senha está desativado.

Você terá que repetir esses passos para cada servidor nó. Além disso, substitua o usuário root pelo usuário ansible neste tutorial.

Testar Conexão

Após configurar o arquivo de inventário e as chaves SSH, devemos verificar se o Ansible é capaz de se conectar aos servidores.

Digite o seguinte comando para verificar a conexão. Este comando testará a conexão com todos os servidores do arquivo de inventário.

$ ansible all -m ping -u root

Este comando usa o módulo ping do Ansible para executar um teste de conectividade em todos os servidores. Você deve obter uma saída como a seguinte.

server1 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
server2 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
server3 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

Se esta for a primeira vez que você está usando o Ansible, será solicitado que você confirme a autenticidade de todos os servidores. Quando solicitado, digite yes e pressione ENTER para confirmar.

Executar Alguns Comandos Básicos

Vamos executar alguns comandos básicos nos servidores usando o Ansible. Para executar qualquer comando no servidor, o seguinte formato é usado.

$ ansible all -a "comando" -u 

Verificar Uso de Disco

Primeiro, vamos verificar o uso de disco em todos os nossos servidores.

$ ansible all -a "df -h" -u root
server1 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
udev            3.9G     0  3.9G   0% /dev
tmpfs           798M  624K  798M   1% /run
/dev/vda1       155G  2.3G  153G   2% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/vda15      105M  3.6M  101M   4% /boot/efi
tmpfs           798M     0  798M   0% /run/user/0

server2 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
udev            2.0G     0  2.0G   0% /dev
tmpfs           395M  608K  394M   1% /run
/dev/vda1        78G  2.2G   76G   3% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/vda15      105M  3.6M  101M   4% /boot/efi
tmpfs           395M     0  395M   0% /run/user/0

Alvo de Hosts e Grupos Individuais

Até agora, estávamos executando comandos em todos os servidores remotos de uma vez. Mas isso nem sempre é o caso. Para executar um comando em apenas um servidor, você deve usar o seguinte formato.

$ ansible server1 -a "uptime" -u root
server1 | CHANGED | rc=0 >>
 21:38:26 up 11 min,  2 users,  load average: 0.00, 0.20, 0.19

O comando acima verifica o tempo de atividade no server1 do grupo de inventário.

Você também pode direcionar vários servidores usando o seguinte formato.

$ ansible server1:server2 -m ping -u root

Você também pode direcionar grupos ou subgrupos diretamente do arquivo de inventário.

$ ansible groupname -m ping -u 

Atualizar todos os servidores

Para este tutorial, estamos assumindo que todos os servidores remotos estão executando o sistema operacional Debian ou Ubuntu.

Execute o seguinte comando para atualizar o software em todos os seus servidores.

$ ansible all -m apt -a "update_cache=yes upgrade=yes" -u root

O parâmetro -m define o módulo que o Ansible deve executar. O -a refere-se aos argumentos ou comandos para o módulo associado. Aqui, estamos usando o módulo apt do Ansible para atualizar servidores, assim como usamos o módulo ping em nosso último exemplo. update_cache atualiza o cache APT no servidor e upgrade=yes informa ao Ansible para executar o comando apt upgrade.

Para atualizar seus servidores CentOS, você pode usar o mesmo comando substituindo apt por yum e para servidores Fedora, você pode substituir apt por dnf.

Se você estiver usando o usuário ansible, conforme documentado acima, precisará modificar o comando ansible para ser executado com privilégios sudo elevados.

$ ansible server2 -m apt -a "update_cache=yes upgrade=yes" -K -b -u ansible

Aqui, -K solicita a senha de escalonamento de privilégios. -b executa a operação ansible com become, que permite que você seja outro usuário. Ambas as variáveis combinadas permitem que o ansible seja executado com privilégios sudo elevados. Você precisará usar isso para todos os comandos que requerem privilégios sudo.

Às vezes, alguns desses comandos de atualização podem exigir uma reinicialização, então execute o seguinte comando para reiniciar todos os seus servidores.

$ ansible all -a "reboot" -u root

Esses foram apenas alguns dos comandos básicos que você pode executar usando o Ansible.

Conclusão

Isso conclui nosso tutorial sobre como instalar e configurar o Ansible em um servidor baseado em Ubuntu 20.04. Se você tiver alguma dúvida, poste nos comentários abaixo.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.