Ansibleを使ってVMwareの検証環境をESXi上に自動で準備する


Ansibleを使ってVMware vSphereの検証環境を自動で作れるか試してみました。

やりたかったこと

VMwareの検証環境を準備するには、vCenter Server Appliance(VCSA)をデプロイしたりESXiインストールしたり色々と大変です。
作ったコードの動作確認用として、vCenter Simulatorがあるのですが、シミュレーター側に実装されているところまでしかテストできなかったのが課題でした。
そこで、今回はVCSAとネストしたESXiのVMのテンプレートを作っておきAnsibleを使って自動でVCSAとESXiの展開から登録までやってみました。
イメージは以下の図のようなことをします。

環境

項目 バージョン 補足
Ansible 2.9.6
VCSA 6.7.0 テンプレート、基盤
ESXi 6.7.0 テンプレート、基盤

事前準備

  • 通常の手順でVCSAをデプロイする
    • デプロイした後、シャットダウンして任意の名前でスナップショットを作成する
  • ESXi用のVMを作成する
    • VMを作成した後、通常の手順でESXiをインストールする
    • インストール後、シャットダウンして任意の名前でスナップショットを作成する

ここでは、リンククローンを使って検証環境を作ることを前提としているのでスナップショット作成が必要です。
リンククローンを使う目的は、時間短縮のためです。(フルクローンの場合、ストレージによってクローンするのに時間がかかりすぎるため)

Playbook

作成したPlaybookは以下の物です。

パラメーター説明

基盤パラメーター

以下のパラメーターは検証環境を作る基盤のvCenter情報です。

パラメーター 説明
vcenter_hostname vCenterのホスト又はIP
vcenter_username vCenterへログインするユーザー名
vcenter_password vCenterアカウントのパスワード
datacenter 検証環境を作るデータセンター名
cluster 検証環境を作るクラスター名
folder 県諸環境を作るフォルダー名

クローン用のESXiパラメーター

以下のパラメーターはESXi VMテンプレートの情報です。

パラメーター 説明
esxi_template 作成したESXi VMのテンプレート名
esxi_snapshot 作成したESXi VMのスナップショット名
esxi_guest_user 作成したESXi VMのユーザー(root)名
esxi_guest_password 作成したESXi VMのユーザーのパスワード
datastore.name 作成したESXi VMが認識しているシステムディスクのデータストア名
datastore.vmfs_device_name 作成したESXi VMが認識しているデータストアの識別子
esxi_hosts.name テンプレートから作成するESXi VM名
esxi_hosts.networks.name 作成するESXi VMに紐付けるポートグループ名
esxi_hosts.networks.vmk IPを設定するVMKernel名(vmk0)
esxi_hosts.networks.ip 作成したESXi VMのVMKernelに設定するIP
esxi_hosts.networks.netmask 作成したESXi VMのVMKernelに設定するIPのネットマスク
esxi_hosts.networks.gateway 作成したESXi VMに設定するデフォルトゲートウェイ

esxi_hosts はリストで指定します。(同時に複数構築可能)
vmfs_device_name はデータストアの識別子(naaやmpxなどから始まる)を指定します。
例えば以下の識別子です。

ここでのPlaybokはESXiテンプレートのデータストアは1つのみしか想定していません。データストアを指定する理由はデータストアのUUIDが被るためvCenterへ登録する時にエラーが発生します。そのため、一旦削除して再登録してUUIDをリセットする必要があります。

esxi_hots.networks は必要なvNIC分指定します。

クローン用のVCSAパラメーター

以下のパラメーターはVCSA VMテンプレートの情報です。

パラメーター 説明
vcenter_template 作成したVCSAのテンプレート名
vcenter_name テンプレートから作成するVCSA名
vcenter_snapshot 作成したVCSAのスナップショット名
vcenter_guest_user 作成したVCSAゲストOSのユーザー名(root)
vcenter_guest_password 作成したVCSAゲストOSユーザーのパスワード
networks.before_ip VCSAを作成した時に設定したIPアドレス
networks.before_gateway VCSAを作成した時に設定したゲートウェイ
networks.after_ip テンプレートから作成したVCSAに設定するIP
networks.after_gateway テンプレートから作成したVCSAに設定するゲートウェイ
after_vcenter_hostname 作成したVCSAに設定するホスト名
unique_id 任意のvCenter Server ID

今回はVCSAのゲートウェイ設定変更までやっていません。(ただ、タスクに追加すればいいだけなんですが…)
unique_id がよく分からない場合は vCenter Server のランタイム設定の構成 を確認してください。

最終処理のパラメーター

パラメーター 説明
test_datacenter_name 検証環境に作成するデータセンター名

Playbookの実行

今回はESXiを2台作ってVCSAに登録してみます。
以下はサンプルパラメーターです。

実行します。

完了すればこんな感じで環境が出来上がります。

以下は検証用で作成した vcenter-test にログインした結果です。

VCSAとESXiをクローンして自動登録まで出来ました 🙂
これをもう少し最適化してリファクタすればRole化できて使い回しができそう 🙂

参考

Leave a Reply

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください