Ansible Ubuntu · 11 min read · Dec 20, 2025

Como Instalar e Configurar o Ansible no Ubuntu 22.04

O Ansible é uma ferramenta de gerenciamento de configuração muito popular, projetada para simplificar o processo de controle de um grande número de servidores. Ele pode automatizar o processo de configuração de novos servidores e instalação de aplicativos com um único comando ou arquivo. 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 22.04.

Pré-requisitos

  • Dois ou mais sistemas de servidor executando Ubuntu 22.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 está configurado no servidor Ansible e um usuário root com uma senha está configurado nos clientes Ansible.

Passo 1 - Instalar o Ansible

Usaremos o repositório oficial do Ansible para instalar sua versão mais recente. Adicione o repositório oficial do Ansible ao servidor.

$ sudo add-apt-repository ppa:ansible/ansible

Felizmente, o Ubuntu vem com o Ansible 2.9, que é o que vamos 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 [core 2.13.3rc1]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/navjot/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /home/navjot/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.10.4 (main, Jun 29 2022, 12:14:53) [GCC 11.2.0]
  jinja version = 3.0.3
  libyaml = True

Instale e ative o pacote python3-argcomplete para configurar o suporte à conclusão do bash do Ansible.

$ sudo apt install python3-argcomplete
$ sudo activate-global-python-argcomplete3

Agora você pode pressionar a tecla Tab para obter uma lista de opções para o shell bash.

Passo 2 - 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 múltiplos 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 o arquivo pressionando Ctrl + X e digitando Y quando solicitado a confirmar suas alterações.

Nota: Você também pode criar seu arquivo de Inventário em qualquer local de sua escolha, que você pode passar 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 este 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 parecer algo como 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

Passo 3 - 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ó é acessível apenas 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.

Passo 4 - Testar Conexão

Após configurar o arquivo de inventário e as chaves SSH, devemos verificar se o Ansible pode 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.

Passo 5 - 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
tmpfs           198M  972K  197M   1% /run
/dev/sda2        50G  3.9G   44G   9% /
tmpfs           989M     0  989M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           198M  4.0K  198M   1% /run/user/1000

server2 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           198M  922K  197M   1% /run
/dev/sda2        50G  4.9G   43G  10% /
tmpfs           989M     0  989M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           198M  4.0K  198M   1% /run/user/1000

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 parâmetro -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. O update_cache atualiza o cache APT no servidor e upgrade=yes informa ao Ansible para executar o comando apt upgrade.

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 uma 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 exigem 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.

Passo 6 - Introdução aos Playbooks

Os comandos acima permitem que você execute tarefas únicas, mas se você quiser configurar vários servidores ou executar a mesma sequência de comandos em vários servidores, precisará configurar playbooks. Playbooks são arquivos escritos em YAML e contêm instruções para automatizar uma sequência de tarefas para configurar aplicativos e serviços.

Agora criaremos um playbook para instalar o Nginx e configurar uma página HTML no nó Ansible. Crie um diretório para o Ansible em seu diretório inicial.

$ mkdir ~/ansible

Crie e abra o arquivo do playbook para edição.

$ cd ~/ansible
$ nano testplaybook.yml

Os playbooks usam o formato YAML para definir uma ou mais jogadas. Uma jogada é um conjunto de tarefas ordenadas dispostas de forma a automatizar um processo. As jogadas são definidas como uma lista YAML.

O primeiro passo para definir uma jogada é determinar quais hosts são o alvo usando a diretiva hosts: all. A diretiva become é usada para indicar que as tarefas seguintes devem ser executadas por um superusuário.

Definiremos três tarefas: uma para adicionar um usuário, uma para atualizar todos os pacotes e a última para instalar o servidor Nginx. A seção vars do playbook é usada para definir variáveis personalizadas. Definimos duas variáveis, uma para o usuário que precisamos adicionar e a segunda para definir o estado do pacote que precisamos instalar. Para usar a variável, precisamos colocar o nome da variável entre chaves duplas.

O módulo ansible.builtin.user é usado para adicionar um novo usuário com privilégios sudo. Para adicionar o usuário, estamos usando as variáveis name, password e group. A variável group é definida como sudo para dar permissões de superusuário ao usuário. Você não pode colocar a senha em texto simples no arquivo do playbook, portanto, adicionaremos um segredo hash SHA. Usaremos a utilidade mkpasswd para isso. Para instalá-la, execute o seguinte comando para instalar o pacote whois.

$ sudo apt install whois

Gere a senha hash. Você será solicitado pela senha usual e receberá uma string hash para isso. Anote a chave hash para ser usada no arquivo do playbook.

$ mkpasswd --method=sha-512
Password:
$6$dGbprm2oVqClDDDh$Epk6r5eXYkYBaQpQpP.H7VCdz0g9Aj0aO8hjy/WXq4WmfQ7GvQP2/cl/cNhd7.LRFuCKix9uCF2t8X5/Pv0Lk1

A diretiva update_cache é para atualizar a lista de repositórios do sistema, assim como o comando apt update, e a diretiva upgrade: dist informa ao Ansible para realizar a atualização do sistema. A terceira tarefa é autoexplicativa, que instala a versão mais recente do servidor Nginx.

Com base nas informações que discutimos, cole o seguinte código no arquivo. Cole a chave hash que você obteve como o valor da variável password.

---
- name: Test playbook
  hosts: all
  become: true
  vars:
      state: latest
      user: navjot
  tasks:
  - name: Add the user {{ user }}
    ansible.builtin.user:
      name: "{{ user }}"
      password: '$6$dGbprm2oVqClDDDh$Epk6r5eXYkYBaQpQpP.H7VCdz0g9Aj0aO8hjy/WXq4WmfQ7GvQP2/cl/cNhd7.LRFuCKix9uCF2t8X5/Pv0Lk1'
      group: sudo
  - name: Upgrade all apt packages
    apt:
      update_cache: yes
      upgrade: dist
  - name: Install the {{ state }} of package "nginx"
    apt:
      name: "nginx"
      state: "{{ state }}"

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado a confirmar suas alterações.

Para executar o playbook, execute o seguinte comando. A flag --ask-become-pass solicitará sua senha root para realizar uma operação elevada.

$ ansible-playbook testplaybook.yml --ask-become-pass

Você receberá a seguinte saída.

BECOME password:

PLAY [Test playbook] *************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************
ok: [server1]
ok: [server2]
ok: [server3]

TASK [Add the user casablanca] *************************************************************************************
changed: [server3]
changed: [server2]
changed: [server1]

TASK [Upgrade all apt packages] ************************************************************************************
changed: [server1]
changed: [server2]
changed: [server3]

TASK [Install the latest of package "nginx"] ***********************************************************************
changed: [server3]
changed: [server2]
changed: [server1]

PLAY RECAP ***********************************************************************************************************
server1                    : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
server2                    : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
server3                    : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Isso confirma que seu playbook foi executado com sucesso.

Se você estiver usando um arquivo de inventário personalizado, precisará incluir o local do arquivo no comando da seguinte forma.

$ ansible-playbook -i /etc/ansible/custominventory testplaybook.yml --ask-become-pass 

Conclusão

Isso conclui nosso tutorial sobre como instalar e configurar o Ansible no servidor Ubuntu 22.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.