Seminar report (Building a Linux server and AWS SDK for Ruby)

54
Amazon EC2を利用した サーバ構築セミナーの実践報告 それと... AWS SDK for Rubyを使用した EC2インスタンス管理 @tamochia K-Ruby Sep. 27, 2012 1 12101日月曜日

description

Amazon EC2 を利用したサーバ構築セミナーの実践報告.それと... AWS SDK for Ruby を使用したEC2インスタンス管理. Seminar report of building a Linux server using Amazon EC2 and management of EC2 instances using AWS SDK for Ruby.

Transcript of Seminar report (Building a Linux server and AWS SDK for Ruby)

Page 1: Seminar report (Building a Linux server and AWS SDK for Ruby)

Amazon EC2を利用したサーバ構築セミナーの実践報告

それと...AWS SDK for Rubyを使用した

EC2インスタンス管理

@tamochia

K-RubySep. 27, 2012

112年10月1日月曜日

Page 2: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

はじめに

• 「サーバ構築セミナー」とは...- 某大学の某情報系センターにて,毎年,教職員向けにLinuxのサーバ構築,いわゆるLAMP環境を構築して,Web-DBコンテンツを実装しましょうというセミナー- 2008年度から実施,今回5度目- 3時間/日 × 5日間連続 = 計15時間- 内容は...‣ Linuxセットアップ,Linux概要,Linuxシステム管理,Webサーバ構築,MySQLサーバセットアップ,PHP概要,Web-DB連携など

212年10月1日月曜日

Page 3: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

サーバ構築プラットフォームをどうするか(悩みどころ)

• 前年度までは,受講者ノートパソコン持参- HDDをフォーマットし,Linuxをインストール(2008~2009年度)- 仮想環境(VirtualBox)をセットアップし,その上の仮想マシンにLinuxをインストール(2010~2011年度)

3

ノートパソコンのスペックの差が,セミナーの進行を左右してしまう (ToT)

12年10月1日月曜日

Page 4: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012 4

今年度(2012年度)は...

• 「受講生持込みPC」→いりません(端末室利用)• Linuxサーバは,クラウド上で構築- Amazon Web Service,Amazon EC2を利用- 最もスペックの低いmicroインスタンスを利用• 受講者全員のLinuxサーバ構築環境が同一

4

http://aws.amazon.com/jp

12年10月1日月曜日

Page 5: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012 5

 情報システムの構築・運用は,クラウドコンピューティングの市場拡大に伴い, ユーザ自身がサーバを所有し,システムを構築していくという形態から,パブリックに提供されるサーバシステムやサービスを利用する形態に変わっていっています. このセミナーでは,Amazon Web Service上のLinuxによるWebサイト環境の構築(Linuxのシステム管理,Web DB連携)等,パブリッククラウドの各種サービスを利用した,新しいスタイルのシステム構築について,実操作を通して学習します.

配布したパンフレット

12年10月1日月曜日

Page 6: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

5日間の内容

• 1日目- クラウドサービス(AWS)について,Linux概要• 2日目- Linuxシステム管理,セキュリティ対策• 3日目- Web-DB開発環境構築• 4日目- PHPとMySQLによる動的Webページの作成• 5日目- Git入門,phpfogの利用,SaaSについて

612年10月1日月曜日

Page 7: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012 7

クラウドサービスについて確認

• クラウドの「構成要素」- SaaS (Software as a Service)- PaaS (Platform as a Service)- IaaS (Infrastructure as a Service)

ネットワークCPU/メモリ/HDD

OSミドルウェア

アプリケーション

SaaSPaaS

IaaS

12年10月1日月曜日

Page 8: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

使用テキスト(資料)について

• NPO法人LPI-Japanが公開しているテキスト(標準教科書)を利用(使用許諾確認済み)- Linux標準教科書- Linuxサーバー構築標準教科書‣ http://www.lpi.or.jp/linuxtext/server.shtml

812年10月1日月曜日

Page 9: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

