Provisionando Fedora CoreOS no OpenStack

Esse guia mostra como provisionar novos nós Fedora CoreOS (FCOS) em um ambiente de Nuvem OpenStack, seja este privado ou público (como VEXXHOST).

Os passos abaixo foram testados na relase "Victoria' do OpenStack.

Pré-Requisitos

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

Você também deve ter acesso a um ambiente OpenStack e a uma ttps://docs.openstack.org/python-designateclient/latest/user/shell-v2.html[CLI openstack] funcional. Tipicamente vocẽ irá configurar o cliente usando um arquivo clouds.yaml ou via variáveis de ambiente. Se você está começando do 0, esse ambiente deve precisar de redes, pares de chave SSH, grupos de segurança, etc…​configure. Por favor consulte a Documentação do OpenStack para aprender mais.

Baixando uma imagem OpenStack

Fedora CoreOS é designado para ser atualizado automaticamente, com diferentes rotinas por fluxo. Uma vez que você tenha escolhido o fluxo relevante, faça o download, verifique e descomprima a última imagem OpenStack:

Para mais informações sobre ofertas de Fluxos FCOS veja Fluxo de atualizações.
STREAM='stable'
coreos-installer download --decompress -s $STREAM -p openstack -f qcow2.xz

Alternativamente, você pode baixar manualmente uma imagem OpenStack da página de downloads. Verificar o download, seguindo as instruções nessa página, e descomprimir.

Realizando o upload da imagem para o OpenStack

Crie a imagem FCOS no OpenStack
FILE=fedora-coreos-XX.XXXXXXXX.X.X-openstack.x86_64.qcow2
IMAGE=${FILE:0:-6} # pull off .qcow2
openstack image create --disk-format=qcow2 --min-disk=10 --min-ram=2 --file=$FILE $IMAGE
Monitore o processo de criação de imagem listando a imagem
openstack image list --name=$IMAGE

Lançando uma instância de VM

Agora que você tem uma imagem criada na sua conta você pode lançar uma instância de VM. Você terá que especificar vários detalhes de informação no comando, como a versão da instância, informação de rede, chave SSH, etc…​

Você também precisará da configuração Ignition que você criou anteriormente. Aqui está representado no comando de exemplo como ./example.ign, que indica um arquivo no diretório corrente nomeado example.ign.

Lançando uma instância de VM
OPENSTACK_NETWORK=private
OPENSTACK_KEYPAIR=mykeypair # optional
OPENSTACK_FLAVOR=v1-standard-2
INSTANCE_NAME=myinstance # choose a name
openstack server create            \
     --key-name=$OPENSTACK_KEYPAIR \
     --network=$OPENSTACK_NETWORK  \
     --flavor=$OPENSTACK_FLAVOR    \
     --image=$IMAGE                \
     --user-data ./example.ign     \
     $INSTANCE_NAME
Especificar --key-name é opcional se você prover uma chave SSH na sua configuração Ignition.
Monitorar o progresso de criação da instância com openstack server show $INSTANCE_NAME.

Próximo, se você gostaria de acessar por SSH a instância de fora do ambiente OpenStack, você pode assinalar um IP público para a instância:

Crie e assinale um IP flutuante
OPENSTACK_NETWORK=public
openstack floating ip create $OPENSTACK_NETWORK

FLOATING_IP=1.1.1.1  # do ip flutuante recém-criado
openstack server add floating ip $INSTANCE_NAME $FLOATING_IP

Agora você deve ser capaz de acessar por SSH a instãncia utilizando o endereço IP associado com o IP flutuante. Se você não mudou os defaults, o usuário é core e ssh core@$FLOATING_IP deve funcionar.