Taller Ansible - Playbook sencillo
2022, Sep 29
Introducción
Vamos a realizar un pequeño ejemplo de cómo podemos automatizar la instalación de un servidor web en un servidor remoto. Para ello, vamos a utilizar Ansible.
- Creamos site.yml.
- hosts: all
become: true
tasks:
# Actualizamos paquetes
- name: Actualizamos el sistema
apt: update_cache=yes upgrade=yes
# Instalar paquetes
- name: "Instalar paquetes con apt"
apt: # Aquí tienes que poner lo necesario para instalar git y apache2
pkg:
- git
- apache2
# Copia un fichero a la máquina remota
- name: "Copiar fichero a la máquina remota"
copy:
src: files/foo.txt
dest: /etc
owner: root
group: root
mode: '0644'
# Copia un template a un fichero
- name: "Copiar un template 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
- Creamos hosts.
all:
children:
servidores:
hosts:
ansible-client:
ansible_ssh_host: 192.168.122.120
ansible_ssh_user: ansible
ansible_ssh_private_key_file: /home/maria/.ssh/id_rsa
- Creamos index.j2.
<html lang="es">
<head>
<meta charset="utf-8">
<title>Prueba Ansible</title>
</head>
<body>
<h1>Gathering Facts</h1>
<p>Este ordenador se llama: </p>
<p>SO: </p>
<h1>Variables declaradas por el usuario a nivel de grupo</h1>
<p>Nombre de la bd: </p>
<p>Usuario de la bd: </p>
<h1>Variables declaradas por el usuario a nivel de nodo</h1>
<p>IP: </p>
</body>
</html>
- Ejectuamos el playbook.
ansible-playbook site.yml -i hosts

- ¿Cómo se llama la propiedad que permite que las tareas que ya se han realizado no se vuelvan a ejecutar?
- Idempotencia
-
Captura de pantalla del fichero foo.txt del servidor configurado.

-
Cuando accedemos a la IP del servidor, nos muestra la página web que hemos creado.

Si queréis el playbook completo, lo tenéis en mi repositorio.