设为首页 收藏本站
查看: 3510|回复: 2

[经验分享] ansible 管理windows2008

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-30 08:44:10 | 显示全部楼层 |阅读模式
0x00 .为了自动化管理windows服务器,测试ansbile管理windows
测试工具、环境:ubuntu 14.04 LTS,windows 2008 sp2, python2.7 ,ipython, ansible1.7

0x01 .在windows服务器上面初始配置winrm
a.升级powershell
https://github.com/cchurch/ansib ... /upgrade_to_ps3.ps1
b.配置winrm
https://github.com/ansible/ansib ... otingForAnsible.ps1

在ansible主控机安装pywinrm

pip install http://github.com/diyan/pywinrm/archive/master.zip#egg=pywinrm

测试ansible模块
a.设置ansible 的host文件

cat /etc/ansible/hosts
[test-win]
test-win ansible_ssh_host=10.8.200.20 ansible_ssh_user=administrator ansible_ssh_pass="testwindows" ansible_ssh_port=5986 ansible_connection=winrm

b.测试win_ping模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
songtao@s-T40:~$ ansible test-win -m win_ping -vvvv
<10.8.200.20> ESTABLISH WINRM CONNECTION FOR USER: administrator on PORT 5986 TO 10.8.200.20
<10.8.200.20> WINRM CONNECT: transport=plaintext endpoint=https://10.8.200.20:5986/wsman
test-win | FAILED => Traceback (most recent call last):
  File "/usr/local/python/lib/python2.7/site-packages/ansible/runner/__init__.py", line 561, in _executor
    exec_rc = self._executor_internal(host, new_stdin)
  File "/usr/local/python/lib/python2.7/site-packages/ansible/runner/__init__.py", line 666, in _executor_internal
    return self._executor_internal_inner(host, self.module_name, self.module_args, inject, port, complex_args=complex_args)
  File "/usr/local/python/lib/python2.7/site-packages/ansible/runner/__init__.py", line 837, in _executor_internal_inner
    conn = self.connector.connect(actual_host, actual_port, actual_user, actual_pass, actual_transport, actual_private_key_file)
  File "/usr/local/python/lib/python2.7/site-packages/ansible/runner/connection.py", line 34, in connect
    self.active = conn.connect()
  File "/usr/local/python/lib/python2.7/site-packages/ansible/runner/connection_plugins/winrm.py", line 132, in connect
    self.protocol = self._winrm_connect()
  File "/usr/local/python/lib/python2.7/site-packages/ansible/runner/connection_plugins/winrm.py", line 90, in _winrm_connect
    err_msg = str(exc.args[0])
IndexError: tuple index out of range




c.测试pywinrm是否工作正常
1
2
3
4
5
6
7
8
In [1]: import winrm

In [2]: s = winrm.Session('https://10.8.200.20:5986/wsman',auth=('administrator','testwindows'))

In [3]: r = s.run_cmd('ipconfig')

In [4]: r.std_out
Out[4]: '\r\nWindows IP Configuration\r\n\r\n\r\nEthernet adapter \xb1\xbe\xb5\xd8\xc1\xac\xbd\xd3:\r\n\r\n   Connection-specific DNS Suffix  . : \r\n   Link-local IPv6 Address . . . . . : fe80::3dcc:e005:1039:b1%10\r\n   IPv4 Address. . . . . . . . . . . : 10.8.200.20\r\n   Subnet Mask . . . . . . . . . . . : 255.255.255.0\r\n   Default Gateway . . . . . . . . . : 10.8.200.254\r\n\r\nTunnel adapter \xb1\xbe\xb5\xd8\xc1\xac\xbd\xd3*:\r\n\r\n   Media State . . . . . . . . . . . : Media disconnected\r\n   Connection-specific DNS Suffix  . : \r\n\r\nTunnel adapter \xb1\xbe\xb5\xd8\xc1\xac\xbd\xd3* 8:\r\n\r\n   Media State . . . . . . . . . . . : Media disconnected\r\n   Connection-specific DNS Suffix  . : \r\n'






