在IBM Cloud上配置Fedora CoreOS

本指南介绍如何在IBM Cloud vPC第2代中配置新的Fedora CoreOS(FCOS)实例。

先决条件

在配置FCOS计算机之前,您必须具有包含自定义设置的Ignition配置文件。如果您没有,请参见 生成Ignition文件

如果您不想使用Ignition入门,可以使用 加力支撑 并通过云提供商提供SSH密钥,然后从那里继续。

您还需要有权访问 IBM云帐户 。下面的示例使用 ibmcloud 命令行工具,必须预先单独安装和配置。 关于 ibmcloud CLI,值得注意的是,支持运行CLI 通过容器 。您将需要两个 cloud-object-storageinfrastructure-service 已安装插件。这可以通过以下方式完成:

  • ibmcloud plugin install cloud-object-storage

  • ibmcloud plugin install infrastructure-service

在使用以下工具登录后 ibmcloud login 您可以设置目标区域:

瞄准特定区域
REGION='us-east' # run `ibmcloud regions` to view options
ibmcloud target -r $REGION

还需要准备好其他几个部分,如vPC、SSH密钥、网络、权限等。遗憾的是,本指南并不是一个全面的IBM Cloud指南。如果您不熟悉IBM Cloud,请使用 第2代vPC文档 第一。

创建图像

以下命令集将向您展示如何下载流的最新映像,将其上载到云存储,然后在IBM Cloud中创建云映像。值得注意的是,Fedora CoreOS有三个流,每个流有不同的更新计划。这些步骤显示了 stable 流作为一个例子,但也可以用于其他流。

获取适合您的目标流的最新图像(或 下载并验证 它来自网络)。
STREAM='stable'
coreos-installer download -s "${STREAM}" -p ibmcloud -f qcow2.xz --decompress
创建用于上传的服务帐户和授权策略,以允许从上传的对象创建图像。
BUCKET='my-unique-bucket'
ibmcloud resource service-instance-create "${BUCKET}-service-instance" cloud-object-storage standard global

SERVICE_INSTANCE_ID='25df0db0-89a4-4cb8-900f-ed8b44259f80' # from just created service account
ibmcloud iam authorization-policy-create is --source-resource-type image cloud-object-storage Reader --target-service-instance-id $SERVICE_INSTANCE_ID
将获取的图像文件上传到IBM云对象存储。
FCOS_VERSION='...'
FILE=fedora-coreos-${FCOS_VERSION}-ibmcloud.x86_64.qcow2
ibmcloud cos create-bucket --bucket $BUCKET --ibm-service-instance-id $SERVICE_INSTANCE_ID
ibmcloud cos upload --bucket=$BUCKET --key=$FILE --file=$FILE
从存储对象创建映像。
IMAGE=${FILE:0:-6}     # pull off .qcow2
IMAGE=${IMAGE//[._]/-} # replace . and _ with -
ibmcloud is image-create $IMAGE --file "cos://${REGION}/${BUCKET}/${FILE}" --os-name fedora-coreos-stable-amd64

您必须等待映像创建过程完成,然后从 pendingavailable 才能使用该图像。使用以下命令进行监控:

通过查看您帐户中的图像来监控图像创建进度
ibmcloud is images --visibility private

启动一个VM实例

现在您已经在您的帐户中创建了一个映像,您可以启动一个VM实例。您必须在命令中指定几条信息。下面的示例中嵌入了如何在启动实例之前获取该信息的提示。

您还需要之前创建的Ignition配置。在这里,它在示例命令中表示为 @example.ign ,表示当前目录中名为的文件 example.ign

启动一个VM实例
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 $NAME $VPC $ZONE $PROFILE $SUBNET --image $IMAGE --keys $SSHKEY --user-data @example.ign
如果需要,您可能必须首先使用如下命令创建一个子网 'ibmcloud is subnet-create my-subnet $VPC --ipv4-address-count 256 --zone $ZONE'

接下来,如果您想从IBM Cloud外部通过SSH登录该实例,可以为该实例分配一个公网IP:

创建并分配浮动IP
ibmcloud is floating-ip-reserve floating-ip-1 --zone=$ZONE
FIP='72251a2e-d6c5-42b4-97b0-b5f8e8d1f479'
NIC='0777-dd174c80-dbd9-41b1-b221-39bbcef8a481' # find from `ibmcloud is instance` output
ibmcloud is floating-ip-update $FIP --nic $NIC

现在,您应该能够使用与浮动IP关联的IP地址通过SSH连接到实例。