Giter Site home page Giter Site logo

vmware / ansible-vsphere-gos-validation Goto Github PK

View Code? Open in Web Editor NEW
38.0 9.0 29.0 10.59 MB

Guest OS validation test set for vSphere using Ansible

License: Other

Shell 15.85% Python 69.02% Batchfile 0.77% Jinja 9.91% Dockerfile 1.64% PowerShell 2.82%
ansible vsphere os testing vmware-vsphere automation

ansible-vsphere-gos-validation's Introduction

Guest Operating System Validation on vSphere using Ansible

Getting Started

Prerequisites

  1. Install Ansible on your control machine, please refer to Installing Ansible
  2. Install Tesseract Open Source OCR Engine for extracting text from screenshots, please refer to Installing Tesseract
  3. Install required Python libraries in requirements.txt
$ pip install -r requirements.txt
  1. Install required Ansible collections with latest version in requirements.yml
$ ansible-galaxy install -r requirements.yml
  1. Log in to local control machine as root or a user in sudoers, which must enable NOPASSWD for all commands

Steps to Launch Testing

  1. Git clone project from github to your workspace on control machine.
  2. Set the parameters required for testing in this file: vars/test.yml.
  3. Modify the test cases in test case list file in below default path.
    • For Linux testing: linux/gosv_testcase_list.yml
    • For Windows testing: windows/gosv_testcase_list.yml
  4. Launch testing using below commands from the same path of main.yml.
  # For Linux testing:
  # you can use below command to use the default variables file "vars/test.yml",
  # and default test case list file "linux/gosv_testcase_list.yml"
  $ ansible-playbook main.yml

  # For Linux or Windows testing:
  # you can use below command to set the path of a customized variables file and
  # test case list file
  $ ansible-playbook main.yml -e "testing_vars_file=/path_to/test.yml testing_testcase_file=/path_to/gosv_testcase_list.yml"
  1. A new log folder will be created for current test run, which will include log files and files collected in test cases, e.g., logs/test-vm/2021-07-06-09-27-51/. You can find log files:
  • results.log which contains testbed information, VM information and test case results
  • full_debug.log which contains testing debug logs
  • failed_tasks.log which contains failed tasks logs
  • known_issues.log which lists known issues meet in current test run

Catalog

  • main.yml: Main playbook for guest operating system validation test
  • ansible.cfg: User customized Ansible configuration file
  • autoinstall: Folder for guest operating system unattend install configuration files
  • common: Folder for common tasks called in test cases
  • docs: Folder for guide file and known issues
  • env_setup: Folder for playbooks or tasks which to prepare or cleanup testing environment
  • linux: Folder for playbooks to test Linux guest operating system
  • windows: Folder for playbooks to test Windows guest operating system
  • plugin: Folder for plugin scripts
  • tools: Folder for 3rd-party tools used in test cases
  • vars: Folder for variable files used in testing
  • changelogs: Folder for changelog of each release

Supported Testing Scenarios

This project supports below scenarios for end-to-end guest operating system validation testing

  • Deploy VM and install guest operating system from ISO image
  • Deploy VM from an OVA template
  • Existing VM with installed guest operating system, which should satisfy below requirments.
    • VM has only one network adapter and the network adapter is connected.
    • SSH and Python are installed and enabled.
    • The vm_python variable in vars/test.yml must be set with correct python path. Or user can set PATH in /etc/environment in guest operating system to include the binary directory path to python.
    • The root user should be enabled and permitted to log in through SSH in Linux guest operating system.
    • Execute ConfigureRemotingForAnsible.ps1 script in Windows guest operating system in advance.

Compatible Guest Operating Systems

Guest Operating Systems Automatic Install from ISO Image Deploy from OVA Template Existing VM with Guest Operating System Installed
Red Hat Enterprise Linux 7.x, 8.x, 9.x ✔️ ✔️
CentOS 7.x, 8.x ✔️ ✔️
CentOS Stream 8, 9 ✔️ ✔️
Oracle Linux 7.x, 8.x, 9.x ✔️ ✔️
Rocky Linux 8.x, 9.x ✔️ ✔️
AlmaLinux 8.x, 9.x ✔️ ✔️
SUSE Linux Enterprise 15 SP3 and later ✔️ ✔️
SUSE Linux Enterprise 12 SP5, 15 SP0/SP1/SP2 ✔️
VMware Photon OS 3.0, 4.0, 5.0 ✔️ ✔️ ✔️
Ubuntu 18.04 live-server ✔️ ✔️
Ubuntu 18.04 desktop ✔️
Ubuntu 20.04 and later ✔️ ✔️ ✔️
Flatcar 2592.0.0 and later ✔️ ✔️
Debian 10.10 and later, 11.x, 12.x ✔️ ✔️
Debian 9.x, 10.9 and earlier ✔️
Windows 10, 11 ✔️ ✔️
Windows Server 2019, 2022 ✔️ ✔️
UnionTech OS Server 20 1050a ✔️ ✔️
Fedora Server 36 and later ✔️ ✔️
ProLinux Server 7.9, 8.5 ✔️ ✔️
FreeBSD 13 and later ✔️ ✔️
Pardus 21.2 Server,XFCE Desktop and later ✔️ ✔️
Pardus 23.x Server,XFCE Desktop ✔️ ✔️
openSUSE Leap 15.3 and later ✔️ ✔️
BCLinux 8.x ✔️ ✔️
BCLinux-for-Euler 21.10 ✔️ ✔️
Red Hat Enterprise Linux CoreOS (RHCOS) 4.13 and later ✔️ ✔️
FusionOS 22 and 23 ✔️ ✔️
Miracle Linux 8.x, 9.x ✔️ ✔️
Kylin Linux Advanced Server V10 ✔️ ✔️

Notes This compatible guest operating systems list is used for this project only. For guest operating system support status on ESXi, please refer to VMware Compatibility Guide.

Docker images

  • Latest (Release v3.1):
    • projects.registry.vmware.com/gos_cert/ansible-vsphere-gos-validation:latest
  • Release v3.1:
    • projects.registry.vmware.com/gos_cert/ansible-vsphere-gos-validation:v3.1

Launch testing using Docker image

  1. Execute below commands in your machine
$ docker pull projects.registry.vmware.com/gos_cert/ansible-vsphere-gos-validation:latest
$ docker run -it --privileged projects.registry.vmware.com/gos_cert/ansible-vsphere-gos-validation:latest
  1. Launch testing in the started container following the steps in this section Steps to Launch Testing

ansible-vsphere-gos-validation's People

Contributors

123lzxm avatar bl33d avatar dentist128 avatar dependabot[bot] avatar dianew9 avatar keirazhang avatar linhuali avatar tomorrow9 avatar winnie81 avatar yanhuih2022 avatar zouyuhua avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ansible-vsphere-gos-validation's Issues

[Bug][Windows] check_os_fullname test case failed

SUMMARY

VM guest OS selection is "Windows Server 2016", guest OS full name in guest info can be "Windows Server 2016" or "Windows Server 2016 or later".

ISSUE TYPE
  • Bug Report
ANSIBLE VERSION
ansible 2.10.3
  config file = /new_disk/ansible-vsphere-gos-validation/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.6.5 (default, Apr  1 2018, 05:46:30) [GCC 7.3.0]
CONFIGURATION



ENVIRONMENT / OS

Windows Server 2016

STEPS TO REPRODUCE

Create a new VM with guest ID "Windows9Server64Guest", install guest OS and VMware tools, check guest info.

EXPECTED RESULTS

Guest OS fullname can be "Windows Server 2016" or "Windows Server 2016 or later"

ACTUAL RESULTS
2021-03-24 08:01:40,024 | Failed at Play [check_os_fullname] *************************

2021-03-24 08:01:40,024 | TASK [Verify guest fullname in guest info is expected] *****
task path: /root/newgos_testing/windows/check_os_fullname/check_os_fullname.yml:70
fatal: [localhost]: FAILED! => {
    "assertion": "os_fullname_guestinfo == expected_guest_fullname",
    "changed": false,
    "evaluated_to": false,
    "msg": "Guest fullname in guest info: Microsoft Windows Server 2016 or later (64-bit), is not the same as expected one: Microsoft Windows Server 2016 (64-bit)."
}

[Bug] callback_whitelist in ansible.cfg is deprecated, replace with callback_enabled

SUMMARY

[DEPRECATION WARNING]: [defaults]callback_whitelist option, normalizing names to new standard, use callback_enabled
instead. This feature will be removed from ansible-core in version 2.15. Deprecation warnings can be disabled by
setting deprecation_warnings=False in ansible.cfg.

ISSUE TYPE
  • Bug Report
ANSIBLE VERSION
ansible [core 2.11.0] 
  config file = /home/qiz/workspace/github/ansible-vsphere-gos-validation/ansible.cfg
  configured module search path = ['/home/qiz/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
  ansible collection location = /home/qiz/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.8.5 (default, May 27 2021, 13:30:53) [GCC 9.3.0]
  jinja version = 2.11.3
  libyaml = True

[v1.2][Bug] [Windows] Get log files when quiesce snapshot test failed

SUMMARY

Test case "check_quiesce_snapshot" failed sometime, we need to get log files from guest OS for debugging when quiescing guest OS failed.

ISSUE TYPE
  • Bug Report
ANSIBLE VERSION



CONFIGURATION



ENVIRONMENT / OS

Windows 10 and ESXi 7.0GA.

STEPS TO REPRODUCE
EXPECTED RESULTS
ACTUAL RESULTS
2021-06-10 10:28:12,010 | Failed at Play [check_quiesce_snapshot] ********************

2021-06-10 10:28:12,010 | TASK [Create snapshot 'quiesce_snapshot_1623320739' on '70ga_win_10_64_nvme_efi_ansible'] 
task path: /root/ansible-vsphere-gos-validation/common/vm_take_snapshot.yml:4
fatal: [localhost]: FAILED! => {
    "changed": false,
    "invocation": {
        "module_args": {
            "datacenter": "70GA",
            "description": "",
            "folder": "/70GA/vm",
            "hostname": "xx.xx.xx.xx",
            "memory_dump": false,
            "moid": null,
            "name": "70ga_win_10_64_nvme_efi_ansible",
            "name_match": "first",
            "new_description": null,
            "new_snapshot_name": null,
            "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "port": 443,
            "proxy_host": null,
            "proxy_port": null,
            "quiesce": true,
            "remove_children": false,
            "snapshot_name": "quiesce_snapshot_1623320739",
            "state": "present",
            "use_instance_uuid": false,
            "username": "[email protected]",
            "uuid": null,
            "validate_certs": false
        }
    },
    "msg": "An error occurred while quiescing the virtual machine. See the virtual machine's event log for details."
}

[New Feature][Windows] Add SSH support for Windows machine connection

SUMMARY

Refer to Windows SSH Setup in this doc:
https://docs.ansible.com/ansible/latest/user_guide/windows_setup.html

Use this feature at your own risk! Using SSH with Windows is experimental, the implementation may make backwards incompatible changes in feature releases. The server side components can be unreliable depending on the version that is installed.

ISSUE TYPE
  • Feature Idea
ENVIRONMENT / OS

Windows

ADDITIONAL INFORMATION

[Bug] [CentOS7.9] device_list test case failed

SUMMARY
included: /new_disk/ansible-vsphere-gos-validation/linux/device_list/../utils/../../common/vm_set_extra_config.yml for localhost

TASK [Set custom configue values for VM] *************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "Unable to find custom value key isolation.device.connectable.disable"}
ISSUE TYPE
  • Bug Report
