3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PowerVC で仮想マシンをデプロイする際に cloud-init の user_data を使用する方法

Last updated at Posted at 2023-05-31

はじめに

PowerVC でデプロイする際に、cloud-init の user_data がどのように指定できるかを、GUI、OpenStack コマンド、curl コマンド、Ansible の 4通りの仮想マシンデプロイの方法で確認しました。

cloud-init の user data はデプロイ時に cloud-init の動作内で追加の処理を行うことができる仕組みです。
詳細は以下のドキュメントをご参考ください。


環境

PowerVC 2.1.1 (RHEL 8.6 on Power)
  デプロイするVM : AIX 7.3


user_data に使用するファイルを準備

検証用に次のファイルを user_data で設定します。

cloud-config.cfg
#cloud-config

runcmd:
 - touch /tmp/test.log
-  echo "cloud-config test" >> /tmp/test.log

=> /tmp/test.log ファイルを作成し"cloud-config test" をファイルに書き込みを実行します。


実行ケース

1. PowerVC GUI で VMデプロイする場合

Deploy VM の GUI で Activation Input に設定したい user_data の内容を直接記載することで設定することが可能です。(この方法が一番簡単です)

図1.png

GUI からデプロイ後の確認 (AIXサーバー)

# ssh root@xxx.xx.xxx.xx
Last unsuccessful login: Mon May 29 04:36:20 CDT 2023 on ssh from xxx.xx.xxx.xx
Last login: Tue May  2 06:01:22 CDT 2023 on /dev/vty0 from aix7301
*******************************************************************************
*                                                                             *
*                                                                             *
*  Welcome to AIX Version 7.3!                                                *
*                                                                             *
*                                                                             *
*  Please see the README file in /usr/lpp/bos for information pertinent to    *
*  this release of the AIX Operating System.                                  *
*                                                                             *
*                                                                             *
*******************************************************************************
## oslevel -s
7300-00-01-2148

# ls -l /tmp/test.log
-rw-r--r--    1 root     system           18 May 29 04:20 /tmp/test.log

# cat /tmp/test.log
cloud-config test
#

=> cloud-init user_data により、デプロイ後に /tmp/test.log が作成され、"cloud-config test" が入力されていることが確認できました。


2. OpenStack コマンドでデプロイする場合

PowerVC サーバーから OpenStack コマンドを実行してサーバー作成を行う際の user_data の指定方法です。
(PowerVC では OpenStackコマンド使用は一応、推奨されていません)

参考:

コマンド実行準備

# source /opt/ibm/powervc/powervcrc
# export OS_USERNAME=root
# export OS_PASSWORD=<パスワードを記入>

openstack server create のオプションに --user-data "<ファイル>" を指定することで user_data を使用した仮想マシン作成が可能です。

# openstack server create --image <image ID> --flavor <flavor ID> --user-data cloud-init-test.cfg --network <network name or ID> testvm01

=> ログは省略しますが、デプロイ後に cloud-init user_data により /tmp/test.log が作成され、"cloud-config test" が入力されていることを実機で確認しました。


3. curl コマンドでデプロイする場合

1."cloud_initのuser_data ファイルを base64でエンコードした文字列" を作成

API で実行する場合は base64 へのエンコードが必要の様子です。

user_data (Optional) Configuration information or scripts to use upon launch. Must be Base64 encoded. Restricted to 65535 bytes.

・base64 で 対象のファイルをエンコード

# base64 cloud-init-test.cfg
I2Nsb3VkLWNvbmZpZwoKaG9zdG5hbWU6ICIke2hvc3RuYW1lfSIKcnVuY21kOgogLSB0b3VjaCAvdG1wL3Rlc3QubG9nCiAtIGVjaG8gImNsb3VkLWNvbmZpZyB0ZXN0IiA+PiAvdG1wL3Rlc3QubG9nCgo=

=>出力結果の "I2Nsb3VkLWNvbmZpZwoKaG9zdG5hbWU6ICIke2hvc3RuYW1lfSIKcnVuY21kOgogLSB0b3VjaCAvdG1wL3Rlc3QubG9nCiAtIGVjaG8gImNsb3VkLWNvbmZpZyB0ZXN0IiA+PiAvdG1wL3Rlc3QubG9nCgo=" を "body_deploy_vm.json" 内 の "cloud_initのuser_data ファイルを base64でエンコードした文字列" に記載します。

2. body_deploy_vm.json の準備

body_deploy_vm.json
{
   "server":{
      "name":"<仮想マシン名>",
      "max_count":1,
      "imageRef":"<イメージID>",
      "availability_zone":"Default Group",
      "block_device_mapping_v2":[{
                                  "boot_index": "0",
                                  "uuid": "<ストレージ・テンプレートID>",
                                  "source_type": "image",
                                  "destination_type": "volume"
      }],
      "user_data": "cloud_initのuser_data ファイルを base64でエンコードした文字列",   #<= ここに入力
      "flavor":{
         "ram": "4096",
         "vcpus": "1",
         "disk": "25",
         "extra_specs":{
            "powervm:min_proc_units":"0.1",
            "powervm:proc_units":"0.2",
            "powervm:max_proc_units":"2",
            "powervm:min_mem":"2048",
            "powervm:max_mem":"4096",
            "powervm:shared_weight":"128",
            "powervm:uncapped":"true",
            "powervm:dedicated_proc":"false",
            "powervm:max_vcpu":"2",
            "powervm:availability_priority":"128",
            "powervm:min_vcpu":"1",
            "powervm:processor_compatibility": "POWER10",
            "powervm:storage_connectivity_group":"<ストレージ接続グループIDを指定>"
         }
      },
      "config_drive": true,
      "networks":[
         {
            "uuid": "<ネットワークID>",
            "fixed_ip": "<IPアドレス①>"
         },
         {
            "uuid": "<ネットワークID>",
            "fixed_ip": "<IPアドレス②>"
         }
      ],
   }
}

3. curl コマンドを実行するため OpenStack の token を取得して変数 OS_TOKEN に設定

# source /opt/ibm/powervc/powervcrc
# export OS_USERNAME=root
# export OS_PASSWORD=<パスワードを記入>
# export OS_TOKEN=`openstack token issue | grep "| id" | awk '{print $4}'`

4. curl でサーバー作成コマンドを実行

curl -k -X POST -H "X-Auth-Token: $OS_TOKEN" -H "Content-Type: application/json" --data @body_deploy_vm.json "https://<PowerVC_IPアドレス>:8774/v2.1/<tenant_id>/servers"

=> ログは省略しますが、デプロイ後にcloud-init user_data により /tmp/test.log が作成され、"cloud-config test" が入力されていることを実機で確認しました。


(補足)tenant_id を確認する方法

# source /opt/ibm/powervc/powervcrc
# export OS_USERNAME=root
# export OS_PASSWORD=<パスワードを記入>
# openstack catalog list

-> tenant_id を含むサービス・エンドポイントがリストされます。


4. ansible でデプロイする場合

body_deploy_vm.json は "curl コマンドでデプロイする場合" と同じファイルが使用可能です。

実行方法は以下参考:

=> ログは省略しますが、デプロイ後にcloud-init user_data により /tmp/test.log が作成され、"cloud-config test"が入力されていることを実機で確認しました。


(参考) PowerVS の場合

IBM Cloud Power Systems Virtual Server の API でも cloud-init user_data が指定できます。

userData : Cloud init user defined data

今回は オンプレミス PowerVCでのデプロイのため PowerVS の方は確認していませんが、また機会があれば別途確認します。


以上です。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?