Primeiros passos com Fedora CoreOS

Introdução

Fluxos

Existem três fluxos de atualização do Fedora CoreOS (FCOS) disponíveis: stable, testing e next. Em geral, você vai querer usar o stable, mas é recomendável executar algumas máquinas no testing e no next também e fornecer feedback.

Cada fluxo tem uma URL canônica representando seu atual estado no formato JSON, conhecido como "metadados de fluxo". Por exemplo, a URL de metadados de fluxo e stable é: https://builds.coreos.fedoraproject.org/streams/stable.json

Para automatizar as instalações do Fedora CoreOS, espera-se que você interaja com os metadados do fluxo. Embora o Fedora CoreOS faça atualizações automáticas no local, geralmente é uma boa prática iniciar o provisionamento de novas máquinas a partir das imagens mais recentes.

Para mais informações sobre o uso de metadados de fluxo, consulte Metadados de fluxo. Para mais sobre os fluxos disponíveis, consulte Fluxos de atualização.

Filosofia de provisionamento

O Fedora CoreOS não possui um disco de instalação separado. Em vez disso, toda instância inicia a partir de uma imagem de disco genérica personalizada na primeira inicialização via Ignition.

Cada plataforma possui lógica específica para recuperar e aplicar a primeira configuração de inicialização. Para implantações na nuvem, o Ignition reúne a configuração por meio de mecanismos de dados do usuário. No caso de instalação diretamente no hardware, o Ignition pode buscar sua configuração no disco ou em uma fonte remota.

Para mais informações sobre configuração, consulte a documentação Produzindo um arquivo de Ignition.

Início rápido

Inicializando em uma VM de nuvem (exemplo do AWS)

New AWS instances can be directly created from the public FCOS images. You can find the latest AMI for each region from the download page.

If you are only interested in exploring FCOS without further customization, you can use a registered SSH key-pair for the default core user.

To test out FCOS this way you’ll need to run the aws ec2 run-instances command and provide some information to get the instance up and running. The following is an example command you can use:

Iniciando uma nova instância
NAME='instance1'
SSHKEY='my-key'     # the name of your SSH key: `aws ec2 describe-key-pairs`
IMAGE='ami-xxx'     # the AMI ID found on the download page
DISK='20'           # the size of the hard disk
REGION='us-east-1'  # the target region
TYPE='m5.large'     # the instance type
SUBNET='subnet-xxx' # the subnet: `aws ec2 describe-subnets`
SECURITY_GROUPS='sg-xx' # the security group `aws ec2 describe-security-groups`
aws ec2 run-instances                     \
    --region $REGION                      \
    --image-id $IMAGE                     \
    --instance-type $TYPE                 \
    --key-name $SSHKEY                    \
    --subnet-id $SUBNET                   \
    --security-group-ids $SECURITY_GROUPS \
    --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=${NAME}}]" \
    --block-device-mappings "VirtualName=/dev/xvda,DeviceName=/dev/xvda,Ebs={VolumeSize=${DISK}}"
You can find out the instance’s assigned IP by running aws ec2 describe-instances

You now should be able to SSH into the instance using the associated IP address.

In order to launch a customized FCOS instance, a valid Ignition configuration must be passed as its user data at creation time. You can use the same command from above but add --user-data file://path/to/config.ign argument:

Iniciando e personalizando uma nova instância
NAME='instance1'
SSHKEY='my-key'     # the name of your SSH key: `aws ec2 describe-key-pairs`
IMAGE='ami-xxx'     # the AMI ID found on the download page
DISK='20'           # the size of the hard disk
REGION='us-east-1'  # the target region
TYPE='m5.large'     # the instance type
SUBNET='subnet-xxx' # the subnet: `aws ec2 describe-subnets`
SECURITY_GROUPS='sg-xx' # the security group `aws ec2 describe-security-groups`
USERDATA='/path/to/config.ign' # path to your Ignition config
aws ec2 run-instances                     \
    --region $REGION                      \
    --image-id $IMAGE                     \
    --instance-type $TYPE                 \
    --key-name $SSHKEY                    \
    --subnet-id $SUBNET                   \
    --security-group-ids $SECURITY_GROUPS \
    --user-data "file://${USERDATA}"      \
    --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=${NAME}}]" \
    --block-device-mappings "VirtualName=/dev/xvda,DeviceName=/dev/xvda,Ebs={VolumeSize=${DISK}}"
Por design, a configuração de inicialização em nuvem e os scripts de inicialização não são suportados no FCOS. Em vez disso, é recomendável codificar qualquer lógica de inicialização como unidades de serviço do systemd na configuração do Ignition.

Inicializando em um hipervisor local (exemplo do libvirt)

  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 + ].

Explorando o sistema operacional

Depois que a VM terminar a inicialização, seus endereços IP aparecerão no console serial. Por padrão, não há credenciais padrão codificadas.

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>

Entrando em contato

We recommend that all users subscribe to the low-volume coreos-status mailing list for operational notices related to Fedora CoreOS.

Erros podem ser relatados no Fedora CoreOS Tracker.

For live questions, feel free to reach out on the #fedora-coreos IRC channel on Libera.Chat.

For doubts and longer discussions related to Fedora CoreOS, a forum and a mailing list are available.