Ansible Tower のオフラインインストール

レッドハットの佐々木です。ソリューションアーキテクト(プリセールスのエンジニア)をやっています。

あまり知られていませんが、レッドハットにはランニングクラブがあります。毎週水曜日の夜に赤いTシャツを着て皇居の周りを走っていますので、見かけたら声をかけてくださいね。

さて、今日はAnsible Towerをオフライン(インターネットに接続していない環境)でインストールする方法をご紹介します。

Ansible Towerの公式インストール手順はここに書いてありますので、詳細はこちらを参照してください。(といっても、オフラインでインストールする手順の詳細は書かれていません。)

一般的なインストール手順は、
1. Tower Installer (tar.gz ファイル)をダウンロード
2. tar.gzを展開
3. Inventoryファイルを編集
4. setup.shを実行
という流れになるのですが、setup.shからyum installで多くのパッケージがインストールされるため、インターネットにアクセスできることが前提になります。

そこで、オフラインでインストールする時は Bundled Tower Installer を使います。Bundled Tower InstallerにはAnsible Towerのインストールに必要なRPMファイルが概ね含まれているので、オフラインでインストールする時に便利です。

概ねと書きましたが、実はBundled Tower Installerには全てのRPMファイルが含まれているわけではありません。具体的には、Red Hat Enterprise Linux (以下RHEL)のRPMパッケージは含まれていないので、別途用意する必要があります。
必要なRPMファイルを事前にコピーしておけばAnsible Towerのインストールは可能ですが、数十個のRPMファイルが必要になるため少し面倒です。ここではRHELのインストールDVDを使ってオフラインインストールする方法を紹介します。

なお、以下の手順ではRHELがMinimalでインストールされた環境にAnsible Towerをインストールしています。Ansible (TowerではないコマンドラインのAnsible)もTower Installerがインストールします。

1. 事前準備

必要なファイルをAnasible Towerをインストールするシステム(RHEL7.4以上)にコピーしておきます。必要なファイルは次の二つです。
* RHELのインストールDVD ISOイメージファイル*1 (以下のコマンド実行例では rhel-server-7.6-x86_64-dvd.iso を使用)
* Ansible TowerのBundled Tower Installer*2 (以下のコマンド実行例では ansible-tower-setup-bundle-3.3.1-1.el7.tar.gz を使用)

2. RHELインストールDVDイメージを使ったローカルレポジトリの設定

インストールDVDイメージを使って、ローカルレポジトリを設定します。

[root@tower ~]# pwd
/root
[root@tower ~]# ls -la
total 4582344
dr-xr-x---.  2 root root       4096 Dec  8 23:34 .
dr-xr-xr-x. 17 root root       4096 Dec  8 23:27 ..
-rw-------.  1 root root          5 Dec  8 23:32 .bash_history
-rw-r--r--.  1 root root         18 Dec 29  2013 .bash_logout
-rw-r--r--.  1 root root        176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root        176 Dec 29  2013 .bashrc
-rw-r--r--.  1 root root        100 Dec 29  2013 .cshrc
-rw-r--r--.  1 root root        129 Dec 29  2013 .tcshrc
-rw-------.  1 root root       1790 Dec  8 23:27 anaconda-ks.cfg
-rw-r--r--.  1 root root  194940801 Dec  8 23:34 ansible-tower-setup-bundle-3.3.1-1.el7.tar.gz
-rw-r--r--.  1 root root 4497342464 Dec  8 23:34 rhel-server-7.6-x86_64-dvd.iso
[root@tower ~]# mkdir /mnt/dvd
[root@tower ~]# mount -o loop /root/rhel-server-7.6-x86_64-dvd.iso /mnt/dvd
mount: /dev/loop0 is write-protected, mounting read-only
[root@tower ~]# ls -l /mnt/dvd
total 962
dr-xr-xr-x. 3 root root   2048 Oct 11 03:34 EFI
-r--r--r--. 1 root root   8266 Apr  4  2014 EULA
-r--r--r--. 1 root root  18092 Mar  6  2012 GPL
dr-xr-xr-x. 2 root root   2048 Oct 11 03:34 LiveOS
dr-xr-xr-x. 2 root root 931840 Oct 11 03:34 Packages
-r--r--r--. 1 root root   3375 Sep 21 23:59 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root   3211 Sep 21 23:59 RPM-GPG-KEY-redhat-release
-r--r--r--. 1 root root   1796 Oct 11 03:34 TRANS.TBL
dr-xr-xr-x. 4 root root   2048 Oct 11 03:34 addons
-r--r--r--. 1 root root   1455 Oct 11 03:02 extra_files.json
dr-xr-xr-x. 3 root root   2048 Oct 11 03:34 images
dr-xr-xr-x. 2 root root   2048 Oct 11 03:34 isolinux
-r--r--r--. 1 root root    114 Oct 11 03:09 media.repo
dr-xr-xr-x. 2 root root   4096 Oct 11 03:34 repodata
[root@tower ~]# cp /mnt/dvd/media.repo /etc/yum.repos.d/rhel7dvd.repo
[root@tower ~]# chmod 644 /etc/yum.repos.d/rhel7dvd.repo
[root@tower ~]# vi /etc/yum.repos.d/rhel7dvd.repo  #以下のように編集
[root@tower ~]# cat /etc/yum.repos.d/rhel7dvd.repo
[InstallMedia]
name=Red Hat Enterprise Linux 7.6
mediaid=1539194970.388895
metadata_expire=-1
gpgcheck=1
cost=500
enabled=1
baseurl=file:///mnt/dvd/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@tower ~]# yum clean all
Loaded plugins: product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Cleaning repos: InstallMedia
Cleaning up everything
[root@tower ~]# subscription-manager clean
All local data removed

3. Ansible Towerをインストール

あとは普通にBundled Tower Installerを使ってインストールするだけです。

[root@tower ~]# tar xzvf ansible-tower-setup-bundle-3.3.1-1.el7.tar.gz
### 省略 ###
[root@tower ~]# cd ansible-tower-setup-bundle-3.3.1-1.el7
[root@tower ansible-tower-setup-bundle-3.3.1-1.el7]# vi inventory
### 必要な設定を行う ###
### 特別な設定をしない場合は admin_password, pg_password, rabbitmq_password に適当な文字列を入れれば良い ###
[root@tower ansible-tower-setup-bundle-3.3.1-1.el7]# df -h   # 念のためISOイメージがマウントされていることを確認
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   18G  5.4G   13G  31% /
devtmpfs                           1.4G     0  1.4G   0% /dev
tmpfs                              1.4G     0  1.4G   0% /dev/shm
tmpfs                              1.4G  8.6M  1.4G   1% /run
tmpfs                              1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/sda1                          497M  120M  378M  25% /boot
/dev/loop0                         4.2G  4.2G     0 100% /mnt/dvd
[root@tower ansible-tower-setup-bundle-3.3.1-1.el7]# ./setup.sh
### 以下省略 ###

RHELのインストールDVDイメージをマウントしてローカルレポジトリにするやり方は、Ansible Towerのオフラインインストール以外にも使える小技なので、是非活用してください。もちろん、ISOファイルでは無くてDVDメディアに焼いたものでも可能です。

参考: Need to set up yum repository for locally-mounted DVD on Red Hat Enterprise Linux 7 - Red Hat Customer Portal

*1:RHELのインストールDVDイメージはここからダウンロードします。RHELのサブスクリプションに紐付いているIDでログインする必要があります。

*2:ここからダウンロードできます。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません