Provisionando Fedora CoreOS no DigitalOcean

Este guia mostra como provisionar novos nós do Fedora CoreOS (FCOS) no DigitalOcean. As imagens do Fedora CoreOS atualmente não são publicadas diretamente no DigitalOcean, então você deve baixar uma imagem de Fedora CoreOS do DigitalOcean e enviá-la para sua conta DigitalOcean como imagem personalizada.

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.

Se você não quiser usar o Ignition para começar, você pode usar o suporte ao Afterburn.

Você também precisa ter acesso a uma conta DigitalOcean. Os exemplos abaixo usam a ferramenta de linha de comando doctl e jq como um processador de JSON de linha de comando.

Criando uma imagem personalizada do DigitalOcean

O Fedora CoreOS é projetado para ser atualizado automaticamente, com horários diferentes por fluxo.

  1. Depois de escolher o fluxo relevante, encontre a imagem DigitalOcean correspondente na ágina de download e copie a URL do link de download.

  2. Crie a imagem personalizada:

    Exemplo de upload de FCOS para uma imagem personalizada DigitalOcean
    doctl compute image create my-fcos-image --region sfo2 --image-url <url-de-download>
    # Aguarde a criação da imagem concluir
    while ! doctl compute image list-user --output json | jq -c '.[] | select(.name=="minha-imagem-fcos")' | grep available; do sleep 5; done

O comando acima carrega a imagem e espera até que ela esteja pronta para ser usada. Este processo pode demorar muito, em nossos testes vimos que demorava até 15 minutos. O tempo de espera depende das velocidades de upload e da carga da plataforma.

Iniciando um droplet

  1. Se você ainda não fez upload de uma chave SSH para DigitalOcean, faça upload de uma:

    Exemplo de upload de uma chave SSH para DigitalOcean
    doctl compute ssh-key create my-key --public-key "$(cat ~/.ssh/id_rsa.pub)"
  2. Inicie um droplet. A configuração do Ignition pode ser passada para a VM como dados de usuário, ou você pode pular a passagem de dados do usuário se quiser apenas acesso SSH. Isso fornece uma maneira fácil de testar o FCOS sem primeiro criar uma configuração de Ignition.

    Ao criar um droplet para FCOS da DigitalOcean, você deve especificar uma chave SSH para o droplet, mesmo se você planeje injetar chaves SSH por meio do Ignition.

    Exemplo de inicialização do FCOS no DigitalOcean usando um arquivo de configuração do Ignition
    image_id=$(doctl compute image list-user | grep my-fcos-image | cut -f1 -d ' ')
    key_id=$(doctl compute ssh-key list | grep my-key | cut -f1 -d ' ')
    doctl compute droplet create my-fcos-droplet --image "${image_id}" --region sfo2 --size s-2vcpu-2gb --user-data-file <arquivo-config-ignition> --ssh-keys "${key_id}" --wait
    Enquanto a documentação do DigitalOcean menciona cloud-init e scripts, FCOS não suporta cloud-init ou a capacidade de executar scripts de dados do usuário. Ele aceita apenas arquivos de configuração do Ignition.
  3. Agora você deve conseguir fazer SSH na instância usando o endereço IP associado.

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