こんにちは。
Ansible の Playbook 管理ツールといえば、 Ansible Tower / AWX / Ansible Semaphore 等々がございます。
これらを業務フローに組み込めないかな、と試してみたのですが、いずれもあまりピンとこず。
ないなら自分で作ってしまえと思い、年末の勢いでツールを作ってみました。
https://github.com/snkk1210/ease
実現したかったこと
ツールを作成するに辺り、実現したかったポイントは下記 7 点です。
・WEB ブラウザ上で Playbook が管理できる。
・WEB ブラウザ上で Playbook に定義された処理を実行できる。
・処理実行 ( プロビジョニング ) 履歴を保持できる。
・既に存在する Playbook ( リポジトリ ) の資産を流用できる。
・ユーザ毎に細かな権限設定が可能であり、組織的に管理できる。
・プロビジョニング時に公開鍵認証/パスワード認証の両方が使用できる。
・外部ファイルをアップロードし、処理実行時に利用することができる。
社内でのユースケースとしては、下記のようなことを実現したく実装しました。
だいたいの使い方
1. プロビジョニング対象への接続認証を登録
サイドメニューから「Make Auth」を選択し、認証名、パスワード、秘密鍵を登録
2. Playbook を作成
サイドメニューから「Make Playbook」を選択し、下記項目をそれぞれ登録
・Playbook
→ Playbook の名前
・repository
→ Playbookに使うリポジトリ名
・認証
→ 作成した接続認証
・private_key
→ 認証に使う秘密鍵
※ここで設定した秘密鍵情報が優先される(空にすると接続認証の情報を使用)
・inventory
→ インベントリファイル
・vars
→ 変数ファイル
・main
→ レポジトリに存在する role を include する Playbook
3. Playbook を選択
サイドメニューから「Playbooks」を選択し、一覧の中から使用する Playbook の「Run」を選択
4. Playbookを実行
セレクトボックスから「鍵認証」「パスワード認証」を選択して、「ドライラン」または「実行」を選択
権限周り
実装する権限は下記 3 ロールに絞りました。
※ もっと細かく調整できるように改修したいですね。
admin → 全てのリソースの操作が可能/ユーザの作成が可能
read-only → 全てのリソースの「閲覧」のみ可能
他ユーザ → 自分で作成したリソースのみ操作が可能
終わりに
余力があれば、アカウント権限操作周りの機能と、WEB ベースでのリポジトリ追加機能を実装する予定です。
始めて Laravel 使いましたが、こんな感じに実装できるんですね。
色々と勉強になりました。