专注于 Linux/Unix 平台. 如果你想编写 Windows 的 ansible 模块该怎么办呢? Windows

就如你刚所相识到的,Ansible默认是通过SSH协议来打点Linux/Unix处事器.

从1.7版本开始,Ansible也开始支持Windows呆板的打点.不外是通过本机的PowerShell来实现长途打点,而不是SSH.

Ansible仍然通过一台Linux系统呆板来举办会合打点,利用Python的 “winrm” 模块来和长途主机交互.

在打点的进程是 Ansible无需在长途主机上安装任何特另外软件,Ansible仍然利用 agentless(非c/s架构) 来担保其在 Linux/Unix的风行度.

需要留意的是有开始这章前你最好对对 Ansible 有一个预先的相识,假如你还没有写过一个 Playbook, 那最好先跳到playbook的章节先相识熟悉再开始本章内容.

On a Linux control machine:

pip install #egg=pywinrm

假如你想通度日动目次毗连域帐户举办宣布(相对当地帐户在长途主机上建设):

pip install kerberos

Kerberos 在 OS X 和很多 Linux 刊行版中是默认安装且设置好的.假如你的打点机上还没有安装,那你需要执行如上的呼吁.

Ansible’s支持windows需要依赖于少量尺度变量来表白长途主机的username, password, and connection type (windows).这些变量大部门都很容易被配置好.在 Ansible 中通过用来取代 SSH-keys 或 暗码输入:

[windows] winserver1.example.com winserver2.example.com

在 group_vars/windows.yml,界说如下 inventory 变量:

# it is suggested that these be encrypted with ansible-vault: # ansible-vault edit group_vars/windows.yml ansible_ssh_user: Administrator ansible_ssh_pass: SecretPasswordGoesHere ansible_ssh_port: 5986 ansible_connection: winrm

需要留意的是这里的 ssh_port 不是真正的SSH协议的端口,but this is a holdover variable name from how Ansible is mostly an SSH-oriented system.(这句也没看懂)再反复一遍,Windows 打点主机不是通过SSH协议.

假如你已经安装了 kerberos 模块和 ansible_ssh_user 包罗 @ (e.g. username@realm), Ansible会先实验Kerberos认证. * 这种方法主要用你通过Kerberos在长途主机上的认证而不是 ansible_ssh_user * .假如上述步伐失败了,要么是因为你没有在打点机上签署(signed into)Kerberos,要么是因为长途主机上对应的域帐户不行用,接着 Ansible 将返回原始(“plain”)username/password的认证方法.

当你利用 playbook 时,请不要健忘指定 –ask-vault-pass 提供暗码来解锁文件.

利用如下呼吁来测试你的设置,实验毗连你的 Windows 节点.留意:这不是ICMP ping,只是操作 Windows 长途东西来检测 Ansible 的信道是否正常:

ansible windows [-i inventory] -m win_ping --ask-vault-pass

假如你还没有在你的系统上做任何筹备事情,那上面的呼吁是无法正常事情的. 在下面最近的章节将会先容 “how to enable PowerShell remoting” - 假如有需要的话也将先容 “how to upgrade PowerShell to a version that is 3 or higher” .

你可以稍后再执行该呼吁,以确保一切都能正常事情.

为了 Ansible 能打点你的windows呆板,你将必需开启并设置长途呆板上PowerShell.

为了能自动化配置 WinRM,你可以在长途呆板上执行 this PowerShell script

Admins有大概但愿微调设置,譬喻耽误证逾期时间.

Note

Windows 7 和 Server 2008 R2 系统因为 Windows Management Framework 3.0的BUG,你必需安装 hotfix 来制止内存溢出(OOM)和仓库异常. 新安装的 Server 2008 R2 系统没有进级到最新版本的均存在这个问题.

Windows 8.1 and Server 2012 R2 不受影响是因为他们自身默认利用的是 Windows Management Framework 4.0.

大都 Ansible Windows 模块需要 PowerShell 3.0 或更高版本,同时也需要在其基本上运行安装剧本. 需要留意的是 PowerShell 3.0 只在 Windows 7 SP1 ,Windows Server 2008 SP1, 和更新的windows宣布版才被支持.

找到 Ansible 的checkout版本,复制 copy the examples/scripts/upgrade_to_ps3.ps1 剧本到长途主机同时以Administrator脚色的帐户运行 PowerShell 节制台. 你就可以运行 PowerShell 3 并可以通过上面先容的 win_ping 技能来测试连通性.

大大都 Ansible 模块尤其焦点Ansible设计来组合 Linux/Unix 呆板和任意 web services. 尽量 “windows” subcategory of the Ansible module index 罗列了各类各校的 Windows 模块.

欣赏上面的索引查察可用模块.

许多环境下, 其实没有须要写可能利用 Ansible 模块.


上一篇:帝豪平台注册耐火材料行业的 原料

下一篇:帝豪平台注册该基因能够使稻米既高产又好看