StackStorm, 運用管理

 こんにちは、インフラ本部の大山裕泰です。
 ここでは StackStorm の開発・運用を実際に行っている人向けに、拡張モジュール (pack) のパラメータ設定のテーマで掘り下げた内容をお届けします。

 StackStorm がどんなもので、どういう問題を解決するかについては StackStormで始める運用自動化 ~入門編~ をご覧ください。

 このエントリによって、StackStorm pack の config.yaml と config.schema.yaml の違いや、どういったケースでどのような設定方法がベストかを理解できるようになると思います。

 冒頭で紹介した CodeZine の記事でも書きましたが、レガシーな pack の設定パラメータの記述方法として、対象 pack の config.yaml ファイルに記述する方法があります。その他に config.schema.yaml で設定されたパラメータを pack の設定コマンド st2 pack config から設定する方法と、StackStorm が参照するデータストア (本校執筆時点の StackStorm では MongoDB を使用) に設定する方法があります。
 ここでは AWS の StackStorm モジュール aws pack を例に、それぞれの方法の使い方や他の設定方法との違いについて解説して行きます。

config.yaml による設定

 config.yaml による設定は、最も単純な pack の設定パラメータの記述方法です。ユーザは config.yaml 編集し、StackStorm pack に任意のパラメータを渡すことができます。これにより、StackStorm の UI を通して外部サービスのイベントハンドリングやアクションを実行できます。
 以下は aws pack のデフォルトの config.yaml の全文になります。

---
# Note: credentials under "setup" object are deprecated and have been replaced
# with top-level values which have precedence and also work with dynamic config
# values.
setup:
  region: ""
  aws_access_key_id: null
  aws_secret_access_key: null

aws_access_key_id: null
aws_secret_access_key: null
region: "us-east-1"
interval: 20
st2_user_data: "/opt/stackstorm/packs/aws/actions/scripts/bootstrap_user.sh"

service_notifications_sensor:
  host: "localhost"
  port: 12345
  path: "/my-path"

sqs_sensor:
  input_queues:

sqs_other:
  max_number_of_messages: 1

 config.yaml は全ての pack で共通して pack の管理ディレクトリ (/opt/stackstorm/packs/{pack 名}/) の直下に置かれています。aws pack の場合には config.yaml は /opt/stackstorm/pack/aws/ 配下に置かれます。

config.schema.yaml による設定

 config.yaml はとても単純な仕組みで使い勝手が良いのですが、pack の管理ディレクトリ配下のファイルが状態を持ってしまうと、運用上で不都合が生じてしまいます。

 pack は StackStorm の ‘st2 pack install’ コマンドによって StackStorm-Exchange から最新のコードを取得し、対象 pack の管理ディレクトリ (/opt/stackstorm/packs/{pack名}/) にデプロイされた後、StackStorm に登録されます。
 また pack の削除は st2 pack uninstall コマンドで行いますが、その際 pack の管理ディレクトリがそっくり削除されるため、pack のデプロイ後に編集した config.yaml も削除されます。
 pack の削除以外でも、StackStorm-Exchange の pack が更新され config.yaml のスキーマが変わった場合には、pack のアップデート時にユーザが編集した config.yaml は上書きされてしまいます。

 こうした挙動は Infrastructure as Code のプラクティスに合ったもので問題ありません。
 むしろ config.yaml の存在によってポリシーと設定が結合する格好になり、上記のような運用上の問題が発生します。また、設定項目や設定値の型はユーザが自由に記述することができるため、設定周りのテストがしづらいという問題もあります。

 これに対して config.schema.yaml で記述される 設定スキーマ (Configuration schema) の仕組みが作られました。
 設定スキーマは、予め pack の作成者が必要な pack の設定項目のスキーマをスキーマファイル (config.schema.yaml) に定義しておき、ユーザは ‘st2 pack config ‘ コマンドによって、予め規定された設定項目・型の値を設定します。

 これによりテストし易くなるという利点のほか、設定結果を pack の管理ディレクトリとは別の設定項目を管理するディレクトリ ‘/opt/stackstorm/configs’ 配下に置き、ポリシーと分離させることで、pack のバージョンや状態に関わらず設定内容を独立させることができます。

 以下に aws pack の config.schema.yaml の全文を示します。

 ’st2 pack config aws’ を実行することで、上記のスキーマファイルに沿った入力が求められ、最終的に aws 用のオリジナルの設定ファイルが生成されます。

 なお、ここでの設定は cnofig.yaml の設定よりも優先されます。なので、同じ設定項目を config.yaml と config.schema.yaml から生成された設定ファイルの両方で設定されている場合には、後者の値が読み込まれます。

