Introdução
Configurar e gerenciar servidores manualmente pode ser um processo tedioso e propenso a erros, especialmente em ambientes com vários servidores ou tarefas de configuração repetitivas. O Ansible, uma poderosa ferramenta de automação de TI de código aberto, simplifica esse processo ao permitir automatizar com facilidade o provisionamento, a configuração e o gerenciamento de servidores. Neste guia “24. Automatizando a configuração do Ubuntu Server com Ansible: um guia prático” mostraremos os fundamentos do uso do Ansible para automatizar a configuração do Ubuntu Server. Ao final, você aprenderá a escrever e executar playbooks do Ansible para simplificar tarefas comuns de servidor, melhorar a eficiência e garantir consistência em toda a sua infraestrutura.
Artigos anteriores:
01. Introdução ao Ubuntu Server – SysOSX: AI & Cloud
02. Como configurar o seu primeiro servidor Ubuntu: guia para iniciantes – SysOSX: AI & Cloud
03. Dominando a linha de comando do Linux para Ubuntu Server – SysOSX: AI & Cloud
04. Gerenciamento de usuários e permissões no Ubuntu Server: um guia completo – SysOSX: AI & Cloud
05. Fundamentos de rede para Ubuntu Server: um guia completo – SysOSX: AI & Cloud
06. Instalar e gerenciar software no Ubuntu Server: um guia completo – SysOSX: AI & Cloud
07.Aplicar patches e atualizar o Ubuntu Server: um guia completo – SysOSX: AI & Cloud
08. Proteger o seu servidor Ubuntu: etapas práticas de reforço e proteção – SysOSX: AI & Cloud
09. Auditoria e registro do servidor Ubuntu
11. Registro centralizado para servidores Ubuntu: um guia indispensável – SysOSX: AI & Cloud
12. Auditoria e conformidade para Ubuntu Server: melhores práticas – SysOSX: AI & Cloud
14. Hospedar vários sites em um único servidor Ubuntu: dicas úteis – SysOSX: AI & Cloud
15. Gerenciamento de armazenamento e discos no Ubuntu Server: guia simples – SysOSX: AI & Cloud
18. Como configurar e usar LVM no Ubuntu Server: um guia completo – SysOSX: AI & Cloud
19. Introdução à virtualização com KVM: guia para iniciantes para Ubuntu Server – SysOSX: AI & Cloud
22. Primeiros passos com Podman no Ubuntu Server: um guia completo – SysOSX: AI & Cloud
23. Implantar o Ubuntu Server na nuvem: um guia passo a passo – SysOSX: AI & Cloud
Índice
Por que usar o Ansible para automação de servidores?
O Ansible é amplamente usado para automação de servidores por sua simplicidade e potência. Veja por que é uma das melhores escolhas:
- Sem agente: o Ansible não exige a instalação de nenhum software de agente nos servidores de destino. Ele usa SSH para comunicação.
- Sintaxe declarativa: os playbooks do Ansible usam YAML, uma sintaxe legível para humanos, facilitando a definição dos estados desejados.
- Configurações reutilizáveis: escreva playbooks uma vez e reutilize-os em vários servidores.
- Idempotente: o Ansible garante que as tarefas só sejam executadas quando necessário, evitando operações redundantes.
- Extensibilidade: o Ansible oferece suporte a uma ampla variedade de módulos para tarefas como instalação de pacotes, gerenciamento de arquivos e configuração de serviços.
Pré-requisitos
Antes de mergulharmos na automação da configuração do Ubuntu Server com o Ansible, verifique se você tem o seguinte:
- Nó de controle: uma máquina (o seu sistema local ou um servidor dedicado) onde o Ansible está instalado.
- Servidores de destino: servidores Ubuntu (locais ou na nuvem) que você quer configurar.
- Acesso SSH: verifique se o acesso SSH sem senha está configurado entre o nó de controle e os servidores de destino.
Etapa 1: Instalar o Ansible
1.1 Instalar o Ansible no nó de controle
No seu nó de controle (por exemplo, a sua máquina local com Ubuntu), instale o Ansible:
sudo apt update
sudo apt install ansible -y
1.2 Verificar a instalação
Verifique a versão instalada do Ansible para garantir que ele foi instalado corretamente:
ansible --version
Exemplo de saída:
ansible 2.10.8
config file = None
configured module search path = ['/home/uadmin/.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.10.12 (main, Feb 4 2025, 14:57:36) [GCC 11.4.0]
Etapa 2: Configurar o acesso SSH
O Ansible se comunica com os servidores de destino por SSH. Você precisará configurar o acesso SSH sem senha do nó de controle para os servidores de destino.
2.1 Gerar um par de chaves SSH
Se você ainda não tem um par de chaves SSH, gere um:
ssh-keygen -t rsa -b 2048
2.2 Copiar a chave SSH para os servidores de destino
Use o seguinte comando para copiar a sua chave pública para o servidor ou servidores de destino:
ssh-copy-id ubuntu@<target-server-ip>
Teste o acesso SSH para garantir que ele funciona sem senha:
ssh ubuntu@<target-server-ip>
Etapa 3: Definir o seu inventário
O Ansible usa um arquivo de inventário para definir os servidores de destino que você quer gerenciar.
3.1 Criar um arquivo de inventário
Crie um arquivo chamado inventory no seu diretório de trabalho:
nano inventory
Adicione os endereços IP ou nomes de host dos servidores de destino. Por exemplo:
[ubuntu_servers]
192.168.50.42
192.168.50.145
Salve o arquivo e saia (Ctrl+O e depois Ctrl+X).
3.2 Testar a conectividade
Use o ping módulo para testar a conectividade com os servidores de destino:
ansible -i inventory ubuntu_servers -m ping
Exemplo de saída:
192.168.50.145 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
192.168.50.42 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Etapa 4: Escreva o seu primeiro playbook do Ansible
Os playbooks do Ansible são arquivos YAML que definem as tarefas que você quer automatizar. Vamos criar um playbook para automatizar a configuração de um servidor Ubuntu.
4.1 Criar um arquivo de playbook
Crie um arquivo chamado setup.yml:
nano setup.yml
4.2 Definir o playbook
Adicione o seguinte conteúdo ao playbook:
---
- name: Configure Ubuntu Server
hosts: ubuntu_servers
become: true
tasks:
- name: Update and upgrade apt packages
apt:
update_cache: yes
upgrade: dist
- name: Install common packages
apt:
name:
- curl
- wget
- git
- build-essential
state: present
- name: Enable UFW and allow SSH
ufw:
rule: allow
name: OpenSSH
state: enabled
- name: Create a new user
user:
name: devuser
password: "{{ 'password123' | password_hash('sha512') }}"
state: present
groups: sudo
Explicação das tarefas
- Atualizar e melhorar pacotes: garante que o servidor tenha as atualizações e os patches de segurança mais recentes.
- Instalar pacotes comuns: instala ferramentas essenciais como
curl,wgetegit. - Ativar o UFW: configura o firewall para permitir o acesso SSH.
- Criar um novo usuário: adiciona um novo usuário com privilégios sudo.
- Definir o nome do host: configura o nome do host do servidor.
Salve o arquivo e saia.
Etapa 5: Executar o playbook
Execute o playbook para aplicar as configurações:
ansible-playbook -i inventory setup.yml
O Ansible registrará o progresso de cada tarefa. Se todas as tarefas forem concluídas com sucesso, o seu servidor Ubuntu estará totalmente configurado.
Saída abaixo:
uadmin@u2204-001:~$ sudo ansible-playbook -i inventory setup.yml
PLAY [Configure Ubuntu Server] ***************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************
ok: [192.168.50.145]
ok: [192.168.50.42]
TASK [Update and upgrade apt packages] *******************************************************************************
^X^C [ERROR]: User interrupted execution
uadmin@u2204-001:~$ sudo nano setup.yml
uadmin@u2204-001:~$ sudo ansible-playbook -i inventory setup.yml
PLAY [Configure Ubuntu Server] ***************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************
ok: [192.168.50.145]
ok: [192.168.50.42]
TASK [Update and upgrade apt packages] *******************************************************************************
ok: [192.168.50.42]
ok: [192.168.50.145]
TASK [Install common packages] ***************************************************************************************
changed: [192.168.50.145]
changed: [192.168.50.42]
TASK [Enable UFW and allow SSH] **************************************************************************************
changed: [192.168.50.145]
changed: [192.168.50.42]
TASK [Create a new user] *********************************************************************************************
changed: [192.168.50.42]
changed: [192.168.50.145]
PLAY RECAP ***********************************************************************************************************
192.168.50.145 : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.50.42 : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Etapa 6: Verificar a configuração
6.1 Verificar os pacotes instalados
Faça login em um dos servidores de destino e verifique se os pacotes comuns foram instalados:
curl --version
git --version
6.2 Verificar o status do firewall
Verifique se o firewall está ativado:
sudo ufw status
6.3 Verificar o novo usuário
Verifique se o novo usuário foi criado:
cat /etc/passwd | grep devuser

Casos de uso avançados
Quando estiver familiarizado com playbooks básicos, você pode explorar casos de uso mais avançados:
- Implantar aplicativos: use o Ansible para instalar e configurar servidores web (por exemplo, Nginx, Apache) ou bancos de dados (por exemplo, MySQL, PostgreSQL).
- Gerenciar vários ambientes: crie arquivos de inventário separados para ambientes de staging, produção e desenvolvimento.
- Usar papéis: organize os seus playbooks em papéis reutilizáveis para configurações complexas.
- Integração com CI/CD: automatize a configuração de servidores como parte do seu pipeline de CI/CD.
Referência:
Documentação do Ansible — Documentação da comunidade Ansible
Conclusão
O Ansible é uma ferramenta poderosa para automatizar a configuração de servidores. Neste guia, abordamos:
- Instalar o Ansible no nó de controle.
- Configurar o acesso SSH aos servidores de destino.
- Escrever e executar um playbook básico para automatizar a configuração do Ubuntu Server.
Ao aproveitar o Ansible, você pode economizar tempo, reduzir erros e garantir consistência em toda a sua infraestrutura. Seja gerenciando um único servidor ou centenas deles, o Ansible é uma ferramenta essencial para fluxos de trabalho modernos de DevOps.
2 thoughts on “24. Automating Ubuntu Server Setup with Ansible: A Practical Guide”