みなさんこんにちは。レッドハットの杉村です。Ansible のテクニカルサポートをしています。
毎月何か書くのを目標にしているのですが、1月は残念ながら書けませんでした。きょうは2月1日ですが、1月32日ということにしてください。
今回は Ansible Tower についての問い合わせでよくいただくものについて軽く触れてみようと思います。
Engine からの移行
コマンドラインから ansible-playbook コマンドを利用して動いていたものを Ansible Tower に載せて動かそうとしたときに、必要なディレクトリを参照してくれないという問い合わせをよくいただきます。
プレイブックやその必要なファイルを含む「プロジェクト」としてのディレクトリが Ansible Tower 上に配置されますが、そのプロジェクトディレクトリにあるものを利用した処理によって Tower のインスタンスが壊されることがないよう、標準設定では「ジョブの分離」の機能が有効化されています。
安全のため、このジョブの分離の機能は有効のままでお使いいただくことをお勧めします。必要に応じて「分離されたジョブに公開するパス」を設定していくのがいいと思います。
Web UI が更新されない
特にクラスタ構成にしている場合、ジョブを実行しても画面が更新されずにずっと実行中になっていてブラウザをリロードすると終わっている、というようなことがあります。
Web UI の更新は WebSocket の仕組みで動作しています。ロードバランサーがあって SSL/TLS を終端している場合、Tower 側では 80/tcp だけで受けるように設定して構成します。このとき、インスタンス間の WebSocket のための追加の設定がされていない場合、通信が失敗して画面の更新がされないことがあります。 docs.ansible.com
上記のドキュメントにある「プロキシーのサポート」についての設定も必要な場合があります。
WebSocket の設定は、Tower のインスタンス上ではこちらのコマンドで確認することもできます。
接続できない場合
# awx-manage run_wsbroadcast --status Broadcast websocket connection status from "host01" to: hostname state start time duration (sec) host02 disconnected N/A N/A host03 disconnected N/A N/A Broadcast websocket connection stats from "host01" to: hostname total per minute host02 0 0 host03 0 0
接続できるよう設定した場合
# awx-manage run_wsbroadcast --status Broadcast websocket connection status from "host01" to: hostname state start time duration (sec) host02 connected 2021-02-01 02:41:35.337909 230 host03 connected 2021-02-01 02:41:35.257562 230 Broadcast websocket connection stats from "host01" to: hostname total per minute host02 0 0 host03 0 0
アップグレードできない
Ansible Tower は比較的足の速いプロダクトで、すぐ EOL (End Of Life) を迎えてしまいます。
RHEL のバージョンも 7.7 以降もしくは 8.2 以降を要求するようになったのですが、特に日本のお客様では OS を古いバージョンに固定されていることも多く、Tower が EOL になってしまうのに OS を上げられないためにバージョンアップできないという問題を抱えていらっしゃることもあります。
EOL となった古いバージョンについての問い合わせは一切お受けすることができませんので、計画的にバージョンアップしていただくようお願いしています。
特に RHEL のバージョンについては、RHEL 7 をサポートするのは現在最新版の Ansible Tower 3.8 が最後となりますのでご注意ください。RHEL 8 をお使いいただくことで Python 3 に完全に移行することができますので、積極的にご検討いただきたいです。
認証の連携ができない
Ansible Tower の認証にはさまざまな外部サービスを利用することができます。ユーザに権限を適切に設定することも、弊社が提唱する「自動化2.0」の大事な要素となっています。
特に LDAP (主に Windows Active Directory) や SAML についてのお問い合わせをよくいただきます。
基本的にはドキュメントに書かれている通りではあるのですが、実際に試してみると環境や設定の問題でうまく連携しないということもよくあります。SSL/TLS 証明書を自己署名にしている場合に失敗するという事例も多いです。
事例があるたびにナレッジベースに残すようにはしています。こちらはわたしが書いたものの一例です。カスタマーポータルにアカウントがある方はご覧ください。
- How Can I Authenticate Using Windows Active Directory in Ansible Tower ?
- How To Configure SAML Authentication with Azure AD in Ansible Tower?
- How Do I Use SAML Authentication With OKTA in Ansible Tower?
思うように動かないときは
構成情報や実行のログと、何が問題なのかを明確にいただけますとお手伝いしやすくなります。Ansible Tower は REST API からさまざまな情報を取得することができます。/api/v2/ping/ 以外の API については、admin ユーザでログインしてから取得してください。
Ansible Tower のインストール状況や設定
https://<TOWER_URL>/api/v2/ping/ https://<TOWER_URL>/api/v2/instances/ https://<TOWER_URL>/api/v2/config/ https://<TOWER_URL>/api/v2/settings/all/
ジョブが終わらないとき
https://<TOWER_URL>/api/v2/unified_jobs/?status__in=new,pending,waiting,running
プロジェクト
https://<TOWER_URL>/api/v2/project_updates/N/ https://<TOWER_URL>/api/v2/project_updates/N/stdout/
インベントリーの同期
https://<TOWER_URL>/api/v2/inventory_updates/N/ https://<TOWER_URL>/api/v2/inventory_updates/N/stdout/
ジョブ
https://<TOWER_URL>/api/v2/jobs/N/ https://<TOWER_URL>/api/v2/jobs/N/stdout/
その他 Ansible Tower のログ
sosreport コマンドを実行して収集していただけますととても助かります。
- /var/log/tower/
- /var/log/supervisor/
- /var/log/nginx/
などをよく調査しています。
おわりに
Ansible Towerの評価ライセンスリクエストはこちらからご利用いただけますのでお試しください。
Happy Automation!