LinuxPrepを使おうとすると、Perlをインストールする必要があります。
ただ、最小構成でCentOSやRHELをインストールしたテンプレートを使いたかったので、ここではvSphere API経由でネットワークとホスト名の設定をするシンプルなPlaybookを作ってみました。
以下は、使い方のメモ書きです。
環境
項目 | バージョン |
---|---|
CentOS | 7.6 |
vCenter | 6.7 |
ESXi | 6.7 |
Ansible | 2.8.1 |
pyVmomi | 6.7.1.2018.12 |
Playbook
ansible-vmware-test-environment-provisioner
使い方
クローンします。
$ git clone https://github.com/sky-joker/ansible-vmware-test-environment-provisioner.git
$ cd ansible-vmware-test-environment-provisioner
varsファイルを修正します。
$ vi vars/default.yml
---
hostname: vCenter ip or hostnameを設定する
username: administrator@vsphere.local
password: パスワードを設定する
datacenter: データセンター名を設定する
folder: "{{ datacenter }}/vm"
state: poweredon
vms:
- name: example
template: テンプレートとなるVM名を設定する
vm_username: OSアカウントの管理者を設定する
vm_password: OSアカウントの管理者パスワードを設定する
hardware:
num_coups: 1
num_cpu_cores_per_socket: 1
memory_mb: 2048
vm_networks:
- name: VM Network
guest_networks:
- name: ens192
ipv4: 192.168.0.166/24
ipv4_gateway: 192.168.0.1
ipv4_dns: 192.168.0.1
hardware
と vm_networks
は vmware_guest の項目を参照してください。
複数のVMを作成する場合は以下のようにします。
---
hostname: vCenter ip or hostnameを設定する
username: administrator@vsphere.local
password: パスワードを設定する
datacenter: データセンター名を設定する
folder: "{{ datacenter }}/vm"
state: poweredon
vms:
- name: example
template: テンプレートとなるVM名を設定する
vm_username: OSアカウントの管理者を設定する
vm_password: OSアカウントの管理者パスワードを設定する
hardware:
num_coups: 1
num_cpu_cores_per_socket: 1
memory_mb: 2048
vm_networks:
- name: VM Network
guest_networks:
- name: ens192
ipv4: 192.168.0.166/24
ipv4_gateway: 192.168.0.1
ipv4_dns: 192.168.0.1
- name: example2
template: テンプレートとなるVM名を設定する
vm_username: OSアカウントの管理者を設定する
vm_password: OSアカウントの管理者パスワードを設定する
hardware:
num_coups: 1
num_cpu_cores_per_socket: 1
memory_mb: 2048
vm_networks:
- name: VM Network
guest_networks:
- name: ens192
ipv4: 192.168.0.167/24
ipv4_gateway: 192.168.0.1
ipv4_dns: 192.168.0.1
- name: example3
template: テンプレートとなるVM名を設定する
vm_username: OSアカウントの管理者を設定する
vm_password: OSアカウントの管理者パスワードを設定する
hardware:
num_coups: 1
num_cpu_cores_per_socket: 1
memory_mb: 2048
vm_networks:
- name: VM Network
- name: VM Network
guest_networks:
- name: ens192
ipv4: 192.168.0.168/24
ipv4_gateway: 192.168.0.1
ipv4_dns: 192.168.0.1
- name: ens224
ipv4: 192.168.0.169/24
ipv4_gateway: ""
ipv4_dns: ""
実行します。
$ ansible-playbook main.yml
削除する時はvarsの state
を absent
にします。
---
hostname: vCenter ip or hostnameを設定する
username: administrator@vsphere.local
password: パスワードを設定する
datacenter: データセンター名を設定する
folder: "{{ datacenter }}/vm"
state: absent
(snip)