Ansible常用模組之包管理模組
阿新 • • 發佈:2022-03-31
目錄
一、yum_repository模組
yum_repository模組可以幫助我們管理遠端主機上的yum倉庫。
此處介紹一些yum_repository模組的常用引數,你可以先對這些引數有一個大概瞭解,然後再看小示例:
-
name引數:必須引數,用於指定要操作的唯一的倉庫ID,也就是
.repo
配置檔案中每個倉庫對應的”中括號”內的倉庫ID; -
baseurl引數:此引數用於設定yum倉庫的
baseurl
; -
description引數:此引數用於設定倉庫的註釋資訊,也就是
.repo
配置檔案中每個倉庫對應的”name欄位”對應的內容; -
file引數:此引數用於設定倉庫的配置檔名稱,即設定
.repo
配置檔案的檔名字首,在不使用此引數的情況下,預設以name引數的倉庫ID作為.repo
配置檔案的檔名字首,同一個.repo
配置檔案中可以存在多個yum源; - enabled引數:此引數用於設定是否啟用對應的yum源,此引數預設值為yes,表示啟用對應的yum源,設定為no表示不啟用對應的yum源;
- gpgcheck引數:此引數用於設定是否開啟rpm包驗證功能,預設值為no,表示不啟用包驗證,設定為yes表示開啟包驗證功能;
- gpgcakey引數:當gpgcheck引數設定為yes時,需要使用此引數指定驗證包所需的公鑰;
-
state引數
1.1 示例命令
- 使用如下命令在test181主機上設定ID為aliEpel 的yum源,倉庫配置檔案路徑為
/etc/yum.repos.d/aliEpel.repo
:
$ ansible test181 -m yum_repository -a 'name=aliEpel description="alibaba EPEL" baseurl=https://mirrors.aliyun.com/epel/$releasever\Server/$basearch/'
- 使用如下命令在test181主機上設定ID為aliEpel 的yum源,倉庫配置檔案路徑為
/etc/yum.repos.d/alibaba.repo
$ ansible test181 -m yum_repository -a 'name=aliEpel description="alibaba EPEL" baseurl=https://mirrors.aliyun.com/epel/$releasever\Server/$basearch/ file=alibaba'
- 使用如下命令在test181主機上設定ID為local 的yum源,但是不啟用它(local源使用系統光碟映象作為本地yum源,以便測試舉例,所以baseurl中的值以
file:///
開頭):
$ ansible test181 -m yum_repository -a 'name=local baseurl=file:///media description="local cd yum" enabled=no'
- 使用如下命令在test181主機上設定ID為local的yum源,開啟包驗證功能,並指定驗證包所需的公鑰位置為
/media/RPM-GPG-KEY-CentOS-7
:
$ ansible test181 -m yum_repository -a 'name=local baseurl=file:///media description="local cd yum" gpgcheck=yes gpgcakey=file:///media/RPM-GPG-KEY-CentOS-7'
- 刪除
/etc/yum.repos.d/alibaba.repo
配置檔案中的aliEpel源:
$ ansible test181 -m yum_repository -a 'file=alibaba name=aliEpel state=absent'
二、yum模組
yum模組可以幫助我們在遠端主機上通過yum源管理軟體包。
此處介紹一些yum模組的常用引數,你可以先對這些引數有一個大概瞭解,然後再看小示例:
- name引數:必須引數,用於指定需要管理的軟體包,比如nginx;
- state引數:用於指定軟體包的狀態 ,預設值為present,表示確保軟體包已經安裝,除了present,其他可用值有installed、latest、absent、removed,其中installed與present等效,latest表示安裝yum中最新的版本,absent和removed等效,表示刪除對應的軟體包;
- disable_gpg_check引數:用於禁用對rpm包的公鑰gpg驗證,預設值為no,表示不禁用驗證,設定為yes表示禁用驗證,即不驗證包,直接安裝,在對應的yum源沒有開啟gpg驗證的情況下,需要將此引數的值設定為yes,否則會報錯而無法進行安裝;
- enablerepo引數:用於指定安裝軟體包時臨時啟用的yum源,假如你想要從A源中安裝軟體,但是你不確定A源是否啟用了,你可以在安裝軟體包時將此引數的值設定為yes,即使A源的設定是未啟用,也可以在安裝軟體包時臨時啟用A源;
- disablerepo引數:用於指定安裝軟體包時臨時禁用的yum源,某些場景下需要此引數,比如,當多個yum源中同時存在要安裝的軟體包時,你可以使用此引數臨時禁用某個源,這樣設定後,在安裝軟體包時則不會從對應的源中選擇安裝包;
注意:enablerepo引數和disablerepo引數可以同時使用!
2.1 示例命令
- 確保test181主機上通過yum源安裝了nginx(對應yum源未開啟gpg驗證,所以需要設定
disable_gpg_check=yes
),如下三條命令的效果相同:
$ ansible test181 -m yum -a 'name=nginx disable_gpg_check=yes'
$ ansible test181 -m yum -a 'name=nginx state=present disable_gpg_check=yes'
$ ansible test181 -m yum -a 'name=nginx state=installed disable_gpg_check=yes'
- 確保test181主機上安裝了yum源中最新版本的nginx:
$ ansible test181 -m yum -a 'name=nginx state=latest disable_gpg_check=yes'
- 確保test181主機上通過yum源安裝的nginx被解除安裝了:
$ ansible test181 -m yum -a 'name=nginx state=absent'
$ ansible test181 -m yum -a 'name=nginx state=removed'
- 在test181主機上安裝telnet時不確定local源是否啟用,使用
enablerepo=local
確保臨時啟用local源:
$ ansible test181 -m yum -a 'name=telnet disable_gpg_check=yes enablerepo=local'
- 在test181主機上安裝telnet時,確定多個源中都有telnet,但是不想從local源中安裝,所以在安裝時臨時禁用local源:
$ ansible test181 -m yum -a 'name=telnet disable_gpg_check=yes disablerepo=local'