13.2. API を使用した Nutanix へのホストの追加
API を使用して Nutanix にホストを追加するには、Assisted Installer から検出イメージ ISO を生成します。最小限の検出イメージ ISO を使用します。これはデフォルト設定です。このイメージには、ネットワークを使用してホストを起動するために必要なものだけが含まれています。コンテンツの大部分は、起動時にダウンロードされます。ISO イメージのサイズは約 100MB です。
これが完了したら、Nutanix プラットフォームのイメージを作成し、Nutanix 仮想マシンを作成する必要があります。
前提条件
- Assisted Installer API の認証を設定している。
- Assisted Installer のクラスタープロファイルを作成している。
- Assisted Installer のインフラストラクチャー環境を作成している。
-
インフラストラクチャー環境 ID がシェルに
$INFRA_ENV_ID
としてエクスポートされている。 - Assisted Installer のクラスター設定を完了している。
- Nutanix クラスター環境をセットアップし、クラスター名とサブネット名を書き留めた。
手順
- Ignition ファイルを使用して起動する場合は、検出イメージを設定します。
環境変数を保持する Nutanix クラスター設定ファイルを作成します。
$ touch ~/nutanix-cluster-env.sh
$ chmod +x ~/nutanix-cluster-env.sh
新しいターミナルセッションを開始する必要がある場合は、環境変数を簡単に再読み込みできます。以下に例を示します。
$ source ~/nutanix-cluster-env.sh
Nutanix クラスターの名前を設定ファイルの
NTX_CLUSTER_NAME
環境変数に割り当てます。$ cat << EOF >> ~/nutanix-cluster-env.sh export NTX_CLUSTER_NAME=<cluster_name> EOF
<cluster_name>
を Nutanix クラスターの名前に置き換えます。Nutanix クラスターのサブネット名を設定ファイルの
NTX_SUBNET_NAME
環境変数に割り当てます。$ cat << EOF >> ~/nutanix-cluster-env.sh export NTX_SUBNET_NAME=<subnet_name> EOF
<subnet_name>
を Nutanix クラスターのサブネットの名前に置き換えます。API トークンを更新します。
$ source refresh-token
ダウンロード URL を取得します。
$ curl -H "Authorization: Bearer ${API_TOKEN}" \ https://api.openshift.com/api/assisted-install/v2/infra-envs/${INFRA_ENV_ID}/downloads/image-url
Nutanix イメージ設定ファイルを作成します。
$ cat << EOF > create-image.json { "spec": { "name": "ocp_ai_discovery_image.iso", "description": "ocp_ai_discovery_image.iso", "resources": { "architecture": "X86_64", "image_type": "ISO_IMAGE", "source_uri": "<image_url>", "source_options": { "allow_insecure_connection": true } } }, "metadata": { "spec_version": 3, "kind": "image" } } EOF
<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'
<user>
を Nutanix ユーザー名に置き換えます。'<password>'
を Nutanix パスワードに置き換えます。<domain-or-ip>
を Nutanix プラットフォームのドメイン名または IP アドレスに置き換えます。<port>
を Nutanix サーバーのポートに置き換えます。ポートのデフォルトは9440
です。返された UUID を設定ファイルの
NTX_IMAGE_UUID
環境変数に割り当てます。$ cat << EOF >> ~/nutanix-cluster-env.sh export NTX_IMAGE_UUID=<uuid> EOF
Nutanix クラスターの UUID を取得します。
$ curl -k -u <user>:'<password>' -X 'POST' \ 'https://<domain-or-ip>:<port>/api/nutanix/v3/clusters/list' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "kind": "cluster" }' | jq '.entities[] | select(.spec.name=="<nutanix_cluster_name>") | .metadata.uuid'
<user>
を Nutanix ユーザー名に置き換えます。'<password>'
を Nutanix パスワードに置き換えます。<domain-or-ip>
を Nutanix プラットフォームのドメイン名または 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
<uuid>
を Nutanix クラスターの返された UUID に置き換えます。Nutanix クラスターのサブネット UUID を取得します。
$ curl -k -u <user>:'<password>' -X 'POST' \ 'https://<domain-or-ip>:<port>/api/nutanix/v3/subnets/list' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "kind": "subnet", "filter": "name==<subnet_name>" }' | jq '.entities[].metadata.uuid'
<user>
を Nutanix ユーザー名に置き換えます。'<password>'
を Nutanix パスワードに置き換えます。<domain-or-ip>
を Nutanix プラットフォームのドメイン名または IP アドレスに置き換えます。<port>
を Nutanix サーバーのポートに置き換えます。ポートのデフォルトは9440
です。<subnet_name>
をクラスターのサブネットの名前に置き換えます。返された Nutanix サブネット UUID を設定ファイルの
NTX_CLUSTER_UUID
環境変数に割り当てます。$ cat << EOF >> ~/nutanix-cluster-env.sh export NTX_SUBNET_UUID=<uuid> EOF
<uuid>
をクラスターサブネットの返された UUID に置き換えます。Nutanix 環境変数が設定されていることを確認します。
$ source ~/nutanix-cluster-env.sh
Nutanix ホストごとに仮想マシン設定ファイルを作成します。3 つのコントロールプレーン (マスター) 仮想マシンと少なくとも 2 つのワーカー仮想マシンを作成します。以下に例を示します。
$ touch create-master-0.json
$ cat << EOF > create-master-0.json { "spec": { "name": "<host_name>", "resources": { "power_state": "ON", "num_vcpus_per_socket": 1, "num_sockets": 16, "memory_size_mib": 32768, "disk_list": [ { "disk_size_mib": 122880, "device_properties": { "device_type": "DISK" } }, { "device_properties": { "device_type": "CDROM" }, "data_source_reference": { "kind": "image", "uuid": "$NTX_IMAGE_UUID" } } ], "nic_list": [ { "nic_type": "NORMAL_NIC", "is_connected": true, "ip_endpoint_list": [ { "ip_type": "DHCP" } ], "subnet_reference": { "kind": "subnet", "name": "$NTX_SUBNET_NAME", "uuid": "$NTX_SUBNET_UUID" } } ], "guest_tools": { "nutanix_guest_tools": { "state": "ENABLED", "iso_mount_state": "MOUNTED" } } }, "cluster_reference": { "kind": "cluster", "name": "$NTX_CLUSTER_NAME", "uuid": "$NTX_CLUSTER_UUID" } }, "api_version": "3.1.0", "metadata": { "kind": "vm" } } EOF
<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'
<user>
を Nutanix ユーザー名に置き換えます。'<password>'
を Nutanix パスワードに置き換えます。<domain-or-ip>
を Nutanix プラットフォームのドメイン名または IP アドレスに置き換えます。<port>
を Nutanix サーバーのポートに置き換えます。ポートのデフォルトは9440
です。<vm_config_file_name>
を仮想マシン設定ファイルの名前に置き換えます。返された仮想マシン UUID を設定ファイル内の一意の環境変数に割り当てます。
$ cat << EOF >> ~/nutanix-cluster-env.sh export NTX_MASTER_0_UUID=<uuid> EOF
<uuid>
を仮想マシンの返された UUID に置き換えます。注記環境変数には、仮想マシンごとの一意の名前が必要です。
Assisted Installer が各仮想マシンを検出し、検証にパスするまで待ちます。
$ 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'
クラスター定義を変更して、Nutanix との統合を有効にします。
$ curl https://api.openshift.com/api/assisted-install/v2/clusters/${CLUSTER_ID} \ -X PATCH \ -H "Authorization: Bearer ${API_TOKEN}" \ -H "Content-Type: application/json" \ -d ' { "platform_type":"nutanix" } ' | jq
- インストール手順を続行します。