使用テキスト(資料)について

• PukiWikiサイトを利用し,適時情報更新

912年10月1日月曜日

Page 10: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

Linuxサーバ構築関連内容

• SSHログイン- 公開鍵暗号方式について• viエディタの使い方- すべてコンソールからの操作に対応• Webサーバ構築- htaccessによるアクセス制御,ベーシック認証• ファイアウォール設定- iptablesによるポート制御

1012年10月1日月曜日

Page 11: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

PaaSについて

• PaaSの例として「phpfog」を利用- PHP,MySQLの実行環境を無償で提供- メールアドレスでのサインアップで即利用可能

1112年10月1日月曜日

Page 12: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

PaaSについて• Gitについて- デプロイツールとして必須(herokuも同様)- リポジトリの管理についての最低限の知識- git add / commit / push / clone / pullなどは最低限知っておく必要がある

1212年10月1日月曜日

Page 13: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

PaaSについて

• ここで問題事が...- 最初のアプリのひな形作成で,10~20分以上かかってしまう問題が発生- シェアサーバを利用しているので,全員が一度に処理しようとすると負荷がかかるのは当然かも.

13

タダだから仕方がない... (ToT)

12年10月1日月曜日

Page 14: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

SaaSについて

• Microsoft Office 365 を例に説明- 当大学でも今後使用する可能性があるかも- オフィスソフトが使える- メッセージアプリ「Lync」について実践

1412年10月1日月曜日

Page 15: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

セミナー風景• 実習室環境- 端末室のPC(Windows XP),7名受講(定員10名)

1512年10月1日月曜日

Page 16: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

アンケート結果• 最終日にアンケートをとりました- 紙ではなくWebで!- Google DocsのFormを利用(ここでもSaaS)

16

アンケート項目数は14個

12年10月1日月曜日

Page 17: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

アンケート結果(質問2,3)

17

17%

50%

33%

長い やや長いちょうど良い やや短い短い

100%

長い やや長いちょうど良い やや短い短い

質問2. 講習期間(5日間という期間)について

質問3. 講習時間(3時間/日という時間)について

12年10月1日月曜日

Page 18: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

アンケート結果(質問6,7)

18

33%

50%

17%

ほとんど知らない2割程度は知っていた半分は知っていたほとんど知っていた

50% 50%

高い やや高いちょうど良い やや低い低い

質問6. 事前知識について 質問7. セミナーの内容レベルについて

12年10月1日月曜日

Page 19: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

アンケート結果(質問9,13)

19

17%

33%50%

満足 やや満足 普通やや不満 不満

17%

83%

満足 やや満足 普通やや不満 不満

質問9. 講習環境について 質問13. セミナー全体について

12年10月1日月曜日

Page 20: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

アンケート結果(質問12)

• 今後,どのような講座を希望しますか?- 新しいWeb技術やサーバ管理の知識についてのものであれば何でも受けてみたいです.- 今回のセミナーでやったPHPをもう少しやってみたいです.- 情報処理技術者応用以上の午後試験に対応した講座.- PHPの概要とMySQLデータベースとの連携の講座が途中混乱してしまったので,もう少し詳細にあればいいと思いました.- もう少し優しくし,多くの人がきて勉強してほしいと思います.

2012年10月1日月曜日

Page 21: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

アンケート結果(質問14)

• セミナーについてのご意見・ご感想をご自由にご記入ください- 講師の先生達の努力を感謝します.- とても有意義な1週間でした.ありがとうございました.ウインドウを複数開いて作業したので,ディスプレイを2つ以上,もしくはもう少し(かなり)大きめのディスプレイがあると良いと思いました.- 興味深く聞きました.ありがとうございました.これから安全にクラウドを利用する方法を逐次セミナーを開いてほしい.

2112年10月1日月曜日

Page 22: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

アンケート結果(質問14)

