VCF Automation(VCFA)9.0 の All Apps 組織で、ブループリントを作成してみます。今回は、仮想マシンを展開するブループリントを作成しています。
前回はこちら。
今回の内容です。
今回の環境
VCFA の環境は、下記の一連の投稿で構築したものを利用します。
- VCF 9 の VCF Automation で All Apps 組織を作成してみる。Part-01:All Apps 組織の作成
- 組織:org-01
- プロジェクト:default-project
- 名前空間:org-01-ns-01-96glh
仮想マシン展開の準備は、下記の投稿を前提としています。
- VCF 9 の VCF Automation で All Apps 組織を作成してみる。Part-04:仮想マシンの作成
- VCF 9 の VCF Automation で All Apps 組織を作成してみる。Part-05:仮想マシン ロード バランサの作成
1. ブループリントの作成
VCFA の組織ポータルにログインして、「ビルドと展開」→「コンテンツ ハブ」→「ブループリント デザイン」を開き、「新規作成」→「空白のキャンバス」を開きます。

ブループリント(Template)のパラメータを入力して、「作成」をクリックします。
- 名前:vm-bp-01
- プロジェクト:default-project

ブループリントのキャンバスを開いた状態になります。

画面左側から、コンポーネントをドラッグ&ドロップします。
まず、「Supervisor Namespace」を置きます。これは、vSphere 名前空間に相当します。
コンポーネントを配置すると、画面右側にある YAML が自動的に更新されます。

そして、Supervisor Namespace の上に、「Secret」をドラッグ&ドロップします。

Secret のとなりに、「Virtual Machine」をドラッグ&ドロップします。

Virtual Machine の下に、「Virtual Machine Service」をドラッグ&ドロップします。これは、仮想マシン ロード バランサに相当します。

この時点で、ブループリントの YAML は下記のようになります。
そして、ここからブループリントを下記のように編集します。リソースごとに編集内容を説明しますが、実際のところ、YAML 全体を貼り付けても構いません。
先頭の「inputs」では、ブループリント展開時に入力できる変数を定義します。
- L3-L5:今回は、vSphere 名前空間の名前を入力できるようにしました。デフォルト値は、この環境に作成ずみの名前空間(org-01-ns-01-96glh)にしてあります。
input については、下記のあたりが参考になります。

vSphere 名前空間については、名前を inputs から取得するように編集しました。
- L10:name: ${input.vsphere_ns_name}

Secret リソースでは、ゲスト OS(Linux)に設定するログイン ユーザーのパスワードを格納します。
- L20:Secret の名前をわかりやすいものに変更
- L21-L22:data: {} を、stringData: に変更
- L22:「demo」ユーザーのパスワード ハッシュを指定。パスワードは VMware1!
パスワード ハッシュは 以前の投稿 で仮想マシンを展開した際に生成された YAML のものを流用しました。これは、openssl passwd コマンドなどでも生成できます。ちなみに、アルゴリズムは弱めの MD5(-1 オプション)です。
gowatana@vcf9-work-01 [ ~ ]$ openssl passwd -1 'VMware1!' $1$m7zPIHnL$YMBkiJP9P0lIDfb8Nkgig1

仮想マシンでは、以前の投稿 で仮想マシンを展開した際に生成された YAML をもとに、Cloud-init の User-Data を指定しています。
- L31:名前をわかりやすいものに変更
- L32-L33:仮想マシン ロード バランサを割り当てるためのラベルを追記
- L35:仮想マシン クラスを指定
- L36:OS イメージの名前を指定
- L38:ストレージ クラスを指定
- L39-L51:Cloud-init の設定を追記
- L46:ログイン ユーザーの名前は「demo」
- L48:Secret の名前は、L20 と揃える

仮想マシン ロード バランサの設定も、以前の投稿 を参考にしています。
- L64:わかりやすい名前に変更
- L66:NSX LB を使用するため「LoadBalancer」を指定
- L67-L71:SSH 接続のための仮想 サーバを設定する
- L72-L73:仮想マシン(L32-L33)と対応させる

これで、コンポーネント アイコンのエラー(赤色)がなくなります。

2. ブループリントのテスト
画面左下にある、「テスト」をクリックします。

imputs として定義した vsphere_ns_name には、デフォルト値として指定した vSphere 名前空間が入力されています。そのまま、「テスト」をクリックします。

