AnsibleのWebベースでの操作・管理ツールといえばAnsible Towerが有名だが、10ホスト以上になると有償となってしまうため、あまり気軽に入れられないところがある。
で、他に何かないかと探していたところ、「Ansible Semaphore」というものがあったので、すこし触ってみることにする。一応Dockerもあるようだが、今後のことも考えてCentOS 7に入れてみることにする。
OSS Alternative Ansible Towerと言っているので、なかなか期待できそうだ。
1.前提パッケージのインストール
まずは前提となるパッケージのインストールから。
以下のコマンドを実行する。
sudo yum -y install epel-release
sudo yum -y install ansible mariadb mariadb-server
MariaDBのサービス起動設定と、最低限のセキュリティ設定を行っておく。
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation
データベースとそこにアクセスするユーザを作成する。
mysql -u root -p -e "
CREATE DATABASE semaphore;
CREATE USER 'semaphore'@'localhost' IDENTIFIED BY 'パスワード';
GRANT ALL PRIVILEGES ON semaphore.* TO 'semaphore'@'localhost' WITH GRANT OPTION;"
Playbookの配置先として、opt配下にディレクトリを作成しておく。
mkdir /opt/semaphore
2.Semaphoreのインストール
次に、Semaphoreのインストールを行う。
コンパイル済みのバイナリがあるので、ダウンロードしてセットアップさせる。
cd /usr/bin
wget https://github.com/ansible-semaphore/semaphore/releases/download/v2.0.4/semaphore_linux_amd64
mv semaphore_linux_amd64 semaphore
chmod a+x semaphore
semaphore -setup
[root@BS-PUB-CENT7-01 bin]# semaphore -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): semaphore
> DB Password: P@ssw0rd
> DB Name (default semaphore): semaphore
> Playbook path: /opt/semaphore
Generated configuration:
{
"mysql": {
"host": "127.0.0.1:3306",
"user": "semaphore",
"pass": "P@ssw0rd",
"name": "semaphore"
},
"port": "",
"bugsnag_key": "",
"tmp_path": "/opt/semaphore",
"cookie_hash": "pi2crua6ZVIrUvbLAj8BLldw1uANvJwRWaS7pFCWmRw=",
"cookie_encryption": "Sj1f/Z2XT592b/jeHue3K3pVBd9icJeubh1ixh58+yQ="
}
> Is this correct? (yes/no): yes
Running: mkdir -p /opt/semaphore..
Configuration written to /opt/semaphore/semaphore_config.json..
Pinging database..
Running DB Migrations..
Creating migrations table
Executing migration v0.0.0 (at 2016-09-25 00:09:01.221793369 +0900 JST)...
[11/11]
Executing migration v1.0.0 (at 2016-09-25 00:09:01.53705146 +0900 JST)...
[7/7]
Executing migration v1.1.0 (at 2016-09-25 00:09:01.858125307 +0900 JST)...
[1/1]
Executing migration v1.2.0 (at 2016-09-25 00:09:01.930146649 +0900 JST)...
[1/1]
Executing migration v1.3.0 (at 2016-09-25 00:09:01.963162965 +0900 JST)...
[3/3]
Executing migration v1.4.0 (at 2016-09-25 00:09:02.123194544 +0900 JST)...
[2/2]
Executing migration v1.5.0 (at 2016-09-25 00:09:02.238933666 +0900 JST)...
[1/1]
Executing migration v0.1.0 (at 2016-09-25 00:09:02.268897766 +0900 JST)...
[6/6]
Executing migration v1.6.0 (at 2016-09-25 00:09:02.410236064 +0900 JST)...
[4/4]
Executing migration v1.7.0 (at 2016-09-25 00:09:02.601744445 +0900 JST)...
[1/1]
> Username: semaphore
> Email:
> Your name: semaphore
> Password: P@ssw0rd
You are all setup semaphore!
Re-launch this program pointing to the configuration file
./semaphore -config /opt/semaphore/semaphore_config.json
To run as daemon:
nohup ./semaphore -config /opt/semaphore/semaphore_config.json &
You can login with or semaphore.
最後に、以下のコマンドでsemaphoreを起動する。
nohup ./semaphore -config /opt/semaphore/semaphore_config.json &
3.ブラウザからアクセスする
無事インストールが完了したら、「http://IPアドレス:3000」へブラウザからアクセスする。
ログインには、先ほど設定したIDorメールアドレスとパスワードを用いる。
ログイン直後の画面。まだ何もない状態。
まずは右上の「Projects」からプロジェクトを作成する。
プロジェクト作成後、対象のプロジェクトを選択して「Key Store」からキーの登録をする。
このキーは、Ansibleでのデプロイでもそうだが、git cloneでも使用されるようだ。
Playbookを登録しているgitリポジトリがあれば、左メニューの「Playbook Repositories」から登録できる。
ここで指定した場所にあるPlaybookを指定してタスクをキックすることになる。
Inventoryを登録する。
このインベントリでAnsible hostsの役割も兼ねているようだ。右側にある「edit inventory contents」を編集し、グループとホストの情報を入力する。
最後に、Task Templeteからタスクを作成する。
このとき、実行したいPlaybookを指定してやる。
あとは、対象のタスクをrunするだけだ。
無事、Playbookを適用できた。
対象サーバもGUIで手軽に設定できるし、Playbookもgitで手軽に取得できる。
ユーザごとの権限管理を気を付ければ手軽にチームでも使えるだろうし、かなりいいと思う。