ANSIBLE VERSION
ansible 2.10.3
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.6.5 (default, Apr  1 2018, 05:46:30) [GCC 7.3.0]

# /root/.ansible/collections/ansible_collections
Collection           Version
-------------------- -------
ansible.netcommon    1.4.1  
ansible.posix        1.1.1  
community.crypto     1.3.0  
community.general    1.3.0  
community.kubernetes 1.1.1  
community.vmware     1.9.0  
google.cloud         1.0.1

CONFIGURATION



ENVIRONMENT / OS

vCenter/ESXi 7.0GA, CentOS 7.9 mininal

STEPS TO REPRODUCE
EXPECTED RESULTS

Test case pass

ACTUAL RESULTS

device_list case failed

[Bug] Failed to rename VM basesnapshot after ovt_verify_install

SUMMARY

The snapshot renaming took some time. When checking the renamed snapshot's name, the task may have not completed.
We need to add "until" to wait for the snapshot rename completion in the renaming snapshot task vm_rename_snapshot.yml.

TASK [Rename snapshot 'BaseSnapshot' to 'BaseSnapshot-2021-04-20-06-46-03'] ****
task path: /root/ansible-vsphere-gos-validation/common/vm_rename_snapshot.yml:11
changed: [localhost] => {
    "changed": true,
    "invocation": {
        "module_args": {
            "datacenter": "ansible_test",
            "description": "",
            "folder": "/ansible_test/vm",
            "hostname": "10.182.11.221",
            "memory_dump": false,
            "moid": null,
            "name": "test_vm_65u3_2",
            "name_match": "first",
            "new_description": null,
            "new_snapshot_name": "BaseSnapshot-2021-04-20-06-46-03",
            "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "port": 443,
            "proxy_host": null,
            "proxy_port": null,
            "quiesce": false,
            "remove_children": false,
            "snapshot_name": "BaseSnapshot",
            "state": "present",
            "use_instance_uuid": false,
            "username": "[email protected]",
            "uuid": null,
            "validate_certs": false
        }
    },
    "renamed": true
}
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'

TASK [Display the result of renaming snapshot] *********************************
task path: /root/ansible-vsphere-gos-validation/common/vm_rename_snapshot.yml:25
ok: [localhost] => {
    "task_result": {
        "changed": true,
        "failed": false,
        "renamed": true
    }
}
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
redirecting (type: modules) ansible.builtin.vmware_guest_snapshot_info to community.vmware.vmware_guest_snapshot_info
included: /root/ansible-vsphere-gos-validation/linux/open_vm_tools/../../common/vm_get_snapshot_facts.yml for localhost
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root
<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /tmp `"&& mkdir "` echo /tmp/ansible-tmp-1618901165.4852006-6051-132230661455002 `" && echo ansible-tmp-1618901165.4852006-6051-132230661455002="` echo /tmp/ansible-tmp-1618901165.4852006-6051-132230661455002 `" ) && sleep 0'
redirecting (type: modules) ansible.builtin.vmware_guest_snapshot_info to community.vmware.vmware_guest_snapshot_info
Using module file /root/.ansible/collections/ansible_collections/community/vmware/plugins/modules/vmware_guest_snapshot_info.py
<127.0.0.1> PUT /root/.ansible/tmp/ansible-local-1068ecjxkxhr/tmpvcekw0fu TO /tmp/ansible-tmp-1618901165.4852006-6051-132230661455002/AnsiballZ_vmware_guest_snapshot_info.py
<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /tmp/ansible-tmp-1618901165.4852006-6051-132230661455002/ /tmp/ansible-tmp-1618901165.4852006-6051-132230661455002/AnsiballZ_vmware_guest_snapshot_info.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python3.9 /tmp/ansible-tmp-1618901165.4852006-6051-132230661455002/AnsiballZ_vmware_guest_snapshot_info.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /tmp/ansible-tmp-1618901165.4852006-6051-132230661455002/ > /dev/null 2>&1 && sleep 0'

TASK [Get VM 'test_vm_65u3_2' snapshot facts] **********************************
task path: /root/ansible-vsphere-gos-validation/common/vm_get_snapshot_facts.yml:4
ok: [localhost] => {
    "changed": false,
    "guest_snapshots": {
        "current_snapshot": {
            "creation_time": "2021-04-20T06:38:32.715339+00:00",
            "description": "",
            "id": 1,
            "name": "BaseSnapshot",
            "state": "poweredOn"
        },
        "snapshots": [
            {
                "creation_time": "2021-04-20T06:38:32.715339+00:00",
                "description": "",
                "id": 1,
                "name": "BaseSnapshot",
                "state": "poweredOn"
            }
        ]
    },
    "invocation": {
        "module_args": {
            "datacenter": "ansible_test",
            "folder": "/ansible_test/vm",
            "hostname": "10.182.11.221",
            "moid": null,
            "name": "test_vm_65u3_2",
            "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "port": 443,
            "proxy_host": null,
            "proxy_port": null,
            "use_instance_uuid": false,
            "username": "[email protected]",
            "uuid": null,
            "validate_certs": false
        }
    }
}
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'

TASK [Display the VM snapshot facts] *******************************************
task path: /root/ansible-vsphere-gos-validation/common/vm_get_snapshot_facts.yml:15
ok: [localhost] => {
    "vm_snapshot_facts": {
        "changed": false,
        "failed": false,
        "guest_snapshots": {
            "current_snapshot": {
                "creation_time": "2021-04-20T06:38:32.715339+00:00",
                "description": "",
                "id": 1,
                "name": "BaseSnapshot",
                "state": "poweredOn"
            },
            "snapshots": [
                {
                    "creation_time": "2021-04-20T06:38:32.715339+00:00",
                    "description": "",
                    "id": 1,
                    "name": "BaseSnapshot",
                    "state": "poweredOn"
                }
            ]
        }
    }
}
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
TASK [Check snapshot rename result] ********************************************
task path: /root/ansible-vsphere-gos-validation/common/vm_rename_snapshot.yml:30
fatal: [localhost]: FAILED! => {
    "assertion": "vm_snapshot_facts.guest_snapshots.snapshots | selectattr('name', 'equalto', current_snapshot_name) | length == 0",
    "changed": false,
    "evaluated_to": false,
    "msg": "Failed to rename snapshot 'BaseSnapshot' to 'BaseSnapshot-2021-04-20-06-46-03'"
}
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
included: /root/ansible-vsphere-gos-validation/linux/utils/test_rescue.yml for localhost
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'

TASK [By default revert to base snapshot] **************************************
task path: /root/ansible-vsphere-gos-validation/linux/utils/test_rescue.yml:17
ok: [localhost] => {
    "ansible_facts": {
        "revert_to_base": true
    },
    "changed": false
}
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
included: /root/ansible-vsphere-gos-validation/linux/open_vm_tools/../utils/../../common/print_test_result.yml for localhost
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'

TASK [Set test case name with play name] ***************************************
task path: /root/ansible-vsphere-gos-validation/common/print_test_result.yml:9
ok: [localhost] => {
    "ansible_facts": {
        "testcase": "ovt_verify_install"
    },
    "changed": false
}
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root
<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /tmp `"&& mkdir "` echo /tmp/ansible-tmp-1618901167.1189125-6085-273815846396271 `" && echo ansible-tmp-1618901167.1189125-6085-273815846396271="` echo /tmp/ansible-tmp-1618901167.1189125-6085-273815846396271 `" ) && sleep 0'
Using module file /usr/lib/python3.9/site-packages/ansible/modules/lineinfile.py
<127.0.0.1> PUT /root/.ansible/tmp/ansible-local-1068ecjxkxhr/tmp50o2yp_w TO /tmp/ansible-tmp-1618901167.1189125-6085-273815846396271/AnsiballZ_lineinfile.py
<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /tmp/ansible-tmp-1618901167.1189125-6085-273815846396271/ /tmp/ansible-tmp-1618901167.1189125-6085-273815846396271/AnsiballZ_lineinfile.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python3.9 /tmp/ansible-tmp-1618901167.1189125-6085-273815846396271/AnsiballZ_lineinfile.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /tmp/ansible-tmp-1618901167.1189125-6085-273815846396271/ > /dev/null 2>&1 && sleep 0'

TASK [Print test case result to test_result.yml] *******************************
task path: /root/ansible-vsphere-gos-validation/common/print_test_result.yml:24
changed: [localhost] => {
    "backup": "",
    "changed": true,
    "diff": [
        {
            "after": "",
            "after_header": "/root/ansible-vsphere-gos-validation/logs/test_vm_65u3_2/2021-04-20-06-13-27/test_result.yml (content)",
            "before": "",
            "before_header": "/root/ansible-vsphere-gos-validation/logs/test_vm_65u3_2/2021-04-20-06-13-27/test_result.yml (content)"
        },
        {
            "after_header": "/root/ansible-vsphere-gos-validation/logs/test_vm_65u3_2/2021-04-20-06-13-27/test_result.yml (file attributes)",
            "before_header": "/root/ansible-vsphere-gos-validation/logs/test_vm_65u3_2/2021-04-20-06-13-27/test_result.yml (file attributes)"
        }
    ],
    "invocation": {
        "module_args": {
            "attributes": null,
            "backrefs": false,
            "backup": false,
            "create": true,
            "firstmatch": false,
            "group": null,
            "insertafter": null,
            "insertbefore": null,
            "line": "ovt_verify_install: Failed",
            "mode": "644",
            "owner": null,
            "path": "/root/ansible-vsphere-gos-validation/logs/test_vm_65u3_2/2021-04-20-06-13-27/test_result.yml",
            "regexp": "^ovt_verify_install:",
            "selevel": null,
            "serole": null,
            "setype": null,
            "seuser": null,
            "state": "present",
            "unsafe_writes": false,
            "validate": null
        }
    },
    "msg": "line added"
}
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'

TASK [Display the result of print test result to test_result.yml] **************
task path: /root/ansible-vsphere-gos-validation/common/print_test_result.yml:33
ok: [localhost] => {
    "print_test_result": {
        "backup": "",
        "changed": true,
        "diff": [
            {
                "after": "",
                "after_header": "/root/ansible-vsphere-gos-validation/logs/test_vm_65u3_2/2021-04-20-06-13-27/test_result.yml (content)",
                "before": "",
                "before_header": "/root/ansible-vsphere-gos-validation/logs/test_vm_65u3_2/2021-04-20-06-13-27/test_result.yml (content)"
            },
            {
                "after_header": "/root/ansible-vsphere-gos-validation/logs/test_vm_65u3_2/2021-04-20-06-13-27/test_result.yml (file attributes)",
                "before_header": "/root/ansible-vsphere-gos-validation/logs/test_vm_65u3_2/2021-04-20-06-13-27/test_result.yml (file attributes)"
            }
        ],
        "failed": false,
        "msg": "line added"
    }
}
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'

