Proporcionar Fedora CoreOS en IBM Cloud

Esta guía le muestra como aprovisionar instancias nuevas de Fedora CoreOS (FCOS) en IBM Cloud para las arquitecturas o bien x86_64 o bien s390x.

FCOS no es compatible con IBM Cloud Classic Infrastructure.

Prerrequisitos

Fedora CoreOS los mantiene el acceso para configurar por medio de claves SSH utilizando Afterburn en esta plataforma. Una vez te ha configurado su Clave SSH en la configuración de la plataforma, puedes disponer y acceder a instancias de Fedora CoreOS con el usuario core por defecto, sin utilizar una configuración de Ignition.

Recomendamos utilizar una configuración de Ignition una vez que sea más familiar con Fedora CoreOS y desee automatizar el despliegue de sistemas.

Necesita tener acceso a una Cuenta IBM Cloud. El ejemplo de abajo utiliza la herramienta de línea de comando ibmcloud, que debe instalarse y configurarse por separado de antemano. Siga las instrucciones en https://cloud.ibm.com/docs/cli?topic=cli-install-ibmcloud-cli para instalar la CLI de ibmcloud. Necesitará tener instalados los complementos cloud-object-storage e infrastructure-service. Esto se puede hacer con:

  • ibmcloud plugin install cloud-object-storage

  • ibmcloud plugin install infrastructure-service

Tras iniciar sesión con ibmcloud login, puede establecer una región de destino:

Destino para una región específica
REGION='us-east' # ejecuta `ibmcloud regions` para ver las opciones
ibmcloud target -r $REGION
Destina un grupo de recursos específico
RESOURCE_GROUP='mi-grupo-recurso'
ibmcloud resource group-create $RESOURCE_GROUP # Crea el grupo de recursos si no existe
ibmcloud target -g $RESOURCE_GROUP

Hay otras diversas cosas que es necesario hacer en lugar, como una VPC, claves SSH, redes, permisos, etc. Desafortunadamente esta guía no es una guía IBM Cloud completa. Si es nuevo en IBM Cloud primero familiarícese con ella usando la documentación para IBM Cloud VPC networks.

Crear una Imagen

Los siguientes conjuntos de comandos le mostrarán como descargar la imagen más reciente de una secuencia, subirla al almacenamiento en la nube y luego crear la imagen en la nube en IBM Cloud. Cabe destacar que Fedora CoreOS se ofrece en tres secuencias, con diferentes planificaciones de actualización para cada una. Estos pasos muestran la secuencia stable como ejemplo, pero también pueden utilizarse para otras secuencias.

Obtenga la última imagen adecuada para su flujo destino (o descárguela y verifíquela desde la web).
STREAM='stable'
ARCH='x86_64' # or 's390x'
coreos-installer download -s $STREAM -a $ARCH -p ibmcloud -f qcow2.xz --decompress
Crea una Cuenta de Servicio para subir y una Directiva de Autenticación para conceder la creación de imágenes desde los objetos subidos.
BUCKET='mi-depósito-único'
ibmcloud resource service-instance-create "${BUCKET}-service-instance" cloud-object-storage standard global

SERVICE_INSTANCE_ID='25df0db0-89a4-4cb8-900f-ed8b44259f80' # desde la cuenta de servicio recién creada
ibmcloud iam authorization-policy-create --source-resource-type image cloud-object-storage Reader --target-service-instance-id $SERVICE_INSTANCE_ID
Suba el archivo de la imagen recuperada al IBM Cloud Object Storage.
FCOS_VERSION='...'
FILE="fedora-coreos-${FCOS_VERSION}-ibmcloud.${ARCH}.qcow2"
ibmcloud cos create-bucket --bucket $BUCKET --ibm-service-instance-id $SERVICE_INSTANCE_ID
ibmcloud cos upload --bucket=$BUCKET --key="${FILE}" --file="${FILE}"
Crear la imagen desde el objeto almacén.
IMAGE=${FILE:0:-6}     # logra .qcow2
IMAGE=${IMAGE//[._]/-} # sustituye . y _ por -
[ $ARCH == 'x86_64' ] && OSNAME='fedora-coreos-stable-amd64'
[ $ARCH == 's390x' ] && OSNAME='red-8-s390x-byol'
ibmcloud is image-create "${IMAGE}" --file "cos://${REGION}/${BUCKET}/${FILE}" --os-name $OSNAME
Para s390x utilizamos --os-name=red-8-s390x-byol (un perfil de RHEL 8) aquí porque no hay actualmente un perfil fedora-coreos-stable-s390x para utilizarlo.

Tendrás que esperar el proceso de creación de la imagen para finalizar e ir desde pending a available antes que pueda utilizar la imagen. Monitorice con el comando siguiente:

Progreso de creación de imagen de monitor viendo la imagen dentro de su cuenta
ibmcloud is images --visibility private --status pending,available

Lanzar una instancia de Máquina Virtual (MV)

Ahora que has creado una imagen en tu cuenta, puedes iniciar una instancia de máquina virtual. Deberás especificar varios fragmentos en el comando. El siguiente ejemplo embebido a continuación son consejos sobre como obtener esa información antes de lanzar una instancia.

También necesitarás la configuración de Ignition creada antes. Aquí está representada en la instrucción de ejemplo como @example.ign, el cual indica un archivo dentro del directorio actual nombrado como example.ign.

Lanzar una instancia de Máquina Virtual (MV)
INSTANCE_NAME='instance1'
ZONE="${REGION}-1" # view more with `ibmcloud is zones`
PROFILE='bx2-2x8' # view more with `ibmcloud is instance-profiles`
VPC='r014-c9c65cc4-cfd3-44de-ad54-865aac182ea1'    # `ibmcloud is vpcs`
IMAGE='r014-1823b4cf-9c63-499e-8a27-b771be714ad8'  # `ibmcloud is images --visibility private`
SUBNET='0777-bf99cbf4-bc82-4c46-895a-5b7304201182' # `ibmcloud is subnets`
SSHKEY='r014-b44c37d0-5c21-4c2b-aba2-438a5b0a228d' # `ibmcloud is keys`
ibmcloud is instance-create $INSTANCE_NAME $VPC $ZONE $PROFILE $SUBNET \
   --allow-ip-spoofing=true --image $IMAGE --keys $SSHKEY --user-data @example.ign
Si es necesario, primero deberá crear una subred con un comando como ibmcloud is subnet-create my-subnet $VPC --ipv4-address-count 256 --zone $ZONE.
Asegúrese de elegir un tipo de instancia adecuado según su arquitectura. Por ejemplo, podría usar bz2-2x8 en lugar de bx2-2x8 si su destino es s390x.

A continuación, si desea acceder mediante SSH a la instancia desde fuera de IBM Cloud, puede asignar una IP pública a la instancia:

Crear y Asignar una IP Flotante
FIP_NAME='floating-ip-1'
ibmcloud is floating-ip-reserve $FIP_NAME --zone=$ZONE
VNIC=$(ibmcloud is instance $INSTANCE_NAME --output json |
       jq --raw-output .primary_network_attachment.virtual_network_interface.id)
ibmcloud is virtual-network-interface-floating-ip-add $VNIC $FIP_NAME

Ahora debería poder conectarse por SSH a la instancia utilizando la dirección IP asociada a la IP flotante.

Ejemplo al conectar
ssh core@<ip address>