ansibleによるOVAデプロイ

環境

vCenter7環境へ、ネスト環境用のvCenter7をデプロイ
クライアント:CentOS7
ISO:VMware-VCSA-all-7.0.3-20150588.iso
※vCenter以外もovaファイルは同様の手順にてデプロイ可能

 事前準備

①ISOダウンロード
②ISOに含まれるovaファイルを抽出
 例:「vcsa\VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10.ova
ovaファイルを解凍

# tar -xvf VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10.ova
VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10.ovf
VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10.mf
VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10-file1.json
VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10-file2.rpm
VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10-disk1.vmdk
VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10-disk2.vmdk
VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10-disk3.vmdk

ovaファイルを編集
vi VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10.ovf

以下のようにuserConfigurable="false"となっており、
デフォルト値(value="False")から変更したい項目について、
userConfigurable="true”と変更する。

      <Property ovf:key="guestinfo.cis.appliance.ssh.enabled" ovf:type="boolean" ovf:userConfigurable="false" ovf:value="False">
        <Label>SSH Enabled</Label>
        <Description>Set whether SSH-based remote login is enabled.  This configuration can be changed after deployment.</Description>
      </Property>

ovaファイルの再作成
④にてファイルを編集したことでハッシュが変更されているので、ハッシュ以外にてファイルを作成

# tar -cvf VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10.ova VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10.ovf VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10-file1.json VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10-file2.rpm VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10-disk1.vmdk VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10-disk3.vmdk VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10-disk2.vmdk VMware-vCenter-Server-Appliance-6.7.0.52000-19300125_OVF10.ova

⑥ansibleデプロイ
以下のようなyamlファイルを作成し、ansible-playbookにて実行

- hosts: local
  gather_facts: false
  vars_files:
  - ../vars_main.yml
  tasks:
  - name: Deploy vCenter
    community.vmware.vmware_deploy_ovf:
      hostname: '{{ vcenter.hostname }}'
      username: '{{ vcenter.username }}'
      password: '{{ vcenter.password }}'
      datacenter: '{{ vcenter.datacenter }}'
      cluster: '{{ vcenter.cluster }}'
      datastore: '{{ vcenter.datastore }}'
      disk_provisioning: thin
      folder: "/DC-01/vm/Env-{{ Env }}"
      name: '{{ Env }}-vcenter'
      networks:
        "Network 1": "Env-{{ Env }}"
      ovf: /ISO/VCSA-7.0.3.ovf
      validate_certs: no
      inject_ovf_env: yes
      deployment_option: tiny
      properties:
        guestinfo.cis.appliance.net.addr.family: "ipv4"
        guestinfo.cis.appliance.net.mode: "static"
        guestinfo.cis.appliance.net.addr: "172.16.{{ Env }}.2"
        guestinfo.cis.appliance.net.pnid: "{{ Env }}-vcenter.{{ domain }}"
        guestinfo.cis.appliance.net.prefix: "24"
        guestinfo.cis.appliance.net.gateway: "172.16.{{ Env }}.254"
        guestinfo.cis.appliance.net.dns.servers: "172.16.{{ Env }}.1"
        guestinfo.cis.appliance.root.passwd: "VMware1!"
        guestinfo.cis.appliance.ssh.enabled: "True"
        guestinfo.cis.appliance.ntp.servers: "time1.google.com"
        guestinfo.cis.deployment.autoconfig: "True"
        guestinfo.cis.vmdir.password: "VMware1!"
        domain: "{{ domain }}"
        searchpath: "{{ domain }}"