monolog

monora log #=> ものろーぐ

Dentoo.LT #15 に登壇した

雑記

世にも不思議な電気通信大学MMAという団体が主催している Dentoo.LT #15 というイベントがあって、登壇しました。あと寝坊しました。ゆるしてください

資格の話といいながら今年のネスペの午後II 問題を眺めたりしたのですが、案外普通に解ける感じだったし難易度が意外と高く無さそうだった。ちゃんと問題文を読みましょう。

資格の話 #3.2 @Dentoo.LT #15 from kyontan

最近は150枚ぐらいスライドを作って100枚ぐらいで時間切れになっていることが多い気がするので反省したい。次回は最後まで話します。

余談ですがスライドのテンプレート作ってたらまたCSSとSVGを延々と書くオタクに戻りたくなった。

世にも不思議な電気通信大学MMAという団体が主催している Dentoo.LT #15 というイベントがあって、登壇しました。あと寝坊しました。ゆるしてください 資格の話といいながら今年のネスペの午後II 問題を眺めたりし […]

CloudStack の VM を cs コマンドでデプロイしようとしてハマった

Infrastructure

こんばんは。タイトルだけ書いた下書きが溜まっているので書いていきますということです。

ICTSC6 で CloudStack を使用していた話はまだ書いていなし多分書かないですが、使用していました。

その中で、API を叩いてくれる薄っぺらいラッパーコマンドであるところの exoscale/cs を叩いてデプロイなりVMの起動停止なりボリュームのアタッチなどをやっていたわけですが、デプロイ関連で少しハマったので解決策を紹介。

ちなみにこれ: https://github.com/exoscale/cs。 exoscale 、 CloudStack なんですかね……

CloudStack の API はあまりにも愚直なのでパラメータが無限に多くてしんどいという話はさておき

APIの一覧は http://cloudstack.apache.org/api/apidocs-4.9/ にあります。 (4.9 の場合)
VM を作成する場合は、 deployVirtualMachine

書いてある通りですが、必須なパラメータは以下の3つです。

  • serviceofferingid
  • templateid
  • zoneid

それとは別に、IPアドレスを固定したり複数のネットワークにVMを接続するときは iptonetworklist パラメータを指定するわけですが、このパラメータの設定がなんもわからんという感じです。

iptonetworklist[0].ip=10.10.10.11&iptonetworklist[0].ipv6=fc00:1234:5678::abcd&iptonetworklist[0].networkid=uuid

難しすぎる。なんで突然配列の演算子が出てきて & で繋ぐ必要があるんだ……

実際に直に API を叩いたことはないのですが、 cs ではこの通りにパラメータを書いても上手く動いてくれません。
なので、以下のようにする必要があります

cs deployVirtualMachine ... iptonetworklist[0].ip=192.168.15.3 iptonetworklist[0].networkid=4bbc38e5-3e36-4a11-9c93-5a5261911120

ただ & で繋げずにスペースで区切るだけです。どういう挙動なんだろう……
どこにも仕様が載っていないので試行錯誤せざるを得ないわけですが、やっていきましょう

結局 cs コマンドの引数はこんな感じになってしまうので非常に読みづらい。各位 Ansible のパワーに頼っていきましょう。僕は Ruby でラッパーを書きました。

cs deployVirtualMachine displayname='vm1-p15-t7' name='vm-x-hoge' serviceofferingid='3ebb38bf-dbb6-42b1-b301-041d3546b5dc' templateid='cec5838f-1bae-442f-9009-9e27dcf33941' zoneid='57305097-d51a-467b-bbec-862ab20850d1' hostid='3edc5cc0-5375-462d-8a38-b2e4920791f4' account='xxx' domainid='1d43bf7b-b00c-41ba-959a-e422c4649547' startvm='false' iptonetworklist[0].ip=192.168.15.3 iptonetworklist[0].networkid=4bbc38e5-3e36-4a11-9c93-5a5261911120

こんばんは。タイトルだけ書いた下書きが溜まっているので書いていきますということです。 ICTSC6 で CloudStack を使用していた話はまだ書いていなし多分書かないですが、使用していました。 その中で、API を […]

