Proporcionar Fedora CoreOS en Nutanix AHV
Esta guía muestra como aprovisionar los nuevos nodos Fedora CoreOS (FCOS) en Nutanix AHV. Fedora no publica actualmente imágenes Fedora CoreOS dentro de Nutanix, de manera que usted necesita subir una imagen Nutanix a su suscripción Nutanix Prism Central.
Prerrequisitos
Antes de aprovisionar una máquina FCOS, debes tener un archivo de configuración Ignition que contenga sus personalizaciones. Si no tienes uno consulta Producción de un Archivo Ignition.
Fedora CoreOS tiene un usuario core predeterminado que puede ser usado para explorar el SO. Si usted desea utilizarlo finalice su configuración proporcionando una clave SSH.
|
También necesita tener acceso a una suscripción a Nutanix Prism Central. Los ejemplos a continuación utilizan el comando curl para acceder a las API de Nutanix Prism Central.
Subir una imagen a Nutanix AHV
Fedora CoreOS está diseñado para actualizarse automáticamente, con diferentes planificaciones por flujo. Una vez tomado el flujo relevante, utiliza la API de Nutanix Prism Central para subir la imagen más reciente a Nutanix:
STREAM=stable
IMAGE_NAME=<nombre de la imagen a crear>
API_HOST=<Nombre de host Prism Central>
API_USERNAME=<usuario>
API_PASSWORD=<contraseña>
URL=$(curl https://builds.coreos.fedoraproject.org/streams/${STREAM}.json | \
jq -r .architectures.x86_64.artifacts.nutanix.formats.qcow2.disk.location)
ENCODED_CREDS="$(echo -n "${API_USERNAME}:${API_PASSWORD}" | base64)"
curl -X POST --header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Authorization: Basic ${ENCODED_CREDS}" \
"https://${API_HOST}:9440/api/nutanix/v3/images" \
-d @- << EOF
{
"spec": {
"name": "${IMAGE_NAME}",
"resources": {
"image_type": "ISO_IMAGE",
"source_uri": "${URL}",
"architecture": "X86_64",
"source_options": {
"allow_insecure_connection": false
}
},
"description": "string"
},
"api_version": "3.1.0",
"metadata": {
"use_categories_mapping": false,
"kind": "image",
"spec_version": 0,
"categories_mapping": {},
"should_force_translate": true,
"entity_version": "string",
"categories": {},
"name": "string"
}
}
EOF
Lanzar una instancia de Máquina Virtual (MV)
Puede proporcionar una instancia de FCOS mediante el portal web de Nutanix Prism Central o la API de Prism Central con curl. La configuración de Ignition se puede pasar a la máquina virtual como un script personalizado de «cloud-init». Por ejemplo, para iniciar una máquina virtual mediante la API:
API_HOST=<Nombre de host de Prism Central>
API_USERNAME=<ID de Usuario>
API_PASSWORD=<contraseña>
CLUSTER_REFERENCE_NAME=<nombre de cluster a utilizar>
CLUSTER_REFERENCE_UUID=<uuid del cluster a utilizar>
SUBNET_REFERENCE_NAME=<nombre de subred a utilizar>
SUBNET_REFERENCE_UUID=<uuid de subred a utilizar>
VM_NAME=<nombre de la MV a crear>
IGNITION_CONFIG=config.ign
IMAGE_NAME=<nombre de la imagen>
ENCODED_CONFIG="$(cat ${IGNITION_CONFIG} | base64 -w 0)"
ENCODED_CREDS="$(echo -n "${API_USERNAME}:${API_PASSWORD}" | base64)"
IMAGE_ID=$(curl -X POST --header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Authorization: Basic ${ENCODED_CREDS}" \
"https://${API_HOST}:9440/api/nutanix/v3/images/list"
-d '{ "kind": "image","filter": "", "length": 30, "offset": 0}' | \
jq -r '.entities[] | select(.spec.name == "${IMAGE_NAME}") | .metadata.uuid')
curl -X POST --header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Authorization: Basic ${ENCODED_CREDS}" \
"https://${API_HOST}:9440/api/nutanix/v3/vms" \
-d @- << EOF
{
"spec": {
"name": "${VM_NAME}",
"resources": {
"power_state": "ON",
"num_vcpus_per_socket": 1,
"num_sockets": 1,
"memory_size_mib": 16384,
"disk_list": [
{
"disk_size_mib": 32768,
"device_properties": {
"device_type": "DISK",
"disk_address": {
"device_index": 0,
"adapter_type": "SCSI"
}
},
"data_source_reference": {
"kind": "image",
"uuid": "${IMAGE_ID}"
}
}
],
"nic_list": [
{
"nic_type": "NORMAL_NIC",
"is_connected": true,
"ip_endpoint_list": [
{
"ip_type": "DHCP"
}
],
"subnet_reference": {
"kind": "subnet",
"name": "${SUBNET_REFERENCE_NAME}",
"uuid": "${SUBNET_REFERENCE_UUID}"
}
}
],
"guest_tools": {
"nutanix_guest_tools": {
"state": "ENABLED",
"iso_mount_state": "MOUNTED"
}
},
"guest_customization": {
"cloud_init": {
"user_data": "${ENCODED_CONFIG}"
},
"is_overridable": false
}
},
"cluster_reference": {
"kind": "cluster",
"name": "${CLUSTER_REFERENCE_NAME}",
"uuid": "${CLUSTER_REFERENCE_UUID}"
}
},
"api_version": "3.1.0",
"metadata": {
"kind": "vm"
}
}
EOF
Ahora serías capaz de acceder por SSH a la instancia usando la dirección IP asociada.
ssh core@<ip address>
Want to help? Learn how to contribute to Fedora Docs ›