Ansible para setup de Arch Linux
Jan 26, 2026 - ⧖ 3 minEu estava dando uma revisada nos meus dotfiles e lembrei de uma vez que tentei usar Ansible para configurar minha máquina. Eu tinha arquivado o repositório, pois, apesar de ter feito algo funcional, ainda parecia mais legal tentar a simplicidade de um Shell Script. Estive usando um único Shell Script pra fazer o setup inteiro, que consiste em instalar pacotes, puxar meus dotfiles, configurar o gerenciador de pacotes, ativar serviços e outros detalhes.
O bom do Shell Script é que funciona bem, mas ficava pedindo senha e eu tinha que ficar de olho para não estourar o timeout da senha. Também era um desafio manter idempotência, tinha que tratar com código cenários em que uma etapa deveria ser ignorada.
Decidi desenterrar meu "repositório de estudo" de Ansible para ver no que poderia dar.
Foi aí que re-nasceu o ansible-arch-setup, o meu playbook pessoal em Ansible para subir meu setup Arch;
Ansible ou Shell Script?
Pro meu cenário, o Shell é simples, é um arquivo só, fica dentro do repositório de dotfiles e não tem dependências para rodar. Já o Ansible tem uma idempotência facilitada, consigo rodar sem medo várias vezes que ele mantém o estado do que já foi feito, consigo separar e gerenciar melhor cada tarefa (Ansible tasks).
Usando o Ansible
Reorganizei a estrutura que eu usava e fui migrando as etapas do Shell Script pro Ansible, organizando um playbook e separando cada etapa em tasks. Depois de alguns commits e testes em máquina virtual (e real), cheguei a uma versão legal.
Quais as responsabilidades desse playbook:
- Configuração inicial do Pacman
- Instalação do Yay (gerenciador de pacotes integrado à AUR)
- Instalação de pacotes (oficiais e da AUR)
- Clonagem e implantação dos dotfiles (eu uso apenas git e uma estratégia de worktree, dá pra falar disso em outro blog post)
- Aplicação das minhas configurações de NeoVim
- Troca do Shell padrão
- Configuração do Screenlocker
- Habilitação de serviços de sistema
Não vou entrar muito nos detalhes de implementação, pois eles podem ser constatados no repositório.
Como eu uso
-
Instalo o Arch Linux base
Primeiro faço uma instalação mínima (com Xorg) do Arch Linux usando o comando archinstall. Como pacote adicional, eu coloco 5 que vão ser úteis para o processo de setup:
- vim (para editar alguma config se eu precisar, podia ser outro como o `nano);
- git (clonar minhas configs);
- ansible (obviamente, pra rodar o playbook);
- make (uso um makefile para simplficar o comando de rodar o playbook);
- base-devel (se não instalar haverá problemas em etapas de instalação de pacotes);
-
Baixo o ansible-arch-setup
Com o sistema base "pelado" configurado clono o playbook. Posso editar o arquivo de variáveis (vars.yaml) se necessário, definindo nome de usuário e pacotes que eu quero.
-
Rodo o playbook.
Dentro do repositório clonado executo "make play" (que vai rodar 2 comandos, um para usar uma collection do ansible que instala pacotes da AUR e outro para rodar de falo o playbook).
Depois destes passo, reinicio o sistema e pronto, meu setup tá completo: todos os programas instalados, configurações aplicadas, wallpaper, temas, preferências.
Vídeo demonstrativo
Neste vídeo eu registrei como é o processo instalando do zero numa máquina virtual, o vídeo tem aproximadamente 7 minutos, dá pra ver na prática o que estou falando.
PS.: Há alguns passos a mais devido ao ambiente virtualizado.
Observações
Não estou falando que essa é a MELHOR forma de fazer o setup, mas demonstrando a forma como eu estou fazendo e achei interessante. Com certeza tem muitas melhorias a serem feitas, mas essa versão já tem me atendido.
Fato Aleatório
Durante essa pequena aventura, eu achei um pequeno ponto de melhoria na aplicação open source PyWal16 e pude contribuir com a solução... Não foi uma contribuição perfeita, mas conta. Link da minha PR