- わかりやすく教えていただけてよかったです.セミナー後にまた復習して身につけたいと思います.ありがとうございました.- 各先生方,お疲れ様でした.のんびりメモをとる時間がなく,進行が若干速かったような感じですが非常に貴重な実習体験ができました.時間を見つけては復習して身につけていきたいと思います.- とても勉強になりました.このセミナーでプログラムに触れたことでもう少し積極的にプログラムを触ってみようと思いました.コンピュータへの興味も増えたので,またセミナーが開催された時には参加します.5日間ありがとうございました.

2212年10月1日月曜日

Page 23: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

セミナーも無事に終わり...• インスタンスの使用状況を確認- AMS Management Console により,インスタンス利用の統計データが取得できる‣ クラウド利用の利点

2312年10月1日月曜日

Page 24: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

CPU Utilization (%)

24

最大値

平均値

4日目:Web-DB連携,PHPプログラミング

1日目  2日目  3日目  4日目  5日目

12年10月1日月曜日

Page 25: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012 25

Network In (Bytes)

最大値

平均値

2日目: yum update1日目: 不明特定のユーザのよう

1日目  2日目  3日目  4日目  5日目

12年10月1日月曜日

Page 26: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012 26

Network Out (Bytes)

最大値

平均値

後半高い: クライアントからのWebアクセス

1日目  2日目  3日目  4日目  5日目

12年10月1日月曜日

Page 27: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

EC2インスタンス利用のまとめ

• 一番低いスペック(最大2ECU,RAM: 約600MB)microインスタンスで,常時約10台稼動.

• 一斉に「yum update」を行っても問題なし.• 5日間,コマンドの応答不能,コンソールの異常終了などのトラブルは一切なかった.

27

Amazonすごい! 受講生20名(20台)くらいでも問題ないのでは!(゚∀゚)

しかし... 問題がただ1つ...AWSはタダ(無償)ではないということ...

12年10月1日月曜日

Page 28: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

EC2インスタンスの利用環境構築について

• Amazon Web Serviceは,基本,有償である.- クレジットカード決済- カード番号を登録しなければサインアップ不可• 施設として某支払い代行業者と契約し,講習会用の経費で,本セミナー用アカウントを準備する予定だった.

• しかし,間に合わず,私個人のアカウントを利用• さて,支払いどうする...

2812年10月1日月曜日

Page 29: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

まずはEC2インスタンスタイプの選択

• 料金の一番安い(約0.03ドル/時)のmicroタイプに一決

29

タイプ CPU メモリ ストレージ Linux 料金(1時間)

small 1ECU 1.7GB 160GB $0.092

medium 2ECU 3.75GB 410GB $0.184

large 2ECU 7.5GB 850GB $0.368

extra large 4ECU 15GB 1,690GB $0.736

micro Max. 2ECU 613MB 8GB, EBS $0.027

※1 microタイプ以外のストレージは,すべてインスタンスストレージ※2 「ECU(EC2 Compute Unit)」は,Amazon独自のCPU計算性能単位「1ECU≠1CPU」   1ECUは,1つの1.0~1.2GHz 2007 Opteron または 2007 Xeon プロセッサ相当,らしい.

Amazon EC2 Pricing | アマゾン ウェブ サービス(AWS 日本語)http://aws.amazon.com/jp/ec2/pricing/Amazon EC2 インスタンスタイプ | アマゾン ウェブ サービス(AWS 日本語)http://aws.amazon.com/jp/ec2/instance-types/

12年10月1日月曜日

Page 30: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

利用費負担をどうするか

• 幸い「無料使用範囲」適用中なう

30

AWSに新規登録した人対象に,1年間の無料利用枠を提供

Amazon EC2 microインスタンスを1年間無料で利用できる!

12年10月1日月曜日

Page 31: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

無料利用枠内容

• EC2- microインスタンス(Linux,Windows Server)共に750時間分- EBS 30GBまで,100万I/O,スナップショット用2GBまで

• S3- ストレージ5GBまで- 20,000get/2,000putリクエスト• データ転送- 全サービス,帯域幅「送信(アウト)」15GB

