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.
- 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
- 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"
- 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
- 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:
- 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.
# 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}
- 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:
|
name | El nombre de la instancia a crear |
image | La imagen desde la que arrancar la instancia, los valores posibles son:
|
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:
|
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
|
wait | Si esperar o no a que se cree la instancia antes de continuar. Los posibles valores son:
|
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”