Fornitura di Fedora CoreOS su libvirt

Questa guida mostra come eseguire il provisioning di nuove istanze Fedora CoreOS (FCOS) su una piattaforma [libvirt](https://libvirt.org/), utilizzando l’hypervisor [QEMU](https://www.qemu.org/).

Prerequisiti

Prima di configurare una macchina FCOS, è necessario avere un file di configurazione Ignition con le proprie personalizzazioni. Se non ne hai uno, consulta Produzione di un File Ignition.

Fedora CoreOS dispone di un utente predefinito core che può essere utilizzato per esplorare il sistema operativo. Se desideri utilizzarlo, completa la sua configurazione fornendo, ad esempio, una chiave SSH.

You also need to have access to a host machine with libvirt. The examples below use the virt-install command-line tool, which must be separately installed beforehand.

If running on a host with SELinux enabled (use the sestatus command to check SELinux status), make sure your OS image and Ignition file are labeled as svirt_home_t. You can do this by placing them under ~/.local/share/libvirt/images/ or running chcon -t svirt_home_t /path/to/file.

Avvio di un’istanza VM

  1. Recupera l’immagine più recente adatta alla piattaforma qemu usando coreos-installer (oppure scaricala e verifica dal web all’indirizzo https://fedoraproject.org/coreos/download/). Puoi usare coreos-installer come container da https://quay.io/repository/coreos/coreos-installer, oppure su Fedora installalo dai repository.

    STREAM="stable"
    # come binario installato:
    coreos-installer download -s $STREAM -p qemu -f qcow2.xz --decompress -C ~/.local/share/libvirt/images/
    # o come container:
    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. Avvia una nuova macchina tramite virt-install, utilizzando il file Ignition con le tue personalizzazioni.

    IGNITION_CONFIG="/path/to/example.ign"
    IMAGE="/path/to/image.qcow2"
    VM_NAME="fcos-test-01"
    VCPUS="2"
    RAM_MB="2048"
    STREAM="stable"
    DISK_GB="10"
    # Per x86 / aarch64,
    IGNITION_DEVICE_ARG=(--qemu-commandline="-fw_cfg name=opt/com.coreos/config,file=${IGNITION_CONFIG}")
    
    # Per s390x / ppc64le,
    IGNITION_DEVICE_ARG=(--disk path="${IGNITION_CONFIG}",format=raw,readonly=on,serial=ignition,startup_policy=optional)
    
    # Imposta l'etichetta SELinux corretta per consentire l'accesso alla configurazione
    chcon --verbose --type svirt_home_t user.ign
    
    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 richiede che sia il percorso dell’immagine del sistema operativo sia quello del file di configurazione Ignition siano specificati come percorsi assoluti.
A seconda della tua versione di virt-install, potresti non essere in grado di utilizzare --os-variant=fedora-coreos-stable e ricevere un errore. In tal caso, dovresti scegliere una variante di Fedora più vecchia (ad esempio --os-variant=fedora31). Puoi trovare le varianti supportate dalla tua versione corrente di virt-install con osinfo-query os | grep '^\s*fedora'.
DISK_GB dovrebbe essere grande almeno quanto la dimensione predefinita dell’immagine. Per Fedora CoreOS, attualmente questa è di 10 GB.
Assicurati che il tuo utente abbia accesso a`/dev/kvm`. L’impostazione predefinita prevede l’accesso consentito a tutti, ma su alcune distribuzioni potrebbe essere necessario aggiungere il proprio utente al gruppo kvm.
Puoi uscire dalla console seriale premendo CTRL + ].

Se hai configurato una chiave SSH per l’utente predefinito core, puoi connetterti via SSH alla VM ed esplorare il sistema operativo:

ssh core@<indirizzo ip>