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の自動生成方法
必要なパッケージやモジュールをインストール
1 2 3 4 5 6 |
[root@28393a5e1d14 ~]# yum -y install epel-release [root@28393a5e1d14 ~]# yum -y install git python36 [root@28393a5e1d14 ~]# python3 -m venv venv [root@28393a5e1d14 ~]# source venv/bin/activate (venv) [root@28393a5e1d14 ~]# pip install pyvmomi pywinrm pyOpenSSL |
リポジトリをクローン
以下のリポジトリをクローンします。
1 2 |
(venv) [root@28393a5e1d14 ~]# git clone https://github.com/sky-joker/ansible-vmware-custom-iso.git |
変数ファイル修正
変数ファイルを環境に合わせて修正します。
1 2 3 |
(venv) [root@28393a5e1d14 ~]# cd ansible-vmware-custom-iso/ (venv) [root@28393a5e1d14 ansible-vmware-custom-iso]# vi vars/default.yml |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
--- # vmware hostname: vCenter IP username: administrator@vsphere.local password: secret datacenter: DC esxi_hostname: esxi-08.local folder: "{{ datacenter }}/vm" template: Windows2016_TMP datastore: datastore1 search_ip: 192.168.0 # windows windows_save_path: C:\Users\Administrator\Desktop powershell_absolute_path: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe esxi_customizer_url: http://vibsdepot.v-front.de/tools/ESXi-Customizer-PS-v2.6.0.ps1 esxi_customizer_option: -v67 -load ne1000 # guest vm_username: administrator vm_password: secret # venv path # venv_path: /venv/path |
変数名 | 説明 |
---|---|
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のパスを指定 |
実行
実行例は以下を参照ください。
こんなのを作っておいて、Ansible TowerやAWXに登録しておけば、必要な人が必要な時にWebUIから実行するだけでカスタムISOの作成ができますね。
作成したISOの保存先をどうするか、など考える必要がありますが。。。(今度、ちょっとやってみよう。)
今回は、サラのWindows Server2016をベースに使ったのでWinRMのセットアップから自動化していますが、テンプレート側で元々有効化にしておけばこの処理は省けると思います 🙂
みんなでハッピーオートメーション!