Ansible Towerのインストール手順を示します。Ansible Towerは、Ansibleに対してWebインターフェース, REST API, タスクエンジンの機能を提供するプロジェクトです。
公式ドキュメント
Ansible Towerの公式資料は、以下URLのAnsible Docs内に含まれています。
Ansible DocumentationAnsibleDocumentation
検証ライセンスの発行
Ansible Towerは60日限定で検証ライセンスが発行されます。以下のサイトより検証ライセンスを発行できます。
Red Hat Ansible Automation Platform | Product TrialDownloadtheno-cost,60-dayRedHatAnsibleAutomationPlatformtrial,whichincludesaccesstooursystemmanagementandpredictiveanalyticssoftware.
検証ライセンスは機械的に発行されるのではなく、レッドハットの担当者が目視でライセンスを発行するかどうかを判断します。特に有名企業ではなくてもライセンスは発行してもらえるようですが、明確な商用導入スケジュールが決まっていない場合は、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のトップページに遷移します。