OSS版 Ansible Tower alternative である Ansible Semaphore を試したぞ!
Ansible Tower の OSS Alternative であるところの Ansible Semaphore を試した。 Ansible を利用してデプロイするのの web ui である。
installation guide 通りにやれば利用可能。
docker run -d --name=mysql -p 127.0.0.1:3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql
などとして mysqld を立ち上げておく(もちろん、別に docker じゃなくてもいい)。
https://github.com/ansible-semaphore/semaphore/releases から最新版のバイナリを取得(golang なので single binary)。
semaphore -setup
として、起動。セットアップが始まる。セットアップは以下の様な感じ。
$ ~/Downloads/semaphore_darwin_amd64 -setup
Hello! You will now be guided through a setup to:
1. Set up configuration for a MySQL/MariaDB database
2. Set up a path for your playbooks (auto-created)
3. Run database Migrations
4. Set up initial seamphore user & password
> DB Hostname (default 127.0.0.1:3306):
> DB User (default root):
> DB Password: my-secret-pw
> DB Name (default semaphore):
> Playbook path:
Generated configuration:
{
"mysql": {
"host": "127.0.0.1:3306",
"user": "root",
"pass": "my-secret-pw",
"name": "semaphore"
},
"port": "",
"bugsnag_key": "",
"tmp_path": "/tmp/semaphore",
"cookie_hash": "3aIKJIwVCvXH6vLGb8xhQHMr90OeVZ1SimYMNJBWD+A=",
"cookie_encryption": "TDFElfq2JZN5PfTfPedRjgMZ+MZUY9VgNTZCS/sGJTY="
}
> Is this correct? (yes/no): yes
Running: mkdir -p /tmp/semaphore..
Configuration written to /tmp/semaphore/semaphore_config.json..
Pinging database..
Running DB Migrations..
Creating migrations table
Executing migration v0.0.0 (at 2016-06-25 08:44:13.784368138 +0900 JST)...
[11/11]
Executing migration v1.0.0 (at 2016-06-25 08:44:14.340635482 +0900 JST)...
[7/7]
Executing migration v1.1.0 (at 2016-06-25 08:44:14.752282549 +0900 JST)...
[1/1]
Executing migration v1.2.0 (at 2016-06-25 08:44:14.861796122 +0900 JST)...
[1/1]
Executing migration v1.3.0 (at 2016-06-25 08:44:14.918184638 +0900 JST)...
[3/3]
Executing migration v1.4.0 (at 2016-06-25 08:44:15.103055625 +0900 JST)...
[2/2]
Executing migration v1.5.0 (at 2016-06-25 08:44:15.220915164 +0900 JST)...
[1/1]
Executing migration v0.1.0 (at 2016-06-25 08:44:15.279912624 +0900 JST)...
[6/6]
> Username: foobar
> Email: [email protected]
> Your name: Foo Bar
> Password: *********
You are all setup Foo Bar!
Re-launch this program pointing to the configuration file
./semaphore -config /tmp/semaphore/semaphore_config.json
To run as daemon:
nohup ./semaphore -config /tmp/semaphore/semaphore_config.json &
You can login with [email protected] or foobar.
設定ファイルが生成されるんで、メッセージどおりにそれを使って起動すれば OK.
ここまでは極めて簡単にできる。
現時点の最新版である v2.0.2 には致命的な問題がある(全くデプロイできない)ので、困ったなーって思って git log 見たら HEAD では治ってたので、リリースしてよ、って言ったら音速でリリースされた。
が、v2.0.2 でエンバグしていたので、パッチを送ってみたが、そうじゃないって言われたので様子を見ている。たぶんためそうと思ってる人はv2.0.3まで待つのが良い。 https://github.com/ansible-semaphore/semaphore/issues/142
開発
patch 送ったりするにはどーすりゃいいか。golang の開発環境はすでにあるとして、、
circle.yml の以下の部分を参考に、手でインストールする。。 https://github.com/ansible-semaphore/semaphore/blob/master/circle.yml#L7-L17
そしたらば、./make.sh watch とすると、ファイル変更すると自動で更新がかかる感じで、プロセスが起動する。
ってだけ。
利用手順
まず、Dashboard を見て、プロジェクトを追加します。
次に、Key Store に ssh key を登録します。ここに登録した ssh key は、ログインと git の clone の両方に利用されます。
playbook 登録してるレポジトリを登録しまうす。git clone されるだけなので、file:// でもなんでもOK.
インベントリを登録します。これは ansible コマンドでいうところの ansible-playbook -i www playbook.yml
の www にあたる部分ですね。
Environment を登録します。ansible 内で variable として利用可能になる。のかな?よくわかってない。
run ボタン押すと、タスク実行画面が起動する。ここで、変数をいじったりとかできるので便利。
まとめ
v2 が出たばかりで v2 は荒削りだが、アーキテクチャは綺麗なので良さそう。 go+ansible みたいな構成になってていじりやすい。コードは綺麗。インストールも楽。 今後に期待がモテる。