IBM Cloud Docs
使用 CLI 和 API 创建 VPC 资源

使用 CLI 和 API 创建 VPC 资源

除了创建 VPC 外,您还可以创建 VPC 资源,例如实例,子网和 Block Storage 卷。

有关使用 IBM Cloud 控制台创建 VPC 资源的更多信息,请参阅 使用 IBM Cloud 控制台创建 VPC 资源

使用 CLI 创建 VPC 资源

您可以使用 IBM Cloud® CLI 创建和配置 IBM Cloud® Virtual Private Cloud。

要创建和配置 Virtual Private Cloud (VPC) 和其他附加资源,请按以下顺序执行后续各部分中的步骤:

  1. 创建 VPC 和子网以定义网络。
  2. 如果要允许子网中的所有资源与公用因特网进行通信,请连接公共网关。
  3. 创建虚拟服务器实例。 默认情况下,实例会附加一个启动卷。 对于大多数虚拟服务器实例,缺省引导卷大小为 100 GB。 z/OS 虚拟服务器实例的缺省引导卷大小为 250 GB。
  4. 如果需要更多存储空间,请创建块存储卷,然后将其连接到实例。
  5. 要定义实例允许的入站和出站流量,请配置其安全组。
  6. 如果希望实例可从因特网进行访问,请保留并关联浮动 IP 地址。

准备工作

确保设置 CLI 环境

登录到 IBM Cloud

ibmcloud login --sso -a cloud.ibm.com

此命令会返回 URL 并提示输入密码。 在浏览器中转至该 URL 并登录。 如果成功,您将获得一次性密码。 复制此密码并将其作为响应粘贴到提示上。 执行了认证步骤后,系统将提示您选择帐户。 如果您有权访问多个用户,请选择希望以其身份登录的用户。

系统提示您选择区域时,请选择 us-south。

响应任何剩余提示以完成登录。

创建 VPC

使用以下命令创建名为 my-vpc 的 VPC。

ibmcloud is vpc-create my-vpc

从返回的输出中,将 ID 保存在一个变量中,以便以后使用:

vpc="0738-59de4046-3434-4d87-bb29-0c99c428c96e"

以上示例不会创建具有经典访问权的 VPC。 如果 VPC 需要访问经典资源,请参阅 设置对经典基础架构的访问权。 您可以仅在创建 VPC 时启用 VPC 以进行经典访问。 此外,任何时候您的帐户中都只能有一个经典访问 VPC。

创建专用目录

此步骤是可选的。 如果计划从专用目录共享映像,那么必须首先创建专用目录。 如果选择属于其他帐户的目录映像,那么需要查看更多注意事项和限制。 请参阅 在专用目录中使用跨帐户映像引用。 要创建专用目录,请参阅教程 使用 CLI 将软件加载到目录中

创建子网

创建子网之前,请选择要在其中创建子网的区域和地址前缀。 要列出 VPC 中每个专区的地址前缀,请运行以下命令:

ibmcloud is vpc-address-prefixes $vpc

现在,您需要为 us-south-3 区域选择缺省地址前缀。 记下命令输出中地址前缀的 CIDR 块。 创建子网时,必须指定所选专区的其中一个地址前缀中的 IP 范围。

子网在创建后无法调整大小。

ibmcloud is subnet-create my-subnet $vpc us-south-3 --ipv4-cidr-block "10.0.1.0/24"

从返回的输出中,将 ID 保存在一个变量中,以便以后使用:

subnet="0738-658756a4-1106-4914-969a-3b43b338524a"

首次创建子网时,子网的状态是 pending。 子网需要移至 available 状态(这需要几秒钟时间)后,您才能在子网中创建资源。 要检查子网的状态,请运行以下命令:

ibmcloud is subnet $subnet

连接公共网关

如果要允许所有连接的资源与公用因特网进行通信,请将公共网关连接到子网。

要创建公共网关,请运行以下命令:

ibmcloud is public-gateway-create my-gateway $vpc us-south-3

从返回的输出中,将 ID 保存在一个变量中,以便以后使用:

