Ansible管理主機:shell
系統: CentOS6.8windows
IP Addr: 172.16.10.22服務器
Linux管理服務器需安裝pip、pywinrm插件ssh
Windows客戶端主機:ide
系統: Server2008R2 SP1測試
IP Addr: 172.16.10.23ui
Windows機器須要安裝或升級powershell4.0以上版本,Server2008R2默認的版本是2.0,所以必須升級至4.0版本。對於Server2012及以上的版本默認是4.0版本,不須要升級。spa
(經測試安裝powershell3.0版本並不能正常支持Ansible,所以選擇升級至4.0版本)插件
注意:升級powershell須要從新服務器才能生效。server
配置winrm以前檢查系統版本,以及powershell版本,若是是Server2008R2版本,則須要升級powershell至4.0版本。Server2012R2以上的版本不須要升級powershell。
升級powershell4.0步驟:
未升級前顯示的是2.0版本
下載地址:
https://download.microsoft.com/download/B/A/4/BA4A7E71-2906-4B2D-A0E1-80CF16844F5F/dotNetFx45_Full_setup.exe
下載地址:
https://download.microsoft.com/download/3/D/6/3D61D262-8549-4769-A660-230B67E15B25/Windows6.1-KB2819745-x64-MultiPkg.msu
注意: 先安裝.NET Framework 4.5 ,而後安裝powershell4.0,安裝完成以後重啓windows服務器
查看powershell版本
打開運行--->輸入powershell啓動powershell
在powershell終端上執行get-host命令能夠查看powershell版本
打開powershell終端,按如下步驟執行命令(正常狀況不會報錯,若是有報錯,請檢查輸入的命令是否正確,或者手動輸入命令進行配置)
get-executionpolicy
set-executionpolicy remotesigned
winrm quickconfig
winrm enumerate winrm/config/listener
winrm set winrm/config/service/auth '@{Basic="true"}'
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
經過命令winrm enumerate winrm/config/listener檢查winrm服務正確啓動以後
添加防火牆信任規則,容許5985端口經過
打開防火牆高級配置,選擇入站規則,在點擊新建規則
填寫信任端口5985
填寫新建規則名稱
編輯/etc/ansible/hosts,添加客戶端主機信息(ansible服務端的配置)
[windows]
172.16.10.23 ansible_ssh_user="Administrator" ansible_ssh_pass="zteict123" ansible_ssh_port=5985 ansible_connection="winrm" ansible_winrm_server_cert_validation=ignore
執行命令
# ansible 172.16.10.23 -m win_ping
測試在windows主機執行遠程建立目錄
# ansible 172.16.10.23 -m win_file -a 'dest=c:\config_dir state=directory'
測試將ansible主機上的/etc/hosts文件同步到windows主機的指定目錄下
# ansible 172.16.10.23 -m win_copy -a 'src=/etc/hosts dest=c:\config_dir\hosts.txt'
刪除文件
# ansible 172.16.10.23 -m win_file -a 'dest=c:\config_dir\hosts.txt state=absent'
刪除目錄
# ansible 172.16.10.23 -m win_file -a 'dest=c:\config_dir2 state=absent'
# ansible 172.16.10.23 -m win_shell -a 'ipconfig'
# ansible 172.16.10.23 -m win_reboot
# ansible 172.16.10.23 -m win_shell -a 'shutdown -r -t 0'
# ansible 172.16.10.23 -m win_user -a "name=testuser1 passwd=123456"
Ansible命令格式:
ansible [遠程主機IP地址] -m win_shell -a 「net stop|start 服務名」
示例:啓動與中止Windows服務器的Spooler服務
此外,Ansible還能夠遠程管理Windows的IIS服務、Apache等Web服務,利用Ansible實現批量更新Web應用,如代碼發佈、版本更新等。