■ はじめに
イベントドリブンな自動化ツール StackStorm の公式ドキュメントに、Ansibleでのインストール方法が記載されていたので、試してみます。
・ドキュメント
https://docs.stackstorm.com/install/ansible.html
・Playbook
■ 環境
インストール先
あまり低スペックだと、インストールの途中で何かしらのタイムアウトで失敗しています。例えば、 AWS の t2.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 stackstorm.yml -i 'localhost,' --connection=local
・ログ(抜粋)
[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アドレス> でブラウザでアクセスします。

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

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