Provisionando Fedora CoreOS no libvirt

Este guia mostra como provisionar novas instâncias do Fedora CoreOS (FCOS) em uma plataforma libvirt, usando o hipervisor QEMU.

Pré-Requisitos

Antes de provisionar uma máquina FCOS, você deve ter um arquivo de configuração do Ignition contendo suas personalizações. Se você não tiver um, consulte Produzindo um arquivo de Ignition.

Fedora CoreOS has a default core user that can be used to explore the OS. If you want to use it, finalize its configuration by providing e.g. an SSH key.

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.

Se estiver executando em um host com o SELinux habilitado (use o comando sestatus para verificar o status do SELinux), certifique-se de que a imagem do seu sistema operacional e o arquivo Ignition estão rotulados como`svirt_home_t`. Você pode fazer isso colocando-os em ~/.local/share/libvirt/images/ ou executando chcon -t svirt_home_t /caminho/para/arquivo.

Lançando uma instância de VM

  1. Obtenha a última imagem adequada para a plataforma qemu usando coreos-installer (ou baixe e verifique-a da web). Você pode usar coreos-installer como um contêiner, ou no Fedora, instale pelos repos.

    STREAM="stable"
    # como um binário instalado:
    coreos-installer download -s "${STREAM}" -p qemu -f qcow2.xz --decompress -C ~/.local/share/libvirt/images/
    # ou como um contêiner:
    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. Inicie uma nova máquina via virt-install, usando o arquivo Ignition com suas personalizações.

    # Setup the correct SELinux label to allow access to the config
    chcon --verbose --type svirt_home_t /path/to/example.ign
    
    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"
    
    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 \
            --qemu-commandline="-fw_cfg name=opt/com.coreos/config,file=${IGNITION_CONFIG}"
virt-install requer que a imagem do sistema operacional e o arquivo Ignition sejam especificados como caminhos absolutos.
Dependendo da sua versão de virt-install, você talvez não será capaz de usar --os-variant=fedora-coreos-* e irá obter um erro. Nesse caso, você deve pegar uma variante mais antiga do Fedora (--os-variant=31, por exemplo). Você pode encontrar as variantes que são suportadas pela sua versão corrente de virt-install com osinfo-query os | grep '^\s*fedora'.
Certifique-se de que seu usuário tenha acesso a /dev/kvm. O padrão é permitir o acesso para todos, mas em algumas distribuições você pode precisar se adicionar ao grupo kvm.
You can escape out of the serial console by pressing CTRL + ].

If you set up an SSH key for the default core user, you can SSH into the VM and explore the OS:

ssh core@<ip address>