Ansible Tower で Collections をオフラインで利用する

はじめまして、Red Hat の 呉 と申します。8月に入社しまして、今回初めての投稿となります。 普段は RHEL をメインに、しばしば Ansible のテクニカルサポートをしています。 この記事はAnsible Advent Calendarの12月18日の記事です。



Ansible Tower は インターネット接続環境がある場合、Collections を Automation Hub プラットフォームと直接同期して利用する事ができます。

しかし、オフライン環境下でもあらかじめ Automation Hub プラットフォームから Collections をダウンロードしておくことで、Collections を利用することができます。 今回は Ansible Tower で Collections をオフラインで利用する方法についてみていきたいと思います。

まずは以下の Automation Hub にログインし、画面上部に見える collections をクリックします。 console.redhat.com

するとよりどりみどり、たくさんの Collections が出てきます。今回は Red Hat が提供している rhel_system_roles コレクションを例として使ってみます。

コレクションを選択すると、このような画面が出てきますので、Download tarball をクリックして tar ファイルをダウンロードします。 f:id:MahoutukaiS:20211217232626p:plain



さてここからは Ansible Tower ノードでの作業です。

まず、先ほどダウンロードした tar ファイルの置き場所を作成します。今回は、ディレクトリ名を /opt/collections とします。

$ mkdir /opt/collections
$ chown awx:awx /opt/collections



また、このディレクトリ配下に tar ファイルを格納しておきましょう。tar ファイルは scp などであらかじめ Tower ノードへ送付済みとします。

[student@localhost ~]$ ls /opt/collections/
redhat-rhel_system_roles-1.7.3.tar.gz



次に、ansible 設定ファイルの defaults セクションに Collections のパスを指定してあげます。

/etc/ansible/ansible.cfg

[defaults]
collections_paths = /opt/collections/



ここまでできたら、ansible-galaxy コマンドを使ってローカルに Collections をインストールします。

ansible-galaxy collection install /opt/collections/redhat-rhel_system_roles-1.7.3.tar.gz -p /opt/collections/



これでインストールは完了しました。 せっかくなので、試しに今回インストールしたロールを動かしてみましょう。

まず、オフライン環境なので Ansible Tower ノードに直接プレイブックを作成していきます。

$ mkdir /var/lib/awx/projects/offline-collection



redhat.rhel_system_roles.sshd ロールを利用して、操作対象のノードの /etc/ssh/sshd_config に X11Forwarding yes を入れるようにしてみます。 /etc/ssh/sshd_config ファイルを編集するような感覚で、vars に設定値を定義するだけなのでとても使いやすいですね。

/var/lib/awx/projects/offline-collection/test.yml

---
- hosts: all
  vars:
    X11Forwarding: yes
  roles:
    - role: redhat.rhel_system_roles.sshd

なお、本ロールの詳細は Automation Hub に詳しい説明がありますのでご参照してみてください。

console.redhat.com

Playbook が作成できたら、Tower から Projects を作成しましょう。 f:id:MahoutukaiS:20211218011102p:plain

続いてテンプレートも。/etc/ssh/sshd ファイルの設定を変更するので、ENABLE PRIVILEGE ESCALATION にチェックを入れましょう。 f:id:MahoutukaiS:20211218105151p:plain

作成できたら、Launch します。

無事、redhat.rhel_system_roles.sshd ロールが実行されたようです! f:id:MahoutukaiS:20211218011228p:plain



いかがでしたでしょうか。インターネット接続がある環境と比べて一手間かかりますが、Ansible Tower がオフライン環境であっても、Collections を簡単に利用することができました。


Happy Automation !

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。