Generalidades
OpenStack es un software de código abierto que te permite crear nubes privadas y públicas. Hay disponible una herramienta de línea de comandos que facilita el trabajo con él. Este artículo explica cómo instalar el cliente de línea de comandos de OpenStack en tu instancia en la nube (en un virtualenv o de forma global), configurarlo con tu archivo openrc y correr comandos básicos.
Instalación
El cliente de línea de comandos de OpenStack se puede instalar de varias maneras. Este artículo muestra cómo instalarlo al correr pip en un virtualenv, así como instalarlo de forma global.
Instalar python-dev
Instala python-dev para que puedas compilar extensiones de Python. Esto es necesario para instalar openstackclient usando pip.
Si usas Python 2:
[user@localhost]$ sudo apt-get install python2.7-dev
Si usas Python 3:
[user@localhost]$ sudo apt-get install python3-dev
Instalar pip
Primero, corre lo siguiente para ver si pip está instalado:
Si usas Python 2
[user@localhost]$ pip -V
Si usas Python 3
[user@localhost]$ pip3 -V
Si no lo está, instálalo con lo siguiente:
Si usas Python 2
[user@localhost]$ sudo apt-get install python-pip
Si usas Python 3
[user@localhost]$ sudo apt-get install python3-pip
Instalar virtualenv
Una forma de instalar la CLI de OpenStack es en un entorno virtual. Ahora que pip está instalado, corre lo siguiente para instalar virtualenv:
[user@localhost]$ sudo apt-get install python-virtualenv
Instalar la CLI de OpenStack
Instalar dentro de un virtualenv
Este es un método seguro, ya que tu instalación se aloja dentro de un entorno virtual y no toca nada más en tu sistema. Para hacerlo, crea un entorno virtual, actívalo e instala la CLI de OpenStack dentro de él.
Si usas Python 2, corre el comando pip. Si usas Python 3, corre el comando pip3.
Este ejemplo crea un nuevo directorio de virtualenv llamado venv en tu directorio principal de usuario.
[user@localhost]$ virtualenv ~/venv [user@localhost]$ source ~/venv/bin/activate (venv)user@localhost$ pip install python-openstackclient
Esto instala el cliente en un entorno virtual separado del resto de tu sistema. Para poder usar el cliente, tendrás que activar el entorno virtual usando el comando source anterior.
Instalar de forma global
También puedes instalarlo de forma global en tu sistema usando pip para Python 2.
[user@localhost]$ sudo pip install python-openstackclient
O pip3 para Python 3.
[user@localhost]$ sudo pip3 install python-openstackclient
Es posible que veas el siguiente error al instalar.
Command python setup.py egg_info failed with error code 1
Si es así, corre lo siguiente:
[user@localhost]$ pip install --upgrade setuptools
O si usas Python 3:
[user@localhost]$ pip3 install --upgrade setuptools
Inténtalo de nuevo y deberías poder instalar sin errores.
Configuración
La forma más fácil de configurar el cliente es usar el archivo OpenRC. Revisa el siguiente artículo para obtener instrucciones sobre cómo descargar este archivo:
Para usar el archivo OpenRC, corre:
[user@localhost]$ source openrc.sh
Comandos básicos
El cliente de línea de comandos de OpenStack combina la funcionalidad de todos los demás clientes de línea de comandos específicos de cada servicio de OpenStack, como el cliente nova y el cliente cinder. Estos son algunos comandos básicos útiles:
[user@localhost]$ openstack server list +--------------------------------------+-------------+--------+--------------------------------------------------------------+--------------+ | ID | Name | Status | Networks | Image Name | +--------------------------------------+-------------+--------+--------------------------------------------------------------+--------------+ | 4c40d015-33b3-4bc3-ba50-d794356eef4f | mariadb | ACTIVE | public=2607:f298:5:101d:f816:3eff:feeb:ca8c, 208.113.133.156 | Ubuntu-16.04 | | bf500ff3-7b37-4d01-a77e-5efc086de5f0 | nextcloud-1 | ACTIVE | public=2607:f298:5:101d:f816:3eff:fef1:9c6a, 208.113.131.81 | Ubuntu-16.04 | | af01d391-7604-482e-84b9-3ccee872d69f | nextcloud | ACTIVE | public=2607:f298:5:101d:f816:3eff:fea9:a69f, 208.113.129.184 | Ubuntu-16.04 | | 72c4271b-d447-444c-b5f6-0af401ca14d2 | wordpress | ACTIVE | public=2607:f298:5:101d:f816:3eff:fe08:54c5, 208.113.133.184 | Ubuntu-16.04 | +--------------------------------------+-------------+--------+--------------------------------------------------------------+--------------+
Esto muestra las instancias que tienes en tu proyecto con información básica sobre ellas.
[user@localhost]$ openstack image list --status active +--------------------------------------+--------------+--------+ | ID | Name | Status | +--------------------------------------+--------------+--------+ | e87001f8-475e-403e-830d-24484187da08 | Debian-10 | active | | 3272eb6f-b9cc-472e-ab0f-972670fc56a4 | Debian-11 | active | | 40d4bb2e-bf2e-4af7-8b09-3bc6bd83fd65 | Debian-9 | active | | b20aa3ec-2fd9-4350-80b3-0d590bd5998f | Fedora-33 | active | | f9ef2681-3083-43ae-83b6-7c3e3be08ee3 | Fedora-34 | active | | d920b7b4-36a4-4d46-b1f0-70c1bc9c9530 | Fedora-35 | active | | 03a87e23-77e5-403b-a437-10e0b28b2583 | Ubuntu-14.04 | active | | 6d73bd0e-1db4-452a-84c6-adaad0bae72a | Ubuntu-18.04 | active | | 6da7de0c-fb47-4ffc-9f72-58323efcc842 | Ubuntu-20.04 | active | | 2b2c61c6-324c-47f4-88c1-9ae8a978ddfd | Ubuntu-22.04 | active | +--------------------------------------+--------------+--------+
Esto muestra las imágenes disponibles para tu proyecto.
[user@localhost]$ openstack volume list +--------------------------------------+------+--------+------+-----------------------------------+ | ID | Name | Status | Size | Attached to | +--------------------------------------+------+--------+------+-----------------------------------+ | 539dcff1-117b-472a-8cf6-f7069d8a545f | | in-use | 3 | Attached to Ubuntu22 on /dev/vda | +--------------------------------------+------+--------+------+-----------------------------------+
Esto muestra los volúmenes que has creado.
[user@localhost]$ openstack server create --key-name my_key --image Ubuntu-22.04 --flavor 100 awesome_server
Esto crea una instancia de Ubuntu 22.04 con el flavor gp1.subsonic (ID 100) y usa la llave llamada my_key.