我正试图在Mac上使用Ansible运行Vagrant,以创建和配置Windows 7虚拟机。当我不在流浪者档案中调用Ansible时,我可以"流浪"。
我正在使用以下剧本。yml
---
- hosts: all
tasks:
- name: run win ping
win_ping:
当我将可翻译代码添加到我的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虚拟机上尝试过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在vagrant up
之后生成的日志消息中获得正确的端口。在我的情况下,这看起来像这样:
==> default: Forwarding ports...
default: 5985 (guest) => 55985 (host) (adapter 1)
default: 5986 (guest) => 55986 (host) (adapter 1)
如果你感兴趣的话,我的流浪者档案可以在这里找到。它在Windows 10 Stable(14.xxx)上使用Microsoft Edge映像https://developer.microsoft.com/en-us/microsoft-edge/tools/vms.
现在win_ping模块应该可以工作了——假设你已经在你的Windows盒子上完成了所有必要的准备步骤,这些步骤围绕着执行脚本ConfigureRemotingForAnsible.ps1(更多信息可以在本博客文章的使Windows Ansible章节中找到):
ansible windows-dev -i hostsfile -m win_ping
只是,如果这给了你一个SUCCESS
,你应该继续制定你的剧本。
在我的Windows配置手册中,我在标题中设置了这个:
gather_facts:no