如何利用ansible批量管理成百上千臺(tái)windows服務(wù)器?

1盾似、背景

目前行業(yè)中很多企業(yè)使用Windows Server, 由于管理的規(guī)模的增長(zhǎng)windows服務(wù)器已達(dá)到成百上千臺(tái)落午,比如所有服務(wù)器修改一個(gè)簡(jiǎn)單配置,就要重復(fù)操作耗費(fèi)很多時(shí)間和精力,為了減輕讓運(yùn)維人員管理壓力坷衍,可以用ansible來(lái)實(shí)現(xiàn)批量運(yùn)維管理windows服務(wù)器靶瘸,特意研究winrm服務(wù)(windows server下PowerShell的遠(yuǎn)程管理服務(wù))苫亦。

2、winrm服務(wù)配置過(guò)程

2.1 被管理對(duì)象的概況

由于目前Windows Server服務(wù)器版本為:Windows Server 2008R2怨咪、Windows Server 2012 R2屋剑、Windows Server 2016、Windows Server 2019诗眨。 據(jù)了解Windows Server 2008R2比較常用的版本唉匾。

2.2 配置winrm必須滿足以下5個(gè)條件

由于Windows Server 2008R2版本PowerShell 版本為2.0,需升級(jí)PowerShell版本3.0以上匠楚,建議升級(jí)到PowerShell 4.0+(被管理端版本過(guò)低巍膘,造成與管理端ansbile版本兼容性很差)。Windows Server 2008R2 需要執(zhí)行如下前4個(gè)步驟芋簿,而win2012r2峡懈,win2016,win2019系統(tǒng)原生開啟winrm服務(wù)与斤,只需執(zhí)行第5步肪康。

2.2.1 Management Framework版本需要3.0+ (微軟的框架3.0以上)

2.2.2 底層通信基于PowerShell,其中版本3.0+ {通過(guò) Get-Host /$PSVersionTable命令查看powershell版本}幽告。

2.2.3 更改powershell策略為remotesigned梅鹦。(注意以管理員身份運(yùn)行)

  • 查看策略命令:get-executionpolicy一般情況下默認(rèn)為Restricted
  • 更改命令: set-executionpolicy remotesigned

2.2.4 開啟Windows遠(yuǎn)端管理服務(wù)(WS-Management,WinRM)(注意以管理員身份運(yùn)行)

手工執(zhí)行開啟htttp
1冗锁、查看服務(wù)狀態(tài):winrm enumerate winrm /config/listener {先查看狀態(tài)齐唆;如無(wú)返回信息,則是沒(méi)有啟動(dòng)}
2冻河、開啟 winrm service步驟如下:
-基礎(chǔ)配置: winrm quickconfig
-查看listener: winrm e winrm/config/listener
-配置auth:winrm set winrm/config/service/auth '@{Basic="true"}'
-配置加密方式為允許非加密:winrm set winrm/config/service '@{AllowUnencrypted="true"}'

腳本執(zhí)行開啟htttp/https 【推薦方式】

#下載開啟服務(wù)腳本:
https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1
#比如放在C:/Temp下箍邮,然后用CMD命令,切換到對(duì)應(yīng)的目錄
>cd C:/Temp
# 開啟WinRM服務(wù)
C:\Temp>powershell -ExecutionPolicy RemoteSigned .\ConfigureRemotingForAnsible.ps1 -SkipNetworkProfileCheck

2.2.5 管理端ansible安裝winrm模塊

使用ansible命令執(zhí)行為如下結(jié)果叨叙,請(qǐng)按照pywinrm模塊
ansible [IP] -m win_ping

[IP] | FAILED! => {  "msg": "winrm or requests is not installed: No module named xmltodict"  }

pywinrm模塊下載地址
安裝方法在這就不贅述了

注意事項(xiàng)

1.如果windows Server 2008R2 升級(jí)PowerShell版本之后涉及到需要重啟锭弊。
2.操作系統(tǒng)防火墻或外部防火墻是否對(duì)服務(wù)器5985/5986端口放行。
3.建議采用5986 https加密的方式進(jìn)行批量管理擂错。

3味滞、ansible批量管理

3.1 配置文件

----------------------------------hosts/inventory.ini配置文件--------------------------------
模式一:
[windows]
192.168.1.105 ansible_ssh_user="Administrator" ansible_ssh_pass="123456" ansible_ssh_port=5986 ansible_connection="winrm" ansible_winrm_server_cert_validation=ignore

模式二:
[testwin]
192.168.10.105 
192.168.10.106
[testwin:vars]
 ansible_user: Administrator
 ansible_password: Admin~123
 ansible_port: 5986
 ansible_connection: winrm
 ansible_winrm_transport: ntlm
 ansible_winrm_server_cert_validation: ignore

3.2 windows常用模塊

