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で手軽に取得できる。
ユーザごとの権限管理を気を付ければ手軽にチームでも使えるだろうし、かなりいいと思う。