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