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モジュールは難しいところが何もありませんでした。
ただ、一つ一つをじっくり目を通したので、勉強にはなったと思います。