monolog

monora log #=> ものろーぐ

Tag Archives: ICTSC6

第6回 ICTトラブルシューティングコンテストの運営委員をしていました

雑記

ICTトラブルシューティングコンテスト という学生が主体となってインフラやサーバに関するトラブルを起こして、学生が解決する(雑) な大会がありまして、その第6回、通称 ICTSC6 の運営側として参加してきました、ということです。

大会自体は8/27, 28 (土日) が本番でしたが、運営委員は 4/24 のキックオフMTGから活動が始まっていて、実に4ヶ月近くの期間があったことになります。

写真とかは公式のレポートにたくさんあるのでご参照下さい。

NTT西日本杯 ICTSC6 準備期間 レポート – ICTSC | ICT トラブルシューティングコンテスト

NTT西日本杯 ICTSC6 DAY1 レポート – ICTSC | ICT トラブルシューティングコンテスト

NTT西日本杯 ICTSC6 DAY2 レポート – ICTSC | ICT トラブルシューティングコンテスト

 

ICTSC には運営委員として、第5回 (ICTSC5) から関わっていて、ICTSC6 では運営委員の副リーダーなるものを務めさせて頂きました。
(ICTSC6 は16人の運営委員と大人の方々による実行委員とスポンサーの方々によって成り立っており、その学生側ということです。)

ICTSC5 の反省を活かして、ICTSC6 のために自分が行ったことはとにかく1つに集約されていて、「とにかく見える化、情報の集約化を徹底して、何かをしたいときにすぐに行動できるようにする」というもの。

結局この記事は僕の自己満足ですし完全に主観で書いていて、最終的にはここに書いていない範囲、色々とよくないこともあったし、そもそも未だ僕が把握してない範囲で色々揉めたというのもあるのですが、結果としてそれを全部汲み取って解決できなかったのは本当に自分が悪いと思っています。未だももやもやとする気持ちもあります。
責任転嫁するつもりはないし、頼むから直接言ってくれという気持ちです。

 

以下、雑多に何をしたのか書いていきます。

read more »

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