てくなべ

ネットワーク、自動化などの技術的なことを書いていきます。

Ansible で StackStorm をインストールする

■ はじめに

イベントドリブンな自動化ツール StackStorm の公式ドキュメントに、Ansibleでのインストール方法が記載されていたので、試してみます。

・ドキュメント

https://docs.stackstorm.com/install/ansible.html

・Playbook

github.com

■ 環境

インストール先

あまり低スペックだと、インストールの途中で何かしらのタイムアウトで失敗しています。例えば、 AWSt2.micro ではうまくインストールできませんでした。 t2.medium は安定してインストールできました。 システム要件は以下のページで確認できます。

https://docs.stackstorm.com/install/system_requirements.html

Ansibleホスト側

Ansible 2.4.2 を利用しました。特に理由はないですが、今回は Azure Cloud Shell にあらかじめインストールされている Ansible を利用しました。


■ 準備

Playbook

前述のPlaybookをclone しておきます。

git clone https://github.com/StackStorm/ansible-st2.git
cd ansible-st2

その他

inventory ファイル、認証情報などを準備しておきます。


■ 実行

・コマンド

 ansible-playbook -i inventory stackstorm.yml 

・ログ(抜粋)

[DEPRECATION WARNING]: The use of 'include' for tasks has been deprecated. Use 'import_tasks' for static inclusions or 'include_tasks' for
dynamic inclusions. This feature will be removed in a future release. Deprecation warnings can be disabled by setting
deprecation_warnings=False in ansible.cfg.
[DEPRECATION WARNING]: include is kept for backwards compatibility but usage is discouraged. The module documentation details page may
explain more about this rationale.. This feature will be removed in a future release. Deprecation warnings can be disabled by setting
deprecation_warnings=False in ansible.cfg.

PLAY [Install st2] *************************************************************************************************************************

(略)

changed: [18.217.xxx.xxx] => (item=^(export ST2_AUTH_PASSWORD.*))

TASK [st2chatops : Check if any adapter is enabled] ****************************************************************************************
fatal: [18.217.xxx.xxx]: FAILED! => {"changed": false, "cmd": ["grep", "-e", "^export HUBOT_ADAPTER=", "/opt/stackstorm/chatops/st2chatops.env"], "delta": "0:00:00.002958", "end": "2018-03-12 00:51:45.973120", "msg": "non-zero return code", "rc": 1, "start": "2018-03-12 00:51:45.970162", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
...ignoring

TASK [st2chatops : Set variable enabled_adapter] *******************************************************************************************
fatal: [18.217.xxx.xxx]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: list object has no element 1\n\nThe error appears to have been in '/home/yokochi1983/ansible-st2/roles/st2chatops/tasks/main.yml': line 118, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Set variable enabled_adapter\n  ^ here\n\nexception type: <class 'ansible.errors.AnsibleUndefinedVariable'>\nexception: list object has no element 1"}
...ignoring

(略)

TASK [st2chatops : Comment existing hubot adapters in "/opt/stackstorm/chatops/st2chatops.env"] ********************************************
ok: [18.217.xxx.xxx]


PLAY RECAP *********************************************************************************************************************************
18.xx.xx.xx             : ok=96   changed=68   unreachable=0    failed=0

書き方が少し古いようで WARNING が出ました。 また、二つほどタスクがコケましたが、 ignore_errors: true 扱いのようです。


■ 確認

CLI

インストール先にログインし、以下のようにバージョンや簡単な動作確認をします。 なお、ユーザー名とパスワードは、roles/st2/defaults/main.yml で定義したものになります。特にカスタマイズしていない場合は以下のようになります。

  • ユーザー名: testu
  • パスワード: testp
[ec2-user@ip-172-31-2-121 ~]$ st2 --version
st2 2.6.0
[ec2-user@ip-172-31-2-121 ~]$ export ST2_AUTH_TOKEN=`st2 auth -t -p 'testp' testu`
[ec2-user@ip-172-31-2-121 ~]$ st2 run core.local -- date -R
.
id: 5aa5e69cfbe28846c0b28881
status: succeeded
parameters:
  cmd: date -R
result:
  failed: false
  return_code: 0
  stderr: ''
  stdout: Mon, 12 Mar 2018 02:31:57 +0000
  succeeded: true
[ec2-user@ip-172-31-2-121 ~]$

StackStorm 経由でローカルに対して date コマンドが実行できたことを確認できました。

Web UI

https://<インストール先IPアドレス> でブラウザでアクセスします。 f:id:akira6592:20180312114025p:plain

前述のユーザー名とパスワードでログインします。ちょうど先ほどCLIで試したときのログがHISTORYに表示されていることが確認できました。 f:id:akira6592:20180312114231p:plain


■ まとめ

Ansible で StackStorm をインストールできることが確認できました。 他にもワンライナーでインストールしたり、Docker、Vagrant など様々な方法でのインストール方法がありますでの、詳細は、以下の公式ドキュメントをご参照ください。

https://docs.stackstorm.com/install/index.html