shotgun じゃなくて rerun を使おうという話

Programming

Ruby で Rack アプリケーションを書いているときに、コード変更したら自動的にサーバー再起動したいという話。

今までは shotgun でやっていたのだけれど、これは毎回リクエストする度に変更の有無に関係なくサーバーを立ち上げ直すので、遅いという欠点があった。
副次的な問題として、better_errors で REPL が無効になるという欠点があった。(レスポンスを返すとそのコンテキストを捨ててしまうから?)

ずっと前からどうにかならないかなーと思っていたのでググったら rerun というものを見つけた。
Rack とか関係なくもっと汎用的なやつで、ファイル変更検知してサーバー上げ直すぞ! みたいなプロダクトらしい。

入れたら下のような感じで使える。便利。

RACK_ENV=development rerun -- rackup -o 127.0.0.1

調子に乗って通知有効化するぞ! というノリで terminal-notifier を入れてみたらサーバーが上がらなくなった。何事かと思ったら tmux 上で使おうとすると一癖あるらしく、こういうIssue が立っていたので適当に読んだら解決した。

要するに、brew なりなんなりで、reattach-to-user-namespace をインストールして、.tmux.conf に下を書き加えるという話。

set -g default-command "which reattach-to-user-namespace > /dev/null && reattach-to-user-namespace -l $SHELL || $SHELL -l"

再起動に掛かる時間が体感で倍ぐらいになったけれど、better_errors使えることで圧倒的効率アップみたいなところがあるので、トータルで幸福度が向上した気がする。

Ruby で Rack アプリケーションを書いているときに、コード変更したら自動的にサーバー再起動したいという話。 今までは shotgun でやっていたのだけれど、これは毎回リクエストする度に変更の有無に関係なくサーバ […]

Sinatra Modular-Application で configure が上書きされる問題の対処

Programming

Ruby の Siantra で、Modular-Application を書いていたら良く分からない挙動にぶち当たって気が付いたら朝になっていたのでメモ。

app.rb

require_relative "hoge"

class App < Sinatra::Base
  configure do
    disable :protection
  end

  use HogeRoutes
end

hoge.rb

class HogeRoutes < Sinatra::Base
  get "/" do
     ...
  end
end

みたいな事をしていた。
disable :protection をしているのにどうしても Rack::Protection が有効になるので、どうしてこうなるんだとあちこちのコードを追いかけたりした結果、HogeRoutesApp とは別にもう一度 session, protections 等のセットアップが行われるので、以下のように、 use HogeRoutesconfigure より上に持ってくる必要があった。

app.rb

require_relative "hoge"

class App < Sinatra::Base
  use HogeRoutes

  configure do
    disable :protection
  end
end

HogeRoutes 内の configuredisable :protection とやってもいいが、こうするとクラスが増えた際にその分だけ書かないといけなくて大変。セッションみたいなアプリケーション全体で統一的な設定を持つ部分は親の App でやって良いんじゃないかと思う。

Ruby の Siantra で、Modular-Application を書いていたら良く分からない挙動にぶち当たって気が付いたら朝になっていたのでメモ。 app.rb require_relative “hoge” […]

2016年3月あたりの今日このごろ

雑記

春休みになった。大学生の春休みはきっと長いのだろうなと思っていたが、やりたいことは積もり積もっていて、中々暇にならない。でもここ数日はこんな時間まで起きて12時まで寝るような生活をしていて大学生の春休みっぽい。暇なら仕事でもなんでもしろという感じである。