31http://aws.amazon.com/jp/free/

12年10月1日月曜日

Page 32: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

料金計算

• セミナー5日間×24時間×10名分=1,200時間→450時間 overで,$12.15(約970円)ナリ~

• 担当者の準備期間(事前5日間)を入れると,プラス5日間×24時間×3名分=360時間($9.72,約770円)で$21.87(約1,740円)ナリ~

• セミナーに本当に必要な利用時間:610時間→OK!- セミナー5日間×5時間×10名分=250時間- 準備期間5日間×24時間×3名分=360時間• 公開用サーバではないので,常時稼動必要なし• インスタンスを無駄に稼動させない工夫が必要

3212年10月1日月曜日

Page 33: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

EC2 Management Console

• 通常,インスタンスの管理はコレなんですが...

3312年10月1日月曜日

Page 34: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

さてここで問題

• インスタンスのStart/Stopは,基本「Amazon Management Console」で操作(ログイン必須)

• しかし,私個人のアカウントパスワードを教えるのはちょっと...

• インスタンスのStart/Stopを綿密にスケジューリングするか...

• 利用者(受講生,担当職員)が自由にインスタンスを制御できる機構があれば...

3412年10月1日月曜日

Page 35: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

さらに問題

• 外から引けるホスト名(Public DNS Name)や,IPアドレス(Public IP Address)が,インスタンス再起動の度に変化してしまう.

• その都度,利用者に最新の情報(ホスト名,IPアドレス)をお知らせしなければならない.

35

コレよ~(・∀・)

12年10月1日月曜日

Page 36: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

結局,インスタンス管理どうする?

• 利用者によるインスタンス制御,状態監視は必須• 利用者は...- 現在のインスタンスの状態を知る必要がある.(Running or Stopped)- 現在のインスタンスのホスト名,IPアドレスを知る必要がある.- 無駄な課金を抑止するために,インスタンスを適時Start/Stopする必要がある.

36

独自のインスタンス管理ツールを作るしかない...

12年10月1日月曜日

Page 37: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

AWS SDK for Ruby

• 「AWS SDK」とは?- Amazonの各種サービスAPIを利用するための開発キット

• それの,Ruby版公式SDK!(2011年07月公開)

37

参考資料AWS SDK for Ruby | アマゾン ウェブ サービス(AWS日本語)http://aws.amazon.com/jp/sdkforruby/

「gem install aws-sdk」でおk(・∀・)b

12年10月1日月曜日

Page 38: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

AWS SDK for Rubyを使ってみる

• とりあえず試しに使ってみる- Bundlerでaws-sdkを入れてみる- 適当なディレクトリを作って,Gemfileを作成

38

$ mkdir awstest$ cd awstest/

$ bundle initWriting new Gemfile to /Users/hoge/work/awstest/Gemfile

source "https://rubygems.org"

gem "aws-sdk"

Gemfile

12年10月1日月曜日

Page 39: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

AWS SDK for Rubyを使ってみる

• PATHを指定して,「bundle install」• irbでrequireできるか確認

39

$ bundle install --path vendor/bundleFetching gem metadata from https://rubygems.org/........ :Post-install message from httparty:When you HTTParty, you must party hard!

$ bundle exec irb

irb(main)> require 'aws'=> true

12年10月1日月曜日

Page 40: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

AWS SDK for Rubyを使ってみる

• AWSへアクセスするために必要な「アクセスキー」と「シークレットアクセスキー」等を設定するコンフィグファイルを作成する.

40

irb(main)> conf_path = File.join(Dir::getwd, "config.yml")=> "/Users/hoge/work/awstest/config.yml"

irb(main)> AWS.config(YAML.load_file(conf_path))=> <AWS::Core::Configuration>

access_key_id: REPLACE_WITH_ACCESS_KEY_IDsecret_access_key: REPLACE_WITH_SECRET_ACCESS_KEYsimple_db_endpoint: ec2.ap-northeast-1.amazonaws.com

