8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AnsibleAdvent Calendar 2017

Day 12

Ansible: vSphere Guest モジュールについてのまとめ

Last updated at Posted at 2017-12-11

Ansible: vSphere Guest モジュールについてのまとめ

  • Ansible Advent Calendar 2017 12/12(火) 向けの記事になります。

目的

  • (すでにご存じの方々も多いかと思いますが...)
  • 初学者向けの vSphere Guset 関連モジュールとサンプルコードの紹介
    • 最初に戸惑うことがないように。。
  • 過去にいくつか書いたもののまとめ
  • 最後にこのネタで書いてからこれまでの差分など

対象

以下にリンクされているモジュールを対象とします。

アジェンダ

  1. vSphere Guest 用モジュールの解説
  • 1.1. 大きく2種類ある
  • 1.2. 違い、いい点、悪い点
  • 1.3. 現状でのベストプラクティスは?
  1. 使ってみる
  • 2.1 サンプルコード
  1. それでもエラーが出たときは?

1. vSphere Guest 用モジュールの解説

1.1. 大きく2種類ある

2017/12/11 現在、以下の2つの Guest 用モジュールを利用できます。

1.2. 違い、いい点、悪い点

  • いずれかの選択判断材料となりそうな要素を書き出してみます。
モジュール名 vsphere_guest vmware_guest
依存する Python モジュール pysphere PyVmomi
Python モジュールメインテナー 個人 かつ すでに開発を辞めている VMware社 > "http://vmware.github.io/pyvmomi/"
vCenter要否 なくても使えるWorkAroundあり(※1) vCenter必要(※2)
StandAlone ESXi 可否 可(※1) 不可(※2)
モジュール ステータス(※3) preview preview

1.3. 現状でのベストプラクティスは?

  1. ESXi をスタンドアロンで使っている場合は vsphere_guest 一択にならざるをえないと思います
  2. vCenter がある場合は可能な限り vmware_guest を使いつつ、vmware_guest 利用に問題が生じるような場合に(一時的な)WorkAroundとし限定的に vsphere_guest を利用していくのが良いと思われます

2. 使ってみる

  • i. [vmware_guset を使って] CentOS6.9 をテンプレートからデプロイし 60G の Disk を追加、メモリを 4G にして電源 ON
  • ii. [vsphere_guest を使って] DHCP でアサインされた IPアドレス を表示させます

実行環境

バージョン
vSphere 5.5
ansible 2.3.3.0 (stable-2.3 797d999513)
pyshpere 0.1.7
pyvmomi 6.5.0.2017.5.post1

ディレクトリ構成

│  site.yml
│
├─group_vars
│      all.yml
│
└─roles
    ├─centos6.9-base
    │  └─tasks
    │          main.yml
    │
    └─gather-vm-info
        └─tasks
                main.yml

2.1 サンプルコード

./site.yml

---
- name: vm deploy test
  hosts: localhost
  gather_facts: false
  connection: local
  roles:
    - centos6.9-base
    - gather-vm-info
    

./group_vars/all.yml

---
vc_datacenter: datacenter01
vc_hostname: 192.168.0.91
esxhost: esxi01.local
vc_datastore: 'esxi01:datastore1'
admin_username: admin@vsphere.local
admin_password: hogefuga
vc_network: 'VM Network Private01'
vc_template_c69: Temp_CentOS6.9_x86_64
guest_vm_name: centos6.9-test999

  • ※サンプル簡素化のためにパスワードを直書きしてますが ansible vault を使って暗号化しましょう

./roles/centos6.9-base/tasks/main.yml

---
- name: create centos6.9 base
  vmware_guest:
    datacenter: "{{ vc_datacenter }}"
    hostname: "{{ vc_hostname }}"
    username: "{{ admin_username }}"
    password: "{{ admin_password }}"
    esxi_hostname: "{{ esxhost }}"
    validate_certs: no
    name: "{{ guest_vm_name }}"
    state: poweredon
    # force: yes
    template: "{{ vc_template_c69 }}"
    disk:
    - size_gb: 40
      type: thin
      datastore: "{{ vc_datastore }}"
    - size_gb: 60
      type: thin
      datastore: "{{ vc_datastore }}"
    hardware:
      memory_mb: 4096
      num_cpus: 2
    wait_for_ip_address: yes
    

./roles/gather-vm-info/tasks/main.yml

---
- name: gather vm info
  vsphere_guest:
    vcenter_hostname: "{{ vc_hostname }}"
    username: "{{ admin_username }}"
    password: "{{ admin_password }}"
    validate_certs: no
    guest: "{{ guest_vm_name }}"
    vmware_guest_facts: yes
  register: var
- debug: msg="{{var.ansible_facts.hw_eth0.ipaddresses[0]}}"

  • コマンド出力結果サンプル
$ ansible-playbook site.yml
 [WARNING]: Host file not found: /etc/ansible/hosts

 [WARNING]: provided hosts list is empty, only localhost is available


PLAY [vm deploy test] ***********************************************************************************

TASK [centos6.9-base : create centos6.9 base] ***********************************************************
changed: [localhost]

TASK [gather-vm-info : gather vm info] ******************************************************************
ok: [localhost]

TASK [gather-vm-info : debug] ***************************************************************************
ok: [localhost] => {
    "msg": "192.168.100.100"
}

PLAY RECAP **********************************************************************************************
localhost                  : ok=3    changed=1    unreachable=0    failed=0

3. それでもエラーが出たときは?

  • 既知の問題で議論されている可能性もあります。
  • 以下のようなキーワードでググりましょう
site://github.com/ansible fault.NicSettingMismatch.summary
  • vmware_guest の場合は VMware 側に情報があることもあります。
site://communities.vmware.com fault.NicSettingMismatch.summary

以上

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?