Contents
CentOS8にAnsibleの実行結果を専用のコールバックプラグインを使ってデータベースへ格納する
ara
をインストールしてみます。
ara
ドキュメント
araとは
一言で言うと、Ansibleの実行結果を専用のコールバックプラグインを使用してデータベースに格納し記録された結果をWebAPI経由で取得できるインターフェース(Django製)を提供してくれるツールです。
ara単体では、あくまでも結果の格納とWebAPIによる結果の提供までなのでWebでの可視化まではしてくれません。
ちなみに ara-web と言うaraから取得したデータを可視化してくれるインターフェースもあるのでインストールして使ってみます。
ara-webでは物足りなかったら自分で可視化用のWebアプリケーションを自作することも可能です。
環境
項目 | バージョン | 備考 |
---|---|---|
CentOS | 8.0 | IP: 192.168.0.125 |
Python | 3.6.8 | |
Ansible | 2.8.6 | |
ara | 1.1.0 | |
ara-web | 1.0.0 |
インストール・起動
必要なパッケージのインストール
必要なパッケージをインストールします。
1 2 |
[root@ara ~]# dnf -y install python36 git nodejs |
venv作成
venvを作成します。
1 2 3 4 5 |
[root@ara ~]# cd ara [root@ara ara]# python3 -m venv venv [root@ara ara]# source venv/bin/activate (venv) [root@ara ara]# |
Ansibleインストール
Ansibleをインストールします。
1 2 |
(venv) [root@ara ara]# pip install ansible |
araインストール
araをインストールします。
1 2 |
(venv) [root@ara ara]# pip install ara[server] |
araサーバ設定
araの設定ファイルを生成します。
ara-manage
コマンドを実行すれば自動で生成されます。
ara-manageコマンド単体を実行するだけでも作成されますが、ここではtestを引数で実行しています
1 2 3 4 5 6 7 8 9 10 11 12 |
(venv) [root@ara ara]# ara-manage test [ara] No setting found for SECRET_KEY. Generating a random key... [ara] Creating data & configuration directory: /root/.ara/server [ara] Writing default settings to /root/.ara/server/settings.yaml System check identified no issues (0 silenced). ---------------------------------------------------------------------- Ran 0 tests in 0.000s OK [ara] Using settings file: /root/.ara/server/settings.yaml |
settings.yaml
を修正します。
1 2 |
(venv) [root@ara ara]# vi /root/.ara/server/settings.yaml |
全ての接続元からのアクセス許可とCORSを許可します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<br />--- # This is a default settings template generated by ARA. # To use a settings file such as this one, you need to export the # ARA_SETTINGS environment variable like so: # $ export ARA_SETTINGS="/root/.ara/server/settings.yaml" default: ALLOWED_HOSTS: !!python/object/new:box.BoxList listitems: - '*' #- ::1 #- 127.0.0.1 #- localhost state: (snip) CORS_ORIGIN_ALLOW_ALL: false CORS_ORIGIN_WHITELIST: !!python/object/new:box.BoxList listitems: #- http://127.0.0.1:8000 #- http://localhost:3000 - http://192.168.0.125:3000 (snip) |
araデータベース作成
Playbookを実行してDBを作成しないとaraサーバが起動しないので、一先ず簡単なPlaybookを実行します。
コールバックプラグインの設定が必要なので、ここでは環境変数に設定します。
1 2 |
(venv) [root@ara ara]# export ANSIBLE_CALLBACK_PLUGINS="$(python3 -m ara.setup.callback_plugins)" |
以下のPlaybookを作成して実行します。
1 2 |
(venv) [root@ara ara]# vi playbook.yml |
1 2 3 4 5 6 7 |
--- - name: create ara db playbook hosts: localhost gather_facts: no tasks: - ping: |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
(venv) [root@ara ara]# ansible-playbook playbook.yml [WARNING]: No inventory was parsed, only implicit localhost is available [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' Operations to perform: Apply all migrations: admin, api, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying api.0001_initial... OK Applying api.0002_remove_host_alias... OK Applying api.0003_add_missing_result_properties... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying sessions.0001_initial... OK PLAY [create ara db playbook] ************************************************************************************************************************************ TASK [ping] ****************************************************************************************************************************************************** ok: [localhost] PLAY RECAP ******************************************************************************************************************************************************* localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 |
araサーバ起動
araサーバを起動して、問題なくアクセスできるか確認します。
以下のコマンドで IP:Port の引数を渡さない場合、127.0.0.0:8000でListenします。
1 2 3 |
(venv) [root@ara ara]# ara-manage runserver 192.168.0.125:8000 & [1] 3444 |
http://192.168.0.125:8000
にアクセスできれば問題ありません。
ara-webインストール
ara-webのリポジトリをクローンします。
1 2 |
(venv) [root@ara ara]# git clone https://github.com/ansible-community/ara-web |
外部アクセス用の設定に書き換えます。
1 2 3 |
(venv) [root@ara ara]# cd ara-web/ (venv) [root@ara ara-web]# vi ./public/config.json |
1 2 3 4 |
{ "apiURL": "http://192.168.0.125:8000" } |
インストールします。
1 2 |
(venv) [root@ara ara-web]# npm install |
ara-web起動
ara-webを起動します。
1 2 3 4 5 6 7 8 9 10 11 |
(venv) [root@ara ara-web]# npm start Compiled successfully! You can now view ara-web in the browser. Local: http://localhost:3000/ On Your Network: http://192.168.0.125:3000/ Note that the development build is not optimized. To create a production build, use npm run build. |
http://192.168.0.125:3000
ヘアクスして画面が表示されるか確認します。
デモ
以下はApacheをインストールするPlaybookを実行したデモです。
最後に
今回は、ほぼデフォルト状態で簡単にaraとara-webを使ってみました。
araのDBは標準だとSQliteですが、MySQLやPostgreSQLも使えるようです。
実行した時間や処理時間、結果が記録されるので、それを後から確認したい場合などには使えそうです。
オンラインデモでは、もう少し詳細に記録が取れているので、設定を変えれば出来そうです。
araはコマンドラインのAnsibleを実行した記録を管理するにはいいかもしれません 🙂