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 -yTeste 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/hostsCole 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/python3A 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_hostnameConfigurar 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 ansibleEscolha 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/ansibleAgora 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 ansibleAgora, 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 rootEste 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/0Alvo 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.19O 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 rootVocê 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 rootO 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 ansibleAqui, -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 rootEsses 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.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.