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

For automating Fedora CoreOS installations, it is expected that you will interact with stream metadata. While Fedora CoreOS does automatic in-place updates, it is generally recommended to start provisioning new machines from the latest images.

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)

Novas instâncias da AWS podem ser criadas diretamente a partir de imagens públicas do FCOS. Você pode encontrar a AMI mais recente para cada região na página de download.

Se você estiver interessado apenas em explorar FCOS sem personalização adicional, pode usar um par de chaves SSH registrado para o usuário padrão core.

Para testar o FCOS dessa forma, você precisará executar o comando aws ec2 run-instances e fornecer algumas informações para colocar a instância em funcionamento. A seguir está um exemplo de comando que você pode usar:

Iniciando uma nova instância
NAME='instance1'
SSHKEY='my-key'     # o nome da sua chave SSH: `aws ec2 describe-key-pairs`
IMAGE='ami-xxx'     # o ID da AMI encontrada na página de download
DISK='20'           # o tamanho do disco
REGION='us-east-1'  # a região alvo
TYPE='m5.large'     # o tipo da instância
SUBNET='subnet-xxx' # a sub-rede: `aws ec2 describe-subnets`
SECURITY_GROUPS='sg-xx' # o grupo de segurança `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}}"
Você pode descobrir o IP atribuído à instância executando aws ec2 describe-instances

Agora você deve conseguir fazer SSH na instância usando o endereço IP associado.

Exemplo de conexão
ssh core@<endereço ip>

Um exemplo mais completo que permite personalização é descrito em Provisionando Fedora CoreOS no Amazon Web Services.

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.

    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.
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=fedora31, 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'.
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>

Explorando o sistema operacional

Depois que a VM terminar a inicialização, seus endereços IP aparecerão no console. 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

Recomendamos que todos os usuários assinem a lista de discussão coreos-status de baixo volume para avisos operacionais relacionados ao Fedora CoreOS.

Erros podem ser relatados no Fedora CoreOS Tracker.

Para perguntas ao vivo, sinta-se à vontade para entrar em contato na sala #coreos:fedoraproject.org no Matrix.

Para dúvidas e discussões mais longas relacionadas ao Fedora CoreOS, um fórum e uma lista de discussão estão disponíveis.