1、測試環境介紹
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須要從新服務器才能生效。3d
2、Windows Server 2008R2客戶端升級至powershell4.0
配置winrm以前檢查系統版本,以及powershell版本,若是是Server2008R2版本,則須要升級powershell至4.0版本。Server2012R2以上的版本不須要升級powershell。
升級powershell4.0步驟:
1. 檢查powershell版本
未升級前顯示的是2.0版本
2. 下載並安裝Microsoft .NET Framework 4.5
下載地址:
https://download.microsoft.com/download/B/A/4/BA4A7E71-2906-4B2D-A0E1-80CF16844F5F/dotNetFx45_Full_setup.exe
3. 下載並安裝powershell4.0(Windows Management Framework 4.0 )
下載地址:
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服務器
4. 升級完powershell4.0後檢查
查看powershell版本
打開運行--->輸入powershell啓動powershell
在powershell終端上執行get-host命令能夠查看powershell版本
3、Windows客戶端配置winrm,啓用powershell遠程管理
打開powershell終端,按如下步驟執行命令(正常狀況不會報錯,若是有報錯,請檢查輸入的命令是否正確,或者手動輸入命令進行配置)
1. 查看powershell執行策略
get-executionpolicy
2. 更改powershell執行策略爲remotesigned
set-executionpolicy remotesigned
3. 配置winrm service並啓動服務
winrm quickconfig
4. 查看winrm service啓動監聽狀態
winrm enumerate winrm/config/listener
5. 修改winrm配置,啓用遠程鏈接認證
winrm set winrm/config/service/auth '@{Basic="true"}'
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
4、Windows客戶端防火牆配置
經過命令winrm enumerate winrm/config/listener檢查winrm服務正確啓動以後
添加防火牆信任規則,容許5985端口經過
打開防火牆高級配置,選擇入站規則,在點擊新建規則
填寫信任端口5985
填寫新建規則名稱
5、Ansible服務端配置和測試管理Windows服務器(服務端操做)
1. 添加windows客戶端鏈接信息
編輯/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
2. 測試ping探測windows客戶主機是否存活
執行命令
# ansible 172.16.10.23 -m win_ping
3. 測試文件管理
測試在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'
3. 測試遠程執行cmd命令
# ansible 172.16.10.23 -m win_shell -a 'ipconfig'
4. 遠程重啓windows服務器
# ansible 172.16.10.23 -m win_reboot
# ansible 172.16.10.23 -m win_shell -a 'shutdown -r -t 0'
5. 測試建立用戶(遠程在windows客戶端上建立用戶)
# ansible 172.16.10.23 -m win_user -a "name=testuser1 passwd=123456"
6. Windows服務管理
Ansible命令格式:
ansible [遠程主機IP地址] -m win_shell -a 「net stop|start 服務名」
示例:啓動與中止Windows服務器的Spooler服務
此外,Ansible還能夠遠程管理Windows的IIS服務、Apache等Web服務,利用Ansible實現批量更新Web應用,如代碼發佈、版本更新等。