20
サーバー構築「クラス」の 学習環境を作ってみた Yonashiro Yuu a.k.a. @Cloneko

Amazon Web Services でサーバー構築「クラス」の学習環境を作ってみた

Embed Size (px)

Citation preview

で サーバー構築「クラス」の 学習環境を作ってみた

Yonashiro Yuu a.k.a. @Cloneko

自己紹介• 與那城 雄(よなしろ ゆう) • 専門学校ITカレッジ沖縄で非常勤講師してます。 • 専門はサーバー/ネットワークなど。

• あと+αで何かやってます(後述) • 目立った何かといえば2013年に行なわれたチューニンガソンで全国7位/沖縄で4位だったアレ。 • http://gihyo.jp/news/report/2013/02/0401

• @kimiyukiy さんと一緒に。です。

• Github/Twitter/gmail は cloneko • 雑多なblogを

http://cloneko.com/ でやってます。

アジェンダ• ITカレッジの紹介(さらっと)

• サーバー構築のクラスの話

• とある問題が発生

• とある問題をAWS(と何か)を使ってどう解決したか

• ちょっとだけ宣伝

お約束

このLTは私の個人的見解であり勤務先や関係団体の公式見解とは異なることがあります。

ITカレッジ沖縄• http://www.it-college.ac.jp/

• 名前の通りITの専門学校。

• ITの中でもプログラム/インフラ/クリエーター(Web/サウンド/映像)寄り。というかモロ

• 僕はそこの2期生(ITエンジニア科ネットワークコース)。

• 母校で教えてます。

• 最近2年生スペシャリスト科全員にgithubアカンウント作らせたり、Markdownを布教中です。

サーバー構築のクラス

• 2年のインフラ系/インターネットビジネスのクラスのカリキュラム • 20人くらい。

• まぁ、基本的なサーバー構築くらいできようね。っていうクラス。 • LAMP(A→N?)…DNSサーバ…Chef…Docker…Digital Ocean…などなど。

問題が発生…

問題: 成績どうしよ

• 一応講義としてやっているので成績つけないといけない。

• 出席とかで判断しても嫌なのでスキルチェックしたい。

• 試験しないと。

もうマジ無理…試験しよ…• まぁ、実際にサーバー構築させてどんだけできるか見ればいいよね。

• どこに作らせるよ? • 学生個人のノートPC?チェック大変だし。 • 僕のマシン(Core i3/4GB)に仮想マシン立ち上げまくり?20インスタンスも立ち上げられないよ

• 実は一瞬Dockerも考えたけど、インターネットのサーバーなんだからインターネット上でやったほうがいいよね。

• OpenStack/CloudStack?そんなん用意してる時間ないし… • まぁ、無難にAWS(EC2)だよね…

AWS使ってこれやりたい• 学生が自分でEC2のインスタンスを作ったり壊したりできるようにしたい。 • 途中でやり直したい。っていうこともあるので。

• 立ち上げたインスタンスにわかりやすいホスト名つけたい。 • ブラウザでIPアドレスで接続するのもねぇ… • (何よりチェックする側(==自分)がどの学生がどのIPアドレスか確認する

のがめんどくさい…

とりあえずこうしよう• 学生が自分でインスタンスを作ったり壊したりできるようにしたい • Vagrant使えばできそうな気がする

• 立ち上げたインスタンスにわかりやすいホスト名つけたい • Vagrantで頑張るかプログラム書けばできそうな気がする

Vagrant + AWS• 学生が自分でインスタンスを作ったり壊したりできるようにしたい。 • Vagrantのプラグイン「vagrant-aws」をインストールすればOK! • 立ち上げたければvagrant up/壊したければvagrant destroyすれば!!!

• 立ち上げたインスタンスにわかりやすいホスト名つけたい。 • Vagrantのプラグイン「vagrant-aws-extras」をインストールすればVagrantからRoute53(AWSのDNSサービス)をもにょもにょできる!(== vagrant upするとRoute53にホスト名が登録できる。destroyすれば消える)

実際のシステム構成図学生のマシン

n13001$ vagrant up

n13003$ vagrant up

i13001$ vagrant up

試験用システム n13001.cloneko.comEC2インスタンス

n13003.cloneko.comEC2インスタンス

i13001.cloneko.comEC2インスタンス

ssh

ssh

ssh

n13001

n13003

i13001

VagrantfileVAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "dummy" config.vm.box_url = “https://github.com/mit(略)” config.aws_extras.record_zone = "cloneko.com." ← ここで使用するドメイン config.aws_extras.record_name = ENV['LOGNAME'] + ".cloneko.com." ← ホスト名 config.aws_extras.record_type = "CNAME" config.aws_extras.record_ttl = "60" ! config.vm.provider :aws do |aws, override| 〜 中略 〜 aws.tags = { 'Name'=> ENV['LOGNAME'] ← Management Consoleでどの学生が作業してるか確認できる } end end

全文は https://github.com/cloneko/serverbuilding-exam-platform/ にあります。

試験の流れ1. 学生は試験用サーバー(Vagrant導入済)へSSHする

2. vagrant upするとインスタンスが立ち上がる

3. vagrant sshするとログインできる。

4. サーバーを構築する。

5. ブラウザで http://学籍番号.cloneko.com/ で接続すると接続できる!

6. vagrant destroyするとインスタンスを破棄できる! → やりなおせる!

試験中の AWS Management Console

Nameのところに作業している学生の学籍番号が表示れ、誰が試験中か把握できる。

次回やる時には…

• 採点をServerspecでできるようにしよう…

• 実はN.Californiaリージョンでやってて(何でかは忘れた)、回線激遅。ちゃんとTokyoとかでやる。

• もっと計画的に準備しよう。

• ちょっとお手伝いしているビジネスラリアートという会社が新TLDの.okinawaと.ryukyuというものの販売を開始しました

• .okinawaは先行登録期間が始まってますので、抑えておきたいドメインがありましたお早めに!

• お名前.comとかでできるはず。

なんとなく沖縄っぽいものということルートビア。

まとめ

• AWS + Vagrant(with vagrant-aws,vagrant-aws-extras)使うとAWS使いやすすぎわろた。

• をよろしくお願いします。