Ansible for VMware のトラブルシューティング

本セクションでは、問題が発生する可能性があるものと、その修正方法を紹介します。

Ansible for VMware のデバッグ

新しい問題をデバッグまたは作成する場合は、VMware インフラストラクチャーに関する情報が必要になります。この情報は、 govc を使用して取得できます。以下に例を示します。

$ export GOVC_USERNAME=ESXI_OR_VCENTER_USERNAME
$ export GOVC_PASSWORD=ESXI_OR_VCENTER_PASSWORD
$ export GOVC_URL=https://ESXI_OR_VCENTER_HOSTNAME:443
$ govc find /

Ansible for VMware に関する既知の問題

Ubuntu 18.04 で vmware_guest を使用したネットワーク設定

open-vm-toolsnetplan のサポートがないため、Ubuntu 18.04 で vmware_guest を使用してネットワークを設定すると破損することが知られています。 この問題は以下で追跡します。

潜在的な回避策

この問題には、複数の回避策があります。

  1. Ubuntu 18.04 イメージを変更し、sudo apt install ifupdown でそのイメージに ifupdown をインストールします。 必要な場合は、sudo apt remove netplan.ionetplan を削除し、sudo systemctl disable systemctl-networkd を使用して systemd-networkd を停止する必要があります。
  2. VMware Ansible ロールでタスクを使用して systemd-networkd ファイルを生成します。
- name: make sure cache directory exists
  file: path="{{ inventory_dir }}/cache" state=directory
  delegate_to: localhost

- name: generate network templates
  template: src=network.j2 dest="{{ inventory_dir }}/cache/{{ inventory_hostname }}.network"
  delegate_to: localhost

- name: copy generated files to vm
  vmware_guest_file_operation:
    hostname: "{{ vmware_general.hostname }}"
    username: "{{ vmware_username }}"
    password: "{{ vmware_password }}"
    datacenter: "{{ vmware_general.datacenter }}"
    validate_certs: "{{ vmware_general.validate_certs }}"
    vm_id: "{{ inventory_hostname }}"
    vm_username: root
    vm_password: "{{ template_password }}"
    copy:
        src: "{{ inventory_dir }}/cache/{{ inventory_hostname }}.network"
        dest: "/etc/systemd/network/ens160.network"
        overwrite: False
  delegate_to: localhost

- name: restart systemd-networkd
  vmware_vm_shell:
    hostname: "{{ vmware_general.hostname }}"
    username: "{{ vmware_username }}"
    password: "{{ vmware_password }}"
    datacenter: "{{ vmware_general.datacenter }}"
    folder: /vm
    vm_id: "{{ inventory_hostname}}"
    vm_username: root
    vm_password: "{{ template_password }}"
    vm_shell: /bin/systemctl
    vm_shell_args: " restart systemd-networkd"
  delegate_to: localhost

- name: restart systemd-resolved
  vmware_vm_shell:
    hostname: "{{ vmware_general.hostname }}"
    username: "{{ vmware_username }}"
    password: "{{ vmware_password }}"
    datacenter: "{{ vmware_general.datacenter }}"
    folder: /vm
    vm_id: "{{ inventory_hostname}}"
    vm_username: root
    vm_password: "{{ template_password }}"
    vm_shell: /bin/systemctl
    vm_shell_args: " restart systemd-resolved"
  delegate_to: localhost
  1. open-vm-toolsnetplan サポートを待ちます。