TASK [Save current time] *******************************************************
task path: /root/ansible-vsphere-gos-validation/linux/utils/test_rescue.yml:36
ok: [localhost] => {
    "ansible_facts": {
        "timestamp": "2021-04-20-06-46-07"
    },
    "changed": false
}
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
redirecting (type: modules) ansible.builtin.vmware_guest_snapshot to community.vmware.vmware_guest_snapshot
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
included: /root/ansible-vsphere-gos-validation/linux/open_vm_tools/../utils/../../common/vm_take_snapshot.yml for localhost
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root
<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /tmp `"&& mkdir "` echo /tmp/ansible-tmp-1618901167.7551847-6107-41363968906563 `" && echo ansible-tmp-1618901167.7551847-6107-41363968906563="` echo /tmp/ansible-tmp-1618901167.7551847-6107-41363968906563 `" ) && sleep 0'
redirecting (type: modules) ansible.builtin.vmware_guest_snapshot to community.vmware.vmware_guest_snapshot
Using module file /root/.ansible/collections/ansible_collections/community/vmware/plugins/modules/vmware_guest_snapshot.py
<127.0.0.1> PUT /root/.ansible/tmp/ansible-local-1068ecjxkxhr/tmpoiy9cfjb TO /tmp/ansible-tmp-1618901167.7551847-6107-41363968906563/AnsiballZ_vmware_guest_snapshot.py
<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /tmp/ansible-tmp-1618901167.7551847-6107-41363968906563/ /tmp/ansible-tmp-1618901167.7551847-6107-41363968906563/AnsiballZ_vmware_guest_snapshot.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python3.9 /tmp/ansible-tmp-1618901167.7551847-6107-41363968906563/AnsiballZ_vmware_guest_snapshot.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /tmp/ansible-tmp-1618901167.7551847-6107-41363968906563/ > /dev/null 2>&1 && sleep 0'

TASK [Create snapshot 'fail-ovt_verify_install-2021-04-20-06-46-07' on 'test_vm_65u3_2'] ***
task path: /root/ansible-vsphere-gos-validation/common/vm_take_snapshot.yml:4
changed: [localhost] => {
    "changed": true,
    "invocation": {
        "module_args": {
            "datacenter": "ansible_test",
            "description": "",
            "folder": "/ansible_test/vm",
            "hostname": "10.182.11.221",
            "memory_dump": true,
            "moid": null,
            "name": "test_vm_65u3_2",
            "name_match": "first",
            "new_description": null,
            "new_snapshot_name": null,
            "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "port": 443,
            "proxy_host": null,
            "proxy_port": null,
            "quiesce": false,
            "remove_children": false,
            "snapshot_name": "fail-ovt_verify_install-2021-04-20-06-46-07",
            "state": "present",
            "use_instance_uuid": false,
            "username": "[email protected]",
            "uuid": null,
            "validate_certs": false
        }
    },
    "snapshot_results": {
        "current_snapshot": {
            "creation_time": "2021-04-20T06:46:08.336008+00:00",
            "description": "",
            "id": 2,
            "name": "fail-ovt_verify_install-2021-04-20-06-46-07",
            "state": "poweredOn"
        },
        "snapshots": [
            {
                "creation_time": "2021-04-20T06:38:32.715339+00:00",
                "description": "",
                "id": 1,
                "name": "BaseSnapshot-2021-04-20-06-46-03",
                "state": "poweredOn"
            },
            {
                "creation_time": "2021-04-20T06:46:08.336008+00:00",
                "description": "",
                "id": 2,
                "name": "fail-ovt_verify_install-2021-04-20-06-46-07",
                "state": "poweredOn"
            }
        ]
    }
}
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
ISSUE TYPE
  • Bug Report
ANSIBLE VERSION



CONFIGURATION



ENVIRONMENT / OS

RHEL 8.4

STEPS TO REPRODUCE

https://gosv.svc.eng.vmware.com/job/yan_RHEL_8.4/20/consoleFull

EXPECTED RESULTS
ACTUAL RESULTS

[Bug] [Windows] Autounattend.xml not work on Windows VOL ISO image

SUMMARY

Now use existing Windows 10 auto unattend xml file for Windows 10 Enterprise OEM ISO image works well, but for Windows 10 Enterprise VOL ISO image, the auto install will fail at "not found images".

ISSUE TYPE
  • Bug Report
ANSIBLE VERSION
ansible 2.10.3
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.6.5 (default, Apr  1 2018, 05:46:30) [GCC 7.3.0]
CONFIGURATION



ENVIRONMENT / OS

Windows 10 Enterprise OEM ISO file, VOL ISO file.

STEPS TO REPRODUCE
EXPECTED RESULTS

Make Autounattend.xml work for different Windows ISO images.

ACTUAL RESULTS

[Bug] When os_installation_iso_url is defined but empty, check_testing_vars.yml failed

SUMMARY
# There are 2 methods to set the source of guest OS installation ISO file as below.
# The first one takes precedence over the second one.
# (1) If 'os_installation_iso_url' and/or 'os_installation_iso_checksum' is set, then guest
# OS installation ISO file will be downloaded from the URL to local machine and transfer to the ESXi
# datastore. 'os_installation_iso_checksum' is the checksum of the ISO file, please set in the format
# 'md5:xxxxxxxxx', 'sha256:xxxxxxxxxx', etc.
#
os_installation_iso_url: 
os_installation_iso_checksum: 

# (2) Or set the path of OS installation ISO files on ESXi host datastore in this format:
# '[datastore_name] ISO_image_path/ISO_image_file', ISO files in this list will be attached to VM CDROMs orderly.
#
os_installation_iso_list:
  - '[exit15] OS/Linux/SUSE/15/SP3/RC1/SLE-15-SP3-Full-x86_64-RC1-Media1.iso'

# The path of OS automatic install configuration file used for guest OS installation from
# ISO image specified above. This configuration file will be contained in a new created ISO file, which will be
# attached to the VM's CDROM along with OS installation ISO.
# Pre-created unattend configuration files are in this folder 'autoinstall', please find the
# file in this path according to the OS type and version, and put your new created or customized
# files in this path.
#
unattend_install_conf: SLE/15/SP3/SLED_EFI/autoinst.xml
2021-04-09 08:51:05,009 | TASK [Check variables for installing OS from ISO images] ***
task path: /root/ansible-vsphere-gos-validation/env_setup/check_testing_vars.yml:54
fatal: [localhost]: FAILED! => {
    "assertion": "( os_installation_iso_url is undefined and os_installation_iso_list is defined and os_installation_iso_list ) or ( os_installation_iso_url is defined and os_installation_iso_url and os_installation_iso_checksum is defined and os_installation_iso_checksum and os_installation_iso_checksum.split(':')[0] in ['md5', 'sha256'] )",
    "changed": false,
    "evaluated_to": false,
    "msg": "Please either set os_installation_iso_url and os_installation_iso_checksum for downloading OS image, or set os_installation_iso_list with ISO images located on ESXi datastore"
}
ISSUE TYPE
  • Bug Report

[v1.2][Bug] [Windows] GOSC static IP test case failed sometimes

SUMMARY

Test case: gosc_sanity_staticip failed

Try to disable Windows Store update before GOSC, as the error log described in this page:
https://docs.microsoft.com/en-us/answers/questions/333299/windows-10-sysprep.html

ISSUE TYPE
  • Bug Report
ANSIBLE VERSION



CONFIGURATION



ENVIRONMENT / OS

Windows 10 insider preview build

STEPS TO REPRODUCE

On 6.5U3 ESXi:

2021-06-15 09:07:43,015 | Failed at Play [gosc_sanity_staticip] **********************

2021-06-15 09:07:43,015 | TASK [Search keyworks in vmware.log on ESXi host] **********
task path: /root/ansible-vsphere-gos-validation/windows/guest_customization/check_guest_reset_time.yml:12
fatal: [localhost -> xx.xx.xx.xx]: FAILED! => {
    "attempts": 60,
    "changed": true,
    "cmd": "grep -c -e 'Chipset: The guest has requested that the virtual machine be hard reset.' -e 'GuestRpc: Reinitializing Channel 0(toolbox)' /vmfs/volumes/GOSV-Async/65u3_win_10_64_pvscsi_efi_ansible/vmware.log",
    "delta": "0:00:00.028316",
    "end": "2021-06-15 09:07:42.764439",
    "invocation": {
        "module_args": {
            "_raw_params": "grep -c -e 'Chipset: The guest has requested that the virtual machine be hard reset.' -e 'GuestRpc: Reinitializing Channel 0(toolbox)' /vmfs/volumes/GOSV-Async/65u3_win_10_64_pvscsi_efi_ansible/vmware.log",
            "_uses_shell": true,
            "argv": null,
            "chdir": null,
            "creates": null,
            "executable": null,
            "removes": null,
            "stdin": null,
            "stdin_add_newline": true,
            "strip_empty_ends": true,
            "warn": true
        }
    },
    "rc": 0,
    "start": "2021-06-15 09:07:42.736123",
    "stderr": "",
    "stderr_lines": [],
    "stdout": "1",
    "stdout_lines": [
        "1"
    ]
}

On 6.7U3 ESXi:

2021-06-10 11:07:50,010 | Failed at Play [gosc_sanity_staticip] **********************

2021-06-10 11:07:50,010 | TASK [Customize Windows guest OS] **************************
task path: /root/ansible-vsphere-gos-validation/windows/guest_customization/win_gosc_execution.yml:4
fatal: [localhost]: FAILED! => {
    "changed": true,
    "invocation": {
        "module_args": {
            "annotation": null,
            "cdrom": [],
            "cluster": null,
            "convert": null,
            "customization": {
                "autologon": true,
                "autologoncount": 10,
                "dns_servers": [
                    "192.168.0.1",
                    "192.168.0.2"
                ],
                "dns_suffix": null,
                "domain": "autotest.com",
                "domainadmin": null,
                "domainadminpassword": null,
                "existing_vm": true,
                "fullname": null,
                "hostname": "gosc-test-win",
                "hwclockUTC": null,
                "joindomain": null,
                "joinworkgroup": null,
                "orgname": null,
                "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
                "productid": null,
                "runonce": [
                    "cmd.exe /c echo Windows gosc automation test > C:\\gosc_runonce.txt"
                ],
                "timezone": "2"
            },
            "customization_spec": null,
            "customvalues": [],
            "datacenter": "67U3",
            "datastore": null,
            "delete_from_inventory": false,
            "disk": [],
            "esxi_hostname": "xx.xx.xx.xx",
            "folder": "/67U3/vm",
            "force": false,
            "guest_id": null,
            "hardware": {
                "boot_firmware": null,
                "cpu_limit": null,
                "cpu_reservation": null,
                "hotadd_cpu": null,
                "hotadd_memory": null,
                "hotremove_cpu": null,
                "max_connections": null,
                "mem_limit": null,
                "mem_reservation": null,
                "memory_mb": null,
                "memory_reservation_lock": null,
                "nested_virt": null,
                "num_cpu_cores_per_socket": null,
                "num_cpus": null,
                "scsi": null,
                "version": null,
                "virt_based_security": null
            },
            "hostname": "10.117.17.80",
            "is_template": false,
            "linked_clone": false,
            "name": "67u3_win_10_64_pvscsi_bios_ansible",
            "name_match": "first",
            "networks": [
                {
                    "gateway": "192.168.1.1",
                    "ip": "192.168.1.10",
                    "name": "vSwitch2021-06-10-07-45-13_PG",
                    "netmask": "255.255.255.0",
                    "type": "static"
                }
            ],
            "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "port": 443,
            "proxy_host": null,
            "proxy_port": null,
            "resource_pool": null,
            "snapshot_src": null,
            "state": "present",
            "state_change_timeout": 0,
            "template": null,
            "use_instance_uuid": false,
            "username": "[email protected]",
            "uuid": null,
            "validate_certs": false,
            "vapp_properties": [],
            "wait_for_customization": true,
            "wait_for_customization_timeout": 1800,
            "wait_for_ip_address": false,
            "wait_for_ip_address_timeout": 300
        }
    },
    "msg": "Wait for customization failed due to timeout",
    "op": "wait_for_customize_exist",
    "warnings": [
        "Waiting for customization result event timed out."
    ]
}
EXPECTED RESULTS

GOSC succeed.

ACTUAL RESULTS

GOSC failed.

[Bug] Handle tasks failures in test_rescue.yml

SUMMARY
TASK [Create snapshot 'fail-nvme_vhba_device_ops-2021-07-01-07-29-58' on 'ubuntu-21.04'] ***
task path: /root/ansible-vsphere-gos-validation/common/vm_take_snapshot.yml:4
fatal: [localhost]: FAILED! => {
    "changed": false,
    "invocation": {
        "module_args": {
            "datacenter": "ansible_test",
            "description": "",
            "folder": "/ansible_test/vm",
            "hostname": "xx.xx.xx.xx",
            "memory_dump": true,
            "moid": null,
            "name": "ubuntu-21.04",
            "name_match": "first",
            "new_description": null,
            "new_snapshot_name": null,
            "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "port": 443,
            "proxy_host": null,
            "proxy_port": null,
            "quiesce": false,
            "remove_children": false,
            "snapshot_name": "fail-nvme_vhba_device_ops-2021-07-01-07-29-58",
            "state": "present",
            "use_instance_uuid": false,
            "username": "[email protected]",
            "uuid": null,
            "validate_certs": false
        }
    },
    "msg": "Operation timed out."
}

PLAY RECAP *********************************************************************
localhost                  : ok=4288 changed=415  unreachable=0    failed=1    skipped=2654 rescued=2    ignored=2   


TEST SUMMARY *******************************************************************
...
ISSUE TYPE
  • Bug Report
ANSIBLE VERSION



CONFIGURATION



ENVIRONMENT / OS
STEPS TO REPRODUCE

If there is task failed in test_rescue.yml, then testing will exit, following test cases will not run.

EXPECTED RESULTS

All test cases run when exit_testing_when_fail is not set to True.

ACTUAL RESULTS

Task executed failure in test_rescue.yml when test case fail.

[Bug] [Windows] memory_hot_add_basic failed due to cpu limitation

SUMMARY

Windows memory_hot_add_basic failed due to cpu is not enough.


2021-04-07 07:39:23,007 | Failed at Play [memory_hot_add_basic] **********************

2021-04-07 07:39:23,007 | TASK [Set VM power state to 'powered-on'] ******************
task path: /root/ansible-vsphere-gos-validation/common/vm_set_power_state.yml:34
fatal: [localhost]: FAILED! => {
    "changed": false,
    "module_stderr": "pyVmomi.VmomiSupport.NotEnoughCpus: (vim.fault.NotEnoughCpus) {\n   dynamicType = <unset>,\n   dynamicProperty = (vmodl.DynamicProperty) [],\n   msg = 'Virtual machine requires 8 CPUs to operate, but the host hardware only provides 4.',\n   faultCause = <unset>,\n   faultMessage = (vmodl.LocalizableMessage) [],\n   numCpuDest = 4,\n   numCpuVm = 8\n}\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n  File \"/tmp/ansible-tmp-1617781160.9507868-13324-39469946055191/AnsiballZ_vmware_guest_powerstate.py\", line 102, in <module>\n    _ansiballz_main()\n  File \"/tmp/ansible-tmp-1617781160.9507868-13324-39469946055191/AnsiballZ_vmware_guest_powerstate.py\", line 94, in _ansiballz_main\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n  File \"/tmp/ansible-tmp-1617781160.9507868-13324-39469946055191/AnsiballZ_vmware_guest_powerstate.py\", line 40, in invoke_module\n    runpy.run_module(mod_name='ansible_collections.community.vmware.plugins.modules.vmware_guest_powerstate', init_globals=None, run_name='__main__', alter_sys=True)\n  File \"/usr/lib/python3.9/runpy.py\", line 210, in run_module\n    return _run_module_code(code, init_globals, run_name, mod_spec)\n  File \"/usr/lib/python3.9/runpy.py\", line 97, in _run_module_code\n    _run_code(code, mod_globals, init_globals,\n  File \"/usr/lib/python3.9/runpy.py\", line 87, in _run_code\n    exec(code, run_globals)\n  File \"/tmp/ansible_vmware_guest_powerstate_payload_t6k9rlw8/ansible_vmware_guest_powerstate_payload.zip/ansible_collections/community/vmware/plugins/modules/vmware_guest_powerstate.py\", line 273, in <module>\n  File \"/tmp/ansible_vmware_guest_powerstate_payload_t6k9rlw8/ansible_vmware_guest_powerstate_payload.zip/ansible_collections/community/vmware/plugins/modules/vmware_guest_powerstate.py\", line 261, in main\n  File \"/tmp/ansible_vmware_guest_powerstate_payload_t6k9rlw8/ansible_vmware_guest_powerstate_payload.zip/ansible_collections/community/vmware/plugins/module_utils/vmware.py\", line 843, in set_vm_power_state\n  File \"/tmp/ansible_vmware_guest_powerstate_payload_t6k9rlw8/ansible_vmware_guest_powerstate_payload.zip/ansible_collections/community/vmware/plugins/module_utils/vmware.py\", line 83, in wait_for_task\n  File \"<string>\", line 3, in raise_from\nansible_collections.community.vmware.plugins.module_utils.vmware.TaskError: ('Virtual machine requires 8 CPUs to operate, but the host hardware only provides 4.', None)\n",
    "module_stdout": "",
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
    "rc": 1
}

ISSUE TYPE
  • Bug Report
ANSIBLE VERSION



CONFIGURATION



ENVIRONMENT / OS
STEPS TO REPRODUCE
EXPECTED RESULTS
ACTUAL RESULTS

[Bug] [Photon OS 3] In Photon OS 3.x and earlier, yum repo's baseurl has been deprecated

SUMMARY

Photon OS 3.x and earlier puts repos on https://dl.bintray.com/, but now it has been replace by https://packages.vmware.com/photon. Before installing packages on Photon OS 3.x, those base urls must be updated.

2021-07-01 07:50:24,001 | TASK [Install package on VMware Photon OS 3.0] *************
task path: /root/ansible-vsphere-gos-validation/linux/utils/install_uninstall_package.yml:76
fatal: [localhost -> 10.186.37.169]: FAILED! => {
    "changed": true,
    "cmd": [
        "tdnf",
        "install",
        "-y",
        "gawk"
    ],
    "delta": "0:00:00.570000",
    "end": "2021-07-01 07:50:24.593864",
    "invocation": {
        "module_args": {
            "_raw_params": "tdnf install -y gawk",
            "_uses_shell": false,
            "argv": null,
            "chdir": null,
            "creates": null,
            "executable": null,
            "removes": null,
            "stdin": null,
            "stdin_add_newline": true,
            "strip_empty_ends": true,
            "warn": false
        }
    },
    "msg": "non-zero return code",
    "rc": 243,
    "start": "2021-07-01 07:50:24.023864",
    "stderr": "Error: 404 when downloading https://dl.bintray.com/vmware/photon_release_3.0_x86_64/repodata/repomd.xml\n. Please check repo url.\nError: Failed to synchronize cache for repo 'VMware Photon Linux 3.0(x86_64)' from 'https://dl.bintray.com/vmware/photon_release_3.0_x86_64'\nError: 404 when downloading https://dl.bintray.com/vmware/photon_extras_3.0_x86_64/repodata/repomd.xml\n. Please check repo url.\nError: Failed to synchronize cache for repo 'VMware Photon Extras 3.0(x86_64)' from 'https://dl.bintray.com/vmware/photon_extras_3.0_x86_64'\nError: 404 when downloading https://dl.bintray.com/vmware/photon_updates_3.0_x86_64/repodata/repomd.xml\n. Please check repo url.\nError: Failed to synchronize cache for repo 'VMware Photon Linux 3.0(x86_64) Updates' from 'https://dl.bintray.com/vmware/photon_updates_3.0_x86_64'\nError(1011) : No matching packages",
    "stderr_lines": [
        "Error: 404 when downloading https://dl.bintray.com/vmware/photon_release_3.0_x86_64/repodata/repomd.xml",
        ". Please check repo url.",
        "Error: Failed to synchronize cache for repo 'VMware Photon Linux 3.0(x86_64)' from 'https://dl.bintray.com/vmware/photon_release_3.0_x86_64'",
        "Error: 404 when downloading https://dl.bintray.com/vmware/photon_extras_3.0_x86_64/repodata/repomd.xml",
        ". Please check repo url.",
        "Error: Failed to synchronize cache for repo 'VMware Photon Extras 3.0(x86_64)' from 'https://dl.bintray.com/vmware/photon_extras_3.0_x86_64'",
        "Error: 404 when downloading https://dl.bintray.com/vmware/photon_updates_3.0_x86_64/repodata/repomd.xml",
        ". Please check repo url.",
        "Error: Failed to synchronize cache for repo 'VMware Photon Linux 3.0(x86_64) Updates' from 'https://dl.bintray.com/vmware/photon_updates_3.0_x86_64'",
        "Error(1011) : No matching packages"
    ],
    "stdout": "Refreshing metadata for: 'VMware Photon Linux 3.0(x86_64)'\nDisabling Repo: 'VMware Photon Linux 3.0(x86_64)'\nRefreshing metadata for: 'VMware Photon Extras 3.0(x86_64)'\nDisabling Repo: 'VMware Photon Extras 3.0(x86_64)'\nRefreshing metadata for: 'VMware Photon Linux 3.0(x86_64) Updates'\nDisabling Repo: 'VMware Photon Linux 3.0(x86_64) Updates'\nNo package \u001b[1m\u001b[30mgawk \u001b[0mavailable",
    "stdout_lines": [
        "Refreshing metadata for: 'VMware Photon Linux 3.0(x86_64)'",
        "Disabling Repo: 'VMware Photon Linux 3.0(x86_64)'",
        "Refreshing metadata for: 'VMware Photon Extras 3.0(x86_64)'",
        "Disabling Repo: 'VMware Photon Extras 3.0(x86_64)'",
        "Refreshing metadata for: 'VMware Photon Linux 3.0(x86_64) Updates'",
        "Disabling Repo: 'VMware Photon Linux 3.0(x86_64) Updates'",
        "No package \u001b[1m\u001b[30mgawk \u001b[0mavailable"
    ],
    "warnings": [
        "Platform linux on host localhost is using the discovered Python interpreter at /usr/bin/python3.7, but future installation of another Python interpreter could change the meaning of that path. See https://docs.ansible.com/ansible/2.11/reference_appendices/interpreter_discovery.html for more information."
    ]
}
ISSUE TYPE
  • Bug Report
ANSIBLE VERSION



CONFIGURATION



ENVIRONMENT / OS
STEPS TO REPRODUCE
EXPECTED RESULTS
ACTUAL RESULTS

[Bug][Linux][Windows] test case cpu_hot_add_basic/memory_hot_add_basic/cpu_multicores_per_socket improvement

SUMMARY

The logic of generating CPU/memory hotadd increase value list can be same and reused in test cases, cpu_hot_add_basic/memory_hot_add_basic/cpu_multicores_per_socket for Linux and Windows.

ISSUE TYPE
  • Bug Report
ANSIBLE VERSION
ansible 2.10.3
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.6.5 (default, Apr  1 2018, 05:46:30) [GCC 7.3.0]
CONFIGURATION



ENVIRONMENT / OS

Linux and Windows

STEPS TO REPRODUCE
EXPECTED RESULTS

Test cases and tasks improvement

ACTUAL RESULTS

There are some tasks can be reused among test cases.

[Bug] [Photon] Photon's nvme module is builtin, which can not be reloaded

SUMMARY
2021-06-30 16:54:13,030 | TASK [Unload and reload nvme driver] ***********************
task path: /root/ansible-vsphere-gos-validation/linux/vhba_hot_add_remove/wait_device_list_changed.yml:58
fatal: [localhost -> 10.184.84.3]: FAILED! => {
    "changed": true,
    "cmd": "rmmod nvme && modprobe nvme",
    "delta": "0:00:00.007494",
    "end": "2021-06-30 16:54:13.319141",
    "invocation": {
        "module_args": {
            "_raw_params": "rmmod nvme && modprobe nvme",
            "_uses_shell": true,
            "argv": null,
            "chdir": null,
            "creates": null,
            "executable": null,
            "removes": null,
            "stdin": null,
            "stdin_add_newline": true,
            "strip_empty_ends": true,
            "warn": false
        }
    },
    "msg": "non-zero return code",
    "rc": 1,
    "start": "2021-06-30 16:54:13.311647",
    "stderr": "rmmod: ERROR: Module nvme is builtin.",
    "stderr_lines": [
        "rmmod: ERROR: Module nvme is builtin."
    ],
    "stdout": "",
    "stdout_lines": [],
    "warnings": [
        "Platform linux on host localhost is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change the meaning of that path. See https://docs.ansible.com/ansible/2.11/reference_appendices/interpreter_discovery.html for more information."
    ]
}
ISSUE TYPE
  • Bug Report

[Bug] [Windows] GOSC test cases failed with VMware tools 10.3.10

SUMMARY
2021-05-11 10:32:53,011 | Failed at Play [gosc_sanity_staticip] **********************

2021-05-11 10:32:53,011 | TASK [Check guest customization state] *********************
task path: /root/ansible-vsphere-gos-validation/common/vm_wait_gosc_completed.yml:41
fatal: [localhost]: FAILED! => {
    "changed": false,
    "msg": "Not found 'ToolsDeployPkgPublishState: state=5, code=0' in vmware.log"
}

2021-05-11 11:01:44,011 | Failed at Play [gosc_sanity_dhcp] **************************

2021-05-11 11:01:44,011 | TASK [Check guest customization state] *********************
task path: /root/ansible-vsphere-gos-validation/common/vm_wait_gosc_completed.yml:41
fatal: [localhost]: FAILED! => {
    "changed": false,
    "msg": "Not found 'ToolsDeployPkgPublishState: state=5, code=0' in vmware.log"
}
ISSUE TYPE
  • Bug Report
ANSIBLE VERSION



CONFIGURATION
ansible 2.10.3
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.6.5 (default, Apr  1 2018, 05:46:30) [GCC 7.3.0]

ENVIRONMENT / OS

Windows

STEPS TO REPRODUCE
EXPECTED RESULTS

GOSC test case pass

ACTUAL RESULTS

GOSC test cases failed due to log issue

[Bug] [Window][Linux] Reloaded datastore variable doesn't take effect for setting remote tmp

SUMMARY

The datastore in vars/test.yml was overwritten from "test-ds" to "datastore2" at the playbook running, and ansible_remote_tmp was set to "/vmfs/volumes/{{ datastore }}" for copying local file to remote ESXi server datastore. But on remote host, the tmp folder turns to be "/vmfs/volumes/test-ds "

task path: /root/ansible-vsphere-gos-validation/windows/wintools_complete_install_verify/download_vmtools_and_transfer.yml:23
ok: [localhost] => {
    "msg": "Will transfer VMware tools install ISO to: /vmfs/volumes/datastore2/VMware-tools-windows-11.2.5-17337674.iso"
}
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
included: /root/ansible-vsphere-gos-validation/windows/wintools_complete_install_verify/../../common/transfer_file_remote.yml for localhost
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
<10.187.159.32> ESTABLISH SSH CONNECTION FOR USER: root
<10.187.159.32> SSH: EXEC sshpass -d11 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="root"' -o ConnectTimeout=10 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ControlPath=/root/.ansible/cp/0eb631b845 10.187.159.32 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo /vmfs/volumes/test-ds `"&& mkdir "` echo /vmfs/volumes/test-ds/ansible-tmp-1617762878.5430264-5411-33666457321937 `" && echo ansible-tmp-1617762878.5430264-5411-33666457321937="` echo /vmfs/volumes/test-ds/ansible-tmp-1617762878.5430264-5411-33666457321937 `" ) && sleep 0'"'"''
<10.187.159.32> (1, b'', b"mkdir: can't create directory '/vmfs/volumes/test-ds': Operation not permitted\n")
<10.187.159.32> Failed to connect to the host via ssh: mkdir: can't create directory '/vmfs/volumes/test-ds': Operation not permitted
TASK [Transfer file to remote server] ******************************************
task path: /root/ansible-vsphere-gos-validation/common/transfer_file_remote.yml:15
fatal: [localhost]: UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to create temporary directory.In some cases, you may have been able to authenticate and did not have permissions on the target directory. Consider changing the remote tmp path in ansible.cfg to a path rooted in \"/tmp\", for more error information use -vvv. Failed command was: ( umask 77 && mkdir -p \"` echo /vmfs/volumes/test-ds `\"&& mkdir \"` echo /vmfs/volumes/test-ds/ansible-tmp-1617762878.5430264-5411-33666457321937 `\" && echo ansible-tmp-1617762878.5430264-5411-33666457321937=\"` echo /vmfs/volumes/test-ds/ansible-tmp-1617762878.5430264-5411-33666457321937 `\" ), exited with result 1",
    "unreachable": true
}

