カテゴリー
Linux

【Ansible】yum リポジトリや GPG キーのインストール方法の整理

ポイント

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*

おわりに

次のページが参考になりました。ありがとう存じます!

だんだんとモジュールについての公式ページが馴染んできましたの♪ますます Ansible を使いこなせるようになりたいものですわね♪

以上です。

コメントを残す