LoginSignup
3
4

More than 3 years have passed since last update.

AnsibleでVMwareのVMをクローンしてLinuxPrepを使わずNWやホスト名を設定してみる(メモ)

Last updated at Posted at 2019-07-01

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

hardwarevm_networksvmware_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の stateabsent にします。

---
hostname: vCenter ip or hostnameを設定する
username: administrator@vsphere.local
password: パスワードを設定する
datacenter: データセンター名を設定する
folder: "{{ datacenter }}/vm"
state: absent
(snip)
3
4
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
3
4