By changing ansible_remote_tmp with environment variable ANSIBLE_REMOTE_TMP can resolve this issue.

ISSUE TYPE
  • Bug Report
ANSIBLE VERSION
ansible-playbook 2.10.7
  config file = /root/ansible-vsphere-gos-validation/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  executable location = /usr/bin/ansible-playbook
  python version = 3.9.1 (default, Feb 24 2021, 22:17:18) [GCC 10.2.0]
ENVIRONMENT / OS
./linux/deploy_vm/download_iso_and_transfer.yml
./windows/wintools_complete_install_verify/download_vmtools_and_transfer.yml

[v1.2][Bug] [OS Linux] User name and password of test.yaml are ineffective

SUMMARY

User name and password of test.yaml are prepared for the VM installed via OVA or ISO.
But after installation, VM takes the user name and password from RHEL/7/server_without_GUI/ks.cfg.

ISSUE TYPE
  • Bug Report
ANSIBLE VERSION
ansible [core 2.11.1] 
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /root/miniconda3/lib/python3.8/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /root/miniconda3/bin/ansible
  python version = 3.8.5 (default, Sep  4 2020, 07:30:14) [GCC 7.3.0]
  jinja version = 3.0.1
  libyaml = True
CONFIGURATION

ENVIRONMENT / OS

