我试图在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

最佳答案

首先,通过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 up之后从Vagrant生成的日志消息中获取正确的端口。就我而言,这看起来像这样:
==> default: Forwarding ports...
    default: 5985 (guest) => 55985 (host) (adapter 1)
    default: 5986 (guest) => 55986 (host) (adapter 1)

如果您有兴趣,请给我Vagrantfile could be found here。它使用来自https://developer.microsoft.com/en-us/microsoft-edge/tools/vms的Windows 10稳定版(14.xxx)上的Microsoft Edge。

现在win_ping模块应该工作了-假设您已经在Windows框中完成了所有必要的准备步骤,这些步骤围绕执行脚本ConfigureRemotingForAnsible.ps1(更多信息,请参见this blog post中的使Windows成为Ansible就绪章节):
ansible windows-dev -i hostsfile -m win_ping

仅,如果这给您提供了SUCCESS,则应继续制作剧本。

关于Windows VM带有Ansible的Vagrant,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28637155/

10-14 02:57