Ansible Towerのインストール方法

スポンサーリンク

Ansible Towerのインストール手順を示します。Ansible Towerは、Ansibleに対してWebインターフェース, REST API, タスクエンジンの機能を提供するプロジェクトです。

公式ドキュメント

Ansible Towerの公式資料は、以下URLのAnsible Docs内に含まれています。

Ansible Documentation
Ansible Documentation

検証ライセンスの発行

Ansible Towerは60日限定で検証ライセンスが発行されます。以下のサイトより検証ライセンスを発行できます。

Download Red Hat Ansible Automation Platform
Download a single, self-supported 60-day subscription for Red Hat Ansible Automation Platform.

検証ライセンスは機械的に発行されるのではなく、レッドハットの担当者が目視でライセンスを発行するかどうかを判断します。特に有名企業ではなくてもライセンスは発行してもらえるようですが、明確な商用導入スケジュールが決まっていない場合は、1つのアカウントで2度も3度もライセンスを発行するのは難しいようです。

Ansible Towerのインストール

バイナリの展開

レッドハット社より入手したバイナリを適当なディレクトリに配置し、それを展開します。

# tar xvzf ansible-tower-setup-bundle-3.7.0-4.tar.gz

パスワードの設定

inventoryファイルを編集し、admin_password, pg_passwordを設定します。Ansible Towerのバージョンが古い場合は、rabbitmq_passwordの設定も必要です。

# cd ansible-tower-setup-bundle-3.7.0-4
# vi inventory
[tower]
localhost ansible_connection=local

[database]

[all:vars]
admin_password='P@ssw0rd'

pg_host=''
pg_port=''

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

 <omitted>



<h3>AWXのインストール</h3>

setup.shを実行するとAnsible Towerがインストールされます。インストール処理は内部的にAnsible playbookが使用されています。


# ./setup.sh

途中で失敗するタスクも見られますが、失敗してもインストールに問題ない場合は適切にエラーハンドリングされ、Ignoreと表示されます。

TASK [awx_install : Check for Tower Super users] *******************************
fatal: [localhost]: FAILED! => {"changed": true, "cmd": "echo \"from django.contrib.auth.models import User; nsu = User.objects.filter(is_superuser=True).count(); exit(0 if nsu > 0 else 1)\" | awx-manage shell", "delta": "0:00:02.171727", "end": "2020-08-12 19:45:18.408429", "msg": "non-zero return code", "rc": 1, "start": "2020-08-12 19:45:16.236702", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
...ignoring

以下のようにsuccessfullyと表示されればインストールは成功です。

The setup process completed successfully.
Setup log saved to /var/log/tower/setup-2020-08-12-23:40:35.log.

インストールに成功すればnginxがtcp443でListenしている状態になります。

# ss -anop | grep nginx
u_str             ESTAB                  0                   0                                                                              * 66227                                                        * 66228                               users:(("nginx",pid=11479,fd=3),("nginx",pid=11477,fd=3))
u_str             ESTAB                  0                   0                                                                              * 66230                                                        * 66229                               users:(("nginx",pid=11479,fd=14),("nginx",pid=11477,fd=14))
u_str             ESTAB                  0                   0                                                                              * 66228                                                        * 66227                               users:(("nginx",pid=11478,fd=12),("nginx",pid=11477,fd=12))
u_str             ESTAB                  0                   0                                                                              * 66229                                                        * 66230                               users:(("nginx",pid=11478,fd=3),("nginx",pid=11477,fd=13))
tcp               LISTEN                 0                   128                                                                      0.0.0.0:443                                                    0.0.0.0:*                                   users:(("nginx",pid=11479,fd=8),("nginx",pid=11478,fd=8),("nginx",pid=11477,fd=8))
tcp               LISTEN                 0                   128                                                                      0.0.0.0:80                                                     0.0.0.0:*                                   users:(("nginx",pid=11479,fd=9),("nginx",pid=11478,fd=9),("nginx",pid=11477,fd=9))
tcp               LISTEN                 0                   128                                                                         [::]:443                                                       [::]:*                                   users:(("nginx",pid=11479,fd=10),("nginx",pid=11478,fd=10),("nginx",pid=11477,fd=10))
tcp               LISTEN                 0                   128                                                                         [::]:80                                                        [::]:*                                   users:(("nginx",pid=11479,fd=11),("nginx",pid=11478,fd=11),("nginx",pid=11477,fd=11))

httpsで接続可能である事を確認します。

# curl -I -k https://localhost/
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 12 Aug 2020 11:52:14 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 11459
Connection: keep-alive
Vary: Accept-Language, Origin, Cookie
Content-Language: en
X-API-Total-Time: 0.050s
Content-Security-Policy: default-src 'self'; connect-src 'self' *.pendo.io ws: wss:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' *.pendo.io; img-src 'self' *.pendo.io data:; report-uri /csp-violation/
X-Content-Security-Policy: default-src 'self'; connect-src 'self' *.pendo.io ws: wss:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' *.pendo.io; img-src 'self' *.pendo.io data:; report-uri /csp-violation/
X-Frame-Options: DENY
Cache-Control: no-cache, no-store, must-revalidate
Expires: 0
Pragma: no-cache

Ansible Towerへの接続

Ansible Towerへの「接続ユーザ/パスワード」は、inventoryファイルで定義した通りです。以下のような出力の場合は「admin/P@ssw0rd」でログインします。

# grep ^admin inventory
admin_password='P@ssw0rd'

ブラウザで接続すると以下のような画面が表示されます。

ansible tower login

ライセンスファイルをアップロードし、使用許諾契約書に同意します。

ansible tower license

以下のようなAnsible Towerのトップページに遷移します。

ansible tower top

タイトルとURLをコピーしました