データストアによる設定

 最後に、データストアによる pack の設定について解説します。
 ’st2 key set’ コマンドによって、以下のように任意の key/value をデータストアに登録させることができます。

 センサーの実装においては、上記の config.yaml/config.schema.yaml による設定は起動時に読み込まれ、ここでの設定値は動的に読み込まれるような 使い分け をしており、aws pack のセンサーではこれに沿って、データストアによる設定が優先されるように実装されています。

 また Jinja template の拡張により、以下のように config.schema.yaml から生成した設定ファイルから、データストアで設定した値を参照させることができます。

 以下で、設定ファイルで指定したキー ‘dev_api_key’ の値 ‘SecretValue’ を暗号化して設定します。

 ただ、これには 文字列型しか設定できない制限 が存在するため、使用する際には注意が必要になります。

JANOG, ツチノコNOC

始まったと思ったらもう最終日。
3日間、本当にあっという間でした。

2日目に行われた懇親会でツチノコNOCに参加してくれた学生たちがライトニングトークを行いました。

IMG_0074

2日間で起きたトラブル?!について

ホール入り口のアクセスポイントに繋がりにくい!

立ち見が出るセッションもありホールは大盛況。
アクセスポイント毎のアソシエート数を見ていると入り口付近は接続数が伸びていないことがわかりました。

会場図

立ち見の参加者さんが、アクセスポイントからの電波を通りにくくする壁となっていました。
そのため、該当のアクセスポイントの出力を下げ、他のアクセスポイントに逃がし繋がりにくさを回避しました。

接続数が少ないアクセスポイントの対応について

会場内に設置したアクセスポイントのなかで、極端に接続数が少ないものが確認できました。

接続数減少AP

現地を確認するとアクセスポイントの角度が設置時時よりずれていることがわかりました。
角度を戻すと少しずつ接続数が増えていき正常な動作に戻りました。

接続数減少AP2

用意したパトランプは…

パトランプ

Zabbixに連動したパトランプを用意しましたが、鳴り響いたのは撤去作業の時のみでした。
(監視の止め忘れによるもの)

最後に

短い時間で資料をまとめ、懇親会会場で発表をした学生ツチノコNOCメンバーお疲れさまでした。
小さな事項を挙げればキリがないですが、大きなトラブルもなく会場ネットワークを提供できたかと思います。

ご利用いただいたJANOGerの皆さまありがとうございました!
ご協力いただいたツチノコNOCメンバーのみんなありがとうございました!

今回の会場ネットワーク構築について、ツチノコブログで更新していきますのでお見逃しなく!

 

JANOG, ツチノコNOC

本日からJANOG39ミーティングがはじまりました!
雪景色の金沢は、初日から大盛況です。

ツチノコNOCもフル稼働!

ツチノコNOCは午前中からフル稼働で設営を行いました。
プログラムの構成上、Day1が一番部屋を使うので準備が山積みです。

朝のブリーフィングでは、部屋の暖房が効き始めるまでコートが脱げないメンバーたち。

朝のMTGⅢ 朝のMTG2

まずは、譜面台にAPをくくりつけます。
レクチャーを受けながらもくもくと作業が進みます。

譜面台Ⅲ 譜面台4

各部屋に設置される前のAP群。
譜面台2 譜面台5

そして、配置。
譜面台6

続いて、ケーブル配線です。

ケーブル配線Ⅲ ケーブル配線1

ケーブル養生も忘れずに。

養生 養生2

お昼前に設営を完了し、ランチを食べて午後からの開場に備えます。

ランチ

