windows - Ansible Delegate_to WinRM

标签 windows powershell automation ansible

我正在使用 ansible vsphere_guest 模块在 VMWare 环境中启动基本 Windows 计算机。在我的剧本中,为此我设置了Hosts: 127.0.0.1 connection: local。我这样做的原因是我相信我没有针对任何特定主机的剧本,因为我还没有。相反,我想在本地运行剧本。

当它运行时,我得到一个新的 Shiny 的 Windows 服务器虚拟机。我现在想做的是重命名该虚拟机的计算机名称。为此,我尝试上传并运行一个 powershell 脚本,例如 rename_host.ps1 $newHostname。据我了解,我需要使用脚本模块来执行此操作。不过,这次我想定位我的全新虚拟机,我通过事实 {{ newvm_ipaddress }} 获取了该虚拟机的 IP 地址。

但是,当我尝试使用 delegate_to: "{{ newvm_ipaddress}}" 运行此脚本时,它尝试以 SSH 方式运行。 SSH 不起作用,我的目标是带有远程 powershell 的 Windows 机器。

有没有办法设置连接以在 delegate_to 上下文中使用 winRM?也许有更好的方法来做到这一点?

感谢您的帮助

最佳答案

我设法解决了这个问题。答案是 ansible 模块“add_host”。我在 vsphere_guest 下进行了如下操作。这会创建一个新的内存主机,然后可以由不同的播放访问。

- add_host group=new_machine name={{ vm_ipaddress }} ansible_connection=winrm

在此之后,我就有了一个可以针对该主机的新游戏。

- 主机:new_machine

还要注意,变量不会跨越不同的主机。解决方案是在 play A 中使用 set_fact 模块,然后可以从 play B 中访问该模块

-设置事实: vm_ipaddress: "{{ hw_eth0.ipaddresses[1] }}"#hw_eth0 是从 vsphere_guest 模块返回的事实

关于windows - Ansible Delegate_to WinRM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37793572/

相关文章:

windows - 通过 Windows 批处理从 svnlook 获取日志消息

json - cURL到PowerShell-哈希表

PowerShell - 在网络共享上搜索文件时 Get-ChildItem 太慢

ubuntu - 自动化 Virtualbox 机器中的操作

windows - 更新帮助和保存帮助不起作用

javascript - 如何在winjs中的repeater元素中绑定(bind)点击事件?

c++ - 热键、快捷键和加速键有什么区别?

powershell - 以另一个用户身份运行 PowerShell 并启动脚本

delphi - IDE中的delphi软件包自动化安装程序

python - 如何为现有项目自动创建新的 xcode 目标