使用 Ansible 在虚拟机上安装 VMware Tools

Installing VMware Tools on virtual machines using Ansible

我正在尝试在我的来宾计算机上的各种 OS 上安装 VMware Tools。这是我现在的代码。

---
- hosts: all

  tasks:
        -   name: debian | installing open-vm-tools
            apt: name=open-vm-tools state=present
            when: ansible_os_family == "Debian"

        -   name: install vmware tools via Chocolatey
            win_chocolatey: name=vmware-tools state=present
            when: ansible_distribution  == "Windows"

这是我的 hosts.ini 文件的样子:

[my-host]
myhost.com  ansible_ssh_pass=mypw ansible_ssh_user=root

这是我用来 运行 它的命令。哪个有效。

ansible-playbook -i hosts.ini vmwaretools.yml

但是,这是我 运行 之后收到的消息。

ok: [myhost.com]
TASK [debian | installing open-vm-tools] *************************************** task path: /Users/Desktop/Ansible/vmwaretools.yml:5 skipping: [myhost.com] => {"changed": false, "skip_reason": "Conditional check failed", "skipped": true}

TASK [install vmware tools via Chocolatey] ************************************* task path: /Users/Desktop/Ansible/vmwaretools.yml:9 skipping: [myhost.com] => {"changed": false, "skip_reason": "Conditional check failed", "skipped": true}

PLAY RECAP ********************************************************************* myhost.com : ok=1 changed=0 unreachable=0
failed=0

为什么说条件失败检查?我确定我有带有 Debian 和 Windows 运行ning 的虚拟机。知道为什么会这样吗?

来自您的评论:

My assumption is that, once you connect to the host system, it has access to each VM and checks to see if the distribution matches, and if it does, it installs vmware tools on the VM.

没有。 Ansible 必须连接到每个虚拟机和该机器上的 运行 剧本。无法将任务委托给主机。

即使您 运行 ESXi 主机和 select "Install VMware Tools" 在特定机器上,它唯一做的就是将 ISO 映像安装到机器上。然后安装过程在本地进行(通过手动管理员操作或通过自动运行)。

Why does it say conditional fail checked?

您正在 运行 不是 Debian 的 VMware 主机上安装剧本。第二个条件永远不会成立:

when: ansible_distribution == "Windows"

ansible_distribution 包含更详细的信息,例如:

"ansible_distribution": "Microsoft Windows NT 10.0.14366.0"

您需要使用:

when: ansible_os_family == "Windows"