gateway="0738-446c0c63-f0b1-4043-b30d-644f55fde391"

要将公共网关连接到子网,请运行以下命令:

ibmcloud is subnet-update $subnet --pgw $gateway

在 VPC 中,每个专区只允许有一个公共网关,但该公共网关可以连接到所在专区中的多个子网。 要查找某一区域的公共网关,请运行 ibmcloud is public-gateways 命令并查找特定的 VPC 和 Zone 值。

添加 SSH 密钥

向 IBM Cloud 帐户添加公用 SSH 密钥。 此密钥在创建实例时指定,以后登录实例时需要用到。 可以使用一个密钥来供应多个实例。

要查看 IBM Cloud 帐户中的可用密钥,请运行以下命令:

ibmcloud is keys

要添加密钥,请运行以下命令。 替换 SSH 密钥文件的路径。 对于 RSA SSH 密钥,可以使用 id_rsa.pub 文件的路径。 对于 Ed25519 SSH 密钥,可以使用 id_ed25519.pub 文件的路径。

ibmcloud is key-create my-key @$HOME/.ssh/id_rsa.pub

从返回的输出中,将 ID 保存在一个变量中,以便以后使用:

key="0738-859b4e97-7540-4337-9c64-384792b85653"

为实例选择概要文件

要列出所有可用的实例概要文件,请运行以下命令:

ibmcloud is instance-profiles

保存您计划用作变量的概要文件,稍后将使用此概要文件来供应实例。

为实例选择映像

您可以使用库存映像,帐户中的定制映像或专用目录中与帐户共享的映像来创建实例。 根据您计划使用的映像运行下列其中一个命令。

  • 从实例的帐户中选择股票映像或定制映像。

    1. 要列出所有可用映像,请运行 ibmcloud is images 命令。 如果列表太长,请考虑像以下示例一样对其进行过滤。

      $ ibmcloud is images | grep -i "debian.*available.*amd64.*public"
      r006-17cc6c08-f628-46f4-8bf4-a8edab749722   ibm-debian-10-13-minimal-amd64-4                    available    amd64   debian-10-amd64                      10.x Buster/Stable - Minimal Install                     1               public       provider     none           Default          -
      r006-b721bf3b-393b-4386-a618-d1ea8c004e1c   ibm-debian-11-7-minimal-amd64-2                     available    amd64   debian-11-amd64                      11.x Bullseye/Stable - Minimal Install                   1               public       provider     none           Default          -
      r006-e66ebfcd-4aac-44e2-b504-1f6f4c003518   ibm-debian-12-0-minimal-amd64-1                     available    amd64   debian-12-amd64                      12.x Bookworm/Stable - Minimal Install                   1               public       provider     none           Default          -
      

      不推荐使用的映像不包含最新支持。

    2. 选择类似于 ibm-debian-12-0-minimal-amd64-1 的图像,并将该图像标识保存为稍后用于供应实例的变量。

      image=$(ibmcloud is images | grep -i "ibm-debian-12-0-minimal-amd64-1" | cut -d" " -f1)
      
  • 从实例的专用目录中选择共享的映像

    如果选择属于其他帐户的目录映像,那么需要查看更多注意事项和限制。 请参阅 在 CLI 中的专用目录中使用跨帐户映像引用

    • 要列出所有可用的专用目录映像产品,请运行以下命令。

      ibmcloud is catalog-image-offerings
      

      此命令返回每个映像产品的标识以及映像所在的专用目录的标识。 将 offering_idcatalog_id 保存在变量中,稍后将使用这些变量来供应实例。

      offering_id=6bf79f7b-de48-4ce8-8cae-866b376f2889
      catalog_id=71306253-8444-4cae-a45d-64d35e5393ec
      
    • 要获取产品的 offering_crn 和产品中每个版本的 offering_version_crn,请运行以下命令。

      ibmcloud is catalog-image-offering $catalog_id $offering_id
      

      供应实例时,可以使用 offering_crn 值从目录产品中最新版本的专用目录管理映像供应实例,也可以使用 offering_version_crn 值从目录产品中的特定版本供应实例。

      offering_crnoffering_version_crn 保存在变量中,稍后将使用这些变量来供应实例。

      offering_crn="crn:v1:bluemix:public:globalcatalog-collection:global:a/a1234567:offering:136559f6-4588-4af2-8585-f3c625eee09d"
      offering_version_crn="crn:v1:bluemix:public:globalcatalog-collection:global:a/a1234567:version:136559f6-4588-4af2-8585-f3c625eee09d/8ae92879-e253-4a7c-b09f-8d30af12e518"
      

