ansible远程在Windows server 2012 R2 安装vcredist(2008 2010 2012 2013)
需求:
遠程在windows server 2012 R2上安裝vcredist 2008, 2010, 2012和2013 四個版本。
首先在ansible的官方文檔找了一下看有沒有適合的模塊直接能使用的。
最開始找到的是win_package模塊: http://docs.ansible.com/ansible/win_package_module.html ,同時看到它給出來的例子.
感覺可以直接拿來就用啊。把path路徑換成要安裝的exe 放置的本地路徑,不就可以了嗎?
后來發現,win_package里的product_id 是必須的,但是在系統沒有安裝vcredist之前,這些product_id 是獲取不到的。嘗試了先在系統手動安裝四個vcredist 版本,然后再去注冊表找到product_id。然后再將product_id 寫到ansible-playbook里,沒錯,最后還是失敗了。
好吧,只能找其他辦法了,嘗試使用powershell腳本實現。
剛開始,測試安裝vcredits2008 的腳本是這樣的:
vcredist_2008.ps1
$pathvargs_2008 = {C:\tmp\vcredist2008_x64.exe /S /v/qn }
Invoke-Command -ScriptBlock $pathvargs_2008
然后ansible-playbook腳本是這樣的:
win_shell.yml :
--- -?name:?run?win_shellhosts:?ec2_windowsgather_facts:?falsetasks:-?name:?Install?2008?...win_shell:?c:\tmp\vcredist_2008.ps1ansible-playbook ?win_shell.yml 執行一下,發現居然成功了。
依樣畫葫蘆,咔咔咔,就把其他三個版本的腳本,換了個安裝包的名字,就以為可以了。
后來,發現vcredist2010的版本總是安裝不上。手動安裝比較了一下,軟件在安裝的時候,2010提示的信息和其余三個版本的有點差異,應該在powershell腳本的參數上是不一樣的。
好吧,繼續在網上找原因。
終于找到了一篇有用的文章:《Mailbag: How to perform a silent install of the Visual C++ 2010 redistributable packages》https://blogs.msdn.microsoft.com/astebner/2010/10/20/mailbag-how-to-perform-a-silent-install-of-the-visual-c-2010-redistributable-packages/
原來在微軟的官網上一直躺著我要找的答案。文章里提到了Silent install, Unattended install, ?Silent repair, ?Silent uninstall. 四種方式,我現在要找的就是Unattended install模式,不需要人工交互的方式。馬上將參數復制黏貼過來使用。
所以,現在的vcredist_2010.ps1 的命令變成了這樣:
$pathvargs_2010 = {C:\tmp\vcredist2010_x64.exe /passive /norestart }
Invoke-Command -ScriptBlock $pathvargs_2010
就是2010 版本安裝的腳本不一樣而已,其他的都一樣。
最終的ansible-playbook 是這樣的:
vim ? win_shell.yml :
---
- name: run win_shell
? hosts: ec2_windows
? gather_facts: false
? tasks:
? ? - name: Install 2013 ...
? ? ? win_shell: c:\tmp\vcredist_2013.ps1
? ? - name: Install 2008 ...
? ? ? win_shell: c:\tmp\vcredist_2008.ps1
? ? - name: Install 2012
? ? ? win_shell: c:\tmp\vcredist_2012.ps1
? ? - name: Install 2010 ...
? ? ? win_shell: c:\tmp\vcredist_2010.ps1
測試:
先把服務器上之前安裝的vcredist都卸載了,再運行 ansible-playbook win_shell.yml 。
我就靜靜地等待結果,最終看到四個成功的提示。然后,在server 2012 R2 服務器上,查看注冊表,四個版本的vcredist 都成功安裝了。
轉載于:https://blog.51cto.com/hellocjq/1923528
總結
以上是生活随笔為你收集整理的ansible远程在Windows server 2012 R2 安装vcredist(2008 2010 2012 2013)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 力扣每日一题
- 下一篇: 如何设置word 中endnote的引用