Ansible Towerのオフラインインストール(RHEL 8.2 + Ansible Tower 3.7.0編)

おはようございます。レッドハットでAnsibleのテクニカルサポートエンジニアをしている八木澤(ひよこ大佐)です。

Ansible Towerをインストールする際は、各種リポジトリから依存パッケージをダウンロードする必要があります。Ansible Towerのインストールパッケージには依存パッケージが同梱されていないものと、同梱されているもの(Bundle)があります。 しかし、Bundle Installerを利用してもすべてのパッケージが同梱されているわけではありません。一部のパッケージはリポジトリからダウンロードする必要があります。

通常は問題ありませんが、Ansible Towerを外部ネットワークから遮断した環境でインストールしたい場合には、別途オフライン用のリポジトリを用意するなどの追加手順が必要となります。今回はその手順を、本記事執筆時点(2020年5月22日)での最新版である「Red Hat Enterprise Linux 8.2」と「Ansible Tower 3.7.0」の組み合わせを用いて解説します。

今回はAll-in-One構成(1台のAnsible Towerノードと内部DB)での手順をご紹介します。この手順はインストールする環境、構成(クラスタ構成および外部DBの有無)等によっても異なります。 また、必ずこの手順でセットアップできることを保証するものではありませんので、あくまで一例として参考にしていただければ幸いです。

Ansible Tower のオフラインインストール」として、Ansible Tower 3.3.1をRHEL 7.4にインストールする記事が既に公開されていますが、今回の記事はアップデート版として併せて参照していただければ幸いです。

1. オフライン環境のRHELのシステム登録を実施する

通常RHELは「subscription-manager」コマンドを利用してオンラインでシステムを登録することができますが、オフライン環境では別の手順でサブスクリプションを登録する必要があります。 以下のドキュメントに従って、オフライン環境でシステムを登録します。

access.redhat.com

2. オフラインリポジトリを構成する

まずセットアップ時に追加パッケージをダウンロードするために、オフラインリポジトリを構成する必要があります。以下のURLから、「Red Hat Enterprise Linux 8.2 Binary DVD」のisoイメージをダウンロードします。

Software & Download Center - Red Hat Customer Portal

ダウンロードしたISOファイルをRHELに転送します。(VMware vSphereなどであれば、DVD-ROMドライブを仮想マシンに追加し、isoイメージをマウントすることも可能です) 転送したら、マウントポイントを作成し、isoイメージをマウントします。

[root@tower ~]# mkdir /mnt/disc
[root@tower ~]# mount -o loop  /tmp/rhel-8.2-x86_64-dvd.iso /mnt/disc/
mount: /mnt/disc: WARNING: device write-protected, mounted read-only.

マウントが完了したら、 マウントしたDVDイメージからrepoファイルをコピーし、 /etc/yum.repos.d/ ディレクトリ配下に配置します。

[root@tower ~]# cp /mnt/disc/media.repo /etc/yum.repos.d/rhel8disc.repo
[root@tower ~]# chmod 644 /etc/yum.repos.d/rhel8disc.repo 

コピーしたrepoファイルを元に、AppStream用とBase用のrepoファイルをそれぞれ作成します。

[root@tower ~]# vi /etc/yum.repos.d/rhel8disc_appstream.repo

[RHEL8-Server-DVD-Appstream]
name=Red Hat Enterprise Linux 8.2.0 (DVD) Appstream
mediaid=None
metadata_expire=-1
gpgcheck=1
cost=500
baseurl=file:///mnt/disc/AppStream
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[root@tower ~]# vi /etc/yum.repos.d/rhel8disc_base.repo

[RHEL8-Server-DVD-BaseOS]
name=Red Hat Enterprise Linux 8.2.0 (DVD) BaseOS
mediaid=None
metadata_expire=-1
gpgcheck=1
cost=500
baseurl=file:///mnt/disc/BaseOS
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
    

リポジトリが正常に認識されているか確認し、問題がなければオフラインリポジトリのセットアップは完了です。

[root@tower ~]# dnf repolist
Updating Subscription Management repositories.
Unable to read consumer identity
repo id                       repo name
RHEL8-Server-DVD-Appstream    Red Hat Enterprise Linux 8.2.0 (DVD) Appstream
RHEL8-Server-DVD-BaseOS       Red Hat Enterprise Linux 8.2.0 (DVD) BaseOS

3. Ansible Towerをインストールする

では、実際にAnsible Towerをインストールしてみましょう。Ansible Tower 3.7.0のBundleパッケージは以下のURLから入手可能です。

https://releases.ansible.com/ansible-tower/setup-bundle/ansible-tower-setup-bundle-3.7.0-4.tar.gz

ダウンロードしたアーカイブをscpコマンド等でオフライン環境下にあるRHELサーバーへ配置します。 その後、RHEL上で配置したアーカイブを展開します。

[root@tower ~]# tar xvf ansible-tower-setup-bundle-3.7.0-4.tar.gz
[root@tower ~]# cd ansible-tower-setup-bundle-3.7.0-4/

展開が完了したら、インストールのためにinventoryファイルを編集します。今回は以下のように記述します。

[root@tower ansible-tower-setup-bundle-3.7.0-4]# vi inventory 

[tower]
localhost ansible_connection=local

[database]

[all:vars]
admin_password='redhat'

pg_host=''
pg_port=''

pg_database='awx'
pg_username='awx'
pg_password='redhat'
pg_sslmode='prefer'  # set to 'verify-full' for client-side enforced SSL

# Isolated Tower nodes automatically generate an RSA key for authentication;
# To disable this behavior, set this value to false
# isolated_key_generation=true


# SSL-related variables

# If set, this will install a custom CA certificate to the system trust store.
# custom_ca_cert=/path/to/ca.crt

# Certificate and key to install in nginx for the web UI and API
# web_server_ssl_cert=/path/to/tower.cert
# web_server_ssl_key=/path/to/tower.key

# Server-side SSL settings for PostgreSQL (when we are installing it).
# postgres_use_ssl=False
# postgres_ssl_cert=/path/to/pgsql.crt
# postgres_ssl_key=/path/to/pgsql.key

inventoryファイルの編集が完了したら、後は通常のTowerのインストールと同様にsetup.shを実行します。

[root@tower ansible-tower-setup-bundle-3.7.0-4]# ./setup.sh

無事setup.shの実行が完了したら、 https://<TOWERのIPアドレス>/ をWebブラウザで開き、TowerのWeb UIを開きます。ライセンス投入後、以下のダッシュボードが表示されればAnsible Towerのインストールは完了です。

f:id:hiyokotaisa:20200522073457p:plain

f:id:hiyokotaisa:20200522073511p:plain

オフライン環境では通常よりもひと手間増えてしまいますが、オフラインリポジトリを正しく構成すればセットアップすることができます。ぜひ参考にしていただければ幸いです。

Happy Automation!

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