发现pywinrm正常工作,但是ansilbe 不能正常工作,有可能是pywinrm问题
1
sudo pip install https://github.com/diyan/pywinrm ... 05ccda12d71c93a.zip




再次测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
songtao@s-T40:~$ ansible test-win -m win_ping -vvvv --ask-vault-pass
Vault password:
<10.8.200.20> ESTABLISH WINRM CONNECTION FOR USER: administrator on PORT 5986 TO 10.8.200.20
<10.8.200.20> WINRM CONNECT: transport=plaintext endpoint=https://10.8.200.20:5986/wsman
<10.8.200.20> REMOTE_MODULE win_ping
<10.8.200.20> EXEC (New-Item -Type Directory -Path $env:temp -Name "ansible-tmp-1411890350.69-117079676086926").FullName | Write-Host -Separator '';
<10.8.200.20> WINRM EXEC 'PowerShell' ['-NoProfile', '-NonInteractive', '-EncodedCommand', 'KABOAGUAdwAtAEkAdABlAG0AIAAtAFQAeQBwAGUAIABEAGkAcgBlAGMAdABvAHIAeQAgAC0AUABhAHQAaAAgACQAZQBuAHYAOgB0AGUAbQBwACAALQBOAGEAbQBlACAAIgBhAG4AcwBpAGIAbABlAC0AdABtAHAALQAxADQAMQAxADgAOQAwADMANQAwAC4ANgA5AC0AMQAxADcAMAA3ADkANgA3ADYAMAA4ADYAOQAyADYAIgApAC4ARgB1AGwAbABOAGEAbQBlACAAfAAgAFcAcgBpAHQAZQAtAEgAbwBzAHQAIAAtAFMAZQBwAGEAcgBhAHQAbwByACAAJwAnADsA']
<10.8.200.20> WINRM RESULT <Response code 0, out "C:\Users\Administrat", err "">
<10.8.200.20> PUT /tmp/tmp6KqnKV TO C:\Users\Administrator\AppData\Local\Temp\ansible-tmp-1411890350.69-117079676086926\\win_ping
<10.8.200.20> WINRM PUT /tmp/tmp6KqnKV to C:\Users\Administrator\AppData\Local\Temp\ansible-tmp-1411890350.69-117079676086926\\win_ping.ps1 (offset=0 size=2030)
<10.8.200.20> WINRM PUT /tmp/tmp6KqnKV to C:\Users\Administrator\AppData\Local\Temp\ansible-tmp-1411890350.69-117079676086926\\win_ping.ps1 (offset=2030 size=2030)
<10.8.200.20> WINRM PUT /tmp/tmp6KqnKV to C:\Users\Administrator\AppData\Local\Temp\ansible-tmp-1411890350.69-117079676086926\\win_ping.ps1 (offset=4060 size=1425)
<10.8.200.20> PUT /tmp/tmpmctn8U TO C:\Users\Administrator\AppData\Local\Temp\ansible-tmp-1411890350.69-117079676086926\\arguments
<10.8.200.20> WINRM PUT /tmp/tmpmctn8U to C:\Users\Administrator\AppData\Local\Temp\ansible-tmp-1411890350.69-117079676086926\\arguments (offset=0 size=2)
<10.8.200.20> EXEC PowerShell -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -File "C:\Users\Administrator\AppData\Local\Temp\ansible-tmp-1411890350.69-117079676086926\\win_ping.ps1" "C:\Users\Administrator\AppData\Local\Temp\ansible-tmp-1411890350.69-117079676086926\\arguments"; Remove-Item "C:\Users\Administrator\AppData\Local\Temp\ansible-tmp-1411890350.69-117079676086926\" -Force -Recurse;
<10.8.200.20> WINRM EXEC 'PowerShell' ['-NoProfile', '-NonInteractive', '-EncodedCommand', 'UABvAHcAZQByAFMAaABlAGwAbAAgAC0ATgBvAFAAcgBvAGYAaQBsAGUAIAAtAE4AbwBuAEkAbgB0AGUAcgBhAGMAdABpAHYAZQAgAC0ARQB4AGUAYwB1AHQAaQBvAG4AUABvAGwAaQBjAHkAIABVAG4AcgBlAHMAdAByAGkAYwB0AGUAZAAgAC0ARgBpAGwAZQAgACIAQwA6AFwAVQBzAGUAcgBzAFwAQQBkAG0AaQBuAGkAcwB0AHIAYQB0AG8AcgBcAEEAcABwAEQAYQB0AGEAXABMAG8AYwBhAGwAXABUAGUAbQBwAFwAYQBuAHMAaQBiAGwAZQAtAHQAbQBwAC0AMQA0ADEAMQA4ADkAMAAzADUAMAAuADYAOQAtADEAMQA3ADAANwA5ADYANwA2ADAAOAA2ADkAMgA2AFwAXAB3AGkAbgBfAHAAaQBuAGcALgBwAHMAMQAiACAAIgBDADoAXABVAHMAZQByAHMAXABBAGQAbQBpAG4AaQBzAHQAcgBhAHQAbwByAFwAQQBwAHAARABhAHQAYQBcAEwAbwBjAGEAbABcAFQAZQBtAHAAXABhAG4AcwBpAGIAbABlAC0AdABtAHAALQAxADQAMQAxADgAOQAwADMANQAwAC4ANgA5AC0AMQAxADcAMAA3ADkANgA3ADYAMAA4ADYAOQAyADYAXABcAGEAcgBnAHUAbQBlAG4AdABzACIAOwAgAFIAZQBtAG8AdgBlAC0ASQB0AGUAbQAgACIAQwA6AFwAVQBzAGUAcgBzAFwAQQBkAG0AaQBuAGkAcwB0AHIAYQB0AG8AcgBcAEEAcABwAEQAYQB0AGEAXABMAG8AYwBhAGwAXABUAGUAbQBwAFwAYQBuAHMAaQBiAGwAZQAtAHQAbQBwAC0AMQA0ADEAMQA4ADkAMAAzADUAMAAuADYAOQAtADEAMQA3ADAANwA5ADYANwA2ADAAOAA2ADkAMgA2AFwAIgAgAC0ARgBvAHIAYwBlACAALQBSAGUAYwB1AHIAcwBlADsA']
<10.8.200.20> WINRM RESULT <Response code 0, out "{ "changed": f", err "">
test-win | success >> {
    "changed": false,
    "ping": "pong"
}




