Actividad 4: Ansible

per Victor Carceler darrera modificació 2020-05-02T10:23:41+01:00

Ansible_logo.svg.pngTeoría:

Ansible es una herramienta moderna, eficaz, segura y además sencilla de utilizar que permite automatizar la administración de un parque de equipos.

Lea la introducción a Ansible que se encuentra en: Apuntes sobre Ansible.

Para realizar la actividad es necesario configurar la autenticación de clave pública de manera que el usuario sin privilegios de la máquina en la que se ejecuta Ansible pueda iniciar sesión como root en las máquinas gestionadas.

La información sobre cómo configurar la autenticación con clave pública se encuentra en:

Para utilizar Ansible no es necesario ser administrador. Únicamente será necesario convertirse en administrador para instalar Ansible y para editar el inventario por defecto: /etc/ansible/hosts.

Puede consultar algunos de los playbooks utilizados en el instituto en: https://github.com/vcarceler/playbooks.

Entrega de la actividad:

La actividad se entregará en forma de documento HTML 5. En el documento deberá aparecer el fragmento de enunciando en el que se está trabajando y su resolución con los comandos y explicaciones que sean necesarios.

Por ejemplo:

Indique cómo establecer una sesión SSH con la máquina virtual de escritorio.

ssh usuario@192.168.0.100

Cuando se nos solicita la contraseña la introducimos.

Si la actividad solicita que se incluya un vídeo demostrativo puede utilizar cualquier programa para guardar el escritorio como:

  • La combinación de teclas CTRL + ALT + SHIFT + R permite activar y desactivar la grabación del escritorio en Ubuntu.
  • Un programa especializado como OBS Studio que se encuentra en los repositorios de Ubuntu con el nombre: obs-studio.

El vídeo obtenido se subirá a Youtube y estará insertado en el documento HTML 5.

Desarrollo de la actividad:

Prepare dos MVs Ubuntu Server 20.04 con:

  • Interfaz de red en modo puente.
  • IP y configuración de red estática.
  • La primera tendrá por hostname ansible y la segunda host-x.
  • La autenticación con clave pública de manera que usuario en la máquina ansible pueda iniciar sesión como root en la máquina host-x.

Una vez que haya comprobado que funciona la autenticación de clave pública haga un clon de host-x y cambie el hostname a host-1. La idea es que Ansible controlará host-1 y si es necesario se podrá clonar a partir de host-x diferentes equipos: host-2, host-3, host-4... Cada uno con su propia dirección IP para que Ansible pueda ejecutar un playbook en varios equipos.

  1. Indique las direcciones IP de las MVs utilizadas.
  2. Instale Ansible en la máquina ansible.
  3. Edite el fichero /etc/ansible/hosts para añadir las siguientes líneas:
    [equipos]
    192.168.1.201
    192.168.1.202
    192.168.1.203
    En mi caso los hosts controlados van a tener las IPs 192.168.1.201, 192.168.1.202 y 192.168.1.203. Utilice las direcciones que corresponda en su caso. Deberán declararse como mínimo 3 equipos para que Ansible los gestione.
  4. El módulo setup permite obtener facts sobre la máquina remota. Compruebe que todo funciona como es debido con el siguiente comando:
    usuario@ansible:~$ ansible -u root -m setup 192.168.1.201
    192.168.1.201 | SUCCESS => {
        "ansible_facts": {
            "ansible_all_ipv4_addresses": [
                "192.168.1.201"
            ],
    :
    
  5. La salida del comando anterior está en formato JSON. Muestre los bloques dedicados a:
    • ansible_default_ipv4
    • ansible_lsb
    • ansible_nodename
    • ansible_processor
  6. Defina el fichero /home/usuario/playbook-ejemplo.yml con el siguiente contenido:
    ---
    - hosts: equipos
      user: root
    
      tasks:
              - name: Instala lolcat
                apt:
                        name: lolcat
                        state: present
    
              - name: Hace apt update e instala una lista de paquetes. ipcalc, net-tools, glances
                apt:
                        update_cache: yes
                        pkg:
                                - ipcalc
                                - net-tools
                                - glances
  7. Lance el playbook que ha preparado y observe la salida.
    usuario@ansible:~$ ansible-playbook playbook-ejemplo.yml
  8. ¿Con qué equipos ha intentado conectar? ¿Con qué equipos ha podido conectar? ¿Cuántas tareas tiene el playbook? ¿Con qué estado han acabado esas tareas?
  9. Compruebe en la máquina gestionada si están instaladas las herramientas: lolcat, ipcalc, ifconfig, glances.
  10. Vuelva a lanzar el playbook. ¿Qué ocurre?
  11. Desinstale en la máquina gestionada alguno de los 4 paquetes que instaló el playbook y vuelva a lanzar Ansible. ¿Qué ocurre?
  12. Arranque MVs para cada uno de los equipos declarados en el fichero inventario /etc/ansible/hosts. Vuelva a lanzar el playbook. ¿Qué ocurre?
  13. Busque la documentación del módulo de Ansible que permite gestionar paquetes con snap.
    • ¿Quién desarrolló el módulo?
    • ¿Cómo se instala un snap?
    • ¿Cómo se desinstala un snap?
  14. Escriba el playbook instala-vitetris.yml de manera que se instale el snap vitetris en los ordenadores declarados en el inventario.
  15. Grabe un vídeo en el que se pueda ver:
    • Como se ejecuta el playbook que instala vitetris cuando solo está encendido uno de los tres ordenadores gestionados por Ansible.
    • Como se vuelve a ejecutar el playbook anterior pero con los tres ordenadores encendidos.
    • Como se vuelve a ejecutar el playbook anterior cuando los tres ordenadores están encendidos y vitetris ya está instalado en todos.