Ansible es buena cosa. Escribir playbooks es bonito porque estás detallando realmente muchas veces procesos. En vez de entrar a una máquina como un loco a montar docker, luego noseque y ponerte a probar y luego no acordarte de como lo realizaste un playbook ansible te servirá para no trabajar 2 veces.
Vamos a ver en esta entrada como instalarlo y empezar a funcionar.
La instalación en una Debian 11 limpia puede ser así (versión stable-2.12, si sale una nueva pues pones la nueva rama):
# apt update
# apt upgrade
# apt install git python3-pip
$ cd /tmp/
$ git clone "https://github.com/ansible/ansible/" -b stable-2.12
$ cd ansible
# python3 setup.py install
$ ansible --version
Crear un inventario de máquinas
# mkdir -p /etc/ansible
# touch /etc/ansible/hosts
Dentro de /etc/ansible/hosts se pueden crear rápidamente unos grupos de ejemplo con algunos hosts. Ejemplo:
[webservers]
example.com ansible_connection=ssh ansible_user=boby
blog.example.com ansible_connection=ssh ansible_user=boby
Generamos la clave ssh del user (boby) que estemos usando en la máquina y la copiamos a example.com y a blog.example.com
$ ssh-keygen
$ ssh-copy-id -i /home/boby/.ssh/id_rsa.pub boby@example.com
$ ssh-copy-id -i /home/boby/.ssh/id_rsa.pub boby@blog.example.com
Suponemos que tanto example.com como blog.example.com tienen una pata con acceso ssh. Y que en el firewall tenemos acceso desde la máquina donde tenemos ansible.
Probamos a ver si va bien la cosa:
$ ansible example.com -m ping
Creamos un playbook de ejemplo en un archivo llamado playbook.yml
---
- name: Update web servers
hosts: webservers
remote_user: root
tasks:
- name: Ensure nginx is at the latest version
ansible.builtin.apt:
name: nginx
state: latest
Cuidando de no meter espacios de menos o de más. Es un archivo yaml de modo que se ha de tener en cuenta eso.
Ese playbook es un ejemplo. Ejecutado sin parámetros con ansible-playbook tendría que conectar con example.com y blog.example.com y comprobar que nginx está en la ultima versión (el paquete).
Se ejecutaría el playbook así:
$ ansible-playbook playbook.yml
$ ansible-playbook playbook.yml -l blog.example.com
Lo primero ejecutará el playbook y lo segundo también pero solo para el host blog.example.com . Se podría también limitar a un grupo.
Y esto es más o menos lo básico que se necesita tocar para comenzar a escribir tus playbooks y tener ansible en una máquina con todos bien ordenados.
Tener los playbooks en un repositorio git privado es buena cosa porque no son algo que se haga y sirva para siempre. Posiblemente con el tiempo los vamos a tener que tocar.
Y eso es más o menos lo mínimo que se precisa para empezar a funcionar con ansible.
Saludos cordiales.