13.2. 使用 API 在 Nutanix 中添加主机
要使用 API 在 Nutanix 中添加主机,请从 Assisted Installer 生成发现镜像 ISO。使用最小的发现镜像 ISO。这是默认设置。镜像仅包含使用联网引导主机所需的内容。在引导时会下载大多数内容。ISO 镜像大小为 100MB。
完成后,您必须为 Nutanix 平台创建一个镜像,并创建 Nutanix 虚拟机。
先决条件
- 您已设置 Assisted Installer API 身份验证。
- 您已创建了 Assisted Installer 集群配置集。
- 您已创建了辅助安装程序基础架构环境。
-
在 shell 中将您的基础架构环境 ID 导出为
$INFRA_ENV_ID
。 - 您已完成 Assisted Installer 集群配置。
- 您已设置了 Nutanix 集群环境,并记录集群名称和子网名称。
流程
- 如果要使用 ignition 文件引导,请配置发现镜像。
创建 Nutanix 集群配置文件来保存环境变量:
touch ~/nutanix-cluster-env.sh
$ touch ~/nutanix-cluster-env.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod +x ~/nutanix-cluster-env.sh
$ chmod +x ~/nutanix-cluster-env.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果需要启动新的终端会话,您可以轻松重新加载环境变量。例如:
source ~/nutanix-cluster-env.sh
$ source ~/nutanix-cluster-env.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Nutanix 集群的名称分配给配置文件中的
NTX_CLUSTER_NAME
环境变量:cat << EOF >> ~/nutanix-cluster-env.sh export NTX_CLUSTER_NAME=<cluster_name> EOF
$ cat << EOF >> ~/nutanix-cluster-env.sh export NTX_CLUSTER_NAME=<cluster_name> EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<cluster_name>
替换为 Nutanix 集群的名称。将 Nutanix 集群的子网名称分配给配置文件中的
NTX_SUBNET_NAME
环境变量:cat << EOF >> ~/nutanix-cluster-env.sh export NTX_SUBNET_NAME=<subnet_name> EOF
$ cat << EOF >> ~/nutanix-cluster-env.sh export NTX_SUBNET_NAME=<subnet_name> EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<subnet_name>
替换为 Nutanix 集群子网的名称。刷新 API 令牌:
source refresh-token
$ source refresh-token
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取下载 URL:
curl -H "Authorization: Bearer ${API_TOKEN}" \ https://api.openshift.com/api/assisted-install/v2/infra-envs/${INFRA_ENV_ID}/downloads/image-url
$ curl -H "Authorization: Bearer ${API_TOKEN}" \ https://api.openshift.com/api/assisted-install/v2/infra-envs/${INFRA_ENV_ID}/downloads/image-url
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 Nutanix 镜像配置文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<image_url>
替换为从上一步中下载的镜像 URL。创建 Nutanix 镜像:
curl -k -u <user>:'<password>' -X 'POST' \ 'https://<domain-or-ip>:<port>/api/nutanix/v3/images \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d @./create-image.json | jq '.metadata.uuid'
$ curl -k -u <user>:'<password>' -X 'POST' \ 'https://<domain-or-ip>:<port>/api/nutanix/v3/images \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d @./create-image.json | jq '.metadata.uuid'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<user>
替换为 Nutanix 用户名。将'<password>'
替换为 Nutanix 密码。将<domain-or-ip>
替换为 Nutanix plaform 的域名或 IP 地址。将<port>
替换为 Nutanix 服务器的端口。端口默认为9440
。将返回的 UUID 分配给配置文件中的
NTX_IMAGE_UUID
环境变量:cat << EOF >> ~/nutanix-cluster-env.sh export NTX_IMAGE_UUID=<uuid> EOF
$ cat << EOF >> ~/nutanix-cluster-env.sh export NTX_IMAGE_UUID=<uuid> EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取 Nutanix 集群 UUID:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<user>
替换为 Nutanix 用户名。将'<password>'
替换为 Nutanix 密码。将<domain-or-ip>
替换为 Nutanix plaform 的域名或 IP 地址。将<port>
替换为 Nutanix 服务器的端口。端口默认为9440
。将<nutanix_cluster_name>
替换为 Nutanix 集群的名称。将返回的 Nutanix 集群 UUID 分配给配置文件中的
NTX_CLUSTER_UUID
环境变量:cat << EOF >> ~/nutanix-cluster-env.sh export NTX_CLUSTER_UUID=<uuid> EOF
$ cat << EOF >> ~/nutanix-cluster-env.sh export NTX_CLUSTER_UUID=<uuid> EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<uuid>
替换为 Nutanix 集群的返回 UUID。获取 Nutanix 集群的子网 UUID:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<user>
替换为 Nutanix 用户名。将'<password>'
替换为 Nutanix 密码。将<domain-or-ip>
替换为 Nutanix plaform 的域名或 IP 地址。将<port>
替换为 Nutanix 服务器的端口。端口默认为9440
。将<subnet_name>
替换为集群子网的名称。将返回的 Nutanix 子网 UUID 分配给配置文件中的
NTX_CLUSTER_UUID
环境变量:cat << EOF >> ~/nutanix-cluster-env.sh export NTX_SUBNET_UUID=<uuid> EOF
$ cat << EOF >> ~/nutanix-cluster-env.sh export NTX_SUBNET_UUID=<uuid> EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<uuid>
替换为集群子网的返回 UUID。确保设置了 Nutanix 环境变量:
source ~/nutanix-cluster-env.sh
$ source ~/nutanix-cluster-env.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为每个 Nutanix 主机创建一个虚拟机配置文件。创建三个 control plane (master) 虚拟机和至少两个 worker 虚拟机。例如:
touch create-master-0.json
$ touch create-master-0.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<host_name>
替换为主机的名称。引导每个 Nutanix 虚拟机:
curl -k -u <user>:'<password>' -X 'POST' \ 'https://<domain-or-ip>:<port>/api/nutanix/v3/vms' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d @./<vm_config_file_name> | jq '.metadata.uuid'
$ curl -k -u <user>:'<password>' -X 'POST' \ 'https://<domain-or-ip>:<port>/api/nutanix/v3/vms' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d @./<vm_config_file_name> | jq '.metadata.uuid'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<user>
替换为 Nutanix 用户名。将'<password>'
替换为 Nutanix 密码。将<domain-or-ip>
替换为 Nutanix plaform 的域名或 IP 地址。将<port>
替换为 Nutanix 服务器的端口。端口默认为9440
。将<vm_config_file_name>
替换为虚拟机配置文件的名称。将返回的虚拟机 UUID 分配给配置文件中的唯一环境变量:
cat << EOF >> ~/nutanix-cluster-env.sh export NTX_MASTER_0_UUID=<uuid> EOF
$ cat << EOF >> ~/nutanix-cluster-env.sh export NTX_MASTER_0_UUID=<uuid> EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<uuid>
替换为虚拟机返回的 UUID。注意环境变量必须具有每个虚拟机的唯一名称。
等待 Assisted Installer 发现每个虚拟机,并已通过验证。
curl -s -X GET "https://api.openshift.com/api/assisted-install/v2/clusters/$CLUSTER_ID"
$ curl -s -X GET "https://api.openshift.com/api/assisted-install/v2/clusters/$CLUSTER_ID" --header "Content-Type: application/json" -H "Authorization: Bearer $API_TOKEN" | jq '.enabled_host_count'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修改集群定义以启用与 Nutanix 集成:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 继续安装过程。