いざ、開場!
会場ネットワークのweatermapを見ると会場のネットワークのトラフィックの様子がわかって面白いですよ。

https://weathermap.tnoc.party/

こちらはJANOG初日のWiFiアクセスポイントへの接続数です。
アクセスポイント毎に色分けしてあるのですが、BoFの時間に人が会場を移動した様子が良くわかります。

201701181640

最後に

ホールの入り口は協賛一覧のパネルがお出迎えしてくれます!
協賛してくださった企業様、ありがとうございました!

ホール入り口

明日、明後日も会場でお会いできることを楽しみにしています!
凍っている道路もありますので、足元お気を付けください。

JANOG, ツチノコNOC

ご挨拶が遅くなりましたが、あけましておめでとうございます。
今年もどうぞよろしくお願いいたします!

2017年、1本目のブログはもちろんツチノコNOCの話題です。

機材を発送しました

下見を終えたツチノコNOCは、設計・構築(ホットステージ)を終え、機材を金沢に発送しました。

OLYMPUS DIGITAL CAMERA

OLYMPUS DIGITAL CAMERA

・ケーブル:5箱
・AP :2箱
・ルータ :1箱
・スイッチ:5箱
・ACアダプタ類:1箱
・スタッフパーカー:2箱

どんな機材を使ったか・どんな構成にしたかは、別途記事にしたいと思っています!
お楽しみに!

スタッフパーカーができました

弊社デザインチームがデザインしてくれたスタッフパーカーが届きました。
ツチノコブログでおなじみのチーノくんがデザインされたとってもキュートなパーカーです♥

IMG_0960 IMG_0961

ツチノコNOCのメンバーはこのパーカーを着ているので、よかったら探してみてくださいね。

金沢観光アプリ「金沢すきま旅」のご紹介

最後に、弊社で配信しているアプリのご紹介です。

金沢すきま旅
http://labo.dmm.com/special/sukima/

App StoreでiPhoneアプリを配信しています!
空いている時間を指定するとおすすめの観光施設を案内してくれる金沢観光にぴったりのアプリです!
JANOGで金沢に来たので観光もしたいな~という人におすすめです。
ぜひ、ご利用ください♪

最後に

JANOG39ミーティングの開催まで1週間をきりました!
来週の今頃は何事もなく会が終わっているといいな★と、願っております。

週末の北陸地方は雪予報がでています。
JANOG当日もお足元が悪い可能性がありますので、防寒などなどご準備くださいませ。

イベント, コラム, 数学

この記事は、数学カフェ_4次元コンテンツ出展の記録 Advent Calendar 2016 の、13日目となる記事です。
こんにちは。バーテンツチノコ(仮) の近藤です。
六本木のBARで夜な夜な、コードは書くけどカクテルは作れないバーテンダーをやっています。

私は今年、数学カフェのメンバーとして、11月5, 6日のサイエンスアゴラに出展をしてきました。
(※個人での参加であり、いかなる所属団体・DMMと関係ありません)
(※当記事は研究された事実を示すものではなく、実験中の試みになります)

こちらが展示の様子です。

何だか椅子に座ってヘッドマウントディスプレイを被っている人がいたり、
「4次元を見てみよう」というタイトルと、ポスターにたくさんの文字が書いてあったり。
ヘッドマウントディスプレイは、被ると立体が目の前に出現したりするのですが、それらだけ1人で見ても「???」ですよね。

コンテンツを展示するにあたっての口頭説明(接客)は必須です。

というわけで、本日は、「サイエンスアゴラ 出展当日の口頭説明」というテーマでブログを書きます。
実際にブースに遊びに来たようなつもりになってお付き合いいただければ幸いです。

====================

まず、「立体視」とは、どういう仕組みでしょうか。

私たちが目でものを見るときは、2次元の像しか見えないにも関わらず、目で見ているものがどんな立体なのかを知覚することが出来ます。

 

以下の像1枚だけを見ると、

赤で囲んだ面を手前と見た「立方体」か、黄色で囲んだ面を手前と見た「ちょっと歪んだ6面体」かの2通りに見えてしまいます。

これを「立方体」に見るためにはどうすれば良いでしょうか。