OS: RHEL-7
Configuration: RHEL/7/server_without_GUI/ks.cfg

STEPS TO REPRODUCE
  1. Configure test.yaml
  2. Use RHEL/7/server_without_GUI/ks.cfg as your KS file to installation (ISO).
  3. After instillation, check VM's username and password by default.
EXPECTED RESULTS
  1. After step 3, VM should take user name and password from test.yaml.
ACTUAL RESULTS
  1. After step 3, VM should take user name and password from RHEL/7/server_without_GUI/ks.cfg.
ADDTIONAL

Check RHEL/8/server_without_GUI/ks.cfg, it sets root user, but RHEL/7/server_without_GUI/ks.cfg sets "vmware" user.

[v1.2][New Feature][Linux] Collect cloud-init logs after GOSC

SUMMARY

Run cloud-init collect-logs can collect more information, for example

root@gosc-dhcp-vm-01 [ ~ ]# cloud-init collect-logs 
Wrote /root/cloud-init.tar.gz
root@gosc-dhcp-vm-01 [ ~ ]# tar -zxvf cloud-init.tar.gz 
cloud-init-logs-2021-04-20/
cloud-init-logs-2021-04-20/run/
cloud-init-logs-2021-04-20/run/cloud-init/
cloud-init-logs-2021-04-20/run/cloud-init/cloud-init-generator.log
cloud-init-logs-2021-04-20/run/cloud-init/ds-identify.log
cloud-init-logs-2021-04-20/run/cloud-init/cloud.cfg
cloud-init-logs-2021-04-20/run/cloud-init/.ds-identify.result
cloud-init-logs-2021-04-20/run/cloud-init/enabled
cloud-init-logs-2021-04-20/run/cloud-init/instance-data.json
cloud-init-logs-2021-04-20/run/cloud-init/instance-data-sensitive.json
cloud-init-logs-2021-04-20/run/cloud-init/.instance-id
cloud-init-logs-2021-04-20/run/cloud-init/network-config-ready
cloud-init-logs-2021-04-20/run/cloud-init/status.json
cloud-init-logs-2021-04-20/run/cloud-init/result.json
cloud-init-logs-2021-04-20/cloud-init-output.log
cloud-init-logs-2021-04-20/cloud-init.log
cloud-init-logs-2021-04-20/journal.txt
cloud-init-logs-2021-04-20/dmesg.txt
cloud-init-logs-2021-04-20/dpkg-version
cloud-init-logs-2021-04-20/version

We can add it into cloud-init GOSC test cases, and collect and retrieve these information after GOSC for furhter analysis or bug report.

ISSUE TYPE
  • Feature Idea
ENVIRONMENT / OS

Linux

ADDITIONAL INFORMATION

[Bug] [Windows] Add disable sleep task in Windows test setup

SUMMARY

VMware tools status is not running when Windows guest OS enter into sleep, so not get guest info in this situation, or may cause guest OS connection issue, e.g.,