创建实例

在新创建的子网中创建实例。 请传入公用 SSH 密钥,以便可以在供应实例后登录。

根据您计划使用的映像运行以下某个 CLI 命令。

  • 通过使用实例的帐户中的常用映像或定制映像来创建实例。

    ibmcloud is instance-create my-instance $vpc us-south-3 bx2-2x8 $subnet --image-id $image --key-ids $key
    
  • 使用来自最新映像版本的专用目录管理的映像来创建实例。

    ibmcloud is instance-create my-instance $vpc us-south-3 bx2-2x8 $subnet --catalog-offering $offering_crn --keys $key
    
  • 通过使用特定映像版本中的专用目录管理的映像来创建实例。

    ibmcloud is instance-create my-instance $vpc us-south-3 bx2-2x8 $subnet --catalog-offering-version $offering_version_crn --keys $key
    

创建新实例后,不会返回有关为新实例创建的网络接口的信息。

从返回的输出中,将实例的 ID 保存在一个变量中,以便以后使用:

instance="0738-21179496-964e-4c00-8210-cf23d75750b3"

首次创建时,实例的状态是 pending。 实例需要移至 running 状态(这需要几分钟时间)后,您才能继续操作。 要检查实例的状态,请运行以下命令:

ibmcloud is instance $instance

从返回的输出中,将主网络接口 (Primary Interface) 的 ID 保存在一个变量中,以便以后使用:

nic="0738-4d9b3a58-f796-4e6a-b5ac-84f4216e9b68-glhvl"

创建 Block Storage 数据卷

如果需要更多存储空间,可以创建块存储卷并将其连接到虚拟服务器实例。 创建块存储卷时,请选择概要文件以优化计算工作负载的性能。 有关基于您选择的卷概要文件的卷容量和 IOPS 范围的更多信息,请参阅 概要文件

要查看卷概要文件的列表,请运行以下命令:

ibmcloud is volume-profiles

运行此命令以创建块存储器数据卷。 指定卷的名称、卷概要文件以及要在其中创建卷的专区。 要将块存储器数据卷连接到实例,实例和块存储器数据卷必须在同一专区中进行创建。

ibmcloud is volume-create my-volume custom us-south-3 --iops 1000 --size 500

从返回的输出中,将卷的 ID 保存在一个变量中,以便以后使用:

vol=0738-933c8781-f7f5-4a8f-8a2d-3bfc711788ee

卷首次创建时的状态是 pending。 卷需要移至 available 状态(这需要几分钟时间)后,您才能继续操作。

要检查卷的状态,请运行以下命令:

ibmcloud is volume $vol

将 Block Storage 数据卷附加到实例

使用创建的变量,使用以下命令将卷附加到虚拟服务器实例:

ibmcloud is instance-volume-attachment-add my-volume-attachment $instance $vol --auto-delete true

为默认安全组添加规则

可以配置安全组,以定义针对实例允许的入站和出站流量。 例如,可以添加规则以允许 SSH 流量。

查找 VPC 的安全组:

ibmcloud is vpc-sg $vpc

从返回的输出中,将 ID 保存在一个变量中,以便以后使用:

sg=0738-2d364f0a-a870-42c3-a554-000000981149

现在,创建允许 SSH 流量的规则:

ibmcloud is sg-rulec $sg inbound tcp --port-min=22 --port-max=22

(可选)您还可以添加规则以允许对流量执行 ping 操作:

ibmcloud is sg-rulec $sg inbound icmp --icmp-type 8 --icmp-code 0

