■ はじめに
イベントドリブンな自動化ツール 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