2013年2月10日日曜日

「 #hbstudy #41 x IDCFクラウドハンズオン」に行ってきた

by Frank Souza
得意分野はインフラの @snicker_jp です。


先日2月2日行われた、「hbstudy#41 x IDCFクラウドハンズオン」に参加してきたので、ちょっとしたまとめ。


きっかけ


そもそも、12月に開催されるはずだった勉強会でした。
が、開催日前日の地震のため延期となりこの度開催。
もともと、行く予定だったので、再度登録。

内容としては「monit + fabric + APIを利用してauto scalingを自作してみましょう」ということで
これって、おもしろそうでしょ?(^o^)

  • IDCフロンティアのクラウドサービスをイチから使う
  • fabricを使った、構築
  • fabric + monitを使った、auto-scaling
と盛りだくさんの内容


早速内容


私は以前にIDCフロンティアのクラウドサービスを使ったことがあったので、説明の時間はパス。

その前に「Windowsストアアプリ ハッカソン Vol.2.0」に行っていたのもあったんですが・・・

途中から参加して、
IDCフロンティアの藤城さんが作成してくれた、資料を元にモクモクやったり、発表者と一緒にやったり。φ(・ェ・o)


ファイルの公開


全部の説明するのは大変だったので、なんとなく公開してみた。
(」・ω・)」うー!(/・ω・)/にゃー!
snickerjp/hbstudy41-idcf · GitHub
https://github.com/snickerjp/hbstudy41-idcf

大元との変更点

sshdの再起動

def sshd_config(user=SUDOERS):
    comment("/etc/ssh/sshd_config",r"^PermitRootLogin yes")
    uncomment("/etc/ssh/sshd_config",r"PermitEmptyPasswords no")
    append("/etc/ssh/sshd_config",
        ["PermitRootLogin no",
        "AllowUsers {0}".format(user)])
    #run("service sshd restart")
    run("service sshd reload") # sshd restart は怖いので、reload

ここは、「sshd起動しなかったら怖いから」修正していたんですが、
どうやら「restart」にすると接続が一度切れちゃうようでスピーカーさんもハマられていました。

「reload」の修正がたまたま良かったみたい。

hello_py.cgi, scale2.shの改行コード変更

vimで開いたら、 hello_py.cgi [dos] と書いてあったので、気がついた。

この辺りはPHPだとサクッと行くんだけどな?

例として
mv hello_py.cgi hello_py.cgi.tmp
nkf -Lu hello_py.cgi.tmp > hello_py.cgi

mv scale2.sh scale2.sh.tmp
nkf -Lu scale2.sh.tmp > scale2.sh

みたいにして回避した

cgiの転送

def setup_cgi():
    sudo("""
    yum -y install httpd
    chkconfig httpd on
    service httpd start
    """)
    #put("~/hello_py.cgi","/var/www/cgi-bin/hello_py.cgi",use_sudo=True)
    put("hello_py.cgi","/var/www/cgi-bin/hello_py.cgi",use_sudo=True)
    sudo("chmod 755 /var/www/cgi-bin/hello_py.cgi")
    run("curl -s http://localhost/cgi-bin/hello_py.cgi | sed -e 's/<[^>]*>//g'")

ここは、root実行前提のscriptの書き方だったので。
sudoで一般ユーザーから実行したかったので、実行場所と同じ所に置けば動くよね?程度。

自分用に変更が必要なところ

以下2箇所の「日本語で書いたところ」は自分用に変更が必要です。
def setup_idcf_vm(displayname="scale"):
    resp = local("""
    idcf-compute-api deployVirtualMachine \
                       --keypair {keypair} \
                       --displayname {displayname} \
                       --group {group} \
                       --templateid {templateid} \
                       --serviceofferingid {serviceofferingid} \
                       --zoneid {zoneid}
    """.format(keypair="「IDCFで登録したキーペア名」", #your ssh-key name
               displayname=displayname,
               group=SCALE_GROUP,
               templateid="2008", #(2008) [LATEST] CentOS 6.3 64-bit
               serviceofferingid="22", #(22) S2
               zoneid="1"),capture=True)
    print resp

    retval = json.loads(resp, 'UTF-8')
    ret = retval["deployvirtualmachineresponse"]
    vm_id = ret["id"]
    jobid = ret["jobid"]
    wait_job(jobid)
    print "__vmid__,%d" %vm_id

def add_balancing_server(vmid):
    resp = local("""
        idcf-compute-api assignToLoadBalancerRule\
            --id {id} \
            --virtualmachineids {virtualmachineids}
    """.format(id="「ロードバランサID」", #your ID of the load balancer rule
        virtualmachineids=vmid),capture=True)
    print resp

写真

作業最中
 この日は仕方なくWindows8が入ったマシンだったんだが・・・
映り込みがハンパなくて作業しづらかった〜

IDCフロンティアさんのクラウドダッシュボード

最後に面倒なら・・・
 結果、面倒なら「RightScale」や「SCALR」使って!とw

Cloud Management for Public and Private Clouds by RightScale 
http://www.rightscale.com
Scalr — cloud management software 
http://scalr.com/

もくもくです!

懇親会

Beer!

Pizza!

SCALRのLT!

おわりに

ハンズオン中も、動かないところがあって参加者たちで「あーだこーだ」修正するそんなアットホーム感がすごく楽しかったw


Zenback