Kompira Enterprise で構成管理ツールを操作して、構成管理作業の自動化を行いたい場合があると思います。
そこで本稿では、構成管理ツール「Ansible」において構成内容を記述したファイルである Playbook を、 Kompira Enterprise から実行する方法を紹介します。
※ 本稿では既に Kompira Enterprise サーバーに Ansible がインストールしてある状態を想定しています。インストール方法に関しては「インストールガイド」を参照してください。
動作確認環境
ソフトウェア | バージョン |
---|---|
Kompira Enterprise | 1.5.5.post11 |
Kompira Enterprise サーバー OS | CentOS 7.8.2003 |
接続先サーバー OS | CentOS 7.8.2003 |
または
ソフトウェア | バージョン |
---|---|
Kompira Enterprise | 1.6.2.post7 |
Kompira Enterprise サーバー OS | CentOS 7.8.2003 |
接続先サーバー OS | CentOS 7.8.2003 |
全体構成図
本稿で扱う構成を以下に示します。
inventory の設定
始めに、Ansible の inventory の設定を行います。
Kompira Enterprise サーバーのコンソール上で inventory ファイルを開いて以下のようにグループ名を [kompira] として、今回 Ansible を実行する接続先の情報を追加してください。
[kompira] <ユーザー名>@<接続先ホスト名 or IP アドレス>
※ inventory ファイルのデフォルトのパスは /etc/ansible/hosts になります。
※ <ユーザー名> 、<接続先ホスト名 or IP アドレス> は、ご自身の環境の接続先情報に置き換えて入力してください。
※ <ユーザー名> は root 権限を持っているものにしてください。
Playbook の作成
次に、今回 Ansible で実行する内容を記述した Playbook を作成します。
Playbookについての詳細は、「Playbook の概要」を参照してください。
今回は、Apache をインストールして、引数で指定したユーザー ID 、パスワードをもつユーザーを追加するように記述した Playbook「kompira_test.yml」を、/tmp に以下のような YAML 形式で作成します。
kompira_test.yml
- hosts: kompira become: yes tasks: - name: install Apache yum: name: httpd - name: start httpd service: name: httpd state: started - name: add user user: name: "{{ user_name }}" password: "{{ password | password_hash('sha512') }}"
ssh 公開鍵登録
接続先サーバーに対して Playbook を実行するため、公開鍵による ssh 接続を行えるように設定します。
「公開鍵認証を使ってssh接続をする」の「証明書の作成」、「リモートサーバーでの証明書の登録」を参考に鍵ファイル「kompira.key」 を作成し、「kompira」 ユーザーが接続先に対して公開鍵による ssh 接続が行えるように設定してください。
完了したら Kompira Enterprise サーバーのコンソール上で以下のように入力して、パスワード入力無しで ssh 接続ができることを確認してください。
$ su kompira -c "ssh -i ~/.ssh/kompira.key <ユーザー名>@<接続先ホスト名 or IP アドレス>"
ジョブフローの作成・実行
以下のようなジョブフロー「Playbook実行」を作成してください。
Playbook実行
| user_name | | password | ["ansible-playbook /test/kompira_test.yml --extra-vars 'user_name=${user_name} password=${password}' -i /etc/ansible/hosts" ] => { if $STATUS != 0 | then: print("エラーが発生しました") else: [ __host__ = "<接続先ホスト名 or IP アドレス>", __user__ = user_name, __password__ = password ] -> print("ユーザー名")-> ["whoami"] -> print("httpd の状態")-> ["systemctl status httpd"] }
※ inventory ファイルのパスがデフォルトと異なる場合、「 /etc/ansible/hosts」の部分を正しいパスに書き換えてください。
※ <接続先ホスト名 or IP アドレス> は、inventory で設定したものと同じ値を入力してください
※ Kompira Enterprise 1.5 系の場合は print($RESULT) で結果を出力してください。
このジョブフローでは Playbook の内容を実行した後、作成したユーザーとパスワードで接続先にログインして、ログインユーザー名と httpd の稼働状況を確認します。
作成したら「user_name」、「password」に新規登録するユーザー名、パスワードを入力して実行してください。今回はそれぞれ「test」、「kompira」とします。
実行結果は以下のようになります。
実行結果をさらに下に進めると、ログインユーザー名が test になっていて、httpd の Active が active (runnning) になっていることから、Playbook の内容が正しく反映されていることがわかります。
以上のようにして、Kompira Enterprise から Playbook を実行することができました。これを利用することで既存の Playbook を Kompira Enterprise に流用できるのはもちろんのこと、定期的に Playbook を実行したり、構成管理部分を Ansible に任せてそのほかの処理は Kompira Enterprise が行うといったような作業分担も可能になります。