まず、春休みに入って初っ端に ICTSC5 という大会があった。正式名称は「cloudpack杯 第5回ICTトラブルシューティングコンテスト」といって、ネットワークやサーバーといった所謂インフラに属する部分のトラブルを学生が作って学生が解決する大会である。
今回、僕は学生の運営委員としてこの大会に参加していて、2月の中旬から東京ミッドタウンにあるシスコの東京本社に篭って、問題を作ったり、ネットワーク設計をみてフンフン言ったり、DMM.comラボ様からお借りしたGaffGun で光ファイバーやらなんやらを養生したり、ラッキング (画像左)したり、パトライト光らせたり、パトライトを Webhook するような API サーバーをサクっと書いたり、ansible の praybook を書いて200台以上のVMに対して🙏 pray 🙏 したり、突然秋葉原の愛三に行って1000A測定可能なクランプメーターを買ったり、受付したり、Redmine で参加者から続々と立てられる質問のチケットを100件以上クローズして指揮官の気持ちになったりということをしていた。日頃中々得られない大規模な大会運営に携われたというのは本当に良い経験で、それだけでなくてネットワークであったり、大量VMへの展開であったり、技術な学生との会話であったり、本当に得られたものは大きかったと思うし、それが終わって2週間経った今でさえ、心にぽっかり穴が空いたような気分だ。
次回の ICTSC6 は大阪開催のようだし、おそらくまた運営委員としてひたすら祈り続ける日々が始まるのもそう遠くないと思っている。楽しみだ。

それが終わったあとは、割とバイトに行く日々を繰り返している気がする。
週2, 3程度でバイトに行っているので、決まった曜日がないとはいえ、2週間もあけるとそれなりにタスクも溜まるようで (実際緊急の案件で呼び出されて ICTSC5 中にも一度出社して徹夜で勤務していた)、ひたすら溜まったタスクをこなしつつ、iOS アプリの画面を組んだりコード書いたりといったことをしていた。そういえば最近は Photoshop 使った画像切り出しやらリサイズやらも定常タスクに入ってる気がする。まあ自動化してるからサクっと終わるんだけど、まさか今までこれを手で切り出してたなんて言わないよね……?
まあ、このあたりの話題は秘密保持のこともあるのであまり語れなくて、強いて言うなら学生を使うと安く済むんだなぁという事実から目を背けられなくて、やっぱり給料上げてほしいなあみたいな気持ちになった。粘り強く交渉していきたい。あと iOS 7 は絶対に潰す。絶対にだ。

このあたりはもう一つ書いておきたいことがあって、最近別の会社でもバイトを始めたということを書いたのだけれど、未だに全然仕事できていない。というか時間を割けていない以前にどこから手を付ければ良いのか分からなくてつらい。頑張りたい。

あと、先週はサークルの先輩としまなみ海道を自転車で渡る旅行に行った。しまなみ海道に行くのは2回目なのだけれど、今回は尾道から今治へ渡った。前回とは逆向きで、行きは新幹線で福山経由で行って、帰りは高松からサンライズに乗って帰った。この辺の話はTwitterで書いたとおり。やはりしまなみ海道は走りやすくて良い。ついでに自分の体力の無さが身にしみたので頑張っていきたい。もうちょっと乗ろうな……。ついでに香川のうどん屋は異様に閉まるのが速い。またリベンジするぞ。

今週はまた旅行に行きます。旅行といっても突発的なバイトついでという感じで、敦賀へ1泊2日の作業をしに行く。そのまま名古屋で1泊して、凪のあすからの聖地巡礼をしに紀伊半島、紀勢本線の波田須の方へ行こうと思う。紀伊半島は鉄道の僻地という感じで、こんな時間までジョルダンの18きっぷ検索と格闘していた。週末にスケジュールが入っているということもあってなんやかんやと5時間ぐらい悩んで、帰りは高速バスに乗って帰ることにした。朝が厳しい。

本当に朝に弱いので普通に早起きしようとして起きたら12時とかあるのだけれど、多分旅行のときぐらいは7時とかに起きれるんじゃないかと自分に淡い期待を抱いている。

とかこんなことを書いている暇があったら寝たほうが良さそう。寝る。(2016/3/15 執筆)

 

春休みになった。大学生の春休みはきっと長いのだろうなと思っていたが、やりたいことは積もり積もっていて、中々暇にならない。でもここ数日はこんな時間まで起きて12時まで寝るような生活をしていて大学生の春休みっぽい。暇なら仕事 […]