Cómo lanzar un servidor DreamCompute con Ansible

Generalidades

Ansible es una herramienta de gestión de la configuración con compatibilidad integrada con OpenStack. Con Ansible, puedes implementar y administrar instancias en DreamCompute. Este tutorial explica cómo instalar Ansible y usarlo para lanzar una instancia en DreamCompute.

Configuración

Este tutorial utiliza Ubuntu 22.04 como host para ejecutar playbooks de Ansible. Primero, instala algunos paquetes usando el siguiente comando.

[user@localhost]$ sudo apt-get install -y ansible python2.7 python-virtualenv python-pip

Si no estás utilizando Ubuntu 22.04, puedes leer docs.ansible.com/ansible/latest/installation_guide para averiguar cómo instalar Ansible en tu sistema

Ansible depende de 'shade' que es una biblioteca cliente de Python para interactuar con OpenStack. Crea un entorno virtual y usa pip para instalar 'shade'.

[user@localhost]$ virtualenv venv -p /usr/bin/python
[user@localhost]$ source venv/bin/activate
(venv)user@localhost]$ pip install shade

Ahora tienes 'shade' instalado y listo para comenzar a escribir los playbooks de Ansible.

¿Qué son los Playbooks?

Los Playbooks son el lenguaje de configuración, implementación y orquestación de Ansible. En un nivel básico, los playbooks se pueden usar para administrar configuraciones e implementaciones en máquinas remotas. Los playbooks están diseñados para ser legibles por humanos y están desarrollados en un lenguaje de texto básico.

Escribir un Playbook de Ansible para lanzar una instancia

Crea un archivo llamado launch-server.yaml e ingresa lass siguientes líneas:

Los siguientes ejemplos se suman al ejemplo anterior. Solo necesitas actualizar el código en texto verde cada vez.

Asegúrate de aplicar una sangría como se describe a continuación. Un espaciado incorrecto hará que el archivo no se ejecute.

  1. La primera parte de tu playbook es una lsita de alojamientos que tu playbook va a correr. En este caso hay uno, localhost.
    # hosts the playbook runs on
    - hosts: localhost
  2. Dado que 'shade' se ha instalado en el virtualenv, debes decirle a Ansible que use este virtualenv. Ve a la siguiente línea, haz una sangría de 2 espacios y luego agrega estas líneas.
    # hosts the playbook runs on
    - hosts: localhost
      vars:
        ansible_python_interpreter: "/usr/bin/env python"
  3. Define una lista de tareas para realizar en este manual. Ve a la siguiente línea, haz una sangría de 2 espacios y luego agrega estas líneas.
    # hosts the playbook runs on
    - hosts: localhost
      vars:
        ansible_python_interpreter: "/usr/bin/env python"
    
      # List of tasks
      tasks:
      - name: launch an Ubuntu server
  4. Usa el módulo os_server para crear una instancia de OpenStack. Ve a la línea siguiente, haz una sangría de 2 espacios y agrega esta línea.
    # hosts the playbook runs on
    - hosts: localhost
      vars:
        ansible_python_interpreter: "/usr/bin/env python"
    
      # List of tasks
      tasks:
      - name: launch an Ubuntu server
    
        # Define a server
        os_server:
  5. Agrega la autenticación DreamCompute para que se pueda crear una instancia. En el siguiente ejemplo, sustituye lo siguiente:
    • {username} — tu nombre de usuario del panel de DreamCompute.
    • {password} — tu contraseña del panel de DreamCompute.
    • {project} — tu proyecto DreamCompute. Esto se puede encontrar en el tablero en la parte superior izquierda.
    Ve a la siguiente línea, haz una sangría de 2 espacios y luego agrega estas líneas.
    # hosts the playbook runs on
    - hosts: localhost
      vars:
        ansible_python_interpreter: "/usr/bin/env python"
    
      # List of tasks
      tasks:
      - name: launch an Ubuntu server
    
        # Define a server
        os_server:
    
        # Cloud authentication information
        auth: 
          auth_url: https://iad2.dream.io:5000 
          username: {username} 
          password: {password} 
          project_name: {project}
  6. Define cómo debería verse la instancia.
    # hosts the playbook runs on
    - hosts: localhost
      vars:
        ansible_python_interpreter: "/usr/bin/env python"
    
      # List of tasks
      tasks:
      - name: launch an Ubuntu server
    
        # Define a server
        os_server:
    
          # Cloud authentication information
          auth:
            auth_url: https://iad2.dream.io:5000
            username: {username} 
            password: {password} 
            project_name: {project}
    
          # VM details
          state: present
          name: ansible-vm1
          image: Ubuntu-22.04
          key_name: myKey
          flavor: 50
          network: public
          wait: yes
    

Explicación de las últimas líneas

state El estado de la instancia, los valores posibles son:
  • present
  • absent
name El nombre de la instancia a crear
image La imagen desde la que arrancar la instancia, los valores posibles son:
  • Nombre de una imagen: Ubuntu-22.04, Debian-11, etc
  • ID de una imagen: 12f6a911-00a2-42eb-8712-d930da2da81f
  • La lista de imágenes públicas se puede encontrar en el panel en iad2.dreamcompute.com/project/images
key_name La clave pública para agregar a la instancia una vez creada. Esto puede ser cualquier clave que hayas agregado a DreamCompute.
flavor Esto define cuánta RAM y CPU tendrá tu instancia. Puedes ver todos los sabores cuando estés creando una instancia en el panel o al correr un comado de OpenStack. Algunos valores posibles son:
  • Nombre del flavor: gp1.semisonic, gp1.supersonic, etc
  • ID del flavor: 50, 100, 200, etc
network La red para poner tu instancia. En este caso, es la red "public", pero si tienes habilitada la red privada, podría ser diferente
  • Nombre de la red: public
  • ID de la red: e098d02f-bb35-4085-ae12-664aad3d9c52
wait Si esperar o no a que se cree la instancia antes de continuar. Los posibles valores son:
  • yes
  • no

Correr el Playbook de Ansible

El playbook de Ansible se puede correr con el siguiente comando:

[user@localhost]$ ansible-playbook launch-server.yaml

Deberías ver una salida como

PLAY [localhost]
***************************************************************************

TASK [Gathering Facts]
***************************************************************************
ok: [localhost]

TASK [launch an Ubuntu server]
***************************************************************************
changed: [localhost]

PLAY RECAP
***************************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0

Ahora si ves el panel de DreamCompute verás la nueva instancia llamada “ansible-vm1”

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?