ポイント
Ansible を使ったリポジトリのインストール方法とそれぞれの特徴。
- プレイブックの files フォルダ等にリポジトリファイルを用意し、copy モジュールを使って配置する。
- メリット: インストールが楽。
- デメリット: アップデートには追従できない。
- yum モジュールを使用してインストールする。
- メリット: アップデートは楽
- メリット: state: present に設定すれば、冪等性を保つことができる。
- デメリット: yum で扱えるリポジトリが限られる。
- デメリット: state: latest に設定する場合、インストールに yum モジュールを使用するが、インストール済みの場合にプレイブックを実行するとエラーとなる。
- yum_repository モジュールを使用してインストールする。
- リポジトリファイルの内容を把握し、設定を自分自身でプレイブックに書いていく必要がある。
- デメリット: そのため記述量が多くなる。
- メリット: 逆に、詳細なリポジトリ設定と制御と、詳細なプレイブックの管理が可能。
GPG キーのインストール方法とそれぞれの特徴。
- プレイブックの files フォルダ等に GPG キーファイルを用意し、copy モジュールを使って配置する。
- メリット: インストールが楽。
- デメリット: アップデートには追従できない。
- rpm_key モジュールを使用して GPG キーをインストールする。
- yum_repository モジュールの gpgkey オプションにパスまたは URL を指定する。
- デメリット: パスを指定する場合は、GPG キーファイルを別途用意する必要があり、そのために別途プレイブックのタスク記述が必要となる。
GPG キーについて思うこと
GPG キーの役割として、パッケージが正しい配布先のものかどうかのチェックが挙げられます。
この役割を考えると、ウェブからダウンロードするパッケージを、ウェブからダウンロードした GPG キーで正しさをチェックするのは、改ざんされるときはパッケージも GPG キーも両方とも改ざんするでしょうから、疑問符がつくかもしれません(かも、としたのは、実際のリポジトリファイルの記述を見るとパッケージも GPG キーも両方ともウェブからダウンロードして、と記述しているものがあるからです。よくわかんない><)。
したがって、プレイブック側に信頼できる GPG キーを押し予め用意しておき、それを使って確認する、という方法がベターなのかもしれません。
例。yum_repository と rpm_key モジュールを使用して、リポジトリと PostgreSQL 9.5 をインストールする Ansible プレイブック
Ansible ベストプラクティスに慣れていくためにも、各ロールを site.yml から呼び出すようなファイル構成にしています。
--- - name: install PostgreSQL 9.5 hosts: default become: true Roles: - postgresql95
続いての yum_repository については、補足を記しておきます。
- file: 指定した文字列に .repo 文字列を足したファイルが生成される。
- name: yum で enablerepo オプションを指定するときに使用する名称を設定する。
- description: リポジトリファイルの name (説明) に記述される内容を設定する。
- baseurl: リポジトリファイルの baseurl に記述される内容を設定する。$releasever、$basearch の記述が重要。
- enabled: リポジトリファイルの enabled に記述される内容を設定する。
--- - name: add PostgreSQL 9.5 repository yum_repository: file: pgdg-95-redhat name: pgdg95 description: PostgreSQL 9.5 $releasever - $basearch baseurl: https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-$releasever-$basearch enabled: no - name: install PostgreSQL 9.5 GPG key rpm_key: state: present key: http://ftp.postgresql.org/pub/repos/yum/RPM-GPG-KEY-PGDG-95 - name: install PostgreSQL 9.5 package yum: state: latest enablerepo: pgdg95 name: - postgresql95-devel - postgresql95-server
補足
EPEL 等のリポジトリファイルを見ますと、GPG キーは /etc/yum.repos.d/ に格納されます。
rpm_key モジュールを使用して GPG キーをインストールすると、この場所にファイルが作られるわけではありません。
リポジトリファイルも書き換わったりいたしません。
本当にインストールされたのかどうか、次のコマンドで確認することができました♪
# インポート済みの GPG 公開鍵の情報を確認 # -q: RPM パッケージ情報を表示 # -a: インストールされているすべてのパッケージを選択 # -i: (-q 指定時の検索オプション) 検索したパッケージの名前、バージョン、リリース日、インストール日などの詳細情報を表示 rpm -qai gpg-pubkey*
おわりに
次のページが参考になりました。ありがとう存じます!
- yum_repository – Add or remove YUM repositories — Ansible Documentation
- rpm_key – Adds or removes a gpg key from the rpm db — Ansible Documentation
だんだんとモジュールについての公式ページが馴染んできましたの♪ますます Ansible を使いこなせるようになりたいものですわね♪
以上です。