ものが立体に見える要因はいくつかありますが、影響が大きい要因を紹介します。


■左右の目の視差

試しに、何か物体を目の数十cm前に用意して、右目と左目を片目ずつパチパチつぶって見てみると、目の位置のズレから、同じものを見ているのに違う像が見えるはずです。

たとえばサイコロであったら、同じ場所にあってもそれぞれの目にはこんな風に違う像に見えたのではないでしょうか。

    

(※ちなみに、↑の画像で、「交差法」での立体視ができます)

私たちは、その2つの視点の差から情報を得て、頭の中で奥行きを認識します。

★ポイント: 左目と右目でそれぞれで別の角度から立体の像を見ると、脳内ではひとつの立体に見えます
では、同じように2つの目でものを見るときに。
現実に両目で見た時のように3次元上の距離の視差を作るだけではなく、4次元の方向(!)にも少しだけ視差を作ってものを見たとしたらどうなるでしょうか。

4次元な立体視(!?)が出来るのでは?

そんな仮説も入れ、今回の展示物は作成されました。

======

では、4次元の方向に傾けるというのはどういうことでしょう。

 

まずこちらの折り紙。

壁(2次元)に画鋲ではりつけてくるくると回すと。
角度が変わっていくけど、形は変わらず正方形ですね。

では同じ折り紙を、1次元上げて3次元空間上でくるくる回すとどうなるでしょうか。

正方形だった折紙が、ゆがんで台形になっていきます

(※↑の画像でも、「交差法」での立体視ができます)

 

次に1次元あげてこちらのサイコロ。

3次元上でくるくると回すと。
角度は変わっていくけど、形は変わらず立方体ですね。

では同じサイコロを、1次元あげて4次元空間上でくるくる回すとどうなるでしょうか。

折り紙のときと同じように、
立方体だったサイコロが、ゆがんで四角錐台になっていきます

(※↑の画像のように立体物が並んでいれば、「交差法」での四次元立体視が・・・出来るかも!?)

 

今回の展示物であるOculus Riftは、装着すると3次元の物体と4次元の物体が表示され、そのとき視点があたっている物体をゲームコントローラで操作してぐりぐり回転させることが出来るというものでした。

「回転」とは。先ほどサイコロをくるくる回したような3次元空間上での回転ボタンとは別に、今回は四次元の方向へ回転させるためのボタンと、左目と右目それぞれに見える物体を変化させ、四次元の立体感を出していくためのレバーを準備しました。

レバーは、NINTENDO 3DSの右についている、立体感を調節するためのレバーをご想像いただくと、わかりやすいかと思います。両目の距離を、4次元の方向に離していきます。

レバーを調節することで、従来の立体視とは違い、左目と右目にそれぞれ、「同じ形なんだけど4次元の方向にずれていく物体」が見えます。

4次元の方向にずれる時のサイコロが立方体から四角錐台になるような動きは、3次元仕様の脳をもつ私たちには直感的ではない動きですし、明らかに別の物体である「立方体」と「四角錐台」を両目ばらばらに見ることも大分気持ち悪い感じです。

ですが、その四次元方向にずれた「左目に見える物体」と「右目に見える物体」を無理やり同じ物体と思いこんで見てみることで、四次元のずれはこういうことなんだな、と認識することが出来れば・・・そんな期待を持って開発しました。

実物は、現在どこかに展示しているわけではないので見ることは出来ませんが、また発表の機会がありましたら、是非体験しに来てください。

以上、視覚から4次元を体感してみよう!といった展示での口頭説明でした。
たまたま持っていた小道具(折り紙やルービックキューブ)を使って、なるべく理解しやすく説明するよう努めました。

最後に個人の感想を書きますと、両眼の視差で四次元立体視が本当に出来るのかどうかは、いまだに半信半疑ではありますが、
VRを用いて4次元物体や3次元物体を4次元空間上で眺め続けること、自分で自由に操作することで、高次元への理解がより深まったと感じております。

素敵な企画に関わることが出来てよかったです!

ご協力いただいた方、ご来場くださった方、どうもありがとうございました!!!

PAGE TOP