Aprovisionando Fedora CoreOS sobre VMware
Esta guía muestra como aprovisionar nuevos nodos Fedora CoreOS (FCOS) sobre el hipervisor VMware.
| Fedora CoreOS soporta VMware ESXi ≥ 7.0, VMware Workstation ≥ 16 y VMware Fusion ≥ 12. Puede ser posible modificar los metadatos del OVF para ejecutar productos VMware más antiguos, pero la compatibilidad y el soporte no puede ser garantizado. |
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.
|
Usted también necesita tener acceso a una infraestructura VMware en funcionamiento, que soporte MVs con una hardware de al menos versión 13. Los ejemplos de abajo utilizan la herramienta de línea de comandos govc para aprovisionamiento remoto vSphere y ovftool para aprovisionamiento local Workstation o Fusion.
Descargar la OVA
Fedora CoreOS está diseñado para ser actualizado automáticamente, con diferentes calendarios por flujo. Una vez que haya elegido el flujo relevante, puede descargar el último OVA:
STREAM="stable"
coreos-installer download -s $STREAM -p vmware -f ova
Alternativamente, las imágenes OVA pueden ser descargadas manualmente desde la página de descargas.
Codificando la configuración Ignition
Para el proveedor vmware, Ignition requiere que estén presentes dos campos "guestinfo" la primera vez que se arranque la MV:
-
guestinfo.ignition.config.data.encoding: la codificación de la configuración Ignition. -
guestinfo.ignition.config.data: el contenido de la configuración Ignition, codificada de acuerdo con el formato de arriba.
Para la máxima compatibilidad, se recomienda utilizar codificación base64 y prepara las configuración Ignition como tal:
CONFIG_ENCODING='base64'
CONFIG_ENCODED=$(base64 -w0 example.ign)
Una alternativa a la codificación plana base64 es gzip+base64 como se describe en plataformas soportadas por Ignition. Esto es especialmente útil cuando envía la configuración Ignition por medio de govc como argumento inline . En este caso la configuración codificada se limita a un poco menos de 128 Kb en Linux, 256 Kb en macOS y 32 Kb en Windows (8 Kb si utiliza cmd.exe o PowerShell). Si su configuración es mayor de este límite, usted puede enviarla en línea después de comprimirla con gzip.
CONFIG_ENCODING='gzip+base64'
CONFIG_ENCODED=$(gzip -9c example.ign | base64 -w0 -)
Si la configuración de Ignition generada sigue siendo demasiado grande, se producirá un error de Listado de argumentos demasiado larga o similar. La solución a este problema depende de si trabaja con vSphere o Workstation/Fusion.
Para vSphere, en lugar de incorporar el archivo de configuración dentro de su shell, govc le permite especificar una ruta a un archivo local con el comando vm.change y manejará su lectura y escritura internamente, evitando cualquier limitación del intérprete.
CONFIG_ENCODING="gzip+base64"
CONFIG_FILE="example.ign"
CONFIG_FILE_ENCODED="${CONFIG_FILE}.gz.b64"
gzip -9c "${CONFIG_FILE}" | base64 -w0 - > "${CONFIG_FILE_ENCODED}"
govc vm.change -vm "${VM_NAME}" -e "guestinfo.ignition.config.data.encoding=${CONFIG_ENCODING}"
govc vm.change -vm "${VM_NAME}" -f "guestinfo.ignition.config.data=${CONFIG_FILE_ENCODED}" # using `-f` with a file path instead of `-e`
Using gzip for this solution is optional and primarily used for consistent examples.
|
In the case of Workstation/Fusion, or as a last resort in general, there is the option to use a configuration file. Instead of setting an environment variable containing your Ignition configuration, create an ovftool compatible configuration file in the directory you are invoking from like so:
echo "extraConfig:guestinfo.ignition.config.data=$(base64 -w0 example.ign)" > ovftool.cfg
Arrancar una MV nueva en Workstation o Fusion
Esta sección muestra cómo usar las funciones de Workstation y Fusion para configurar y ejecutar máquinas virtuales desde la línea de comandos. Algunos pasos también pueden realizarse mediante la IU gráfica.
Importar el OVA
El OVA descargado debe importarse localmente a la estación de trabajo o a la biblioteca de Fusion. Al mismo tiempo, debe habilitarse Ignition para su aplicación en la máquina virtual.
VM_NAME='fcos-node01'
FCOS_OVA='./ova-templates/fedora-coreos-31.20200210.3.0-vmware.x86_64.ova'
LIBRARY="$HOME/Virtual Machines.localized"
ovftool \
--powerOffTarget \
--name="${VM_NAME}" \
--allowExtraConfig \
--extraConfig:guestinfo.ignition.config.data.encoding="${CONFIG_ENCODING}" \
--extraConfig:guestinfo.ignition.config.data="${CONFIG_ENCODED}" \
"${FCOS_OVA}" "${LIBRARY}"
Después, puede actualizar la lista de máquinas virtuales en la interfaz de usuario de Workstation o Fusion. La nueva máquina virtual fcos-node01 debería aparecer lista para arrancar. En este punto, puede personalizar aún más su configuración de hardware y, posteriormente, encenderla.
Si ha establecido una clave SSH para el usuario core predeterminado, puede hacer SSH en la MV y explorar el SO:
ssh core@<dirección ip>
Arrancar una máquina virtual nueva en vSphere
Esta sección muestra cómo usar las funciones de vSphere para configurar y ejecutar máquinas virtuales desde la línea de comandos. También se pueden realizar pasos similares mediante la interfaz gráfica.
Aunque los ejemplos a continuación usan govc session.login para la autenticación, también puede usar variables de entorno para proporcionar credenciales. Consulte la documentación oficial de https://github.com/vmware/govmomi/tree/main/govc#usage para obtener más información.
|
Configurar una MV nueva
Ahora puedes implementar una nueva MV, comenzando desde el OVA y la configuración de Ignition codificada:
FCOS_OVA='./ova-templates/fedora-coreos-31.20200210.3.0-vmware.x86_64.ova'
VM_NAME='fcos-node01'
govc session.login -u 'user:password@host'
govc import.ova -name ${VM_NAME} ${FCOS_OVA}
govc vm.change -vm "${VM_NAME}" -e "guestinfo.ignition.config.data.encoding=${CONFIG_ENCODING}"
govc vm.change -vm "${VM_NAME}" -e "guestinfo.ignition.config.data=${CONFIG_ENCODED}"
Ya está disponible para el arranque una nueva máquina virtual fcos-node01. En este punto, se puede personalizar aún más su configuración de hardware y, posteriormente, encenderla:
govc vm.info -e "${VM_NAME}"
govc vm.power -on "${VM_NAME}"
Si ha establecido una clave SSH para el usuario core predeterminado, puede hacer SSH en la MV y explorar el SO:
ssh core@<dirección ip>
Uso del OVA de la biblioteca vSphere
En caso de que desee generar múltiples máquinas virtuales diferentes basadas en la misma imagen base, puede importarla a la biblioteca vSphere para reutilizarla fácilmente:
FCOS_OVA='./ova-templates/fedora-coreos-31.20200210.3.0-vmware.x86_64.ova'
LIBRARY='fcos-images'
TEMPLATE_NAME='fcos-31.20200210.3.0'
govc session.login -u 'user:password@host'
govc library.create "${LIBRARY}"
govc library.import -n "${TEMPLATE_NAME}" "${LIBRARY}" "${FCOS_OVA}"
Ahora se puede crear una nueva instancia usando el comando govc library.deploy:
VM_NAME='fcos-node01'
govc library.deploy "${LIBRARY}/${TEMPLATE_NAME}" "${VM_NAME}"
govc vm.change -vm "${VM_NAME}" -e "guestinfo.ignition.config.data.encoding=${CONFIG_ENCODING}"
govc vm.change -vm "${VM_NAME}" -e "guestinfo.ignition.config.data=${CONFIG_ENCODED}"
Nota: Si el vCenter tiene varios centros de datos y almacenes de datos, debe especificarlos explícitamente:
# Obtener un fondo de recursos usando`$ govc find / -type ResourcePool`
RESOURCE_POOL="/Datacenter6.5/host/Cluster6.5/Resources"
DATASTORE="datastore-129"
govc library.deploy -pool=${RESOURCE_POOL} -ds=${DATASTORE} "${LIBRARY}/${TEMPLATE_NAME}" "${VM_NAME}"
Redes de primer arranque e Ignition
Ignition permite referenciar contenido remoto en la configuración y obtenerlo durante el aprovisionamiento. Por este motivo, en el primer arranque, las instancias FCOS intentan realizar la autoconfiguración de red mediante DHCP.
Si su configuración de VMware utiliza una configuración de red estática, puede anular esta configuración automática de DHCP con su propia configuración personalizada. El parámetro ip= de la línea de comandos de red personalizada se puede configurar mediante las propiedades de guestinfo, como se muestra a continuación, antes de iniciar una MV por primera vez.
El flujo de aprovisionamiento sigue los pasos habituales, más una entrada adicional guestinfo.afterburn.initrd.network-kargs.
Si utiliza un método de aprovisionamiento distinto de govc, asegúrese de que el atributo guestinfo esté aprovisionado en los parámetros de configuración avanzada de la máquina virtual (también conocidos como ExtraConfig). Algunas herramientas de administración pueden usar una propiedad de vApp de forma predeterminada, lo cual no funciona en este caso.
|
VM_NAME='fcos-node02'
IFACE='ens192'
IPCFG="ip=192.0.2.42::192.0.2.1:255.255.255.0:${VM_NAME}:${IFACE}:off"
govc library.deploy "${LIBRARY}/${TEMPLATE_NAME}" "${VM_NAME}"
govc vm.change -vm "${VM_NAME}" -e "guestinfo.ignition.config.data.encoding=${CONFIG_ENCODING}"
govc vm.change -vm "${VM_NAME}" -e "guestinfo.ignition.config.data=${CONFIG_ENCODED}"
govc vm.change -vm "${VM_NAME}" -e "guestinfo.afterburn.initrd.network-kargs=${IPCFG}"
govc vm.info -e "${VM_NAME}"
govc vm.power -on "${VM_NAME}"
La sintaxis completa del parámetro ip= está documentada en páginas del manual de Dracut.
Para obtener más información sobre la red en el primer arranque, consulte la documentación de Afterburn.
Solución de Problemas del Primer Arranque
Podría tener problemas con la configuración de Ignition que requieran acceso al registro del sistema que aparece durante el primer arranque. Para crear una copia del registro del sistema, puede conectar un dispositivo serie a la máquina virtual antes del arranque. vSphere, así como Workstation y Fusion, lo permiten y guardarán la salida en el archivo que usted elija.
Para conectar un dispositivo serie, modifique la configuración de hardware de la máquina virtual apagada y agregue un Puerto serie. Seleccione el destino y el nombre del archivo que se creará. Después, encienda la máquina virtual. Si detecta un error, revise el archivo especificado inicialmente; debería contener una copia de la bitácora del sistema.
El dispositivo serial también se puede agregar a la VM a través de govc como se describe en la documentación de uso oficial:
VM_NAME='fcos-node01'
govc device.serial.add -vm "${VM_NAME}"
govc device.serial.connect -vm "${VM_NAME}" "[datastore] ${VM_NAME}/console.log"
Modificar metadatos OVF
| Si bien proporcionamos estas instrucciones para modificar los metadatos de OVF, no podemos garantizar que cualquier modificación a los metadatos de OVF dé como resultado una máquina virtual invitada utilizable. |
Fedora CoreOS está diseñado para ejecutarse en versiones de VMware ESXi, VMware Workstation y VMware Fusion de mantenimiento general). Por lo tanto, la imagen VMware OVA de Fedora CoreOS especifica una versión del hardware virtual que podría no ser compatible con productos VMware más antiguos y sin soporte. Sin embargo, puede modificar los metadatos OVF de la imagen para especificar una versión de hardware virtual más antigua.
El OVA de VMware es un archivo tar que contiene los archivos disk.vmdk y coreos.ovf. Para editar los metadatos que utiliza FCOS como máquina virtual invitada, debe descomprimir el artefacto OVA, editar el archivo OVF y, a continuación, crear un nuevo archivo OVA.
Los siguientes comandos de ejemplo cambian la versión de hardware OVF del valor pre-configurado a la versión de hardware 13.
| Los valores predeterminados en el OVF están sujetos a cambios. |
tar -xvf fedora-coreos-43.20251120.3.0-vmware.x86_64.ova
sed -iE 's/vmx-[0-9]*/vmx-13/' coreos.ovf
tar -H posix -cvf fedora-coreos-43.20251120.3.0-vmware-vmx-13.x86_64.ova coreos.ovf disk.vmdk
Want to help? Learn how to contribute to Fedora Docs ›