注意事項
- VMware vCenter が必要です。
- vmware_guest Module は VMware vCenter に接続を行い処理するため。
- インターネット接続環境が必要です。
1. クローン元になる CentOS7 を作る
1) CentOS をインストール
IPアドレスはStatic(固定)で設定しておく。
既にインストールしてあれば飛ばしてOK
2) (minimal導入時)必要なパッケージをインストール
yum -y install perl net-tools
3) VMware Tools のイメージをアタッチ
4) VMware Tools のインストール
# mount -r /dev/cdrom /mnt
# cp -pr /mnt /root
# umount /mnt
# cd /root/mnt
# tar zxvf VMwareTools-8.3.17-784891.tar.gz
# cd vmware-tools-distrib/
# ./vmware-install.pl -d
5) VMをシャットダウン
# shutdown -h now
VMware ESX 上の CentOS 7 に VMwareTools をインストール
https://bacchi.me/linux/install-vmwaretools/
2. Ansible 環境を作る
1) クローン元とは別に CentOS7 をインストール
vCenterと通信する必要があるので、vCenterと疎通できるようにすること
2) ansibleなどの必要なパッケージをインストール
yum install unzip wget epel-release -y
yum install ansible python gcc python-devel -y
curl -L https://bootstrap.pypa.io/get-pip.py | python
pip install pyvmomi
pyvmomi を使って Python スクリプトで vSphere を操作する
http://sig9.hatenablog.com/entry/2017/11/01/000000
3) Ansibleのコードを書く
ディレクトリ構造
vm_clone_example/
├── inventory
└── main.yml
main.yml
---
- name: VMware Clone VM
hosts: localhost
vars_prompt:
- name: "vcenter_host"
prompt: "Please enter vCenter Hostname or IP address"
private: no
- name: "vcenter_password"
prompt: "\nConnect vCenter ... \nPlease enter vCenter User Password"
private: yes
- name: "vm_name"
prompt: "Clone VM Name"
private: no
- name: "network_ip"
prompt: "Clone VM IP Address"
private: no
gather_facts: no
tasks:
- name: vm clone
vmware_guest:
hostname: "{{ vcenter_host }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
validate_certs: no
datacenter: "{{ datacenter }}"
folder: "{{ folder }}"
name: "{{ vm_name }}"
datastore: "{{ datastore }}"
template: "{{ vm_template }}"
state: poweredon
networks:
- name: "{{ network_name }}"
ip: "{{ network_ip }}"
netmask: "{{ network_netmask }}"
gateway: "{{ network_gateway }}"
customization:
hostname: "{{ vm_name }}"
dns_servers: "{{ dns_servers }}"
domain: "{{ domain }}"
- name: wait vmware tools started
vmware_guest_tools_wait:
hostname: "{{ vcenter_host }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
validate_certs: no
name: "{{ vm_name }}"
inventory
[localhost]
127.0.0.1 ansible_connection=local
[clone_host]
192.168.123.211 ansible_user=root ansible_password=root
[localhost:vars]
vcenter_host = **** #ipアドレスorホスト名
vcenter_username = administrator@vsphere.loca
datacenter = Datacenter
folder = /vm
datastore = vsandatastore
vm_template = CentOS7u6_template #クローン元のVM名
network_name = VM Network
network_netmask = 255.255.255.0
network_gateway = 192.168.123.254
dns_servers = ["192.168.123.254"]
domain = ****
3. Ansibleを叩いてクローンを作る!
Ansible 環境で実行
# ls -al
total 8
drwxrwxr-x 2 root root 39 Jul 8 00:08 .
dr-xr-x---. 6 root root 229 Jul 7 23:38 ..
-rw-rw-r-- 1 root root 515 Jul 7 22:19 inventory
-rw-rw-r-- 1 root root 1431 Jul 7 23:37 main.yml
#
# ansible-playbook main.yml -i inventory
Please enter vCenter Hostname or IP address: ksato-vcenter.2dabo.net
Connect vCenter ...
Please enter vCenter User Password:
Clone VM Name: centos01
Clone VM IP Address: 192.168.123.214
PLAY [VMware Clone VM] *********************************************************************************************
TASK [vm clone] *********************************************************************************************
changed: [127.0.0.1]
TASK [wait vmware tools started] *********************************************************************************************
changed: [127.0.0.1]
PLAY RECAP *********************************************************************************************
127.0.0.1 : ok=2 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Ansibleを使ってVMwareのVMクローンとゲストOSにパッケージをインストールした時のメモ
https://qiita.com/sky_jokerxx/items/d8a42f27be97fb05dea6