对于 Windows 映像,请确保与实例关联的安全组允许入站和出站远程桌面协议流量 (TCP 端口 3389)。

为实例创建浮动 IP 地址

如果希望实例可从因特网进行访问,请创建浮动 IP 地址。

ibmcloud is floating-ip-reserve my-fip --nic $nic

从返回的输出结果中,将 Address 保存在一个变量中,以便以后使用:

address=169.48.88.0

登录您的实例

例如,在 Linux 上,可以使用以下格式的命令:

ssh -i $HOME/.ssh/id_rsa root@$address

缺省情况下,在 Fedora Core 操作系统中已禁用用户登录 "root"。 用户登录 "core" 可用于登录到 Fedora Core 操作系统实例。

系统提示您继续连接时,请输入 yes

安全组可能会阻止通过 SSH 访问实例。 请确保实例的安全组允许 SSH 访问。

要连接到 Windows 映像,请使用其解密密码进行登录。 有关指示信息,请参阅 连接到 Windows 实例

监视实例

您可以在 IBM Cloud 控制台中监视实例随时间变化的 CPU、卷、内存和网络使用情况。 由于监视数据存储在 IBM Cloud Monitoring 中,因此您必须向帐户中 Monitoring 服务的实例进行认证。 更多信息,请参阅 监控入门

对于 IBM Cloud Hyper Protect Virtual Servers for IBM Cloud® Virtual Private Cloud 实例,无法收集内存度量值,因为 VPC 实例的 Hyper Protect Virtual Servers 是使用安全执行映像创建的,并且安全执行实例的内存不可访问。

创建 VPN 网关

如果要将 VPC 安全地连接到另一个专用网络,请在子网上创建 VPN 网关。

要创建 VPN 网关,请运行以下命令:

ibmcloud is vpn-gateway-create my-vpn-gateway $subnet

从返回的输出中,将 VPN 网关的 ID 保存在一个变量中,以便以后使用:

vpn_gateway="0757-7e91085b-dc11-4707-aa4d-66e735e9a2bc"

首次创建 VPN 网关时,该网关的状态为 pending。 在继续之前,VPN 网关需要转到 available 状态,这需要几分钟时间。 要检查 VPN 网关的状态,请运行此命令:

ibmcloud is vpn-gateway $vpn_gateway

要在 VPN 网关上创建与对等地址 169.61.161.150 和预先共享密钥 mykey 的 VPN 连接,请运行以下命令:

ibmcloud is vpn-gateway-connection-create my-vpn-conn $vpn_gateway 169.61.161.150 mykey

在此示例中,169.61.161.150 是对等网关地址,用于指定 VPC 外部网络的 VPN 网关的 IP 地址。 mykey 值是 VPC 外部网络 VPN 网关的验证密钥。 它是十六进制数字的字符串,或者是可打印的 ASCII 字符的口令。 要与大多数对等网关类型兼容,此字符串必须遵循以下规则:

  • 可以是数字,小写或大写字符或以下特殊字符的组合: - + & ! @ # $ % ^ * ( ) . , :
  • 字符串的长度必须为 6-128 个字符。
  • 不能以 0x0s 开头。

首次创建 VPN 连接时,该连接的状态为 down,建立该连接后,该连接将变为 up。 要检查 VPN 网关上的 VPN 连接的状态,请运行以下命令:

ibmcloud is vpn-gateway-connections $vpn_gateway

祝贺您!

您已从 IBM Cloud CLI 成功创建并配置 VPC。 要试用更多 CLI 命令,请参阅 CLI 参考

使用 REST API 创建 VPC 资源

您可以使用 REST API 创建和配置 IBM Cloud® Virtual Private Cloud 资源。

要创建和配置 Virtual Private Cloud (VPC) 和其他附加资源,请按以下顺序执行后续各部分中的步骤:

  1. 创建 VPC 和子网以定义网络。
  2. 如果要允许子网中的所有资源与公用因特网进行通信,请连接公共网关。
  3. 创建虚拟服务器实例。 缺省情况下,会将 100 GB 引导卷连接到实例。
  4. 如果需要更多存储空间,请创建块存储卷,然后将其连接到实例。
  5. 要定义实例允许的入站和出站流量,请配置其安全组。
  6. 如果希望实例可从因特网进行访问,请保留并关联浮动 IP 地址。