config.yml

12年10月1日月曜日

Page 41: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

AWS SDK for Rubyを使ってみる

• EC2のインスタンス生成はコレだけ.

41

irb(main)> ec2 = AWS::EC2.new=> <AWS::EC2>

irb(main)> ec2.instances.count=> 2

irb(main)> ins = ec2.instances["i-402ed043"]=> <AWS::EC2::Instance id:i-402ed043>

irb(main)> ins.exists?=> true

12年10月1日月曜日

Page 42: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

AWS SDK for Rubyを使ってみる

• EC2インスタンスのStart/Stopメソッド

42

irb(main)> ins.status=> :stopped

irb(main)> ins.start=> nil

irb(main)> ins.status=> :pending

irb(main)> ins.status=> :running

12年10月1日月曜日

Page 43: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

AWS SDK for Rubyを使ってみる

• EC2インスタンスのホスト名/IPアドレスの取得メソッド

43

irb(main)> ins.private_dns_name=> "ip-10-123-34-56.ap-northeast-1.compute.internal"

irb(main)> ins.public_dns_name=> "ec2-175-XXX-YYY-ZZZ.ap-northeast-1.compute.amazonaws.com"

irb(main)> ins.instance_type=> "t1.micro"

irb(main)> ins.private_ip_address=> "10.123.34.56"

irb(main)> ins.public_ip_address=> "175.XXX.YYY.ZZZ"

12年10月1日月曜日

Page 44: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

AWS SDK for Rubyを使ってみる

• EC2のコンソール出力

44

irb(main)> puts ins.console_outputXen Minimal OS!  start_info: 0xac4000(VA)    nr_pages: 0x26700 : :Starting crond: [  OK  ]Starting atd: [  OK  ]Starting yum-updatesd: [  OK  ]Running cloud-init user-scripts (none found)[  OK  ]

Amazon Linux AMI release 2012.03Kernel 3.2.21-1.32.6.amzn1.x86_64 on an x86_64

ip-10-123-34-56 login:=> nil

12年10月1日月曜日

Page 45: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

Railsでaws-sdkを利用する

• 次に,Railsで「aws-sdk」を利用してみる- これもGemfileにaws-sdkを指定するだけ- 以下,Bundlerを使った基本的なRailsアプリ作成

45

$ mkdir ccaws$ cd ccaws/

$ bundle initWriting new Gemfile to /Users/hoge/work/ccaws/Gemfile

source "https://rubygems.org"gem "rails"gem "aws-sdk"

Gemfile

12年10月1日月曜日

Page 46: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

Railsでaws-sdkを利用する

• Bundlerを使った基本的なRailsアプリ作成手順• コントローラは一つ「Main」のみとしますー

46

$ bundle install --path vendor/bundle

$ bundle exec rails new .

$ bundle install

$ bundle exec rails g controller Main index

Rails.root

config

initializers

app

controllers

views

main

routes.rb

aws.rb

main_controller.rb

index.html.erb

ec2.yml

12年10月1日月曜日

Page 47: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012 47

instance_id: - "i-40xec201" - "i-46x20303" - "i-44x20305" - "i-4ax20307" - "i-48x20309" - "i-4ex2030b" - "i-4cx2030d" - "i-52x2030f" - "i-50x20311" - "i-56x20315"

ec2.yml

10個のインスタンスIDを記載したYAMLファイルインスタンスを追加したり削除する場合はこのファイルを変更する

AWS.config ({ :access_key_id => 'REPLACE_WITH_ACCESS_KEY_ID', :secret_access_key => 'REPLACE_WITH_SECRET_ACCESS_KEY', :ec2_endpoint => 'ec2.ap-northeast-1.amazonaws.com',})

aws.rb

AWS設定.AWSクラスを呼び出す前に必ず実行しておく必要ありアクセスキー,シークレットキー,それとリージョンを指定する

※ここに記載しているのは架空のIDです

