1. 程式人生 > 其它 >在centos7上面配置ansible管理Windows伺服器

在centos7上面配置ansible管理Windows伺服器

1.配置管理端centos

#yum install ansible -y
#wget https://bootstrap.pypa.io/get-pip.py
#python get-pip.py
#pip install pywinrm

2.修改/etc/ansible/hosts 新增被管理主機

[root@ansible ansible]# cat hosts
[all:vars]
ansible_ssh_user=administrator
ansible_ssh_pass=123456
ansible_ssh_port=5985
ansible_connection=winrm
ansible_winrm_server_cert_validation
=ignore ansible_winrm_transport=ntlm [windows_test] 62.18.8.206

4.客戶端

windows(以管理員身份執行powershell)
> winrm enumerate winrm/config/listener
> winrm quickconfig
> winrm set winrm/config/service/auth '@{Basic="true"}'
> winrm set winrm/config/service '@{AllowUnencrypted="true"}'

5.此時便可以用ansible管理Windows伺服器

[root@ansible ansible]# ansible windows_test -m win_ping
62.18.8.206 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

6.ansible管理windows基本操作

(1)ping模組

#ansible windows -m win_ping

(2)指定配置檔案獲取win網絡卡資訊

#ansible -i win_hosts windows_test -m raw -a "ipconfig"

(3)使用預設的配置檔案獲取網絡卡資訊

#ansible windows_test -m raw -a "
ipconfig"

(4)解決獲取網絡卡亂碼問題

#sed -i "s#tdout_buffer.append(stdout)#tdout_buffer.append(stdout.decode('gbk').encode('utf-8'))#g" /usr/lib/python2.7/site-packages/winrm/protocol.py
#sed -i "s#stderr_buffer.append(stderr)#stderr_buffer.append(stderr.decode('gbk').encode('utf-8'))#g" /usr/lib/python2.7/site-packages/winrm/protocol.py

(5)拷貝檔案到遠端Windows主機

#ansible windows_test -m win_copy -a 'src=/windows/run.ps1 dest=C:\Users\Administrator\Desktop\'
#ansible windows_test -m win_copy -a 'src=/etc/passwd dest=F:\file\passwd'
#ansible windows_test -m win_copy -a "src=/usr/local/src/PayChannels20.35.zip dest=D:\Tomcat8630\webapps\PayChannels20.35.zip"
#ansible windows_test -m win_copy -a "src=/usr/local/src/SupplierPay.zip dest=D:\SupplierPay.zip"

(6)將.zip解壓到遠端Windows主機,遠端主機上必須存在需要解壓的原始檔 

#ansible windows_test -m win_unzip -a"creates=no src=D:\Tomcat8620\webapps\PayChannels-8630.zip dest=D:\Tomcat8620\webapps"

(7)解壓到D盤:

 #ansible windows -m win_unzip -a"creates=no src=D:\SupplierPay.zip dest=D:"

(8)重啟遠端windows主機的服務

 #ansible windows_test -m win_service -a "name=Tomcat8630 state=restarted"

(9)重啟node.js(.bat命令)
  

#ansible windows_test -m win_command -a "chdir=D:\SupplierPay .\http_restart.bat"

(10)執行win_command模組命令

啟動redis
#ansible windows_test -m win_command -a "chdir=D:\Redis server-start.bat" 

(11)遠端執行bat指令碼

#ansible windows_test -m win_command -a "chdir=C:\Users\Administrator\Desktop  test.bat"   

(11)刪除檔案或者目錄

#ansible windows_test -m win_file -a "dest=D:\Tomcat8630\log\ state=absent"
#ansible windows_test -m win_file -a "dest=D:\Tomcat8630\logs\ state=absent"

(12)建立使用者

#ansible windows_test -m win_user -a "name=aa passwd=123456"

(13)建立一個名叫user1的管理員使用者,要求能夠遠端訪問

#ansible windows_test -m win_user -a "name=user1 password=123 groups='Administrators,Remote Desktop Users'"

(14)重啟的第一種方式

#ansible windows_test -m win_shell -a "shutdown -r -t 1"

(15)重啟的第二種方式

#ansible windows_test -m win_reboot

(16)關閉nginx程序

#ansible windows_test -m raw -a "taskkill /F /IM nginx.exe /T"

(17)執行桌面上的run.ps1

#ansible windows_test  -m win_command -a "PowerShell.exe -file C:\Users\Administrator\Desktop\run.ps1"