准备工作

定义 IAM 令牌、API 端点和 API 版本的变量。 有关指示信息,请参阅设置 API 和 CLI 环境

要了解有关 API 的更多信息,一个好办法是在 IBM Cloud 控制台中的供应页面上单击获取样本 API 调用。 您可以查看正确的 API 请求序列,并更好地了解操作及其依赖项。

创建 VPC

创建名为 my-vpc 的 IBM Cloud VPC。

curl -X POST "$vpc_api_endpoint/v1/vpcs?version=$api_version&generation=2" \
  -H "Authorization:$iam_token" \
  -d '{
      	"name": "my-vpc"
      }'

必须随每个 API 请求发送 generation 参数,以指定要使用的代。 对于第 2 代虚拟服务器实例,请指定 generation=2。 有关详细信息,请参阅 虚拟专用云 API 中的生成

对于其他调用,您需要知道新创建的 VPC 的 ID。 将该标识保存在变量中,例如:

vpc="0738-59de4046-3434-4d87-bb29-0c99c428c96e"

要验证变量是否已保存,请运行 echo $vpc 并确保响应不为空。

以上示例不会创建具有经典访问权的 VPC。 如果 VPC 需要访问经典资源,请参阅 设置对经典基础架构的访问权。 您可以仅在创建 VPC 时启用 VPC 以进行经典访问。 此外,任何时候您的帐户中都只能有一个经典访问 VPC。

创建专用目录

此步骤是可选的。 如果计划从专用目录共享映像,那么必须首先创建专用目录。 如果选择属于其他帐户的目录映像,那么需要查看更多注意事项和限制。 请参阅 在控制台的私有目录中使用跨账户图像引用。 要创建专用目录,请参阅教程 使用 CLI 将软件加载到目录中

创建子网

创建子网之前,请选择要在其中创建子网的区域和地址前缀。 要列出 VPC 中每个专区的地址前缀,请运行以下命令:

curl -X GET "$vpc_api_endpoint/v1/vpcs/$vpc/address_prefixes?version=$api_version&generation=2" \
  -H "Authorization:$iam_token"

现在,为 us-south-3 区域选择默认地址前缀。 记下响应中地址前缀的 CIDR 块。 创建子网时,必须指定所选专区的其中一个地址前缀中的 IP 范围。

子网在创建后无法调整大小。

curl -X POST "$vpc_api_endpoint/v1/subnets?version=$api_version&generation=2" \
  -H "Authorization:$iam_token" \
  -d '{
        "name": "my-subnet",
        "ipv4_cidr_block": "10.0.1.0/24",
        "zone": { "name": "us-south-3" },
        "vpc": { "id": "'$vpc'" }
      }'

将子网的标识保存在变量中。

subnet="0738-35fb0489-7105-41b9-99de-033fae723006"

要在子网中供应资源,子网必须处于 Ready 状态。 继续操作之前,请查询子网资源,并确保状态为 Ready。 如果状态为 failed,请联系支持人员并提供详细信息。 您可以尝试继续供应其他子网。

curl -X GET "$vpc_api_endpoint/v1/subnets/$subnet?version=$api_version&generation=2" \
  -H "Authorization: $iam_token"

连接公共网关

如果要允许所有连接的资源与公用因特网进行通信,请将公共网关连接到子网。

为专区创建公共网关:

curl -X POST "$vpc_api_endpoint/v1/public_gateways?version=$api_version&generation=2" \
  -H "Authorization:$iam_token" \
  -d '{
        "name": "my-gateway",
        "zone": { "name": "us-south-3" },
        "vpc": { "id": "'$vpc'" }
      }'

将公共网关的标识保存在变量中。

gateway="0738-ad0cded3-53a3-4d4a-9809-8c59b50d2b80"

