【问题标题】:Installing VMware Tools on virtual machines using Ansible使用 Ansible 在虚拟机上安装 VMware Tools
【发布时间】:2016-09-08 19:03:17
【问题描述】:

我正在尝试在我的来宾计算机上的各种操作系统上安装 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

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

好的:[myhost.com]
任务 [debian |安装 open-vm-tools] ****************************************** 任务路径:/Users/Desktop/Ansible/vmwaretools .yml:5 跳过: [myhost.com] => {“改变”:假,“skip_reason”: “条件检查失败”、“跳过”:true}

TASK [通过 Chocolatey 安装 vmware 工具] ************************************* 任务路径:/Users/Desktop/Ansible/vmwaretools.yml :9 跳过: [myhost.com] => {“改变”:假,“skip_reason”: “条件检查失败”、“跳过”:true}

播放回顾 ****************************************************** ******************* myhost.com : 好的=1 已更改=0 无法访问=0
失败=0

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

【问题讨论】:

  • 连接到虚拟机的部分在哪里?我只看到一个主机 - myhost.com
  • 只有一台主机。我应该这样做hosts: my-host 而不是all。但没想到会有所作为。
  • 对不起,如果这看起来有点愚蠢。我还是一个学习者。你是什​​么意思连接到虚拟机?我的假设是,一旦你连接到主机系统,它就可以访问每个 VM 并检查分发是否匹配,如果匹配,它会在 VM 上安装 vmware 工具。我错了吗?如果不是,请给我解释一下。我对此还是很陌生。
  • 我感觉你昨天用不同的帐户问了a question,我回答了你的问题。您删除了问题(连同我的回答),现在使用我回答中的建议发布了一个新问题。这不是特别的社交行为,你知道...
  • @techraf 是的,我做到了。它对这个问题有很多反对意见,所以我有一段时间无法提问(我创建新帐户的原因)。我决定用你的建议提出一个更好的问题。我只是删除了它,因为我不希望出现重复的问题。

标签: virtual-machine ansible ansible-playbook vmware-tools


【解决方案1】:

来自您的评论:

我的假设是,一旦您连接到主机系统,它就可以访问每个虚拟机并检查分配是否匹配,如果匹配,它会在虚拟机上安装 vmware 工具。

没有。 Ansible 必须连接到每个虚拟机并在该机器上运行 playbook。无法将任务委派给主机。

即使您在特定机器上运行 ESXi 主机并选择“安装 VMware Tools”,它所做的唯一事情就是将 ISO 映像挂载到机器上。然后安装过程在本地进行(通过手动管理员操作或通过自动运行)。

为什么它说条件失败检查?

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

when: ansible_distribution == "Windows"

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

"ansible_distribution": "Microsoft Windows NT 10.0.14366.0"

你需要使用:

when: ansible_os_family == "Windows"

【讨论】:

  • 再次感谢您的回复。现在更清楚了。我是否必须在我的虚拟机上安装 win_chocalatey 才能使win_chocolatey: name=vmware-tools state=present 工作?
  • 是的,你正式在 PowerShell iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex
猜你喜欢
  • 2015-08-06
  • 2013-08-04
  • 2018-10-27
  • 2021-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-26
  • 1970-01-01
相关资源
最近更新 更多