Proporcionar Fedora CoreOS en Alibaba Cloud (Aliyun)

Esta guía muestra como aprovisionar los nodos Fedora CoreOS (FCOS) nuevos sobre Alibaba Cloud. Fedora actualmente no publica imágenes Fedora CoreOS dentro de Alibaba Cloud, de modo que debes descargar una imagen Alibaba Cloud desde Fedora y subirla a uno de sus depósitos de Servicio de Almacenaje de Objetos (OSS).

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 Alibaba Cloud y activar el Servicio de Almacenamiento de Objeto (OSS). Los ejemplos siguientes usan Alibaba Cloud CLI y jq como línea de comandos del procesador JSON.

Descargando una imagen Alibaba Cloud

Fedora CoreOS está diseñado para ser actualizado automáticamente con diferentes horarios por transmisión. Una vez que haya elegido la transmisión relevante, descargue, verifique y descomprima la última imagen Alibaba Cloud:

STREAM="stable"
coreos-installer download --decompress -s "${STREAM}" -p aliyun -f qcow2.xz

Alternativamente, puede descargar manualmente una imagen Alibaba Cloud desde la página de descargas. Verifique la descarga, siguiendo las instrucciones en esa página, y descomprímalo.

Subir la imagen al Alibaba Cloud

  1. Crea cualquier depósito que no exista aún en su cuenta de Alibaba Cloud con un nombre globalmente único o reutilice un depósito existente:

    Ejemplo al crear depósito de Alibaba Cloud OSS (Object Storage Service)
    REGION="ap-southeast-1"
    BUCKET_NAME="mi-depósito"
    BUCKET_URL="oss://${BUCKET_NAME}"
    aliyun oss mb "${BUCKET_URL}" --region="${REGION}" --acl=private
  2. Subida de una imagen FCOS:

    Ejemplo subiendo FCOS a un depósito de Alibaba Cloud OSS
    DOWNLOADED_IMAGE="./image.qcow2"
    IMAGE_NAME="mi-imagen-fcos"
    IMAGE_BLOB="${IMAGE_NAME}.qcow2"
    aliyun oss cp "${DOWNLOADED_IMAGE}" "${BUCKET_URL}/${IMAGE_BLOB}" \
        --region="${REGION}" --acl=private
  3. Importar imagen FCOS subida:

    Ejemplo de importación de FCOS a Alibaba Cloud ECS
    TASK_ID=$(aliyun ecs ImportImage \
        --region="${REGION}" \
        --DiskDeviceMapping.1.OSSBucket="${BUCKET_NAME}" \
        --DiskDeviceMapping.1.OSSObject="${IMAGE_BLOB}" \
        --ImageName="${IMAGE_NAME}" \
        | jq --raw-output .TaskId)
  4. Espere hasta que la imagen sea importada completamente

    Ejemplo de espera con un vencimiento igual a una hora
    aliyun ecs DescribeTasks --region="${REGION}" --TaskIds="${TASK_ID}" \
        --waiter expr='TaskSet.Task[0].TaskStatus' to=Finished timeout=3600
  5. Determina la id de la imagen FCOS importada:

    El ejemplo determina el id de la imagen FCOS importada
    IMAGE_ID=$(aliyun ecs DescribeImages --region="${REGION}" --ImageName="${IMAGE_NAME}" \
        | jq --raw-output .Images.Image[0].ImageId)
  6. Borra el blob subido

    Ejemplo al borrar el grumo subido
    aliyun oss rm "${BUCKET_URL}/${IMAGE_BLOB}" --region "${REGION}"

Crear un VSwitch