将公共网关连接到子网。

curl -X PUT "$vpc_api_endpoint/v1/subnets/$subnet/public_gateway?version=$api_version&generation=2" \
  -H "Authorization:$iam_token" \
  -d '{
        "id": "'$gateway'"
      }'

在 VPC 中,每个专区只允许有一个公共网关,但该公共网关可以连接到所在专区中的多个子网。 要查找某一区域的公共网关,请运行 ibmcloud is public-gateways 命令并查找特定的 VPC 和 Zone 值。

然后,可以通过运行以下命令来检索和查看连接到子网的公共网关。

curl -X GET "$vpc_api_endpoint/v1/subnets/$subnet/public_gateway?version=$api_version&generation=2" \
  -H "Authorization: $iam_token"

添加 SSH 密钥

向 IBM Cloud 帐户添加公用 SSH 密钥。 此密钥在创建实例时指定,以后登录实例时需要用到。 可以使用一个密钥来供应多个实例。

curl -X POST "$vpc_api_endpoint/v1/keys?version=$api_version&generation=2" \
  -H "Authorization:$iam_token" \
  -d '{
        "name": "my-key",
        "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQB/nAmOjTmezNUDKYvEeIRf2YnwM9/uUG1d0BYsc8/tRtx+RGi7N2lUbp728MXGwdnL9od4cItzky/zVdLZE2cycOa18xBK9cOWmcKS0A8FYBxEQWJ/q9YVUgZbFKfYGaGQxsER+A0w/fX8ALuk78ktP31K69LcQgxIsl7rNzxsoOQKJ/CIxOGMMxczYTiEoLvQhapFQMs3FL96didKr/QbrfB1WT6s3838SEaXfgZvLef1YB2xmfhbT9OXFE3FXvh2UPBfN+ffE7iiayQf/2XR+8j4N4bW30DiPtOQLGUrH1y5X/rpNZNlWW2+jGIxqZtgWg7lTy3mXy5x836Sj/6L"
      }'

将 SSH 密钥的标识保存在变量中,例如:

key="0738-35fb0489-7105-41b9-8764-033fae723006"

为实例选择概要文件

调用 API 以列出所有概要文件。 以下命令将列出可用的概要文件。

curl -X GET "$vpc_api_endpoint/v1/instance/profiles?version=$api_version&generation=2" \
  -H "Authorization:$iam_token"

将概要文件的名称保存在稍后用于供应实例的变量中。 例如

profile_name="b2-2x8"

为实例选择图像

您可以使用库存映像,帐户中的定制映像或专用目录中与帐户共享的映像来创建实例。 根据计划使用的映像运行下列其中一个 API 调用。

  • 从实例的帐户中选择股票映像或定制映像。

    以下命令将列出可用的映像。

    curl -X GET "$vpc_api_endpoint/v1/images?version=$api_version&generation=2" \
      -H "Authorization:$iam_token"
    

    将映像的标识保存在变量中,稍后将使用该变量来供应实例。 例如

    image_id="0738-660198a6-52c6-21cd-7b57-e37917cef586"
    
  • 从实例的专用目录中选择共享的映像。

    如果选择属于其他帐户的目录映像,那么需要查看更多注意事项和限制。 请参阅 在 API 中的专用目录中使用跨帐户映像引用

    您可以从目录产品中最新版本的专用目录映像或目录产品中的特定版本供应实例。

    要从最新版本的目录产品中选择专用目录映像,请参阅 目录管理 API-获取产品。 查找产品 CRN,并将其保存到变量中以供以后使用:

     offering_crn="crn:v1:bluemix:public:globalcatalog-collection:global::1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:offering:00111601-0ec5-41ac-b142-96d1e64e6442-global"
    

    要从特定版本的目录产品中选择专用目录映像,请参阅 目录管理 API-获取产品。 然后,转至 Get offering> Kinds> Versions> CRN 以检索版本的 CRN 并将其保存到变量中以供以后使用:

    version_crn="crn:v1:bluemix:public:globalcatalog-collection:global::1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc:version:00111601-0ec5-41ac-b142-96d1e64e6442-global/ec66bec2-6a33-42d6-9323-26dd4dc8875d-global"
    