win_acl (E) —設(shè)置文件/目錄屬主屬組權(quán)限;
win_copy—拷貝文件到遠(yuǎn)程Windows主機(jī);
win_file —?jiǎng)?chuàng)建剑鞍,刪除文件或目錄昨凡;
win_lineinfile—匹配替換文件內(nèi)容;
win_package (E) —安裝/卸載本地或網(wǎng)絡(luò)軟件包蚁署;
win_ping —Windows系統(tǒng)下的ping模塊便脊,常用來(lái)測(cè)試主機(jī)是否存活;
win_service—管理Windows Services服務(wù)光戈;
win_user —管理Windows本地用戶哪痰。

 I、系統(tǒng)常規(guī)操作模塊
【主機(jī)是否存活】 
 ansible testwin -m win_ping 
【獲取window主機(jī)信息】
 ansible testwin -m setup
【重啟操作系統(tǒng)】    
 ansible testwin -m  win_reboot
 ansible testwin -m  win_shell -a "shutdown -r -t 1"
【創(chuàng)建標(biāo)準(zhǔn)用戶】
 ansible testwin -m win_user -a "name=test1 passwd=tes@123"
【創(chuàng)建管理員用戶,并且能遠(yuǎn)程訪問(wèn)】
 ansible testwin -m win_user -a "name=test1 passwd=tes@123 group='Administrators,Remote Desktop Users'"
【修改用戶密碼】
 ansible windows -m win_user -a "name=Administrator update_password=always password="Admin~123""
【結(jié)束程序】
 ansible testwin -m raw -a "taskkill /F /IM QQ.exe /T"

 II久妆、命令晌杰、腳本和服務(wù)操作模塊
【獲取身份】
 ansible windows -m win_command -a "whoami"
【獲取windows網(wǎng)卡信息】
 ansible testwin -m win_command -a "ipconfig"
【啟動(dòng)redis腳本】
 ansible testwin -m win_command -a "chdir=C:\Redis server-start.bat "
【執(zhí)行ps腳本】
 ansible testwin -m script -a "E://test.ps1"
【重啟windows主機(jī)服務(wù)】
 ansible windowstest  -m win_service -a "name=nscp state=restarted" //重啟監(jiān)控客戶端程序
 III、文件模塊操作
【查看文件狀態(tài)】
 ansible testwin -m win_stat -a "path='C://Windows/win.ini'"
【創(chuàng)建文件夾】
 ansible testwin -m win_file -a 'dest=c:\config_dir state=directory'
 ansible testwin -m raw -a "mkdir c:\config_dir"
【復(fù)制拷貝文件到windows】
 ansible testwin -m win_copy -a "src=/etc/passwd dest=E:filepasswd"
 ansible testwin -m win_copy -a 'src=/opt/telnet-0.17-64.el7.x86_64.rpm dest=E:\config_dir\'
【刪除windows文件或目錄】
 ansible testwin -m win_file -a "path=E:\\\config_dir\\\telnet-0.17-64.el7.x86_64.rpm state=absent"
 ansible testwin  -m win_file -a  "dest=D:\Tomcat8630\logs\ state=absent"
 
 ansible windows -m raw -a "cmd /c ’move /y E:\test E:\config_dir\"
 
【window上解壓文件到指定目錄下】
 ansible testwin -m win_unzip -a"creates=no src=D:\web.zip dest=D:\app\webapps"

本篇技術(shù)文章僅供參考

有更多技術(shù)干貨請(qǐng)關(guān)注微信公眾號(hào) “壹周技藝”

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末镇饺,一起剝皮案震驚了整個(gè)濱河市乎莉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奸笤,老刑警劉巖惋啃,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異监右,居然都是意外死亡边灭,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門健盒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)绒瘦,“玉大人,你說(shuō)我怎么就攤上這事扣癣《杳保” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵父虑,是天一觀的道長(zhǎng)该酗。 經(jīng)常有香客問(wèn)我,道長(zhǎng)士嚎,這世上最難降的妖魔是什么呜魄? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮莱衩,結(jié)果婚禮上爵嗅,老公的妹妹穿的比我還像新娘。我一直安慰自己笨蚁,他們只是感情好睹晒,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布趟庄。 她就那樣靜靜地躺著,像睡著了一般册招。 火紅的嫁衣襯著肌膚如雪岔激。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天是掰,我揣著相機(jī)與錄音,去河邊找鬼辱匿。 笑死键痛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的匾七。 我是一名探鬼主播絮短,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼昨忆!你這毒婦竟也來(lái)了丁频?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤邑贴,失蹤者是張志新(化名)和其女友劉穎席里,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拢驾,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奖磁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了繁疤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咖为。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖稠腊,靈堂內(nèi)的尸體忽然破棺而出躁染,到底是詐尸還是另有隱情,我是刑警寧澤架忌,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布吞彤,位于F島的核電站,受9級(jí)特大地震影響鳖昌,放射性物質(zhì)發(fā)生泄漏备畦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一许昨、第九天 我趴在偏房一處隱蔽的房頂上張望懂盐。 院中可真熱鬧,春花似錦糕档、人聲如沸莉恼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)俐银。三九已至尿背,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捶惜,已是汗流浹背田藐。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吱七,地道東北人汽久。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像踊餐,于是被迫代替她去往敵國(guó)和親景醇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容