はじめに
Ansibleアドベントカレンダーの記事です。
業務でAnsible使う部署から別の部署に移動しましたが、個人でちょこちょこ触ったりしています。
今回はAnsibleとAnsible Towerのオフラインインストールを行う記事となります。
インターネットにつながった環境以外でのインストールを行うことがあると思います。(自分はありました)
そのときに色々とつらい思いをしたので記事としてまとめます。
前提条件
- 実行した環境はCentOS 7.6 64bitとなります。
- RHEL 7.5でも本手順でインストールが可能なことを確認しています。
- ユーザはrootで実行しています。
- すべてのファイルはデフォルトパス(/root配下)に配置して作業しています。
事前準備
AnsibleとAnsible Towerのオフラインインストールを行う際には、RHELのインストールISOイメージを利用します。
イメージはこのサイトからダウンロードすることができます。
このサイトからはAnsible Engineのrpmも取得することができます。通常のAnsibleを利用しない場合はこちらからrpmパッケージをダウンロードしてください。
またAnsible Towerについてはオフライン用のパッケージであるbundle版があります。
こちらについてはこのサイトからダウンロードしてください。
バージョン情報
今回インストールするAnsibleとAnsible Tower等のバージョンとなります
内容 | バージョン |
---|---|
Ansible | 2.7.4 |
Ansible Tower | 3.3.3 |
RHEL DVDiso | 7.7 |
Ansibleのインストール
DVDisoイメージのマウント
まずはじめにisoイメージをマウントします。
以下コマンドにてファイルを展開します。
# ファイルを展開
$ mount -o loop /root/rhel-server-7.7-x86_64-dvd.iso
# 展開できたかどうかの確認
$ ls -l /mnt
合計 974
dr-xr-xr-x. 3 root root 2048 7月 23 23:56 EFI
-r--r--r--. 1 root root 8266 7月 23 23:29 EULA
-r--r--r--. 1 root root 18092 7月 23 23:29 GPL
dr-xr-xr-x. 2 root root 2048 7月 23 23:56 LiveOS
dr-xr-xr-x. 2 root root 946176 7月 23 23:56 Packages
-r--r--r--. 1 root root 3375 7月 3 21:51 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root 3211 7月 3 21:51 RPM-GPG-KEY-redhat-release
-r--r--r--. 1 root root 1796 7月 23 23:56 TRANS.TBL
dr-xr-xr-x. 4 root root 2048 7月 23 23:56 addons
-r--r--r--. 1 root root 1455 7月 23 23:29 extra_files.json
dr-xr-xr-x. 3 root root 2048 7月 23 23:56 images
dr-xr-xr-x. 2 root root 2048 7月 23 23:56 isolinux
-r--r--r--. 1 root root 114 7月 23 23:32 media.repo
dr-xr-xr-x. 2 root root 2048 7月 23 23:56 repodata
次に、/etc/yum.repos.d
配下に作業レポジトリを追加します。
# rhel7-dvdiso.repoという名前でrepoファイルをコピー
$ cp /mnt/media.repo /etc/yum.repos.d/rhel7-dvdiso.repo
# 権限を変更する
$ chmod 644 /etc/yum.repos.d/rhel7-dvdiso.repo
# コピーを作成
$ cp -ip /etc/yum.repos.d/rhel7-dvdiso.repo /etc/yum.repos.d/rhel7-dvdiso.repo.org
コピー作成後、rhel7-dvdiso.repo
ファイルを以下のように編集します。
[InstallMedia]
name=Red Hat Enterprise Linux 7.7
mediaid=1563892373.442998
metadata_expire=-1
gpgcheck=1
cost=500
enabled=1
baseurl=file:///mnt/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
repoファイル更新後、yumレポジトリを清掃します。
$ yum clean all
読み込んだプラグイン:fastestmirror
リポジトリーを清掃しています: InstallMedia base extras updates
依存ファイルのダウンロード
Ansibleをオフラインインストールする際は依存関係の都合上以下ファイルのダウンロードが必要となります。
- sshpass
- python-httplib2
- python-passlib
- python2-jmespath
それぞれRPMファイルを取得しインストールします。
yum -y install sshpass-1.06-1.el7.x86_64.rpm
yum -y install python-httplib2-0.9.1-2.1.el7.noarch.rpm
yum -y install python-passlib-1.6.5-1.1.el7.noarch.rpm
yum -y install python2-jmespath-0.9.0-4.el7ae.noarch.rpm
Ansibleのインストール
依存関係も解決したのでAnsibleをインストールします。
yum -y install ansible-2.7.4-1.el7ae.noarch.rpm
通常このコマンドでインストールできますが、GPG 鍵の取得に失敗しました
と出た場合はオプションとして--nogpgcheck
を指定してインストールしてください。
Ansible Towerのインストール
DVDisoイメージのマウント
Ansibleの箇所で記載した部分と同じです。
tarファイルの展開
Ansible Towerのbundle版はtar形式に圧縮されているため展開します。
tar -zxvf ansible-tower-setup-bundle-3-3-3.el7.tar.gz
cd ansible-tower-setup-bundle-3.3.3-1.el7/
inventoryファイルの編集
既にAnsible Towerをインストールしたことがある人であればご存知かと思いますが、Ansible Towerのinventoryファイルにパスワードを設定する箇所があります。
それぞれの対応表は以下の通りです。
項目 | 内容 |
---|---|
admin_password | Ansible Towerの管理者パスワード |
pg_password | Ansible Towerのデータを保持するPostgreSQLのパスワード(ユーザはawx) |
rabbitmq_password | キャッシュ管理を行うRedisのパスワード |
適宜inventoryファイルの該当項目を編集します。
Ansible Towerのインストール
Ansible Towerはセットアップスクリプトsetup.sh
が用意されているため、このスクリプトを実行します。
約10分程度経過すると無事インストールが終わります。
PLAY RECAP *********************************************************************
localhost : ok=143 changed=70 unreachable=0 failed=0
The setup process completed successfully.
Setup log saved to /var/log/tower/setup-2019-12-02-00:21:17.log
このような結果が表示されると、正常にインストールが完了されている状態となります。
ローカルのIPアドレスをブラウザで叩くとログイン画面が表示されます。
あとは指定したパスワードを入力しログインし、ライセンスキーを入力します。
これでAnsible、Ansible Towerのオフラインインストールが実行できます。