Crear una imagen de OpenStack a partir de un archivo de imagen ISO
DreamCompute permite utilizar archivos de imagen ISO en la creación de instancias. El primer paso es importar el archivo .iso al servicio de imágenes Glance. Esto se puede hacer usando el comando creador de imágenes de Openstack con los siguientes parámetros.
[user@localhost]$ openstack image create \ --private \ --container-format bare \ --disk-format iso \ --file ubuntu-17.04-server-amd64.iso \ ubuntu-17.04-server-amd64-iso +------------------+------------------------------------------------------+ | Field | Value | +------------------+------------------------------------------------------+ | checksum | 4672ce371fb3c1170a9e71bc4b2810b9 | | container_format | bare | | created_at | 2017-05-27T13:22:49Z | | disk_format | iso | | file | /v2/images/b840f7f6-7fd8-47f9-848a-... | | id | b840f7f6-7fd8-47f9-848a-9e9422925cb2 | | min_disk | 0 | | min_ram | 0 | | name | ubuntu-17.04-server-amd64-iso | | owner | USER_ID | | protected | False | | schema | /v2/schemas/image | | size | 718274560 | | status | active | | tags | | | updated_at | 2024-03-29T13:23:17Z | | virtual_size | None | | visibility | private | +------------------+------------------------------------------------------+
En este comando, ubuntu-17.04-server-amd64.iso es la imagen de ISO, y ubuntu-17.04-server-amd64-iso es el nombre de la nueva imagen.
Reiniciar una instancia desde una imagen de Openstack basada en ISO
El siguiente paso es lanzar una instancia temporal que se utilizará para instalar/configurar el sistema operativo. Haz esto con el comando openstack server create usando los siguientes parámetros.
[user@localhost]$ openstack server create \ --image ubuntu-17.04-server-amd64-iso \ --nic net-id = NETWORK_UUID \ --flavor 100 ubuntu-17.04-server-amd64-installer +--------------------------------------+----------------------------------+ | Field | Value | +--------------------------------------+----------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | iad-2 | | OS-EXT-STS:power_state | 0 | | OS-EXT-STS:task_state | scheduling | | OS-EXT-STS:vm_state | building | | OS-SRV-USG:launched_at | None | | OS-SRV-USG:terminated_at | None | | accessIPv4 | | | accessIPv6 | | | addresses | | | adminPass | SLZV7QgA7ick | | config_drive | | | created | 2017-05-27T13:27:42Z | | flavor | gp1.semisonic (50) | | hostId | | | id | INSTANCE_ID | | image | ubuntu-17.04-server-amd64-iso | | key_name | | | name | INSTANCE_NAME | | os-extended-volumes:volumes_attached | [] | | progress | 0 | | project_id | PROJECT_ID | | properties | | | security_groups | [{u'name': u'default'}] | | status | BUILD | | updated | 2024-03-29T13:27:42Z | | user_id | USER_ID | +--------------------------------------+----------------------------------+
ubuntu-17.04-server-amd64-iso es la imagen de Openstack del archivo ISO en el paso anterior y NETWORK_UUID es un ID válido de red.
Una vez que la instancia se haya lanzado correctamente, crea un volumen en blanco para almacenar temporalmente el sistema operativo configurado.
[user@localhost]$ openstack volume create --size 20 VOLUME_NAME +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | attachments | [] | | availability_zone | iad-2 | | bootable | false | | consistencygroup_id | None | | created_at | 2017-05-27T13:48:05.568204 | | description | None | | encrypted | False | | id | VOLUME_ID | | multiattach | False | | name | VOLUME_NAME | | properties | | | replication_status | disabled | | size | 20 | | snapshot_id | None | | source_volid | None | | status | creating | | type | None | | updated_at | None | | user_id | USER_ID | +---------------------+--------------------------------------+
Conecta el volumen a la instancia como dispositivo raíz con el siguiente comando:
[user@localhost]$ openstack server add volume INSTANCE_ID VOLUME_ID --device /dev/vda
Conéctate a la instancia mediante la consola e instale el sistema operativo (como si estuvieras usando una imagen ISO en un computador normal). Cuando finalices la instalación y se reinicie el sistema, la instancia intentará instalar el sistema operativo nuevamente. Esto se espera ya que eso es lo que se indicó a la instancia que hiciera (recuerda, esta instancia solo se está usando para preparar la imagen).
Si ves problemas con la creación de imágenes, por favor mira la Guía Maquinas de Imagen Virtual de Openstack para referenciar.
El siguiente paso es aislar el volumen adjunto a la instancia temporal para que pueda cargarse en el servicio de imágenes Glance. Para hacer esto, borra la instancia con el siguiente comando:
[user@localhost]$ openstack server delete INSTANCE_ID
Con el volumen aislado, tu contenido ahora se puede cargar en el servicio de imágenes Glance usando lo siguiente:
[user@localhost]$ openstack image create --volume VOLUME_ID ubuntu-17.04-server-amd64
ubuntu-17.04-server-amd64 ¡ahora se puede usar para lanzar instancias funcionales basadas en el sistema operativo que se acaba de instalar/configurar! Ejemplo:
[user@localhost]$ openstack server create \ --image ubuntu-17.04-server-amd64 \ --nic net-id=NETWORK_UUID \ --flavor 50 ubuntu17test +--------------------------------------+--------------------------------------+ | Field | Value | +--------------------------------------+--------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | iad-2 | | OS-EXT-STS:power_state | 0 | | OS-EXT-STS:task_state | scheduling | | OS-EXT-STS:vm_state | building | | OS-SRV-USG:launched_at | None | | OS-SRV-USG:terminated_at | None | | accessIPv4 | | | accessIPv6 | | | addresses | | | adminPass | DALBYZhdk8f4 | | config_drive | | | created | 2017-05-27T14:26:09Z | | flavor | gp1.semisonic (50) | | hostId | | | id | INSTANCE_ID | | image | ubuntu-17.04-server-amd64 (...) | | key_name | | | name | ubuntu17test | | os-extended-volumes:volumes_attached | [] | | progress | 0 | | project_id | PROJECT_ID | | properties | | | security_groups | [{u'name': u'default'}] | | status | BUILD | | updated | 2024-03-29T14:26:10Z | | user_id | USER_ID | +--------------------------------------+--------------------------------------+
Alternativamente, el volumen puede usarse simplemente como fuente de arranque para una nueva instancia. El concepto de "cargar a Glance" es solo en caso de que se desee usar el mismo sistema operativo/configuración en varias instancias.
Si eliges no subir el volumen, asegúrate de correr el comando openstack volume set --bootable VOLUME_ID para que el volumen pueda ser usado como la fuente de una nueva instancia..