2016-11-06 90 views
0

我有許多用於在Debian和CentOS虛擬機上執行某些操作的可靠劇本。到現在爲止,當我需要處理包時,我會使用可用的模塊aptyum。因此,我必須檢查安裝了哪個操作系統,然後使用正確的安全模塊。使用ansible的包模塊升級所有包是否安全?

但是,我最近了解到有一個名爲package的模塊,它以某種方式統一了軟件包管理器,從而降低了劇本的複雜性,所以我現在只嘗試使用此模塊。

我想要執行的操作之一是更新所有軟件包。問題是ansible's documentation沒有說如何使用來做到這一點。它說,然而,如何與容易百勝做到這一點:第一個使用和升級操作,後者暗示寫的東西,如:

yum: name=* state=latest 

出於這個原因,我想我可以使用做到以下幾點:

package: name=* state=latest 

當我跑這個劇本我沒碰到過任何錯誤來,但這不是任何地方記錄和容易yum不能以完全相同的方式工作。所以我的問題是:這個命令是否在安全的位置,因爲它實際上是做我想做的事情?

在此先感謝!

編輯:

我發現,使用package: name=* state=latest將嘗試安裝或更新所有可用的軟件包,而不是隻更新安裝的。因此,這對我來說不是一個有效的解決方案。或者,我可以繼續使用yum適用進行此特定操作,但我不知道爲什麼無法使用程序包或者如果我丟失了某些東西。

回答

0

經過進一步測試,我現在可以自己回答這個問題,答案是否定的。在Debian機器上使用package: name=* state=latest將嘗試安裝或更新存儲庫中可用的每個軟件包,因此它不能用作apt-get upgrade的替代品。

0

從下面的文檔中,我認爲它很清楚您使用的描述可以被認爲是安全的。

package文檔:

該模塊實際上調用相關包模塊對於每個系統(APT,蔭等)。

所以無論你傳遞給它,應該由帶下劃線的打包器yum或apt來支持。

apt文檔:

名稱通配符(的fnmatch),如易*和版本通配符類似foo = 1.0 *也支持。

yum->name文檔:

當使用狀態=最新,這可以是 '*',這意味着運行:蔭-y更新。

編輯:後@Xavier阿爾瓦雷斯測試apt: name=* state=latest將在回購安裝所有軟件包。

+0

我認爲與apt相關的評論並不一定意味着僅使用通配符將升級所有軟件包,特別是因爲該模塊有特定的升級標誌。所以我想知道是否使用通配符會安裝或升級* all *包而不是隻升級已安裝的包。 –

+0

我相信apt通配符適用於所有軟件包的原因是在文檔中提到的[fnmatch](https://docs.python.org/2/library/fnmatch.html),並且支持這種通配符可以在其文檔中看到。 – zochamx

+1

我剛剛測試過它,它不能按我想要的方式工作。如果我在Debian機器上使用'package:name = * state = latest',它會嘗試安裝存儲庫中可用的* all *包。我想要的是更新那些已經安裝的軟件包。我認爲最好的做法是在這一步使用** apt **和** yum **模塊。 –