测试pywinrm
1
2
3
4
5
6
7
8
In [1]: import winrm

In [2]: s = winrm.Session('https://10.8.200.20:5986/wsman',auth=('administrator','testwindows'))

In [3]: r = s.run_cmd('ipconfig')

In [4]: r.std_out
Out[4]: '\r\nWindows IP Configuration\r\n\r\n\r\nEthernet adapter \xb1\xbe\xb5\xd8\xc1\xac\xbd\xd3:\r\n\r\n   Connection-specific DNS Suffix  . : \r\n   Link-local IPv6 Address . . . . . : fe80::3dcc:e005:1039:b1%10\r\n   IPv4 Address. . . . . . . . . . . : 10.8.200.20\r\n   Subnet Mask . . . . . . . . . . . : 255.255.255.0\r\n   Default Gateway . . . . . . . . . : 10.8.200.254\r\n\r\nTunnel adapter \xb1\xbe\xb5\xd8\xc1\xac\xbd\xd3*:\r\n\r\n   Media State . . . . . . . . . . . : Media disconnected\r\n   Connection-specific DNS Suffix  . : \r\n\r\nTunnel adapter \xb1\xbe\xb5\xd8\xc1\xac\xbd\xd3* 8:\r\n\r\n   Media State . . . . . . . . . . . : Media disconnected\r\n   Connection-specific DNS Suffix  . : \r\n'





参考:

https://github.com/ansible/ansible/issues/8720


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-25552-1-1.html 上篇帖子: ansible runner把结果写入MongoDB 下篇帖子: ansible 技术交流QQ群

尚未签到

发表于 2015-9-25 19:37:07 | 显示全部楼层
楼主,我按照你的来做,但是出现  
[iyunv@syzmdb winrm]# ansible windows -m setup
windows | FAILED => winrm is not installed
已经安装了pywinrm
求解。。

1

1

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表