xx.xx.xx.xx | UNREACHABLE! => {
    "changed": false,
    "msg": "ssl: HTTPSConnectionPool(host='xx.xx.xx.xx', port=5986): Max retries exceeded with url: /wsman (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f2675d1b400>: Failed to establish a new connection: [Errno 113] No route to host',))",
    "unreachable": true
}
ISSUE TYPE
  • Bug Report
ANSIBLE VERSION
ansible 2.10.3
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.6.5 (default, Apr  1 2018, 05:46:30) [GCC 7.3.0]

CONFIGURATION



ENVIRONMENT / OS

Windows

STEPS TO REPRODUCE
EXPECTED RESULTS

Try to fix connection issues or VM IP not get issues.

ACTUAL RESULTS
2021-05-11 02:17:53,011 | Failed at Play [e1000e_network_device_ops] *****************

2021-05-11 02:17:53,011 | TASK [Check VM guest IP and winrm connectable result] ******
task path: /root/ansible-vsphere-gos-validation/windows/utils/win_check_winrm.yml:25
fatal: [localhost]: FAILED! => {
    "changed": false,
    "msg": "vm_guest_ip is not defined or vm_guest_ip is empty, or not winrm not connectable."
}

[Bug] [Flatcar] Failed to get OVA os type after deployment on vSphere 6.7GA

SUMMARY

on vSphere 6.7GA, it failed to determine the guest OS type for Flatcar.

TASK [debug] *******************************************************************
task path: /root/ansible-vsphere-gos-validation/common/vm_wait_guest_fullname.yml:36
ok: [localhost] => {
    "msg": "Get VM guest fullname: Linux 5.10.38-flatcar Flatcar Container Linux by Kinvolk 2765.2.5 Oklo Flatcar Container Linux by Kinvolk 2765.2.5 (Oklo)"
}
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'

TASK [Get guest OS type for VM 'test-vm-2' based on guest id] ******************
task path: /root/ansible-vsphere-gos-validation/linux/deploy_vm/deploy_vm_from_ova.yml:138
ok: [localhost] => {
    "ansible_facts": {
        "ova_guest_os_type": "unknown"
    },
    "changed": false
}
ISSUE TYPE
  • Bug Report
ANSIBLE VERSION



CONFIGURATION



ENVIRONMENT / OS

Flatcar Linux

STEPS TO REPRODUCE
EXPECTED RESULTS
ACTUAL RESULTS

[Bug] [Linx] Failed to find linux/utils/add_online_repo.yml

SUMMARY
2021-04-19 08:23:25,019 | TASK [include_tasks] ***************************************
task path: /root/ansible-vsphere-gos-validation/linux/utils/install_uninstall_package.yml:41
fatal: [localhost]: FAILED! => {
    "reason": "Could not find or access '/root/ansible-vsphere-gos-validation/linux/utils/add_online_repo.yml' on the Ansible Controller."
}

ISSUE TYPE
  • Bug Report
ANSIBLE VERSION



CONFIGURATION



ENVIRONMENT / OS
STEPS TO REPRODUCE
EXPECTED RESULTS
ACTUAL RESULTS

[Bug] [OS version]Need to check vm_power_gather_facts.instance is defined in vm_wait_power_state.yml

SUMMARY

Need to check vm_power_gather_facts.instance is defined in vm_wait_power_state.yml.

TASK [Wait for VM power status to 'poweredOff'] ********************************
task path: /root/ansible-vsphere-gos-validation/common/vm_wait_power_state.yml:11
fatal: [localhost]: FAILED! => {
    "msg": "The conditional check 'vm_power_gather_facts.instance.hw_power_status == expected_power_status' failed. The error was: error while evaluating conditional (vm_power_gather_facts.instance.hw_power_status == expected_power_status): 'dict object' has no attribute 'instance'"
}
ISSUE TYPE
  • Bug Report

[Bug] [Windows] cpu_hotadd_basic test case failed

SUMMARY

cpu_hot_add_basic test case failed due to not defined variable.

ISSUE TYPE
  • Bug Report
ANSIBLE VERSION
ansible 2.10.3
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.6.5 (default, Apr  1 2018, 05:46:30) [GCC 7.3.0]

CONFIGURATION



ENVIRONMENT / OS

Windows 10

STEPS TO REPRODUCE
TASK [Set fact of the hotadd CPU test list] ************************************
task path: /root/ansible-vsphere-gos-validation/windows/cpu_hot_add_basic/cpu_hot_add_test_client.yml:10
ok: [localhost] => {
    "ansible_facts": {
        "cpu_hotadd_num_list": [
            2
        ]
    },
    "changed": false
}
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'

TASK [Set fact of the hotadd CPU test list] ************************************
task path: /root/ansible-vsphere-gos-validation/windows/cpu_hot_add_basic/cpu_hot_add_test_client.yml:14
fatal: [localhost]: FAILED! => {
    "msg": "The task includes an option with an undefined variable. The error was: 'hotadd_num_list' is undefined\n\nThe error appears to be in '/root/ansible-vsphere-gos-validation/windows/cpu_hot_add_basic/cpu_hot_add_test_client.yml': line 14, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Set fact of the hotadd CPU test list\n  ^ here\n"
}
EXPECTED RESULTS

Test case pass.

ACTUAL RESULTS

[Bug] [Linux][V1.1] Run test_setup before checking guest_os_ansible_distribution

SUMMARY
2021-04-15 05:26:11,015 | Failed at Play [lsilogicsas_vhba_device_ops] ***************

2021-04-15 05:26:11,015 | TASK [include_tasks] ***************************************
task path: /root/ansible-vsphere-gos-validation/linux/vhba_hot_add_remove/vhba_device_hot_add_remove.yml:7
fatal: [localhost]: FAILED! => {
    "msg": "The conditional check 'guest_os_ansible_distribution in [\"RedHat\", \"CentOS\"]' failed. The error was: error while evaluating conditional (guest_os_ansible_distribution in [\"RedHat\", \"CentOS\"]): 'guest_os_ansible_distribution' is undefined\n\nThe error appears to be in '/root/ansible-vsphere-gos-validation/linux/vhba_hot_add_remove/vhba_device_hot_add_remove.yml': line 7, column 11, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n      block:\n        - include_tasks: ../../common/print_test_result.yml\n          ^ here\n"
}

2021-04-15 05:26:12,015 | TASK [Exit testing when exit_testing_when_fail is set True] 
task path: /root/ansible-vsphere-gos-validation/linux/utils/test_rescue.yml:60
fatal: [localhost]: FAILED! => {
    "changed": false,
    "msg": "Failed to run test case lsilogicsas_vhba_device_ops"
}
ISSUE TYPE
  • Bug Report
ANSIBLE VERSION
    - name: "Skip test case because guest OS doesn't support {{ scsi_type }} controller"
      block:
        - include_tasks: ../../common/print_test_result.yml
          vars:
            test_result: "No Run"
        - meta: end_play
      when:
        - scsi_type in ["lsilogic", "lsilogicsas"]
        - guest_os_ansible_distribution in ["RedHat", "CentOS"]
        - guest_os_ansible_distribution_major_ver | int >= 8

    - include_tasks: ../utils/test_setup.yml
      vars:
        vmtools_check: "False

[Bug] [Windows] wintools_uninstall_verify failed

SUMMARY

Connection to VC/ESXi timeout.

2021-05-28 05:04:55,028 | Failed at Play [wintools_uninstall_verify] *****************

2021-05-28 05:04:55,028 | TASK [Set fact of VMware Tools installed status] ***********
task path: /root/ansible-vsphere-gos-validation/common/vm_get_vmtools_status.yml:25
fatal: [localhost]: FAILED! => {
    "msg": "The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'vmtools_info'\n\n
The error appears to be in '/root/ansible-vsphere-gos-validation/common/vm_get_vmtools_status.yml': line 25, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\n
The offending line appears to be:\n\n\n
- name: Set fact of VMware Tools installed status\n  ^ here\n"
}
ISSUE TYPE
  • Bug Report
ANSIBLE VERSION



CONFIGURATION



ENVIRONMENT / OS

VC/ESXi 6.7U3, Windows Server 2022

STEPS TO REPRODUCE
TASK [Display the result of getting VMware tools info] *************************
task path: /root/ansible-vsphere-gos-validation/common/vm_get_vmtools_status.yml:21
ok: [localhost] => {
    "get_vmtools_info": {
        "changed": false,
        "exception": "  File \"/tmp/ansible_vmware_guest_tools_info_payload_9l3mtguv/ansible_vmware_guest_tools_info_payload.zip/ansible_collections/community/vmware/plugins/module_utils/vmware.py\", line 608, in connect_to_api\n    service_instance = connect.SmartConnect(**connect_args)\n  File \"/usr/lib/python3.9/site-packages/pyVim/connect.py\", line 853, in SmartConnect\n    return Connect(host=host,\n  File \"/usr/lib/python3.9/site-packages/pyVim/connect.py\", line 265, in Connect\n    si, stub = __Login(host, port, user, pwd, service, adapter, version, path,\n  File \"/usr/lib/python3.9/site-packages/pyVim/connect.py\", line 377, in __Login\n    content, si, stub = __RetrieveContent(host, port, adapter, version, path,\n  File \"/usr/lib/python3.9/site-packages/pyVim/connect.py\", line 516, in __RetrieveContent\n    reraise(vim.fault.HostConnectFault, fault, traceback)\n  File \"/usr/lib/python3.9/site-packages/six.py\", line 702, in reraise\n    raise value.with_traceback(tb)\n  File \"/usr/lib/python3.9/site-packages/pyVim/connect.py\", line 504, in __RetrieveContent\n    content = si.RetrieveContent()\n  File \"/usr/lib/python3.9/site-packages/pyVmomi/VmomiSupport.py\", line 706, in <lambda>\n    self.f(*(self.args + (obj,) + args), **kwargs)\n  File \"/usr/lib/python3.9/site-packages/pyVmomi/VmomiSupport.py\", line 512, in _InvokeMethod\n    return self._stub.InvokeMethod(self, info, args)\n  File \"/usr/lib/python3.9/site-packages/pyVmomi/SoapAdapter.py\", line 1350, in InvokeMethod\n    conn.request('POST', self.path, req, headers)\n  File \"/usr/lib/python3.9/http/client.py\", line 1255, in request\n    self._send_request(method, url, body, headers, encode_chunked)\n  File \"/usr/lib/python3.9/http/client.py\", line 1301, in _send_request\n    self.endheaders(body, encode_chunked=encode_chunked)\n  File \"/usr/lib/python3.9/http/client.py\", line 1250, in endheaders\n    self._send_output(message_body, encode_chunked=encode_chunked)\n  File \"/usr/lib/python3.9/http/client.py\", line 1010, in _send_output\n    self.send(msg)\n  File \"/usr/lib/python3.9/http/client.py\", line 950, in send\n    self.connect()\n  File \"/usr/lib/python3.9/site-packages/pyVmomi/SoapAdapter.py\", line 1039, in connect\n    http_client.HTTPSConnection.connect(self)\n  File \"/usr/lib/python3.9/http/client.py\", line 1417, in connect\n    super().connect()\n  File \"/usr/lib/python3.9/http/client.py\", line 921, in connect\n    self.sock = self._create_connection(\n  File \"/usr/lib/python3.9/socket.py\", line 843, in create_connection\n    raise err\n  File \"/usr/lib/python3.9/socket.py\", line 831, in create_connection\n    sock.connect(sa)\n",
        "failed": true,
        "msg": "Unknown error while connecting to vCenter or ESXi API at xx.xx.xx.xx:443 : (vim.fault.HostConnectFault) {\n   dynamicType = <unset>,\n   dynamicProperty = (vmodl.DynamicProperty) [],\n   msg = '[Errno 110] Connection timed out',\n   faultCause = <unset>,\n   faultMessage = (vmodl.LocalizableMessage) []\n}"
    }
}
EXPECTED RESULTS

