はじめまして、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 ファイルをダウンロードします。
さてここからは 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 に詳しい説明がありますのでご参照してみてください。
Playbook が作成できたら、Tower から Projects を作成しましょう。
続いてテンプレートも。/etc/ssh/sshd ファイルの設定を変更するので、ENABLE PRIVILEGE ESCALATION にチェックを入れましょう。
作成できたら、Launch します。
無事、redhat.rhel_system_roles.sshd ロールが実行されたようです!
いかがでしたでしょうか。インターネット接続がある環境と比べて一手間かかりますが、Ansible Tower がオフライン環境であっても、Collections を簡単に利用することができました。
Happy Automation !