「成功」になったことを確認して、「×」をクリックして閉じます。エラーになった場合は、YAML の内容を確認して、成功するまでテストを実行します。

3. ブループリントの展開
「テスト」ボタンによるテストは、実際にブループリントを展開した際に発生する問題には対応していません。そこで、ドラフト状態のブループリントを実際に展開しておきます。
画面右下にある、「展開」をクリックします。

展開名(ブループリントから展開するインスタンスの名前)を入力して、「次へ」をクリックします。
- 展開名:bp-test-01
- Template のバージョン:現在のドラフト ※デフォルトのまま

inputs(vsphere_ns_name)はそのまま、「展開」をクリックします。

インスタンスの展開が開始されます。

しばらく待ち、コンポーネント(Secret、仮想マシン、仮想マシン ロード バランサ)の展開が完了すると、「Create 成功」と表示されます。

4. 展開されたインスタンスの確認
ブループリントからインスタンスとして展開された、仮想マシンと仮想マシン ロード バランサの情報を確認し、ゲスト OS にログインしてみます。
4-1. 仮想マシンの確認
展開されたインスタンス「bp-test-01」の画面で、仮想マシン(Virtual_Machine_1)をクリックすると、画面右側に仮想マシン名(一般 → 名前)などが表示されます。

画面を下にスクロールすると、ゲスト OS に設定された IP アドレスなどが表示されます。
- 今回の IP アドレス/サブネット マスク:172.30.0.5/27

仮想マシンの、「アクション」→「Connect to Web console」を開きます。

VCFA の Web コンソールが開くので、Cloud-init で指定したデモ ユーザーでログインします。そして、ゲスト OS の IP アドレスが、VCFA 組織ポータルで表示されていたものと一致することを確認しておきます。
- ユーザー:demo
- パスワード:VMware1!
IP アドレス確認は、Photon OS の一般ユーザーに ip コマンドの PATH が通っていないためフルパスで「/sbin/ip addr show」と実行しています。

4-2. 仮想マシン ロード バランサの確認
VCFA 組織ポータルに戻り、仮想マシン ロード バランサに払い出された IP アドレスを確認します。
「Virtual_Machine_Service_1」をクリックすると、画面右側にロード バランサによる IP アドレスが表示されます。
- Status → Load Balancer → Ingress → IP:192.168.78.10

ロード バランサの IP アドレスにルーティングされているマシンから SSH 接続すると、展開された仮想マシンにログインできるはずです。
PS C:\> ssh demo@192.168.78.10 The authenticity of host '192.168.78.10 (192.168.78.10)' can't be established. ED25519 key fingerprint is SHA256:USTjm7KCseTJ/n97flBKg/huTn41Ys+Hk6mYRZDc6eU. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.78.10' (ED25519) to the list of known hosts. (demo@192.168.78.10) Password: 18:56:12 up 11 min, 1 user, load average: 0.07, 0.02, 0.00 tdnf update info not available yet! demo@vm-1-41c7137b01 [ ~ ]$
仮想マシン自体の IP アドレスは、さきほど確認した「172.30.0.5/27」になっています。
demo@vm-1-41c7137b01 [ ~ ]$ /sbin/ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 04:50:56:00:5c:00 brd ff:ff:ff:ff:ff:ff
altname eno1
altname enp2s1
altname ens33
inet 172.30.0.5/27 brd 172.30.0.31 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::650:56ff:fe00:5c00/64 scope link
valid_lft forever preferred_lft forever
demo@vm-1-41c7137b01 [ ~ ]$
4-3. インスタンス一覧画面での確認
インスタンスごとの画面は、画面左下の「閉じる」ボタンをクリックして閉じます。

「インスタンス」→「カタログ」タブには、ブループリントから展開されたインスタンスである「bp-test-01」が表示されています。
今回は、カタログではなく、ブループリント デザイン画面から展開したので、「カタログ アイテム」が空欄になっています。

「仮想マシン」タブには、インスタンスに含まれる仮想マシンが表示されています。

5. インスタンスの削除
ブループリントの展開を確認できたら、インスタンスを削除しておきます。
「ビルドと展開」タブ →「インスタンス」→「カタログ」タブを開き、削除対象インスタンスの先頭にあるボタンをクリックします。
- 名前:bp-test-01

「Delete」をクリックします。

確認画面が表示されるので、「送信」をクリックします。

インスタンスの削除が開始されます。

少し待つと、インスタンスが削除されます。

つづく。