Test case wintools_uninstall_verify passed

ACTUAL RESULTS

[Bug] [Flatcar] Failed to set power state to poweredoff

SUMMARY
TASK [Display the current VM power state] *****************************************************************************
task path: /home/qiz/workspace/github/ansible-vsphere-gos-validation/common/vm_set_power_state.yml:36
ok: [localhost] => {
    "vm_power_state_get": "poweredOff"
}
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
META: 
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: qiz
<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /tmp `"&& mkdir "` echo /tmp/ansible-tmp-1625044854.6965873-416245-16791398874438 `" && echo ansible-tmp-1625044854.6965873-416245-16791398874438="` echo /tmp/ansible-tmp-1625044854.6965873-416245-16791398874438 `" ) && sleep 0'
redirecting (type: modules) ansible.builtin.vmware_guest_powerstate to community.vmware.vmware_guest_powerstate
Using module file /home/qiz/.ansible/collections/ansible_collections/community/vmware/plugins/modules/vmware_guest_powerstate.py
<127.0.0.1> PUT /home/qiz/.ansible/tmp/ansible-local-414616yjno5vmi/tmpfdpdsmc_ TO /tmp/ansible-tmp-1625044854.6965873-416245-16791398874438/AnsiballZ_vmware_guest_powerstate.py
<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /tmp/ansible-tmp-1625044854.6965873-416245-16791398874438/ /tmp/ansible-tmp-1625044854.6965873-416245-16791398874438/AnsiballZ_vmware_guest_powerstate.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python3 /tmp/ansible-tmp-1625044854.6965873-416245-16791398874438/AnsiballZ_vmware_guest_powerstate.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /tmp/ansible-tmp-1625044854.6965873-416245-16791398874438/ > /dev/null 2>&1 && sleep 0'

TASK [Set VM power state to 'powered-on'] *****************************************************************************
task path: /home/qiz/workspace/github/ansible-vsphere-gos-validation/common/vm_set_power_state.yml:42
fatal: [localhost]: FAILED! => {
    "changed": false,
    "module_stderr": "pyVmomi.VmomiSupport.InvalidPowerState: (vim.fault.InvalidPowerState) {\n   dynamicType = <unset>,\n   dynamicProperty = (vmodl.DynamicProperty) [],\n   msg = 'The attempted operation cannot be performed in the current state (Powered on).',\n   faultCause = <unset>,\n   faultMessage = (vmodl.LocalizableMessage) [],\n   requestedState = 'poweredOff',\n   existingState = 'poweredOn'\n}\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n  File \"/tmp/ansible-tmp-1625044854.6965873-416245-16791398874438/AnsiballZ_vmware_guest_powerstate.py\", line 100, in <module>\n    _ansiballz_main()\n  File \"/tmp/ansible-tmp-1625044854.6965873-416245-16791398874438/AnsiballZ_vmware_guest_powerstate.py\", line 92, in _ansiballz_main\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n  File \"/tmp/ansible-tmp-1625044854.6965873-416245-16791398874438/AnsiballZ_vmware_guest_powerstate.py\", line 40, in invoke_module\n    runpy.run_module(mod_name='ansible_collections.community.vmware.plugins.modules.vmware_guest_powerstate', init_globals=dict(_module_fqn='ansible_collections.community.vmware.plugins.modules.vmware_guest_powerstate', _modlib_path=modlib_path),\n  File \"/usr/lib/python3.8/runpy.py\", line 207, in run_module\n    return _run_module_code(code, init_globals, run_name, mod_spec)\n  File \"/usr/lib/python3.8/runpy.py\", line 97, in _run_module_code\n    _run_code(code, mod_globals, init_globals,\n  File \"/usr/lib/python3.8/runpy.py\", line 87, in _run_code\n    exec(code, run_globals)\n  File \"/tmp/ansible_vmware_guest_powerstate_payload_4fkzg7or/ansible_vmware_guest_powerstate_payload.zip/ansible_collections/community/vmware/plugins/modules/vmware_guest_powerstate.py\", line 273, in <module>\n  File \"/tmp/ansible_vmware_guest_powerstate_payload_4fkzg7or/ansible_vmware_guest_powerstate_payload.zip/ansible_collections/community/vmware/plugins/modules/vmware_guest_powerstate.py\", line 261, in main\n  File \"/tmp/ansible_vmware_guest_powerstate_payload_4fkzg7or/ansible_vmware_guest_powerstate_payload.zip/ansible_collections/community/vmware/plugins/module_utils/vmware.py\", line 855, in set_vm_power_state\n  File \"/tmp/ansible_vmware_guest_powerstate_payload_4fkzg7or/ansible_vmware_guest_powerstate_payload.zip/ansible_collections/community/vmware/plugins/module_utils/vmware.py\", line 83, in wait_for_task\n  File \"<string>\", line 3, in raise_from\nansible_collections.community.vmware.plugins.module_utils.vmware.TaskError: ('The attempted operation cannot be performed in the current state (Powered on).', None)\n",
    "module_stdout": "",
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
    "rc": 1
}

ISSUE TYPE
  • Bug Report
ANSIBLE VERSION

ansible-playbook [core 2.11.0] 
  config file = /home/qiz/workspace/github/ansible-vsphere-gos-validation/ansible.cfg
  configured module search path = ['/home/qiz/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
  ansible collection location = /home/qiz/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.8.5 (default, May 27 2021, 13:30:53) [GCC 9.3.0]
  jinja version = 2.11.3
  libyaml = True


ENVIRONMENT / OS

Flatcar

[Bug] [Windows][Intermittent] Failed to extract VMware Tools ISO to get PVSCSI driver for Windows installation

SUMMARY

When excuting Windows autoinstall on PVSCSI disk, it failed to extract ISO file to get PVSCSI driver and reported 7z is missed. But when I run it at the second time, the ISO can be extracted successfully.

2021-04-02 15:32:44,002 | TASK [Extract ISO file to get PVSCSI driver] ***************
task path: /root/ansible-vsphere-gos-validation/windows/deploy_vm/get_pvscsi_driver.yml:41
fatal: [localhost]: FAILED! => {
    "changed": false,
    "cmd": "mount -o loop,ro \"/root/ansible-vsphere-gos-validation/cache/VMware-tools-windows-11.2.5-17337674.iso\" \"/tmp/tmpetj7zmuc\"",
    "dest": "/root/ansible-vsphere-gos-validation/cache/",
    "files": [],
    "gid": 0,
    "group": "root",
    "image": "/root/ansible-vsphere-gos-validation/cache/VMware-tools-windows-11.2.5-17337674.iso",
    "invocation": {
        "module_args": {
            "dest": "/root/ansible-vsphere-gos-validation/cache/",
            "executable": null,
            "files": [
                "Program Files/VMware/VMware Tools/Drivers/pvscsi/Win8/amd64/pvscsi.cat",
                "Program Files/VMware/VMware Tools/Drivers/pvscsi/Win8/amd64/pvscsi.inf",
                "Program Files/VMware/VMware Tools/Drivers/pvscsi/Win8/amd64/pvscsi.sys",
                "Program Files/VMware/VMware Tools/Drivers/pvscsi/Win8/amd64/txtsetup.oem"
            ],
            "force": true,
            "image": "/root/ansible-vsphere-gos-validation/cache/VMware-tools-windows-11.2.5-17337674.iso"
        }
    },
    "mode": "0777",
    "msg": "Failed to mount ISO image '/root/ansible-vsphere-gos-validation/cache/VMware-tools-windows-11.2.5-17337674.iso' to '/tmp/tmpetj7zmuc', and we could not find executable '7z'.",
    "owner": "root",
    "rc": 32,
    "size": 135,
    "state": "directory",
    "stderr": "mount: /tmp/tmpetj7zmuc: failed to setup loop device for /root/ansible-vsphere-gos-validation/cache/VMware-tools-windows-11.2.5-17337674.iso.\n",
    "stderr_lines": [
        "mount: /tmp/tmpetj7zmuc: failed to setup loop device for /root/ansible-vsphere-gos-validation/cache/VMware-tools-windows-11.2.5-17337674.iso."
    ],
    "stdout": "",
    "stdout_lines": [],
    "uid": 0
}
ISSUE TYPE
  • Bug Report
ANSIBLE VERSION
ansible 2.10.7
  config file = /root/ansible-vsphere-gos-validation/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.9.1 (default, Feb 24 2021, 22:17:18) [GCC 10.2.0]
CONFIGURATION
ANSIBLE_SSH_RETRIES(/root/ansible-vsphere-gos-validation/ansible.cfg) = 5
DEFAULT_CALLBACK_PLUGIN_PATH(/root/ansible-vsphere-gos-validation/ansible.cfg) = ['/root/ansible-vsphere-gos-validation/plugin']
DEFAULT_CALLBACK_WHITELIST(/root/ansible-vsphere-gos-validation/ansible.cfg) = ['timer']
DISPLAY_SKIPPED_HOSTS(/root/ansible-vsphere-gos-validation/ansible.cfg) = False
RETRY_FILES_ENABLED(/root/ansible-vsphere-gos-validation/ansible.cfg) = False
ENVIRONMENT / OS
Testbed version: vSphere 7.0 U2
OS: Windows Server 2022
new_vm: true
vm_deploy_method: iso
secureboot_enabled: false
firmware: efi
boot_disk_controller: paravirtual
network_adapter_type: vmxnet3
cdrom_controller_type: ide
STEPS TO REPRODUCE

Deploy a new VM and set boot disk controller to paravirtual.

EXPECTED RESULTS

Windows can be installed successfully.

ACTUAL RESULTS

Windows installation failed at extracting VMware Tools ISO for getting pvscsi driver.

[Bug] [Plugin]_print_testbed_info failed due to argument of type 'NoneType' is not iterable

SUMMARY
[WARNING]: Failure using method (v2_playbook_on_stats) in callback plugin
(<ansible.plugins.callback.ansible_vsphere_gosv_log.CallbackModule object at 0x7fd50b21d400>): argument of type
'NoneType' is not iterable
Callback Exception: 
  File "/usr/local/lib/python3.8/dist-packages/ansible/executor/task_queue_manager.py", line 441, in send_callback
    method(*new_args, **kwargs)
   File "/home/qiz/workspace/github/ansible-vsphere-gos-validation/plugin/ansible_vsphere_gosv_log.py", line 831, in v2_playbook_on_stats
    self._print_testbed_info()
   File "/home/qiz/workspace/github/ansible-vsphere-gos-validation/plugin/ansible_vsphere_gosv_log.py", line 327, in _print_testbed_info
    'vcenter_hostname' in self.testing_vars and \
ISSUE TYPE
  • Bug Report
ANSIBLE VERSION
# /home/qiz/.ansible/collections/ansible_collections
Collection        Version
----------------- -------
ansible.netcommon 2.0.2  
ansible.posix     1.2.0  
ansible.utils     2.1.0  
ansible.windows   1.5.0  
community.crypto  1.6.2  
community.general 3.0.0  
community.vmware  1.9.0  
community.windows 1.3.0 
CONFIGURATION
CALLBACKS_ENABLED(/home/qiz/workspace/github/ansible-vsphere-gos-validation/ansible.cfg) = ['timer']
DEFAULT_CALLBACK_PLUGIN_PATH(/home/qiz/workspace/github/ansible-vsphere-gos-validation/ansible.cfg) = ['/home/qiz/work>
DEFAULT_HOST_LIST(/home/qiz/workspace/github/ansible-vsphere-gos-validation/ansible.cfg) = ['/home/qiz/workspace/githu>
DISPLAY_SKIPPED_HOSTS(/home/qiz/workspace/github/ansible-vsphere-gos-validation/ansible.cfg) = False
RETRY_FILES_ENABLED(/home/qiz/workspace/github/ansible-vsphere-gos-validation/ansible.cfg) = False
ENVIRONMENT / OS
STEPS TO REPRODUCE

Run main.yml without an empty test.yml file.

[Bug] [Flatcar] Flatcar will be auto updated if a new version is available

SUMMARY

When flatcar detected a new version, it will automatically reboot the guest in 5 minutes

Broadcast message from locksmithd at 2021-06-30 01:12:57.435199363 +0000 UTC m
System reboot in 5 minutes!

To disable auto update:
If you wish to disable automatic updates permanently, use can configure this with a Container Linux Config. This example will stop update-engine, which executes the updates, and locksmithd, which coordinates reboots across the cluster:

systemd:
  units:
    - name: update-engine.service
      mask: true
    - name: locksmithd.service
      mask: true

Need to disable the auto reboot strategy.

ISSUE TYPE
  • Bug Report
ANSIBLE VERSION

ansible-playbook [core 2.11.1] 
  config file = /root/ansible-vsphere-gos-validation/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible-playbook
  python version = 3.9.1 (default, May 19 2021, 10:27:03) [GCC 10.2.0]
  jinja version = 3.0.1
  libyaml = True


ENVIRONMENT / OS

Flatcar

[Bug] [OL8] Failed to get installed package information

SUMMARY

Installed package information was not retrieved correctly

TASK [Print package info] ******************************************************
task path: /root/ansible-vsphere-gos-validation/linux/utils/get_installed_package_info.yml:53
ok: [localhost] => {
    "package_info": {
        "Architecture": "x86_64"
    }
}
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'

TASK [Check package open-vm-tools is present] **********************************
task path: /root/ansible-vsphere-gos-validation/linux/open_vm_tools/check_ovt_package.yml:18
fatal: [localhost]: FAILED! => {
    "assertion": "package_info.Name is defined",
    "changed": false,
    "evaluated_to": false,
    "msg": "Package 'open-vm-tools' is not installed"
}
ISSUE TYPE
  • Bug Report
ANSIBLE VERSION



CONFIGURATION



ENVIRONMENT / OS
STEPS TO REPRODUCE
EXPECTED RESULTS
ACTUAL RESULTS

[v1.2][Bug] Get or set VM files related paths variable once

SUMMARY

In test cases and common tasks, there are some same tasks to get or set VM datastore path, VM files path, or VM vmware log path, we can set this variable in env_setup once to avoid duplicate tasks.

  1. VM datastore path is required to set as the ESXi remote temp path when adding ESXi host to in memory inventory.

  2. VM files path is required to transfer seed iso.

  3. VM vmware.log file path is required in test cases to check test result.

etc.

ISSUE TYPE
  • Bug Report
ANSIBLE VERSION
ansible 2.10.3
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.6.5 (default, Apr  1 2018, 05:46:30) [GCC 7.3.0]


CONFIGURATION



ENVIRONMENT / OS

All

STEPS TO REPRODUCE
EXPECTED RESULTS
ACTUAL RESULTS

[Bug] [Flatcar]/usr/bin/rescan-scsi-bus.sh doesn't exit in Flatcar

SUMMARY
2021-06-29 03:47:12,029 | TASK [Rescan all scsi devices] *****************************
task path: /root/ansible-vsphere-gos-validation/linux/vhba_hot_add_remove/wait_device_list_changed.yml:32
An exception occurred during task execution. The full traceback is:
  File "/tmp/ansible_ansible.legacy.command_payload_6xkgn65h/ansible_ansible.legacy.command_payload.zip/ansible/module_utils/basic.py", line 2016, in run_command
    cmd = subprocess.Popen(args, **kwargs)
  File "/opt/active_python/lib/python3.6/subprocess.py", line 707, in __init__
    restore_signals, start_new_session)
  File "/opt/active_python/lib/python3.6/subprocess.py", line 1326, in _execute_child
    raise child_exception_type(errno_num, err_msg)

fatal: [localhost -> 10.193.26.185]: FAILED! => {
    "changed": false,
    "cmd": "/usr/bin/rescan-scsi-bus.sh -a -r",
    "invocation": {
        "module_args": {
            "_raw_params": "/usr/bin/rescan-scsi-bus.sh -a -r",
            "_uses_shell": false,
            "argv": null,
            "chdir": null,
            "creates": null,
            "executable": null,
            "removes": null,
            "stdin": null,
            "stdin_add_newline": true,
            "strip_empty_ends": true,
            "warn": false
        }
    },
    "msg": "[Errno 2] No such file or directory: b'/usr/bin/rescan-scsi-bus.sh'",
    "rc": 2,
    "stderr": "",
    "stderr_lines": [],
    "stdout": "",
    "stdout_lines": []
}
ISSUE TYPE
  • Bug Report
ANSIBLE VERSION
ansible-playbook [core 2.11.1] 
  config file = /root/ansible-vsphere-gos-validation/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible-playbook
  python version = 3.9.1 (default, May 19 2021, 10:27:03) [GCC 10.2.0]
  jinja version = 3.0.1
  libyaml = True
ENVIRONMENT / OS

Flatcar 2765.2.5 x86_64

[Bug] [Windows] Failed to establish a new connection to guest OS after power on

SUMMARY
redirecting (type: modules) ansible.builtin.win_shell to ansible.windows.win_shell
included: /root/ansible-vsphere-gos-validation/windows/cpu_multicores_per_socket/../cpu_hot_add_basic/../utils/win_get_cpu_cores_sockets.yml for localhost
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
Read vars_file '{{ testing_vars_file | default('../../vars/test.yml') }}'
redirecting (type: modules) ansible.builtin.win_shell to ansible.windows.win_shell
Using module file /root/.ansible/collections/ansible_collections/ansible/windows/plugins/modules/win_shell.ps1
Pipelining is enabled.
<xx.xx.xx.xx> ESTABLISH WINRM CONNECTION FOR USER: test on PORT 5986 TO xx.xx.xx.xx

TASK [Get number of logical processors in Windows guest OS] ********************
task path: /root/ansible-vsphere-gos-validation/windows/utils/win_get_cpu_cores_sockets.yml:10
fatal: [localhost]: UNREACHABLE! => {
    "changed": false,
    "msg": "basic: HTTPSConnectionPool(host='xx.xx.xx.xx', port=5986): Max retries exceeded with url: /wsman (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fe3fc6a4a30>: Failed to establish a new connection: [Errno 111] Connection refused'))",
    "unreachable": true
}
ISSUE TYPE
  • Bug Report
ANSIBLE VERSION



CONFIGURATION



ENVIRONMENT / OS

Windows 10

STEPS TO REPRODUCE

Failed test case: cpu_multicores_per_socket

EXPECTED RESULTS

No connection issue after VM power on if network works

ACTUAL RESULTS

[Bug] [Photon] Unable to find custom value key isolation.device.connectable.disable

SUMMARY

2021-06-28 04:03:12,028 | Failed at Play [device_list] *******************************

2021-06-28 04:03:12,028 | TASK [Set custom configue values for VM] *******************
task path: /root/ansible-vsphere-gos-validation/common/vm_set_extra_config.yml:8
fatal: [localhost]: FAILED! => {
    "changed": false,
    "invocation": {
        "module_args": {
            "advanced_settings": [],
            "annotation": null,
            "cdrom": [],
            "cluster": null,
            "convert": null,
            "customization": {
                "autologon": null,
                "autologoncount": null,
                "dns_servers": null,
                "dns_suffix": null,
                "domain": null,
                "domainadmin": null,
                "domainadminpassword": null,
                "existing_vm": null,
                "fullname": null,
                "hostname": null,
                "hwclockUTC": null,
                "joindomain": null,
                "joinworkgroup": null,
                "orgname": null,
                "password": null,
                "productid": null,
                "runonce": null,
                "timezone": null
            },
            "customization_spec": null,
            "customvalues": [
                {
                    "key": "isolation.device.connectable.disable",
                    "value": "FALSE"
                },
                {
                    "key": "isolation.device.edit.disable",
                    "value": "FALSE"
                }
            ],
            "datacenter": "ansible_test",
            "datastore": null,
            "delete_from_inventory": false,
            "disk": [],
            "esxi_hostname": null,
            "folder": "/ansible_test/vm",
            "force": false,
            "guest_id": null,
            "hardware": {
                "boot_firmware": null,
                "cpu_limit": null,
                "cpu_reservation": null,
                "hotadd_cpu": null,
                "hotadd_memory": null,
                "hotremove_cpu": null,
                "iommu": null,
                "max_connections": null,
                "mem_limit": null,
                "mem_reservation": null,
                "memory_mb": null,
                "memory_reservation_lock": null,
                "nested_virt": null,
                "num_cpu_cores_per_socket": null,
                "num_cpus": null,
                "scsi": null,
                "secure_boot": null,
                "version": null,
                "virt_based_security": null
            },
            "hostname": "10.161.163.246",
            "is_template": false,
            "linked_clone": false,
            "name": "photon-os-4.0",
            "name_match": "first",
            "networks": [],
            "password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "port": 443,
            "proxy_host": null,
            "proxy_port": null,
            "resource_pool": null,
            "snapshot_src": null,
            "state": "present",
            "state_change_timeout": 0,
            "template": null,
            "use_instance_uuid": false,
            "username": "[email protected]",
            "uuid": null,
            "validate_certs": false,
            "vapp_properties": [],
            "wait_for_customization": false,
            "wait_for_customization_timeout": 3600,
            "wait_for_ip_address": false,
            "wait_for_ip_address_timeout": 300
        }
    },
    "msg": "Unable to find custom value key isolation.device.connectable.disable"
}

ISSUE TYPE
  • Bug Report
ANSIBLE VERSION



CONFIGURATION



ENVIRONMENT / OS
STEPS TO REPRODUCE
EXPECTED RESULTS
ACTUAL RESULTS

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.