创建实例

在新创建的子网中创建实例。 请传入公用 SSH 密钥,以便可以在供应实例后登录。 根据计划使用的映像类型运行下列其中一个 API 调用。

  • 从实例的帐户中选择股票映像或定制映像。

    curl -X POST "$vpc_api_endpoint/v1/instances?version=$api_version&generation=2" \
      -H "Authorization:$iam_token" \
      -d '{
            "name": "my-instance",
            "zone": {
              "name": "us-south-3"
            },
            "vpc": {
              "id": "'$vpc'"
            },
            "primary_network_interface": {
              "subnet": {
                "id": "'$subnet'"
              }
            },
            "keys":[{"id": "'$key'"}],
            "profile": {
              "name": "'$profile_name'"
             },
            "image": {
              "id": "'$image_id'"
             }
            }'
    
  • 通过使用最新版本的目录产品产品中的专用目录映像来创建实例。

    curl -X POST "$vpc_api_endpoint/v1/instances?version=$api_version&generation=2" \
      -H "Authorization:$iam_token" \
      -d '{
            "name": "my-instance",
            "zone": {
              "name": "us-south-3"
            },
            "vpc": {
              "id": "'$vpc'"
            },
            "primary_network_interface": {
              "subnet": {
                "id": "'$subnet'"
              }
            },
            "keys":[{"id": "'$key'"}],
            "profile": {
              "name": "'$profile_name'"
             },
            "catalog_offering": {
              "offering": {
                "crn": "'$offering_crn'"
             }
            }'
    
  • 通过使用特定版本的目录产品产品中的专用目录映像来创建实例。

    curl -X POST "$vpc_api_endpoint/v1/instances?version=$api_version&generation=2" \
      -H "Authorization:$iam_token" \
      -d '{
            "name": "my-instance",
            "zone": {
              "name": "us-south-3"
            },
            "vpc": {
              "id": "'$vpc'"
            },
            "primary_network_interface": {
              "subnet": {
                "id": "'$subnet'"
              }
            },
            "keys":[{"id": "'$key'"}],
            "profile": {
              "name": "'$profile_name'"
             },
            "catalog_offering": {
              "version": {
                "crn": "'$version_crn'"
             }
            }'
    

将实例的标识保存在变量中,例如:

instance="0738-35fb0489-7105-41b9-99de-033fae723006"

创建实例时,实例的状态为 stopped。 实例需要移至 running 状态(这需要几分钟时间)后,您才能继续操作。 请查询实例的状态,并确保状态为 running

curl -X GET "$vpc_api_endpoint/v1/instances/$instance?version=$api_version&generation=2" \
  -H "Authorization: $iam_token"

保存 GET/instance API 调用中返回的实例的主网络接口标识,例如:

network_interface="0738-7710e766-dd6e-41ef-9d36-06f7adbef33d"

除非查询特定实例,否则无法获取主网络接口的标识。

(可选)创建并附加 Block Storage 数据卷

您可以创建 Block Storage 数据卷,并将其附加到虚拟服务器实例作为辅助存储。 创建具有类似于此示例的请求的数据卷。 此过程显示卷概要文件,创建卷,将卷标识保存在变量中,检查卷的状态,然后创建卷连接。

显示卷概要文件的列表:

curl -X GET "$vpc_api_endpoint/v1/volumes/profiles?version=$api_version&generation=2" \
  -H "Authorization: $iam_token" \

概要文件可以是 general-purpose (3 IOPS/GB)、5iops-tier、10iops-tier 和 custom。 有关基于您选择的卷概要文件的卷容量和 IOPS 范围的更多信息,请参阅 概要文件

创建数据卷:

curl -X POST "$vpc_api_endpoint/v1/volumes?version=$api_version&generation=2" \
  -H "Authorization: $iam_token" \
  -d '{
        "name": "my-volume",
        "iops": 1000,
        "capacity": 100,
        "zone": {
            "name": "us-south-3"
            },
        "profile": {
            "name": "custom"
            }
      }'

