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 tem um usuário padrão core que pode ser usado para explorar o sistema operacional. Se você quiser usá-lo, finalize sua configuração fornecendo, por exemplo, uma chave SSH.

Você também precisa ter acesso a uma máquina host com libvirt. Os exemplos abaixo usam a ferramenta de linha de comando virt-install, que deve ser instalada separadamente antes.

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.

Iniciando 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"
    # as an installed binary:
    coreos-installer download -s $STREAM -p qemu -f qcow2.xz --decompress -C ~/.local/share/libvirt/images/
    # or as a 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. Inicie uma nova máquina via virt-install, usando o arquivo Ignition com suas personalizações.

    IGNITION_CONFIG="/caminho/para/exemplo.ign"
    IMAGE="/path/to/image.qcow2"
    VM_NAME="fcos-test-01"
    VPUS="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)
    
    # Configura o rótulo correto do SELinux para permitir acesso à configuração
    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 requer que a imagem do sistema operacional e o arquivo Ignition sejam especificados como caminhos absolutos.
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 deve ser pelo menos tão grande quanto o tamanho padrão da imagem. Para o Fedora CoreOS, atualmente são 10 GB.
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.
Você pode sair do console serial pressionando CTRL + ].

Se você configurar uma chave SSH para o usuário padrão core, poderá fazer um acesso via SSH para VM e explorar o sistema operacional:

ssh core@<endereço ip>