1. hirofumihida

    Posted

    hirofumihida
Changes in title
+Ansible で ESXi を操作してみる[VM作成編]
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,189 @@
+# Ansible で ESXi を操作してみる[VM作成編]
+
+# 目的
+* vSphere Client からぽちぽちせずに ESXi を操作したい
+* ansible を使うことで構成管理と自動化も視野に
+* 最終的には VM の自動作成をしたいなと
+
+# 構成 (2016/03/06 時点)
+* ansible 2.0
+ * mac os x el capitan
+ * ubuntu 14.04
+
+```
+$ sudo pip install ansible
+$ ansible --version
+ansible 2.0.1.0
+$ sudo pip install pysphere
+$ sudo pip show pysphere
+---
+Name: pysphere
+Version: 0.1.7
+(snip)
+```
+* ESXi 5.1 u3 (Freeライセンス)
+ * 古いですね、すみません。わけあってこのバージョン…
+ * ssh サーバを有効にする
+* vSphere client 5.1.0
+ * Windows10 Pro
+
+# リファレンス
+* 以下のサイトの情報を参考にしました
+ * http://www.virtxpert.com/deploying-virtual-machines-vcenter-ansible/
+ * http://docs.ansible.com/ansible/vsphere_guest_module.html
+* 当方、vCenter などなく無料ライセンスの ESXi ゆえ工夫というか逃げ方法を模索してみました…
+
+# 準備
+
+## ESXi サーバ側に OS インストール用の ISO ファイルを準備します
+1. ESXi サーバへログイン
+ * 実行例
+<pre>
+$ ESX_IPADDR='192.168.100.8'
+$ ssh root@${ESX_IPADDR}
+(snip)
+~ #
+</pre>
+1. ESXi サーバ上で ISO ファイルのダウンロード
+ * 今回は CentOS6.7 を準備します
+<pre>
+# mkdir /vmfs/volumes/datastore1/isofiles
+# cd /vmfs/volumes/datastore1/isofiles
+# wget http://ftp.iij.ad.jp/pub/linux/centos/6/isos/x86_64/CentOS-6.7-x86_64-minimal.iso
+</pre>
+
+## ESXi サーバの情報収集 (後ほど必要になります)
+1. ホスト名の取得
+<pre>
+# hostname
+出力例:
+esxi5.local
+</pre>
+
+## Ansible の構成ファイルを準備します
+### 1. 作業用ディレクトリの作成
+ * ref. http://docs.ansible.com/ansible/playbooks_best_practices.html#directory-layout
+<pre>
+$ mkdir -p ~/ansible/esxi-test/group_vars
+</pre>
+
+### 2. Group Variable ファイルの作成
+#### 2-1. 変数のセット
+```
+ESX_HOSTNAME='esxi5.local' <- 上の手順でメモったホスト名
+ESX_USER='root'
+ESX_PASSWORD='hogehoge' <- ssh でログイン可能なパスワード
+VM_NAME='testvm01'
+DATASTORE_NAME='datastore1'
+ISO_PATH='isofiles/CentOS-6.7-x86_64-minimal.iso'
+```
+#### 2-2. 変数の確認
+```
+cat << ETX
+ ESX_HOSTNAME: ${ESX_HOSTNAME}
+ ESX_USER: ${ESX_USER}
+ ESX_PASSWORD: ${ESX_PASSWORD}
+ VM_NAME: ${VM_NAME}
+ DATASTORE_NAME: ${DATASTORE_NAME}
+ ISO_PATH: ${ISO_PATH}
+ETX
+```
+#### 2-3. 設定ファイルの作成
+```
+cd ~/ansible/esxi-test/group_vars
+cat << EOF > all.yml
+---
+esx_hostname: ${ESX_HOSTNAME}
+esx_ipaddr: ${ESX_IPADDR}
+esx_user: ${ESX_USER}
+esx_password: ${ESX_PASSWORD}
+guest_vm_name: ${VM_NAME}
+datastore_name: ${DATASTORE_NAME}
+iso_path: ${ISO_PATH}
+EOF
+```
+```
+cat all.yml
+cd ../
+```
+### 3. 構成ファイルの作成
+```
+ESX_HOST_FILE='esx-host'
+cat << EOF > ${ESX_HOST_FILE}
+[esxi]
+ ${ESX_IPADDR}
+EOF
+cat ${ESX_HOST_FILE}
+```
+```
+cat << EOF > site.yml
+---
+- hosts: 127.0.0.1
+ connection: local
+ user: root
+ sudo: false
+ gather_facts: false
+ serial: 1
+ tasks:
+ - name: Deploy guest from template
+ vsphere_guest:
+ vcenter_hostname: "{{ esx_ipaddr }}"
+ username: "{{ esx_user }}"
+ password: "{{ esx_password }}"
+ guest: "{{ guest_vm_name }}"
+ state: powered_on
+ vm_extra_config:
+ vcpu.hotadd: yes
+ mem.hotadd: yes
+ notes: This is a test VM
+ vm_disk:
+ disk1:
+ size_gb: 10
+ type: thin
+ datastore: "{{ datastore_name }}"
+ vm_nic:
+ nic1:
+ type: vmxnet3
+ network: VM Network
+ network_type: standard
+ vm_hardware:
+ memory_mb: 1024
+ num_cpus: 2
+ osid: centos64Guest
+ scsi: paravirtual
+ vm_cdrom:
+ type: "iso"
+ iso_path: "{{ iso_path }}"
+ esxi:
+ datacenter: ha-datacenter
+ hostname: "{{ esx_hostname }}"
+EOF
+```
+```
+cat site.yml
+```
+## VM の Deploy
+### 1. 以下のコマンドを実行します
+```
+ansible-playbook site.yml -i esx-host
+```
+```
+出力例:
+
+[DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and make sure become_method is 'sudo' (default). This
+feature will be removed in a future release. Deprecation warnings can be disabled by setting deprecation_warnings=False in
+ansible.cfg.
+
+PLAY ***************************************************************************
+
+TASK [Deploy guest from template] **********************************************
+changed: [127.0.0.1]
+
+PLAY RECAP *********************************************************************
+127.0.0.1 : ok=1 changed=1 unreachable=0 failed=0
+```
+## 2. vSphere Client で VM が起動してきていたら成功です
+
+![Screenshot 2016-03-08 03.06.54.png](https://qiita-image-store.s3.amazonaws.com/0/67892/37685004-a3eb-8284-9263-c6317b2d43fe.png)
+
+# 終了