ansible控制windows的官方翻译
Ansible控制windows
1、 Windows下如何工作
在ansible控制linux的时候,用的是ssh的方式,在windows中,使用的是power shell,在客户端机器上也是不用装任何客户端的。
在控制windows机器的时候,使用的模块为“winrm“。
2、 在控制机上安装
在linux控制机器上安装模块winrm:
pip install "pywinrm>=0.1.1"
|
3、 动态目录的支持
如果想连接动态目录下的domain账户,那么必须安装python-kerberos模块在控制机上,并且需要安装MIT krb5库。还需要在动态目录中配置正确的账户。
3.1 安装python-kerberos的依赖
|
3.2 安装python-kerberos
安装的时候执行如下指令即可:
|
3.3 配置kerberos
编辑配置文件/etc/krb5.conf,在其中添加如下的信息,在每个想连接的domain中。
找到如下开头的节:
|
添加domain的全称,并且添加主要和次要的动态目录域的全名称,如下例子:
|
并且在【domain_realm】节中添加每个你想连接的域:
|
3.4 测试kerberos连接
如果安装了krb5-workstation(yum)或者krb5-user(apt_get),那么可以用如下的命令测试是否被域控制器授权:
|
注意域的部分必须是全称,并且必须全部为大写。
查看获得的tickets,可以使用命令如下:
|
3.5 解决kerberos连接问题
如果使用kerberos不能进行连接,那么检查下列问题:
确保正向和反向DNS在域中能正常解析,在做这个解析的时候,首先ping服务器的名称,然后nslookup服务器的ip地址,会返回服务器的名称
如果在返回的服务器名称和ping的服务器名称不一致,检查动态目录中的DNSScavenging 是开启的,并且DNS和DHCP是相互更新的;
确保ansible控制机在domain中配置了账户属性。
检查ansible控制机的在域控制器中是时钟异步的,kerberos是对时间敏感的,一点时间的偏差会导致tickets失效
确保用的是域全名称,可以使用下面的命令进行检查:
|
当获取到不同的域名称的时候,必须更新配置文件krb5.conf,在其中使用域的全名称。
4、 inventory
ansible对windows的支持依赖于几个常用的变量来表示用户名,密码,连接类型(windows),如下所示:
|
在group_vars/windows.yml中,定义以下inventory变量:
|
5、 关于powershell版本
Powershell为3.0版本或者更高,只有windows7 sp1,windows server 2008 sp1,和以后的版本支持。
6、 哪些模块是可用的
Windows支持的模块在以下网址中可以找到:
http://docs.ansible.com/ansible/list_of_windows_modules.html |
可以使用script模块来运行powershell脚本,也可以在playbook中使用,如下:
|
注意有的模块并不以win开头,如下:
“slurp”, “raw”, and “setup” |
7、 获得windows的fact
|
8、 Windows的playbook例子
下面例子表示推送和运行powershell脚本的例子:
|
运行单个命令的时候,使用raw模块,在linux中是使用command或者shell模块:
|
运行DOS命令的时候,可以使用CMD /C开头,并且用双引号进行包括,如下:
|
最后一个例子用win_stat模块测试文件是否存在,注意返回的日期和linux中稍有不同:
公众号:SRE艺术 |
更多推荐
所有评论(0)