![]() |
by Frank Souza |
先日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の再起動
1 2 3 4 5 6 7 8 | 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だとサクッと行くんだけどな?
例として
1 2 | mv hello_py.cgi hello_py.cgi.tmp nkf -Lu hello_py.cgi.tmp > hello_py.cgi |
1 2 | mv scale2.sh scale2.sh.tmp nkf -Lu scale2.sh.tmp > scale2.sh |
みたいにして回避した
cgiの転送
1 2 3 4 5 6 7 8 9 10 | 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" ) |
ここは、root実行前提のscriptの書き方だったので。
sudoで一般ユーザーから実行したかったので、実行場所と同じ所に置けば動くよね?程度。
自分用に変更が必要なところ
以下2箇所の「日本語で書いたところ」は自分用に変更が必要です。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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 |
1 2 3 4 5 6 7 8 | 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 |
写真
作業最中 |
映り込みがハンパなくて作業しづらかった〜
IDCフロンティアさんのクラウドダッシュボード |
最後に面倒なら・・・ |
Cloud Management for Public and Private Clouds by RightScale
http://www.rightscale.com
Scalr — cloud management software
http://scalr.com/
もくもくです! |
懇親会
Beer! |
Pizza! |
SCALRのLT! |