Instalación de ansible en Debian 12

ansible

¿Que es ansible?

Ansible es una herramienta de software libre que permite a los usuarios configurar y administrar ordenadores de forma centralizada. Es una herramienta de administración de configuración, que controla el estado de un sistema y lo mantiene en un estado deseado, confirmando que se cumplan las políticas de configuración definidas.

Requisitos

  • Sistema Debian 12 actualizado.
  • Privilegios de root o sudo.
  • Acceso a internet.

Instalacion

La instalación de ansible la podemos realizar de dos formas, la primera es mediante el gestor de paquetes de Debian y la segunda es mediante pip en un entorno virtual.

Instalacion con apt

Para instalar ansible con apt, ejecutamos el siguiente comando:

root@ansible:~# apt install ansible -y

Instalacion con pip en un entorno virtual

Para instalar ansible con pip, primero debemos instalar pip y python3-venv, para ello ejecutamos el siguiente comando:

root@ansible:~# apt install python3-pip python3-venv -y

Una vez instalado pip y python3-venv, creamos un entorno virtual con python3-venv, para ello ejecutamos el siguiente comando:

usuario@ansible:~$ python3 -m venv ansible

Activamos el entorno virtual, para ello ejecutamos el siguiente comando:

usuario@ansible:~$ source ansible/bin/activate

Una vez activado el entorno virtual, instalamos ansible con pip, para ello ejecutamos el siguiente comando:

(ansible) usuario@ansible:~$ pip install ansible

Para desactivar el entorno virtual, ejecutamos el siguiente comando:

(ansible) usuario@ansible:~$ deactivate

Nota: Si hacemos la instalación de ansible con pip, tenemos que activar el entorno virtual cada vez que queramos utilizar ansible.

Verificar la instalacion

Para verificar la instalacion de ansible en Debian 12, tenemos que ejecutar el siguiente comando:

usuario@ansible:~# ansible --version

ansible [core 2.14.3]
  config file = None
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] (/usr/bin/python3)
  jinja version = 3.1.2
  libyaml = True

Configuracion

Para configurar ansible, tenemos que crear los siguientes archivos y directorios:

ansible/
├── hosts
├── group_vars/
│   └── all.yml
├── roles/
│   └── common/
│       ├── tasks/
│       │   └── main.yml
│       ├── handlers/
│       │   └── main.yml
│       ├── files/
│       ├── templates/
│       └── vars/
│           └── main.yml
├── site.yml
└── ansible.cfg

Podemos crear los archivos y directorios con los siguientes comandos:

# Creación de directorios principales
mkdir -p ansible/group_vars ansible/roles/common/tasks ansible/roles/common/handlers ansible/roles/common/files ansible/roles/common/templates ansible/roles/common/vars

# Creación de ficheros principales
touch ansible/hosts ansible/group_vars/all.yml ansible/roles/common/vars/main.yml ansible/roles/common/tasks/main.yml ansible/roles/common/handlers/main.yml ansible/roles/common/templates/nginx.conf.j2 ansible/site.yml ansible/ansible.cfg

Configuracion de ansible.cfg

Ahora tenemos que modificar el archivo ansible.cfg, para ello ejecutamos el siguiente comando:

usuario@ansible:~$ nano ansible/ansible.cfg

[defaults]
inventory = hosts
remote_user = usuario
host_key_checking = False

Configuracion de hosts

Un ejemplo de archivo hosts seria el siguiente:

usuario@ansible:~$ nano ansible/hosts

[servidores_web]
servidor1 ansible_ssh_host=192.168.1.10 ansible_ssh_user=debian

[servidor_mysql]
servidor_mysql ansible_ssh_host=192.168.1.11 ansible_ssh_user=debian

Configuracion de site.yml

Un ejemplo de archivo site.yml seria el siguiente:

usuario@ansible:~$ nano ansible/site.yml

- hosts: all
  become: true
  roles:
   - role: commons

- hosts: servidores_web
  become: true
  roles:
   - role: apache2

- hosts: servidores_web
  become: true
  roles:
   - role: mariadb

Configuracion de roles/commons/tasks/main.yml

Un ejemplo de archivo roles/commons/tasks/main.yml seria el siguiente:

usuario@ansible:~$ nano ansible/roles/commons/tasks/main.yml

- name: update system
  apt: update_cache=yes upgrade=yes

Ya tenemos una configuración básica de ansible, tendrán que ir modificando los archivos y la estructura de directorios según sus necesidades.

Con esto ya tendríamos instalado y configurado ansible en Debian 12.