Upgrade to Pro — share decks privately, control downloads, hide ads and more …

StackstormというIFTTT的なツールをDockerコンテナに載せた小話

 StackstormというIFTTT的なツールをDockerコンテナに載せた小話

2/7. 今日お話すること
3/7. Stackstormとは
4/7. IFTTT的に作業同士を繋げる方法
5/7. DockerでStackstormを立ち上げる一例
6/7. DockerでStackstormを動かす意義と苦労話
7/7. サンプルコード

E7c0cdb6e91562ab5995348cd2b2110e?s=128

gakuji tamaki

January 18, 2020
Tweet

Transcript

  1. StackstormというIFTTT的なツールを Dockerコンテナに載せた小話 AP Communications Co., Ltd. Software Engineer Gakuji Tamaki

  2. 1/7. はじめまして

  3. - 3/7. Stackstormとは - 4/7. IFTTT的に作業同士を繋げる方法 - 5/7. DockerでStackstormを立ち上げる一例 -

    6/7. DockerでStackstormを動かす意義と苦労話 - 7/7. サンプルコード 2/7. 今日お話すること
  4. - 3/7. Stackstormとは - 4/7. IFTTT的に作業同士を繋げる方法 - 5/7. DockerでStackstormを立ち上げる一例 -

    6/7. DockerでStackstormを動かす意義と苦労話 - 7/7. サンプルコード 2/7. 今日お話すること
  5. 出所: Create your own - IFTTT - 定形処理の自動化を進めることができる OSS -

    イベント駆動型でひとつひとつの処理をWorkflowを繋げていく - IFTTT for Ops ≒ Stackstorm 3/7. Stackstormとは 3-1/7. Stackstormとは
  6. 3/7. Stackstormとは 3-2/7. Stackstormでできること 作業(task)同士を繋げること - cron的な任意の時間指定 - ファイルの編集 -

    作業の成否 出所: Installing Extreme Workflow Composer — StackStorm 3.1.0 documentation
  7. 3/7. Stackstormとは 3-3/7. Stackstormの構成要素 出所: High Availability Deployment — StackStorm

    3.1.0 documentation Stackstormは   の 複数プロセスから 構成されている オレンジ
  8. 3/7. Stackstormとは 3-3/7. Stackstormでできること Succeeded Failed 作業(task)同士を繋げること - cron的な任意の時間指定 -

    ファイルの編集 - 作業の成否
  9. - 3/7. Stackstormとは - 4/7. IFTTT的に作業同士を繋げる方法 - 5/7. DockerでStackstormを立ち上げる一例 -

    6/7. DockerでStackstormを動かす意義と苦労話 - 7/7. サンプルコード 2/7. 今日お話すること(再掲)
  10. 4/7. IFTTT的に作業同士を繋げる方法 4-1/7. 構成図とバージョン情報 出所: "Dockerコンテナ上に立てた StacksormのWorkflowからAnsibleのPlaybookの結果をslackに通知する", gkzz

  11. 4/7. IFTTT的に作業同士を繋げる方法 4-2/7. デモの内容 出所: draw.io ①Workflow実行 成否判定フラグ初期化 ②NW機器へPlaybook実行 ③slackへ実行結果と

     実行ログを通知
  12. Succeeded: Failed : Workflow フラグ初期化 succeeded 成功? 4/7. IFTTT的に作業同士を繋げる方法 4-3/7.

    デモのフローチャート Failed NW機器へ Playbook実行 Slackへ通知
  13. 4/7. IFTTT的に作業同士を繋げる方法 4-4/7. デモ

  14. - 3/7. Stackstormとは - 4/7. IFTTT的に作業同士を繋げる方法 - 5/7. DockerでStackstormを立ち上げる一例 -

    6/7. DockerでStackstormを動かす意義と苦労話 - 7/7. サンプルコード 2/7. 今日お話すること(再掲)
  15. 5/7. DockerでStackstormを立ち上げる一例 5-1/7. st2-dockerリポジトリを活用 出所: StackStorm/st2-docker クローンしたst2-dockerリポジトリ内の docker-compose.ymlを使うだけで Stackstormの環境構築は”一応”できる 必要なPackの設定などはコンテナ内で

    行う必要がある、、、。
  16. 5/7. DockerでStackstormを立ち上げる一例 5-2/7. AnsibleとSlack Packをインストールする場合 出所: gkzz/st2-docker-gkz git clone \

    && docker-compose up -d slackbotのトークンなど環境変数の設定 必要なPackをインストールしてくれるシェル スクリプトを実行
  17. 5/7. DockerでStackstormを立ち上げる一例 5-3/7. シェルスクリプトの中身 . /path/to/reload.shで実行 ./path/to/reload.d/*.shのシェルスクリプトを実行 Packをインストールと設定ファイルをsedで編集 出所: gkzz/st2-docker-gkz

  18. - 3/7. Stackstormとは - 4/7. IFTTT的に作業同士を繋げる方法 - 5/7. DockerでStackstormを立ち上げる一例 -

    6/7. DockerでStackstormを動かす意義と苦労話 - 7/7. サンプルコード 2/7. 今日お話すること(再掲)
  19. - VM直下より環境の再構築が容易 - Packの開発と動作検証が捗る ∵ 設定手順がコード化され、冪統制がある程度担保 ∵ リポジトリ、エラーを引いたコマンド、ログを共有すれば、 エラーの調査も(多少)ラク 6/7.

    DockerでStackstormを動かす意義と苦労話 6-1/7. DockerでStackstormを動かす意義
  20. - Dockerで立ち上げていなくてもあるあるなお話、、、。 - バージョンの引き上げが難儀 -> 特にpython2.7とubuntu14.04 -> 今後はubuntu18.04を使っている StackStorm HA

    in Kubernetesを使っていくことが推奨? 6/7. DockerでStackstormを動かす意義と苦労話 6-1/7. DockerでStackstormを動かす苦労話 出所: Move away from Ubuntu Trusty before the EOL date (April 2019) · Issue #151 · StackStorm/st2-docker
  21. おしまい st2-docker-gkz https://github.com/gkzz/st2-docker-gkz Mydemo Pack for StackStorm https://github.com/gkzz/mydemo_pack Dockerコンテナ上に立てたStacksorm のWorkflowからAnsibleのPlaybookの

    結果をslackに通知する https://qiita.com/gkzz/items/ad52628e5f89d2ad6541 7/7. サンプルコード