1. 程式人生 > 其它 >Ansible常用模組之包管理模組

Ansible常用模組之包管理模組

目錄

一、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引數
    :預設值為present,當值設定為absent時,表示刪除對應的yum源;

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'