6

我正在尝试在我的 Mac 上使用 Ansible 运行 Vagrant 来创建和配置 Windows 7 VM。当我不在 Vagrantfile 中调用 Ansible 时,我能够“流浪”。

我正在使用以下 playbook.yml

---
- hosts: all
  tasks:
    - name: run win ping
      win_ping:

当我将 ansible 代码添加到我的 Vagrantfile 时,我收到以下错误

GATHERING FACTS *************************************************************** 
failed: [default] => {"failed": true, "parsed": false}
/bin/sh: /usr/bin/python: No such file or directory

对我来说,这个错误意味着它无法找到 Python,因为它正在寻找 Python,就好像它是一台 Linux 机器一样。

另外,我跑了

ansible windows -m win_ping

其中 windows 是 Vagrant 提供的 VM 的 IP 地址,所以我怀疑问题不在于 Ansible,而在于 Vagrant 如何调用 Ansible。

有没有人为 Windows VM 尝试过 Vagrant + Ansible?是否有明显的我遗漏的东西(也许是传递给 Ansible 的选项)?

我正在使用 Vagrant 1.7.2 版和 Ansible 1.8.3 版

4

2 回答 2

2

通过 Ansible 配置 Windows 机器(Vagrant、VM 或真机),配置首先要重要得多。在制作你的剧本之前,你应该有一个正确的配置。

拥有一个由 Vagrant 管理的 Windows 机器,你的配置文件group_vars/windows-dev应该包含如下内容:

ansible_user: IEUser
ansible_password: Passw0rd!
ansible_port: 55986 # not 5986, as we would use for non-virtualized environments
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore

请务必插入正确的凭据并为ansible-port. 使用 Vagrant,您可以从 Vagrant 生成的日志消息中获取正确的端口vagrant up。就我而言,这看起来像这样:

==> default: Forwarding ports...
    default: 5985 (guest) => 55985 (host) (adapter 1)
    default: 5986 (guest) => 55986 (host) (adapter 1)

我的Vagrantfile 可以在这里找到,如果你有兴趣的话。它使用来自https://developer.microsoft.com/en-us/microsoft-edge/tools/vms的 Windows 10 Stable (14.xxx)映像上的 Microsoft Edge 。

现在win_ping模块应该可以工作了——假设你已经在你的 Windows 机器上完成了所有必要的准备步骤,这些步骤以执行脚本ConfigureRemotingForAnsible.ps1为中心(更多信息可以在这篇博文的使 Windows Ansible 准备就绪章节中找到):

ansible windows-dev -i hostsfile -m win_ping

只有,如果这给了你一个SUCCESS你应该继续制作你的剧本。

于 2017-01-04T05:03:15.307 回答
0

在我的 Windows 配置手册中,我在标题中设置了这个:

收集事实:没有

于 2016-01-15T09:24:54.200 回答