VMware HorizonとAnsibleでフルクローンの作成からデスクトッププールへの登録まで自動化してみた


VMware HorizonとAnsibleを組み合わせてフルクローンのVMをデスクトッププールへの追加までを自動化してみました。
ここではCLIとAWXのワークフローでやってみます。(Ansible Towerだと評価ライセンスが必要なのでAWXを使います。)

環境

項目 バージョン
VMware Horizon 7.9.0
Ansible(CLI) 2.8.2
AWX 6.0.0

ここでやること

  • CLI
    • VM追加
      • VMのクローンを作る
      • クローンしたVMをHorizonのデスクトッププールへ追加する
    • VM削除
      • Horizonの仮想デスクトッププールからVMを削除
      • vCenterのインベントリとdatastoreからVMを削除
  • AWX
    • CLIと同じことをAWXのワークフローを使ってやってみます

準備

ansible-for-horizonをクローン

以下のコマンドを実行してリポジトリをクローンします。
このリポジトリには、自作したVMをデスクトッププールへの追加・削除するモジュールがあります。(時間があったら色々増やしていきたい…)

Playbookの作成

クローンしたリポジトリのディレクトリ移動します。

VMをクローンしてデスクトッププールへ追加するPlaybookを作成します。

ここでは、以下のように作成しました。

次にVMをデスクトッププールとデータストアから削除するPlaybookを作成します。

ここでは、以下のようにしました。

extra_varsの作成

次にPlaybookで使うextra_varsファイルを作成します。

ここでは、以下のように作成しました。

変数名 説明
vcenter_hostname vCenterサーバの名前解決ができるホスト名、IPアドレス
vcenter_username vCenterへログインするユーザー名
vcenter_password vCenterへログインするユーザーのパスワード
datacenter vCenterのデータセンター
folder VMが存在するフォルダパス
cluster VMが存在するクラスタ名
template VMのクローン元
datastore VMが存在するデータストア名
name VM名
networks VMのネットワーク
autologon 自動ログオン(sysprepで必要)
dns_servers DNSリスト(Active Directory)
domain ジョインする先のドメイン名(sysprepで必要)
domain_user ジョインする先のドメインユーザー(sysprepで必要)
domain_user_password ジョインする先のドメインユーザーのパスワード(sysprepで必要)
cs_server Connection Serverの名前解決が出来るホスト名、IPアドレス
cs_username Connection Serverへログインするユーザー名
cs_password Connection Serverへログインするユーザーのパスワード
desktop_pool VMが存在するデスクトッププール名

実行

実行してみます。
以下がデモ動画です。

CLIで実行

Demo to clone VM and add to desktop pool with Ansible from sky_joker on Vimeo.

AWXで実行

Demo to clone VM and add to desktop pool with AWX(Ansible Tower) from sky_joker on Vimeo.

最後に

今回は、フルクローンの作成からデスクトッププールの登録までAnsibleを使って自動化してみました。
結構フルクローン構築の運用ってめんどいんですよね…。
こうやって自動化すればオペレーターの運用負荷も下がるかもしれませんね!後はサイレントインストールが対応しているアプリケーションであればクローン後にインストールも自動化することも可能です 🙂

Horizon PowerCLIを使ってView APIの操作をAnsibleから出来ることも確認できました。
今後は、プールの作成やインスタント・リンククローンなどのモジュールも作っていければと思います。

それでは、みんなでハッピーオートメーション!

Leave a Reply

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

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