No existen VPC ni conmutadores virtuales predeterminados en Alibaba Cloud. Por lo tanto, para crear cualquier instancia, se requiere un conmutador virtual. Tome alguno existente o cree uno siguiendo estos pasos.

  1. Crear un VPC nuevo:

    Ejemplo de creación de una VPC nueva
    VPC_CIDR="172.16.0.0/12"
    VPC_NAME="fcos-test"
    VPC_ID=$(aliyun vpc CreateVpc --region="${REGION}" \
        --CidrBlock="${VPC_CIDR}" --VpcName="${VPC_NAME}" \
        | jq --raw-output .VpcId)
  2. Toma alguna zona disponible para crear un VSwitch:

    Por ejemplo tome alguna zona de disponibilidad
    ZONE_ID=$(aliyun ecs DescribeZones --region="${REGION}" \
        | jq --raw-output .Zones.Zone[0].ZoneId)
  3. Crear un VSwitch nuevo:

    Ejemplo al crear un VSwitch nuevo
    VSWITCH_CIDR="172.16.0.0/16"
    VSWITCH_NAME="${VPC_NAME}"
    VSWITCH_ID=$(aliyun vpc CreateVSwitch \
        --region="${REGION}" \
        --CidrBlock="${VSWITCH_CIDR}" \
        --VpcId="${VPC_ID}" \
        --VSwitchName="${VSWITCH_NAME}" \
        --ZoneId="${ZONE_ID}" \
        | jq --raw-output .VSwitchId)

Lanzando una instancia ECS

  1. Sube una clave pública SSH al Alibaba Cloud ECS

    Ejemplo de subida de una cable pública SSH
    KEY_PAIR_NAME="fcos-key"
    PUBLIC_KEY_PATH="<Please fill the path to your public key>"
    PUBLIC_KEY_BODY=$(cat "${PUBLIC_KEY_PATH}")
    aliyun ecs ImportKeyPair --region="${REGION}" \
        --KeyPairName="${KEY_PAIR_NAME}" --PublicKeyBody="${PUBLIC_KEY_BODY}"
  2. Crear una instancia de ECS

    Ejemplo de creación de una instancia de ECS
    INSTANCE_NAME="my-fcos-vm"
    INSTANCE_TYPE="ecs.t6-c1m1.large"
    INSTANCE_ID=$(aliyun ecs CreateInstance \
        --region="${REGION}" \
        --KeyPairName="${KEY_PAIR_NAME}" \
        --ImageId="${IMAGE_ID}" \
        --InstanceName="${INSTANCE_NAME}" \
        --InstanceType="${INSTANCE_TYPE}" \
        --InternetChargeType=PayByTraffic \
        --InternetMaxBandwidthIn=5 \
        --InternetMaxBandwidthOut=5 \
        --VSwitchId="${VSWITCH_ID}" \
        | jq --raw-output .InstanceId)
Si el comando falla con el mensaje de error “El parámetro especificado de SystemDisk.Category no es válido.”, resuelva este asunto añadiendo el parámetro --SystemDisk.Category=cloud_essd al comando.
  1. Asignar una dirección IPv4 pública para la instancia creada previamente

    Ejemplo asignando una dirección IP pública
    PUBLIC_IP=$(aliyun ecs AllocatePublicIpAddress \
        --region="${REGION}" --InstanceId="${INSTANCE_ID}" \
        | jq --raw-output .IpAddress)
  2. Iniciar la instancia

    Ejemplo al iniciar una instancia
    aliyun ecs StartInstance --region="${REGION}" --InstanceId="${INSTANCE_ID}"
  3. Espere en cuanto la instancia esté en ejecución

    Ejemplo esperando y determinando la dirección IP pública
    aliyun ecs DescribeInstanceStatus --InstanceId.1="$INSTANCE_ID" --region="${REGION}" \
        --waiter expr='InstanceStatuses.InstanceStatus[0].Status' to=Running timeout=600
  4. Conecta a la instancia nueva por medio de SSH

    Ejemplo al conectar
    ssh core@"${PUBLIC_IP}"

Puede iniciar una instancia personalizada con su archivo Ignition agregando el parámetro --UserData=$(cat <Path to your Ignition config> | base64 -w0) al comando aliyun ecs CreateInstance que crea una instancia nueva.