本記事は Ansible Advent Calender 2016 の 12/11 分の記事です。
■ Ansible Tower とは
Ansible Towerは構成管理ツール Ansible の Web GUI、CLI(tower-cli)ツールです。現在はRed Hat社のプロプライエタリ・ソフトウェア ですが、今後オープンソース化される予定もあります。 Ansible Tower は REST APIに対応していて、例えば以下のようなことができます。
- Job Template(Playbook + αの定義)の実行、確認、追加
- 実行時の標準出力の確認
- インベントリやスケジュールの確認、追加
本記事では、APIをたたくための準備としてトークンの発行方法と、APIリクエスト例をご紹介します。
- 参考: 公式ドキュメント Ansible Tower API Guide v3.0.2
- https://docs.ansible.com/ansible-tower/latest/html/towerapi/
■ トークンの発行方法とトークンの使い方
-
https://{Tower_IP_ADDRESS}/api/v1/authtoken/
に対して、{"username": "user", "password": "mypass"}
というjsonをPOSTします。 - jsonで
token
という名前でトークンの値が返ってきます。 - APIリクエスト時にヘッダー内の
Authorization:
でToken {token-value}
という形式で指定します。
- 参考: 公式ドキュメント Auth Token API Endpoint
- http://docs.ansible.com/ansible-tower/latest/html/towerapi/auth_token.html
トークンの有効期限
デフォルトのトークンの有効期限は1800秒(30分)です。変更したい場合は、/etc/tower/conf.d/session.py
の AUTH_TOKEN_EXPIRATION
の値を変更します。
- 参考: 公式ドキュメント Working with Session Limits
- http://docs.ansible.com/ansible-tower/latest/html/administration/session_limits.html
トークンの有効範囲
トークンはAPIリクエスト元ごとに発行が必要です。たとえばホストAから発行したトークンはホストBでは使用できませんので、別途ホストB用のトークンを発行する必要があります。
■ APIリクエスト例
例えば、JobTemplate ID 10 の JobTemplate を起動させる場合は、以下のようなPOSTをします。
https://{Tower_IP_ADDRESS}//api/v1/job_templates/10/launch/
(ヘッダー内に前述のトークンを指定)
結果はjsonで返ってきます。
なお、エンドポイントの一覧は https://{Towe_IP_ADDRESS}/api/
で確認できます。
- 参考: 公式ドキュメント Browsable API
- http://docs.ansible.com/ansible-tower/latest/html/towerapi/browseable.html
■ さいごに
Ansible TowerはWeb管理画面のほうが注目されることが多い気がしますが、REST APIに対応していることもメリットと感じています。直接APIをサポートしていなかったサービスや機器も Ansible Tower を経由することによって、API化することができ、何か面白いことができようになるのではと思っています。
※本記事は、NetOpsCoding#4で発表した「スマホのセンサーでネットワークを操る」の抜粋をベースにしています。