Ansibleを使ってESXiのカスタムISOを自動生成してみた


Ansibleを使ってESXiのカスタムISOを作ってみたので、やり方の例を書いてみようと思います。

環境

項目 バージョン
WindowsServer 2016
Ansible 2.8.1
vCenter 6.7.0
ESXi 6.7.0
CentOS 7.6
Python 3.6

必要要件

  • DHCPがあること
  • インターネットにつながること
  • Windows Server2016のテンプレートが作成されていること

処理の流れ

  • Windows Server2016のクローンを作成
  • OSのホスト名を変更
  • WinRM(HTTPS)を有効
  • WinRM経由で必要なモジュールインストール
  • WInRM経由でカスタムISO作成
  • vSphere API経由でISOダウンロード(fetchモジュールだと、とても遅かったため)
  • 不要になったVMを削除

カスタムISOの自動生成方法

必要なパッケージやモジュールをインストール

リポジトリをクローン

以下のリポジトリをクローンします。

変数ファイル修正

変数ファイルを環境に合わせて修正します。

変数名 説明
hostname vCenterのIPまたはホスト名
username vCenterにログインするユーザー名
password vCenterにログインするパスワード
datacenter データセンター名
esxi_hostname クローンしたVMを稼働させるESXiホスト名
folder VMを保存するvCenterのフォルダ名
template クローン元のVM
datastore クローンしたVMを保存するデータストア名
search_ip DHCPで割り当てられるIP(第3オクテットまで)
windows_save_path ISOを保存するフォルダ
powreshell_absolute_path powershellの絶対パス
esxi_customizer_url ESXiのカスタムISOを作成するスクリプトのURL
esxi_customizer_option ESXiのカスタムISOを作成する時のオプション
vm_username WinRMでアクセスするユーザー名
vm_password WinRMでアクセスするユーザーのパスワード
venv_path virtualenvを使っている場合はvenvのパスを指定

実行

実行例は以下を参照ください。

asciicast

こんなのを作っておいて、Ansible TowerやAWXに登録しておけば、必要な人が必要な時にWebUIから実行するだけでカスタムISOの作成ができますね。
作成したISOの保存先をどうするか、など考える必要がありますが。。。(今度、ちょっとやってみよう。)

今回は、サラのWindows Server2016をベースに使ったのでWinRMのセットアップから自動化していますが、テンプレート側で元々有効化にしておけばこの処理は省けると思います 🙂

みんなでハッピーオートメーション!

Leave a Reply

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

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