12年10月1日月曜日

Page 48: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012 48

class MainController < ApplicationController INSTANCES_YAML_PATH = File.join(Rails.root, "config", "ec2.yml") def index instances = [] @infos = Hash.new{ |h, k| h[k] = {}}

all = YAML.load_file(INSTANCES_YAML_PATH) @instance_ids = all["instance_id"]

ec2 = AWS::EC2.new

@instance_ids.each do |instance_id| instances << ec2.instances[instance_id] end instances.each do |ins| @infos[ins.id]["tag"] = ins.tags["ccsemi"] @infos[ins.id]["status"] = ins.status @infos[ins.id]["public_dns_name"] = ins.public_dns_name @infos[ins.id]["public_ip_address"] = ins.public_ip_address end end

main_controller.rb

12年10月1日月曜日

Page 49: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012 49

def stop_instance id = params[:id] ec2 = AWS::EC2.new

instance = ec2.instances[id] if instance.status.to_s == "running" instance.stop end redirect_to main_path end def start_instance id = params[:id] ec2 = AWS::EC2.new instance = ec2.instances[id]

if instance.status.to_s == "stopped" instance.start end redirect_to main_path endend

main_controller.rb(続き)

12年10月1日月曜日

Page 50: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012 50

<table border="1"><tr> <th>Instance ID</th> <th>Tag name</th> <th>Status</th> <th>Action</th> <th>Public DNS name</th> <th>Public IP address</th></tr><% @instance_ids.each do |id| %> <tr> <td><%= id %></td> <td><%= @infos[id]["tag"] %></td> <td><%= @infos[id]["status"] %></td> <td> <%= if @infos[id]["status"].to_s == "running" then button_to "Stop", stop_instance_path(:id => id) elsif @infos[id]["status"].to_s == "stopped" then button_to "Start", start_instance_path(:id => id) end %> </td> <td><%= @infos[id]["public_dns_name"] %></td> <td><%= @infos[id]["public_ip_address"] %></td> </tr><% end %></table>

index.html.erb

12年10月1日月曜日

Page 51: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012 51

Ccaws::Application.routes.draw do root :to => 'main#index' match 'main' => 'main#index' match 'stop_instance/:id' => 'main#stop_instance', :as => 'stop_instance' match 'start_instance/:id' => 'main#start_instance', :as => 'start_instance'end

routes.rb

$ bundle exec rails s

ルーティング設定.URLパターンは3つ

Railsサーバの起動

Rails.root

config

initializers

app

controllers

views

main

routes.rb

aws.rb

main_controller.rb

index.html.erb

ec2.yml

12年10月1日月曜日

Page 52: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012 52

公開サーバにデプロイ ・Apache + Passenger 構成 ・ベーシック認証[ Start ]: インスタンス起動

[ Stop ]: インスタンス停止

インスタンスの状態 ホスト(FQDN)とIPアドレスを表示(インスタンス稼動時のみ)

実行結果画面

12年10月1日月曜日

Page 53: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

おわりに

• クラウドサービスを利用したセミナーということで,色々と不安要素があったが無事に終わった.- クラウドサービスがダウンしたら,セミナーはできない.→Amazon EC2 SLA(99.95%)

• メリットはたくさん!- 受講者が同一の環境でセミナー構築実習できる- クライアントの環境はSSHクライアントのみ- スナップショットによるバックアップ/リストア- グローバルIPアドレスが利用できる

5312年10月1日月曜日

Page 54: Seminar report (Building a Linux server and AWS SDK for Ruby)

K-Ruby, 15th. September 27, 2012

おわりに

• 来年度は,インフラ関係とプログラム開発と分けても良いかも...- 「クラウド利用とLinux構築(3日間)」- 「Web-DB連携プログラミング(3日間)」もちろんRuby on Railsでも

• 本学の教職員だけでなく,一般向けにも実施しても良いかも...

• 参加募集してみて,人が集まるかな...?

5412年10月1日月曜日