Ansible Tower 3.8をインストールする

Ansibleもくもく会で「Ansible Tower便利だなー」となったのでRed Hat Developer Programを活用してインストールし、遊んでみます。

商用利用や商用検証などには制約があるので、その場合はライセンスを買うかAWXコミュニティに参加してください。

また、本内容は下記ブログを参考にしています。 zaki-hmkc.hatenablog.com

導入前準備

RHELサーバを構築します。 システム要件は下記を参考にしてください。

docs.ansible.com

内容を見ると2Core CPU / 4GB RAM / 20GB DiskSpaceを持つRHELまたはCentOSサーバがあると良いようです。 ただし、AutomationHubのRAM要求が4GBでは足りないようで、インストールで怒られるようです。 (Automation HubのRequireってどこに書いてあるんでしょう?)

適当に4Core / 8GB / 100GBのVMにRHEL8.3をインストールしましたが、ご家庭で触る限りには快適に使えています。

インストーラの入手

Developer Programに参加後、下記URLからインストーラをダウンロードします。 今回はPlatform 1.2を使いました。

Red HatCDNからダウンロードしてくるようですが、1回数kb/sしか落ちない悲しい時がありました。そんな時はキャンセルして再ダウンロードをするとすぐ落ちてきたのでご参考まで。

developers.redhat.com

インストール設定

ファイルを展開し、Inventoryファイルに設定を投入します。 tar.gzだけど無圧縮トラップ…は回避して

$ file ansible-automation-platform-setup-bundle-1.2.0-1.tar.gz
ansible-automation-platform-setup-bundle-1.2.0-1.tar.gz: POSIX tar archive (GNU)
$ tar xf ansible-automation-platform-setup-bundle-1.2.0-1.tar.gz
-bash: tar: コマンドが見つかりません

…最小インストールしてたのでtarがなかったようです。

# dnf install tar

気を取り直して展開し、フォルダの中にあるinventoryファイルを編集します。

$ tar xf ansible-automation-platform-setup-bundle-1.2.0-1.tar.gz
$ cd ansible-automation-platform-setup-bundle-1.2.0-1
$ ls
README.md  backup.yml  bundle  collections  group_vars  install.yml  inventory  licenses  rekey.yml  restore.yml  roles  setup.sh

シングルホストであれば設定すべき箇所は、下記4か所「ここ」のパスワード設定です。

[all:vars]
admin_password='ここ'

pg_host=''
pg_port=''

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

# Automation Hub Configuration
#

automationhub_admin_password='ここ'

automationhub_pg_host=''
automationhub_pg_port=''

automationhub_pg_database='automationhub'
automationhub_pg_username='automationhub'
automationhub_pg_password='ここ'
automationhub_pg_sslmode='prefer'

アプリケーション(Tower/AutomationHub)のadminパスワードと、それぞれのDBのパスワードです。

インストール

setupを実行するとインストールが始まります。最初にAnsibleをインストールし、その後Playbookによって導入するようです。 failed=0で成功と表示されたらインストール完了です。

# ./setup.sh
[warn] Will install bundled Ansible
Updating Subscription Management repositories.
(略)
PLAY RECAP *******
localhost                  : ok=191  changed=79   unreachable=0    failed=0    skipped=86   rescued=0    ignored=2

The setup process completed successfully.
Setup log saved to /var/log/tower/setup-2021-04-18-14:43:11.log.

PostgreSQLの起動に失敗する

Playbookの実行が下記箇所でエラーになり止まることがあります。

TASK [restart postgresql when authentication settings changed] **************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "Unable to restart service postgresql: Job for postgresql.service failed because the control process exited with error code.\nSee \"systemctl status postgresql.service\" and \"journalctl -xe\" for details.\n"}

ログを見ると、postgresql.confに記述されたen_US.UTF-8に不備があるらしく、どうやら日本語でインストールされたRHELには該当のlocaleが含まれていないため起動できないようです。

-- Unit postgresql.service has begun starting up.
 4月 18 14:38:32 rhel8-test postmaster[10159]: < 2021-04-18 05:38:32.769 UTC  >LOG:  パラメータ"lc_messages"の値が不正です: "en_US.UTF-8"
 4月 18 14:38:32 rhel8-test postmaster[10159]: < 2021-04-18 05:38:32.769 UTC  >LOG:  パラメータ"lc_monetary"の値が不正です: "en_US.UTF-8"
 4月 18 14:38:32 rhel8-test postmaster[10159]: < 2021-04-18 05:38:32.769 UTC  >LOG:  パラメータ"lc_numeric"の値が不正です: "en_US.UTF-8"
 4月 18 14:38:32 rhel8-test postmaster[10159]: < 2021-04-18 05:38:32.769 UTC  >LOG:  パラメータ"lc_time"の値が不正です: "en_US.UTF-8"
 4月 18 14:38:32 rhel8-test postmaster[10159]: < 2021-04-18 05:38:32.769 UTC  >FATAL:  設定ファイル"/var/lib/pgsql/data/postgresql.conf"にはエラーがあります
 4月 18 14:38:32 rhel8-test systemd[1]: postgresql.service: Main process exited, code=exited, status=1/FAILURE
 4月 18 14:38:32 rhel8-test systemd[1]: postgresql.service: Failed with result 'exit-code'.
-- Subject: Unit failed
# locale -a
C
C.utf8
POSIX
ja_JP.eucjp
ja_JP.utf8

該当のconfはroles/postgres/templates/postgresql.conf.j2にありますので、該当箇所を導入されている日本語を使うように書き換えてもよいのですが、個人的にはログは英語で出てきてほしいので、下記の通り言語パックを導入します。

# dnf install glibc-langpack-en
# locale -a
(略)
en_US
en_US.iso885915
en_US.utf8
(略)
ja_JP.eucjp
ja_JP.utf8

導入後は再度セットアップを実行すれば大丈夫です。

ログイン & ライセンス認証

ブラウザでHTTPSアクセスし、inventoryに設定したパスワードでadminユーザにログイン、その後DeveloperProgramのアカウントでライセンス認証をしたらセットアップ完了です。

お疲れさまでした!