Taller Ansible - Playbook sencillo

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.

  1. 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
    
  1. 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
    
  1. 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>
    
  1. Ejectuamos el playbook.
        ansible-playbook site.yml -i hosts
    

1

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

    2

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

    3

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