将卷的 ID 保存在变量中:

volume_id="0738-640774d7-2adc-4609-add9-6dfd96167a8f"

卷首次创建时的状态是 pending。 卷需要移至 available 状态(这需要几分钟时间)后,您才能继续操作。

检查卷的状态:

curl -X GET "$vpc_api_endpoint/v1/volumes/$volume_id?version=$api_version&generation=2" \
  -H "Authorization: $iam_token"

创建卷附件,将新数据卷附加到虚拟服务器实例。 使用您先前在请求中创建的实例标识变量。 使用卷标识变量来指定卷。

创建卷连接:

curl -X POST "$vpc_api_endpoint/v1/instances/$instance/volume_attachments?version=$version&generation=2" \
  -H "Authorization: $iam_token" \
  -d '{
        "name": "my-volume-attachment",
        "volume": {
            "id": "'$volume_id'"
            }
      }'

为默认安全组添加规则

可以配置安全组,以定义针对实例允许的入站和出站流量。 例如,可以添加规则以允许 SSH 流量。

查找 VPC 的安全组:

curl -X GET "$vpc_api_endpoint/v1/vpcs/$vpc/default_security_group?version=$api_version&generation=2" \
  -H "Authorization:$iam_token"

将安全组的标识保存在变量中,例如:

sg=0738-2d364f0a-a870-42c3-a554-000000981149

现在创建一条允许 SSH 入站流量的规则,这样就可以连接到实例:

curl -X POST "$vpc_api_endpoint/v1/security_groups/$sg/rules?version=$api_version&generation=2" \
  -H "Authorization: $iam_token" \
  -d '{
        "direction": "inbound",
        "protocol": "tcp",
        "port_min": 22,
        "port_max": 22
      }'

对于 Windows 映像,请确保与实例关联的安全组允许入站和出站远程桌面协议流量 (TCP 端口 3389)。

创建浮动 IP 地址

如果希望实例可从因特网进行访问,请创建浮动 IP 地址。 请将实例的主网络接口用作浮动 IP 地址的目标。

curl -X POST "$vpc_api_endpoint/v1/floating_ips?version=$api_version&generation=2" \
  -H "Authorization:$iam_token" \
  -d '{
        "name": "my-floatingip",
        "target": {
            "id":"'$network_interface'"
        }
      }
'

将浮动 IP 地址的标识保存在变量中,例如:

floating_ip="0738-35fb0489-7105-41b9-99de-033fae723006"

登录您的实例

要连接到实例,请使用您创建的浮动 IP 地址。 要获取浮动 IP 地址,请运行以下命令:

curl -X GET "$vpc_api_endpoint/v1/floating_ips/$floating_ip?version=$api_version&generation=2" \
  -H "Authorization:$iam_token"

在 Linux 上,使用浮动 IP 的 address 来通过 SSH 连接到实例:

ssh -i <private_key_file> root@<floating ip address>

缺省情况下,在 Fedora Core 操作系统中已禁用用户登录 "root"。 用户登录 "core" 可用于登录到 Fedora Core 操作系统实例。

要连接到 Windows 映像,请使用其解密密码进行登录。 有关指示信息,请参阅 连接到 Windows 实例

监视实例

您可以在 IBM Cloud 控制台中监视实例随时间变化的 CPU、卷、内存和网络使用情况。 由于监视数据存储在 IBM Cloud Monitoring中,因此您必须向帐户中的 IBM Cloud Monitoring 实例进行认证。 有关详细信息,请参阅 IBM Cloud Monitoring

(可选): 删除资源

您可以随时删除资源。 但是,如果其他资源需要某个资源,那么无法将其删除。 例如,如果 VPC 包含实例、子网或公共网关,那么无法删除该 VPC。 有关删除 VPC 及其所有资源的说明,请参阅 使用 REST API 删除 VPC

祝贺您!

您使用 REST API 成功创建并配置了 VPC。 要试用更多 API 命令,请参阅 Virtual Private Cloud API