Ansibleでyumを使ってパッケージのインストールするには、yumモジュールを使います。
使い方に難しいところはほとんどありません。ほとんど公式ドキュメントを翻訳しただけで理解できました。
よく使いそうなパラメータ
よく使いそうなパラメータのみ紹介します。
- disable_gpg_check
-
インストール時にGPGシグネチャをチェックするかどうかを指定する。
「no(デフォルト)」か「yes」を指定する。
- 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モジュールは難しいところが何もありませんでした。
ただ、一つ一つをじっくり目を通したので、勉強にはなったと思います。