Funcionamiento básico de ansible
- Francisco Javier Huete
- Servicios
- November 10, 2024
Índice
Instalación de Ansible
Ansible se puede instalar desde los repositorios de Debian
sudo apt install ansible
Preparación de la máquina
En este ejemplo se usa una máquina virtual con un usuario sin privilegios que puede acceder por ssh y que puede usar sudo sin indicar la contraseña.
Ficheros de configuración
Inventario
Incluye una declaración de los grupos y máquinas que se van a configurar y algunas variables para identificarlas.
all:
children:
servidores:
hosts:
ansible:
ansible_ssh_host: 172.22.200.46
ansible_ssh_user: debian
ansible_ssh_private_key_file: /home/javi/.ssh/id_rsa
Fichero de configuración
En él se indica la ruta al fichero de inventario.
[defaults]
inventory = hosts
host_key_checking = False
El parámetro host_key_checking = False
evita los mensajes de advertencia cuando se reutilizan direcciones IP.
Probar conexión
Para probar la conexión a una máquina Ansible usa el módulo ping.
ansible -m ping all
ansible | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Actualizar el playbook
El playbook es el fichero que contiene las reglas que ejecuta ansible en la máquina objetivo.
En este caso, Ansible actualiza el sistema de paquetes, instala git y apache2, copia un fichero a la máquina remota, copia una plantilla al directorio /var/www/html.
- hosts: all
become: true
tasks:
# Actualizamos paquetes
- name: Actualizamos el sistema
apt: update_cache=yes upgrade=yes
# Instalar paquetes
- name: "Instalar paquetes con apt"
ansible.builtin.apt:
pkg:
- apache2
- git
# Copia un fichero a la máquina remota
- name: "Copiar fichero a la máquina remota"
copy:
src: files/foo.conf
dest: /etc/
owner: root
group: root
mode: '0644'
# Copia un template a un fichero
- name: "Copiar un tamplate a un fichero de la máquina remota"
template:
src: template/index.j2
dest: /var/www/html/index.html
owner: www-data
group: www-data
mode: 0644
Ejecutar el playbook
ansible-playbook site.yaml