ツール

【Ansible】yumモジュールの説明

投稿日:

Ansibleでyumを使ってパッケージのインストールするには、yumモジュールを使います。

使い方に難しいところはほとんどありません。ほとんど公式ドキュメントを翻訳しただけで理解できました。

よく使いそうなパラメータ

よく使いそうなパラメータのみ紹介します。

disable_gpg_check

インストール時にGPGシグネチャをチェックするかどうかを指定する。

「no(デフォルト)」か「yes」を指定する。

disablerepo

インストール/アップデートするときに無効化するレポジトリの「repo id」を指定する。

「repo id」はコマンド「yum repolist all」で確認できる。複数指定する場合は、カンマ(,)で区切る。

disablerepo

インストール/アップデートするときに有効化するレポジトリの「repo id」を指定する。

「repo id」はコマンド「yum repolist all」で確認できる。複数指定する場合は、カンマ(,)で区切る。

name(必須)

パッケージ名(name-1.0のようにバージョンがついたものでも良い)。「state=latest」が指定されているときに「*」を使うと、「yum -y update」の実行と同じになる。

カンマ(,)区切りで複数のパッケージを指定することもできる。

state

パッケージをインストール時に「present」「installed」「latest」、削除時に「absent」「removed」のいずれかを指定する。

これらの意味の違いはAnsibleのyum module:各state(present,installed,latest,absent,removed)の違いの記事に書かれています。

公式ドキュメントのサンプル

ここまでで難しいことはないですね。あとはドキュメントの例を見てみます。


- name: install the latest version of Apache
  yum:
    name: httpd
    state: latest

- name: remove the Apache package
  yum:
    name: httpd
    state: absent

- name: install the latest version of Apache from the testing repo
  yum:
    name: httpd
    enablerepo: testing
    state: present

- name: install one specific version of Apache
  yum:
    name: httpd-2.2.29-1.4.amzn1
    state: present
  

パッケージのインストールと削除ですね。簡単ですね。


- name: upgrade all packages
  yum:
    name: '*'
    state: latest

- name: upgrade all packages, excluding kernel & foo related packages
  yum:
    name: '*'
    state: latest
    exclude: kernel*,foo*
  

アップグレードです。これも難しいことはない。


- name: install the nginx rpm from a remote repo
  yum:
    name: http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
    state: present

- name: install nginx rpm from a local file
  yum:
    name: /usr/local/src/nginx-release-centos-6-0.el6.ngx.noarch.rpm
    state: present
  

リポジトリ以外からのインストール例です。なるほどです。


- name: install the 'Development tools' package group
  yum:
    name: "@Development tools"
    state: present

- name: install the 'Gnome desktop' environment group
  yum:
    name: "@^gnome-desktop-environment"
    state: present
  

パッケージグループでのインストールですね。


- name: List ansible packages and register result to print with debug later.
  yum:
    list: ansible
  register: result
  

yum listでパッケージをリストしているだけですね。


- name: Install package with multiple repos enabled
  yum:
    name: sos
    enablerepo: "epel,ol7_latest"

- name: Install package with multiple repos disabled
  yum:
    name: sos
    disablerepo: "epel,ol7_latest"
  

複数のリポジトリの有効化・無効化の例ですね。

listパラメータを使った実行例

listパラメータを使った例の、実行結果が気になったので、後学のために実行した結果を載せておきます。

プレイブックは次の通りです。


- hosts: 192.168.1.10
  tasks:
  - name: List ansible packages and register result to print with debug later.
    yum:
      list: ansible
    register: result

  - name: debug message
    debug:
      msg: "{{ result }}"
    

デバッグのメッセージは次の通りです。


TASK [debug] *******************************************************************************
ok: [192.168.1.10] => {
    "msg": {
        "changed": false,
        "failed": false,
        "msg": "",
        "results": [
            {
                "arch": "noarch",
                "epoch": "0",
                "name": "ansible",
                "nevra": "0:ansible-2.9.27-1.el8.noarch",
                "release": "1.el8",
                "repo": "@System",
                "version": "2.9.27",
                "yumstate": "installed"
            },
            {
                "arch": "noarch",
                "epoch": "0",
                "name": "ansible",
                "nevra": "0:ansible-2.9.27-1.el8.noarch",
                "release": "1.el8",
                "repo": "epel",
                "version": "2.9.27",
                "yumstate": "available"
            }
        ]
    }
}
    

まとめ

勉強のためにドキュメントを読んで、まとめようと思いましたが、yumモジュールは難しいところが何もありませんでした。

ただ、一つ一つをじっくり目を通したので、勉強にはなったと思います。

-ツール
-

Copyright© アナグマのモノローグ , 2021 All Rights Reserved Powered by STINGER.