Proporcionar Fedora CoreOS en libvirt

Esta guía muestra como aprovisionar instancias Fedora CoreOS (FCOS) nuevas en una plataforma libvirt, utilizando el hipervisor QEMU.

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 un host con libvirt. Los ejemplos a continuación utilizan la herramienta de línea de comandos virt-install, que debe instalarse previamente por separado.

Si se ejecuta en un host con SELinux habilitado (use el comando sestatus para comprobar el estado de SELinux), asegúrese de que la imagen del sistema operativo y el archivo de Ignition estén etiquetados como svirt_home_t. Puede hacerlo colocándolos en ~/.local/share/libvirt/images/ o ejecutando chcon -t svirt_home_t /path/to/file.

Lanzar una instancia de Máquina Virtual (MV)

  1. Obtenga la última imagen adecuada para la plataforma qemu utilizando coreos-installer (o descargue y verifique esto desde la web). Puede utilizar coreos-installer como un contenedor, o en instalación de Fedora desde los repos.

    STREAM="stable"
    # como un binario instalado:
    coreos-installer download -s $STREAM -p qemu -f qcow2.xz --decompress -C ~/.local/share/libvirt/images/
    # o como un contenedor:
    podman run --pull=always --rm -v "${HOME}/.local/share/libvirt/images/:/data" -w /data \
        quay.io/coreos/coreos-installer:release download -s $STREAM -p qemu -f qcow2.xz --decompress
  2. Lanza una máquina nueva por medio de virt-install, utilizando el archivo Ignition con sus personalizaciones.

    IGNITION_CONFIG="/ruta/a/ejemplo.ign"
    IMAGE="/ruta/a/imagen.qcow2"
    VM_NAME="fcos-test-01"
    VCPUS="2"
    RAM_MB="2048"
    STREAM="stable"
    DISK_GB="10"
    # Para x86 / aarch64,
    IGNITION_DEVICE_ARG=(--qemu-commandline="-fw_cfg name=opt/com.coreos/config,file=${IGNITION_CONFIG}")
    
    # Para s390x / ppc64le,
    IGNITION_DEVICE_ARG=(--disk path="${IGNITION_CONFIG}",format=raw,readonly=on,serial=ignition,startup_policy=optional)
    
    # Configure la etiqueta correcta de SELinux para permitir acceder a la config
    chcon --verbose --type svirt_home_t ${IGNITION_CONFIG}
    
    virt-install --connect="qemu:///system" --name="${VM_NAME}" --vcpus="${VCPUS}" --memory="${RAM_MB}" \
            --os-variant="fedora-coreos-$STREAM" --import --graphics=none \
            --disk="size=${DISK_GB},backing_store=${IMAGE}" \
            --network bridge=virbr0 "${IGNITION_DEVICE_ARG[@]}"
virt-install requiere ambos imagen de SO y archivo Ignition a ser especificado como rutas absolutas.
Depending on your version of virt-install, you may not be able to use --os-variant=fedora-coreos-* and will get an error. In this case, you should pick an older Fedora variant (--os-variant=fedora31 for example). You can find the variants that are supported by your current version of virt-install with osinfo-query os | grep '^\s*fedora'.
DISK_GB sería al menos tan grande como el tamaño por defecto de la imagen. Para Fedora CoreOS, esto actualmente es de 10 GB.
Asegúrese que su usuario ha accedido a /dev/kvm. El predeterminado es permitirlo acceder para cada uno, pero en algunas ditribuciones puede necesitar añadirse al grupo kvm.
Puede escapar fuera de la consola serial presionando CTRL + ].

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>