Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

今日から始めるDigitalOcean

50,448 views

Published on

DigitalOceanが気になる・これから始める方の参考になればと。自分が事前に知りたかったことを入れ込みました。

第66回: DigitalOcean Meetup(非公式)
http://hbstudy.connpass.com/event/13463/
期日:2015年4月10日(金)
会場:株式会社ハートビーツ 会議室(ありがとうございました!)
#hbstudy

Published in: Technology

今日から始めるDigitalOcean

  1. 1. Masahito Zembutsu @zembutsu Technology Evangelist; Creationline , Inc. Shinjuku Tokyo, Apr 10 2015 #hbstudy 66th Meetup 今日から始めるDigitalOcean All About DigitalOcean – Practical Introduction
  2. 2. 今日から始める DigitalOcean 2 / 99 今日の内容 “できる☆DigitalOcean” • 入門:DigitalOceanとは? これはクラウドですか? 登場背景、機能概要、特長、料金体系、契約方法、支払い、SLA • 実践:DigitalOceanの機能・操作方法 使う前に知っておきたかった機能 - Dropletやテンプレート、バックアップ、プライベート接続、DNS機能 • 応用:クラウドの価値を高めるために プロビジョニング、API、CoreOSとDocker、HashiCorp ( Vagrant・Packer・Terraform ) Topics
  3. 3. 今日から始める DigitalOcean 3 / 99 • @zembutsu 前佛 雅人 ➡ Technology Evangelist ≒ Enthusiast 的活動 ➡ “趣味”で OSS やクラウド系サービスの検証・情報発信 • SlideShare http://www.slideshare.net/zembutsu • Tech blog http://pocketstudio.jp/log3/ – DigitalOcean の blog はじめようと企んでいます。 – ネット上およびコミュニティでの活動は、特に明示しない限り私の個人活動であり、 所属団体や対象となる商業的組織・団体と一切の各種利害関係はありません。 今回の DigitalOcean に関しても同様です。 ➡ 【緩募】彼女 “データセンタに出会いを求めるのは間違っているだろうか” 自己紹介Why am I here? Zembutsu Masahito 技 術 伝 道 者 熱 狂 者 何がダメなのか探してください。 このアカウントは全否定したいと思っているものです。 このような結果になったのは、全て自分の責任です。 何かの間違いでこのアカウントやスライドを見かけた方は 「@zembutsu」の何がダメなのかを探してみてください。 そこから気づける人がひとりでもいらっしゃれば、この スライドを出した意味があると思っています。 Hestia ※1 ※1 Public Domain
  4. 4. DigitalOcean どんな印象をお持ちですか?
  5. 5. 質問「 DigitalOcean 」をご存知ですか? 1. とても使ってる バッチリ使ってます 2. 使ってる 検証したことあり 1 割 3. 使っていない 聞いたことはある 9 割 4. しらん 食えるのか? 5. は毒電波 1. とても使ってる バッチリ使ってます 会場では、開発用途で使用中 もしくは名前ご存知の皆さん
  6. 6. 入門 introduction 実践 practice 応用 advanced 登場背景、機能概要、特長 料金体系、契約方法 支払い方法、SLA Dropletやテンプレート管理 バックアップ、プライベート接続 DNS機能 プロビジョニング、API CoreOSとDocker Vagrant・Packer・Terraform できる☆DigitalOcean 前提知識、基本的な使い方、 そして、便利な活用方法紹介
  7. 7. 入門 introduction 実践 practice 応用 advanced これはクラウドですか? できる☆DigitalOcean
  8. 8. 入門 introduction • 何故に DigitalOcean? • DigitalOcean #とは • データセンター • 特長と機能 • 価格体系 • 契約方法、契約解除
  9. 9. DigitalOcean “ We’re simplifying the cloud by providing an infrastructure experience that developers love.” ( twitter profile @digitalocean ) 私達は開発者が好むインフラのユーザ経験を提供することで クラウドを簡素化する
  10. 10. Who is DigitalOcean for? “ DigitalOcean is a platform created for developers who need to launch and scale their applications quickly. Additionally, DigitalOcean provides the perfect environment for developers to play around on the command line and learn more about customizing their own servers” ( https:/ / www.digitalocean.com/ help/ ) DigitalOceanは、アプリケーションを迅速に起動してスケールする 必要がある開発者向けに作られたプラットフォームです。もう1つ。 DigitalOceanが提供するのは、開発者がコマンドライン上から操作でき、 自分自身のサーバーをカスタマイズする方法を学ぶための完全なる環境です。
  11. 11. グラフ出典:”Digital Ocean – Grouth | Netcraft" http://trends.netcraft.com/www.digitalocean.com ここ数年で DigitalOcean の 利用者は急に拡がっています
  12. 12. 3 5 7 9 11 13 150 20,000 40,000 60,000 80,000 100,000 120,000 140,000 160,000 2014年1月 2014年2月 2014年3月 2014年4月 2014年5月 2014年6月 2014年7月 2014年8月 2014年9月 2014年10月 2014年11月 2014年12月 2015年1月 2015年2月 2015年3月 2014年以降のDigitalOcean稼働台数(web facing) (台数) (順位) 出典:”Digital Ocean – Grouth | Netcraft" http://trends.netcraft.com/www.digitalocean.com 2013年 – 4月サンフランシスコ・データセンタを開設 – 9月 50万クラウドサーバー(ドロップレット)の起動達成 – 12月オランダ・アムステルダムにデータセンタ開設 2014年 – 1月 100万ドロップレットの起動達成 – 2月 シンガポール・データセンタ開設 – 7月 ロンドン・データセンタ開設 – 9月 CoreOS の提供開始、Amsterdam region で IPv6 開始 – 10月 稼働台数順位が世界3位に 2015年 – 1月 FreeBSD の提供開始 – …?
  13. 13. 今日から始める DigitalOcean 13 / 99 • 2011年設立、クラウドのインフラ事業者 Ben氏、Moisey Uretsky氏によって創業 -> https://www.digitalocean.com/ • 開発者を大切にするビジョン 複雑なインフラの管理を簡単にし、利用者に良いユーザ経験をもたらすプロダクトを作る • 40万利用者、100万以上の仮想サーバ稼働 シンプルで直感的なインターフェースと機能、Solid State Drive (SSD)のRAID基盤、豊富な API 世界5箇所にデータセンタを開設(アメリカ東西・シンガポール・イギリス・オランダ) DigitalOcean 概要
  14. 14. シンガポール Equinix ニューヨーク Equinix, Telx サンフランシスコ Telx ロンドン Equinix アムステルダム TelecityGroup - NYC1 facility is SSAE16 SOC-1 Type II certified. - NYC2 facility is SSAE16 SOC-2 Type II certified. - NYC3 facility is SSAE16 SOC-2 and SOC-3 compliant. - AMS1 and AMS2 facilities are ISO27001:2005 and ISO9001 certified. - AMS3 facility is ISO9001, ISO27001, and SSAE16 Type II certified - SFO1 facility is SSAE16 SOC-1 Type II certified. - SGP1 facility is ISO27001:2005 certified. - LON1 facility is ISO9001:2008, ISO27001, and SSAE16 / ISAE 3402 certified.
  15. 15. 今日から始める DigitalOcean 15 / 99 • 55秒以内に仮想サーバ起動 使いたいとき、すぐに起動して、使い終わったら廃棄。かつ課金は時間単位 $0.007/時間~(月上限 $5 ~) • 全ての環境が SSD ( Solid State Drive ) 低いディスクのレイテンシ(応答速度の遅延)、かつ、CPUはディスクI/Oに使用率を奪われにくい • シンプルなコントロールパネルと API 直感的に使えるウェブ・インターフェース、豊富な API はブラウザから行える全ての機能をプログラム的に実行 DigitalOcean 特長
  16. 16. 今日から始める DigitalOcean 16 / 99 • 仮想サーバ(ドロップレット)管理 仮想サーバの起動・停止・強制再起動・破棄・スペック変更、ブラウザからのコンソール接続、プライベート接続 IPv6 のサポート、Kernel 変更機能、レスキューモード、ホスト名変更、リソースグラフ表示、プロビジョニング • イメージ管理 スナップショット、それを元にした起動やデータセンタ配布、定期バックアップやバックアップから差し戻し 多くの公式イメージを提供( Ubuntu, CentOS, CoreOS, FreeBSD ) + アプリケーション設定済みイメージ • DNS管理 ネームサーバのホスティング、GUIを通したゾーン設定、仮想サーバに対する自動逆引き設定 DigitalOcean の機能
  17. 17. 今日から始める DigitalOcean 17 / 99 • KVM 仮想化技術を使用 すべての環境は KVM ( kernel-based Virtual Machine ) 上の仮想マシンとして動作 ハイパーバイザの分散は出来ないが、Droplet作成時にAPI 「/v2/reports/droplet_neighbors」で、 同じハイパーバイザ上に指定する事は可。ファイルシステムは LVM か QCOW。2014年3月以降は RAW • CPUは物理6コア Intel 製の CPU 2.0 GHz ~ 3.0 GHz を使用( cat /proc/cpuinfo で確認可能) • 物理ノード間は 1 Gbpsで接続 コアルータとは Gigabit Ethernet で接続、コアルータは上位ネットワークに 10 Gigabit Ethernet バックエンド・設備
  18. 18. 今日から始める DigitalOcean 18 / 99 • ファイアウォールやロードバランサ機能 iptablesやfirewalld、nginxやLVSを自分で設定する必要があります • Windows Server Linux ・FreeBSD のみ提供予定です • マネージドサービス サポートが必要な場合は、自分でチケットをサポートにオープンするか、コミュニティへ 逆に提供しないもの
  19. 19. 今日から始める DigitalOcean 19 / 99 • 仮想サーバ ( Droplet ) スペック毎に時間課金 最小 $0.007/時間(CPU 1コア、512MBメモリ、20GB SSD、1TB ネットワーク転送量) サーバが稼働して、Terminate 処理を開始するまでの時間 ※ 停止中 ( Power Off 時 ) も課金継続、パブリック IP やリソースを専有するため -> スナップショット化で回避 • 時間課金の月間上限は 28 日間 ( 672 時間 ) 最小構成の場合は、超過分どれだけ使っても $5 の課金 • 価格表 ( MONTHLY / HOURLY ) ➡ https://www.digitalocean.com/pricing/ 価格体系
  20. 20. 時間・月額 切り替え 上から価格 メモリ CPUコア数 SSD容量 無料転送量 大容量プラン
  21. 21. 今日から始める DigitalOcean 21 / 99 • 転送量課金 標準の無償枠(Droplet毎に異なる) を超過すると $0.02/1GB 共有プライベート・ネットワーク内の通信量は無料 • Droplet のバックアップ設定 Droplet申込時のみ追加可能で、対象 Droplet の 20% の金額 • 無償のオプション ( 現時点で ) スナップショット、共有プライベート・ネットワーク、IPv6 アドレス、DNSサービス等、明示 オプション料金
  22. 22. 今日から始める DigitalOcean 22 / 99 • クレジットカードの後払いか PayPal の前払い 対応カード: Visa, MasterCard, American Express, Discover • 請求タイミング 毎月1日の時点で、先月利用分の請求が確定。カードは任意支払いも可能 ( 一度でも決済した verified user 時 ) 24時間で支払えないと72時間アカウントロック・全停止 • 課金超過時のアラートあり 「アカウント」「 Billing 」(請求)  「 Alerts 」で 「 Billing Alerts 」に通知時の金額とチェックを指定 支払い方法
  23. 23. 今日から始める DigitalOcean 23 / 99 • Droplet 上限変更をしたい場合は? 変更申請は、コントロールパネル「アカウント」「 Your Settings 」の「 Droplet Limit: xx 」をクリック https://cloud.digitalocean.com/settings/profile • 複数アカウントの紐付け方法 共有したい場合は、アカウントを作るのではなく、サポートにチケットを発行して依頼 • ログインに、二段階認証を設定可能 その他、契約に関して
  24. 24. 今日から始める DigitalOcean 24 / 99 • SLA は 99.99% の稼動時間 ( uptime ) 1ヶ月約 4 分半に相当、影響範囲が SLA 超過時は当該アカウントに払い戻し • 稼働状態 ウェブ・RSS・Twitter から確認可能 ➡ http://do.co/status ➡ https://twitter.com/dostatus サービス状況
  25. 25. 今日から始める DigitalOcean 25 / 99 • チケット制 or コミュにティに質問 システムの異常に関してはチケットでサポートへ、サーバ内の設定等はコミュにティ情報が参考に ➡ https://cloud.digitalocean.com/support • オンライン・ドキュメント(英語デース) ➡ Tutorials https://www.digitalocean.com/community/tutorials ➡ Questions https://www.digitalocean.com/community/questions サポート体制
  26. 26. 今日から始める DigitalOcean 26 / 99 • ここまでで気になる所はありますか? Questions? 会場での質問 「トラフィック課金は IN / OUT どちら側?」  Outbound側のみ課金対象でした
  27. 27. 入門 introduction 実践 practice 応用 advanced 登場背景、機能概要、特長 料金体系、契約方法 支払い方法、SLA Dropletやテンプレート管理 バックアップ、プライベート接続 DNS機能 プロビジョニング、API CoreOSとDocker Vagrant・Packer・Terraform できる☆DigitalOcean
  28. 28. 入門 introduction 実践 practice 応用 advanced 使い始める前に知りたかった できる☆DigitalOcean
  29. 29. 実践 practice • アカウント作成手順 • droplet 起動・停止 • リソース変更方法 • スナップショットと バックアップ • SSH 鍵管理 • プライベート接続と注意点 • DNS 設定、ホスト名逆引き
  30. 30. 新規契約
  31. 31. 新規契約
  32. 32. 今日から始める DigitalOcean 32 / 99 • オンライン・サインアップ すべてウェブ上で完結(アカウント作成申請 確認メールに返信 契約者情報と決済情報登録  利用開始) ➡ 次ページ以降で登録方法詳細 • クレジットカード or PayPal 必須 申請時は認証のため $1.23 のクレジット発生しますが、30日以内に返金処理 契約方法・はじめての Droplet 作成
  33. 33. https://www.digitalocean.com/ • DigitalOceanのサイトにアクセス • ログイン用のID(メールアドレス)と アカウント用パスワードを入力後、 「CREATE ACCOUNT」
  34. 34. カード情報の入力 or PayPal支払い 決済認証 or PayPal 確認後 「Create Droplet」で作成
  35. 35. ホスト名 (FQDN) スペックの選択 リージョン選択 オプション選択 マシンイメージの選択 SSH 公開鍵の登録 ( オプション ) ドロップレット作成開始
  36. 36. 進行状況(残り時間)が画面に表示 自動的に切り替わり、IPアドレスが表示 SSH 鍵の非選択時は、root パスワードはメール送付
  37. 37. Dropletとイメージ操作
  38. 38. 今日から始める DigitalOcean 38 / 99 Droplet 起動・停止 • コントロールパネル上で操作 新規起動は「 Create Droplet 」をクリック • 停止方法(snapshot作成等) サーバ内で「 /sbin/poweroff 」「 shutdown –h now」 コントロールパネル上でも強制的な「 PowerOff 」(電源断)と 「 Power Cylcle 」(強制リセット)が可能だが、データ消失リスク • 停止中も課金継続 使用しない場合は破棄 ( destroy ) またはテンプレート化する
  39. 39. 今日から始める DigitalOcean 39 / 99 Droplet 破棄・再構築 • 破棄 ( destroy ) 対象ドロップレット上で「 Destroy 」 「 Destroy 」 完全に利用しない場合 なお通常はデータ領域上書きの「 Scrub Data 」を選択 処理開始時点で課金停止 • 再構築 ( rebuild ) 同じスペック・同じ IP アドレスのまま 中身だけをオリジナルか、特定のイメージに差し替え
  40. 40. 今日から始める DigitalOcean 40 / 99 Droplet 起動時の選択肢 • Distribution (OS) の選択肢 ➡ Ubuntu, FreeBSD, Fedora, Debian CoreOS, CentOS • アプリケーションセットアップ済みイメージ ➡ RoR, WordPress, Drone, Docker Ghost, MongoDB, GitLab, Node 等
  41. 41. 今日から始める DigitalOcean 41 / 99 コンソールへのアクセス • 接続は「 Access 」「 Console Access 」 VNC経由でブラウザからアクセス可能 画面が暗いときは、何かキーボードを入力する 要パスワード設定
  42. 42. 今日から始める DigitalOcean 42 / 99 スペック変更方法 • 事前に “Power Off” にする 停止状態にしないと、メニューで選択できない • Droplet の「 Resize 」 ➡ Permanent (永続的) • SSD 容量変更は時間かかる (物理サーバ変更のため) ➡ Flexible (フレキシブル) • CPU とメモリのみであれば、再起動で即時反映
  43. 43. 今日から始める DigitalOcean 43 / 99 Snapshot と Backup • Snapshot:Droplet 停止時、何時でも作成できる 現時点ではスナップショット機能によるイメージ作成は無償 スナップショットを別のリージョンで使いたい場合は、イメージの事前転送が必要 • Backup:サーバ申込時にオプション設定が必須 毎週1回(現時点では)、システムが決めた時間に自動的にバックアップを作成 作成したバックアップ用イメージから復旧可能 有償オプション(対象ドロップレットの月間利用料金の 20% ) 稼働中のサーバにはバックアップ設定を後から追加することはできない
  44. 44. 今日から始める DigitalOcean 44 / 99 Snapshot 作成方法 • Droplet を停止 Power On の状態では操作できません • 「 Snapshots 」「 Take Snapshot 」を選択 任意名称を入力後、「 Take Snapshot 」(スナップショット作成)
  45. 45. 今日から始める DigitalOcean 45 / 99 “Settings”で設定確認・変更 • “Networking” … IP アドレス確認 パブリックとプライベート(申込時に選択した場合)のネットワーク情報、IPv6 追加 • “kernel” … Linux kernel 変更機能 復旧したい場合は、“Recovery” を選択 • “Rename” … ホスト名称変更 コントロールパネル上で表示される名前に加え、IP アドレスの逆引きホスト名も兼ねる
  46. 46. 今日から始める DigitalOcean 46 / 99 ”Graphs”でリソース情報参照 • Droplet の利用状況表示 • ネットワーク帯域 • ディスク I/O ( read/write ) • CPU 使用率 ( user/sys )
  47. 47. 今日から始める DigitalOcean 47 / 99 イメージの管理 “Images” メニュー • スナップショット作成 各 Droplet のメニュー以外からも変更できる • 名称変更・削除も可能 • リージョン毎に保持 別のリージョンで使う場合は、転送が必要 5~10分程度時間かかる
  48. 48. SSH 鍵管理
  49. 49. 今日から始める DigitalOcean 49 / 99 SSH鍵管理 • 公開鍵を DigitalOcean に登録可能 複数の鍵の登録や削除をコントロールパネル上から操作 • Droplet 作成時、root パスワードを設定しない 作成時に SSH 鍵を指定すると、サーバ内で root パスワードは設定されず、メールも通知されない • Droplet の root に自動設定 /root/.ssh/authorized_keys に追加されます
  50. 50. 今日から始める DigitalOcean 50 / 99 SSH鍵追加方法 • 設定は「 Your Settings」「 Security 」 「 Add SSH Key 」 表示名と、公開鍵を入力後、「 Create SSH Key 」
  51. 51. プライベート・ネットワーク
  52. 52. 自分の droplet A 自分の droplet B 他人の droplet 自分の droplet C 他人の droplet パブリック・ネットワーク パブリック・ネットワーク 共有プライベート・ネットワーク 共有プライベート・ネットワーク eth0 eth0 eth0 eth0 eth0 eth1 eth1 eth1 eth1 eth1 DigitalOcanリージョン BDigitalOcean リージョン A internet 各リージョン毎に独立した共有プライベート・ネットワークがあります プライベート内のトラフィック課金はありませんが、セキュリティに要注意
  53. 53. 今日から始める DigitalOcean 53 / 99 共用プライベート・ネットワーキング • プライベート間で高速転送、課金なし eth1 が追加される。ただし接続できるのは同一リージョン内でのみ。データセンタを跨ぐことは不可 • セキュリティに注意 リージョン内部の共有ローカル・ネットワーク内なので、iptables 等、セキュリティに配慮 • 使う場合 Droplet 作成時に ”Private Networking”
  54. 54. 今日から始める DigitalOcean 54 / 99 共用プライベート・ネットワーキング • プライベート間で高速転送、課金なし eth1 が追加される。ただし接続できるのは同一リージョン内でのみ。データセンタを跨ぐことは不可 • セキュリティに注意 リージョン内部の共有ローカル・ネットワーク内なので、iptables 等、セキュリティに配慮 • 使う場合 Droplet 作成時に ”Private Networking” [root@dev3 ~]# /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 04:01:49:0B:30:01 inet addr:128.199.191.153 Bcast:128.199.191.255 Mask:255.255.192.0 inet6 addr: fe80::601:49ff:fe0b:3001/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:41626 errors:0 dropped:0 overruns:0 frame:0 TX packets:46035 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4560985 (4.3 MiB) TX bytes:6388196 (6.0 MiB) eth1 Link encap:Ethernet HWaddr 04:01:49:0B:30:02 inet addr:10.130.138.237 Bcast:10.130.255.255 Mask:255.255.0.0 inet6 addr: fe80::601:49ff:fe0b:3002/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:78 errors:0 dropped:0 overruns:0 frame:0 TX packets:130 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:13712 (13.3 KiB) TX bytes:14718 (14.3 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
  55. 55. DNS管理
  56. 56. 今日から始める DigitalOcean 56 / 99 DigitalOcean の DNS 機能 • ドメイン名のネームサーバを DigitalOcean に設定 ➡ ns1.digitalocean.com ➡ ns2.digitalocean.com ➡ ns2.digitalocean.com • ゾーン管理機能 ( 無料 ) ブラウザ上から各種のレコードを設定できる • Droplet の逆引きホスト名を自動設定 ( 無料) 作成した「 Droplet 」の名前が FQDN ならば自動的に設定
  57. 57. 今日から始める DigitalOcean 57 / 99 例:お名前.com のドメインを使う • ネームサーバーの変更 対象ドメイン名の選択 • “他のネームサーバを利用” ➡ ns1.digitalocean.com ➡ ns2.digitalocean.com ➡ ns3.digitalocean.com
  58. 58. 今日から始める DigitalOcean 58 / 99 ドメインを DigitalOcean に登録 • メニューの“DNS” ➡ 「ドメイン名」入力 ➡ Aレコード追加ホスト選択 ➡ 「Create Domain」 登録済みドメイン編集
  59. 59. レコード追加 Addressレコード IPアドレス ゾーン ファイル内容
  60. 60. レコード追加 Addressレコード IPアドレス ゾーン ファイル内容 各種レコード に対応
  61. 61. 今日から始める DigitalOcean 61 / 99 • ここまでで気になる所はありますか? Questions? 会場での質問 「新しいインスタンスは頻繁に増えますか?」  あんまり極端に変わらない印象です 「停止中でも課金されますか?」  課金されます。ただしスナップショットは 無料なので、それで回避できます 「バックアップのタイミングは決められますか?」  いいえ、自動設定です
  62. 62. 入門 introduction 実践 practice 応用 advanced 登場背景、機能概要、特長 料金体系、契約方法 支払い方法、SLA Dropletやテンプレート管理 バックアップ、プライベート接続 DNS機能 プロビジョニング、API CoreOSとDocker Vagrant・Packer・Terraform できる☆DigitalOcean
  63. 63. 入門 introduction 実践 practice 応用 advanced クラウドの価値を高めるために できる☆DigitalOcean
  64. 64. 応用 advanced • User Data でプロビジョニング • API を使う • CoreOS で Docker • Vagrant or DockerMachine • Packer でテンプレート管理 • Terraform で自動構成管理
  65. 65. プロビジョニング
  66. 66. プロビジョニング ( provisioning ) サーバ起動後の初期設定やアプリケーションのセットアップを自動的に行う DigitalOcean 公式イメージ 新 Droplet 実際に使う Droplet 環境 SSH ログイン 初期設定・環境構築 起動 GUI 操作
  67. 67. プロビジョニング ( provisioning ) サーバ起動後の初期設定やアプリケーションのセットアップを自動的に行う DigitalOcean 公式イメージ 新 Droplet 実際に使う Droplet 環境 初期設定・環境構築の自動実行 起動 GUI 操作 User Data • 正確 • 速い • 繰り返し使える
  68. 68. 今日から始める DigitalOcean 68 / 99 User Data の利用方法 • Droplet 作成時に指定 metadata としてもサーバ内から参照可能になる http://169.254.169.254/metadata • 利用可能な形式 ➡ シェルスクリプト、等 ➡ Cloud-Init • https://cloudinit.readthedocs.org/en/latest/ ここにコードを記入
  69. 69. 今日から始める DigitalOcean 69 / 99 ➡ https://www.digitalocean.com/community/tutorials/an-introduction-to-droplet-metadata 例 1:bash #!/bin/bash # timezone mv /etc/localtime /etc/localtime.orig ; ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime # setup Apache yum -y install wget unzip httpd export HOSTNAME=$(curl -s http://169.254.169.254/metadata/v1/hostname) export PUBLIC_IPV4=$(curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/ipv4/address) echo Droplet: $HOSTNAME, IP Address: $PUBLIC_IPV4 > /var/www/html/index.html systemctl start httpd # setup serf cd /tmp wget -O 0.6.4_linux_amd64.zip https://dl.bintray.com/mitchellh/serf/0.6.4_linux_amd64.zip unzip 0.6.4_linux_amd64.zip cp ./serf /usr/bin/serf
  70. 70. 今日から始める DigitalOcean 70 / 99 例 2:Cloud-Init ( YAML 形式 ) #cloud-config users: - name: zem groups: wheel shell: /bin/bash sudo: ['ALL=(ALL) NOPASSWD:ALL'] ssh-authorized-keys: - ssh-rsa AAAAB3WzaS1yc2EAAAxeess== • debug 用のログは /var/log/cloud-init.log , cloud-init-output.log ➡ https://www.digitalocean.com/community/tutorials/how-to-use-cloud-config-for-your-initial-server-setup ➡ https://www.digitalocean.com/community/tutorials/an-introduction-to-cloud-config-scripting
  71. 71. CoreOS で Docker
  72. 72. 今日から始める DigitalOcean 72 / 99 CoreOS のイメージを選択
  73. 73. 今日から始める DigitalOcean 73 / 99 • ログインユーザは「 core 」なので注意 CoreOS にログイン $ ssh -l core 128.199.237.114 The authenticity of host '128.199.237.114 (128.199.237.114)' can't be established. RSA key fingerprint is 02:59:20:26:64:f9:e2:96:13:f6:22:a7:05:ee:2b:6b. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '128.199.237.114' (RSA) to the list of known hosts. CoreOS stable (607.0.0) core@coreos ~ $ これだけで、直ぐに docker fleet, etcd が使えます
  74. 74. 今日から始める DigitalOcean 74 / 99 • ログインユーザは「 core 」なので注意 CoreOS にログイン $ ssh -l core 128.199.237.114 The authenticity of host '128.199.237.114 (128.199.237.114)' can't be established. RSA key fingerprint is 02:59:20:26:64:f9:e2:96:13:f6:22:a7:05:ee:2b:6b. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '128.199.237.114' (RSA) to the list of known hosts. CoreOS stable (607.0.0) core@coreos ~ $ core@coreos ~ $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES core@coreos ~ $ docker run -it centos /bin/bash Unable to find image 'centos:latest' locally 511136ea3c5a: Pull complete b6718650e87e: Pull complete 493bab5fff45: Pull complete 9dbcac75201e: Pull complete centos:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security. Status: Downloaded newer image for centos:latest [root@6c00e23717a7 /]# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) [root@6c00e23717a7 /]# core@coreos ~ $ core@coreos ~ $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6c00e23717a7 centos:latest "/bin/bash" 20 seconds ago Up 20 seconds stupefied_mclean これだけで、直ぐに docker fleet, etcd が使えます 応用:kubernetes クラスタを構築する方法 How To Install and Configure Kubernetes on top of a CoreOS Cluster | DigitalOcean https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-kubernetes-on-top-of-a-coreos-cluster
  75. 75. DigitalOcean API v2
  76. 76. 今日から始める DigitalOcean 76 / 99 • メニューの「 API」 ➡ 「 Generate New Token 」 ➡ 任意のtoken名を入れる ➡ 「 Generate Token 」 一度しか画面に表示されないので取り扱い注意 API Token (v2) 取得方法 まず Token 作成が必要です
  77. 77. 今日から始める DigitalOcean 77 / 99 • GUI 上の全ての操作は API 経由で操作可能 HTTP 経由でリクエストを送信、token で認証し、結果を JSON 形式で受け取る DigitalOcean API https://developers.digitalocean.com/documentation/v2/ DigitalOcean API $ export TOKEN=48f78352fd8c*****************beee5bcb97b $ curl -s -X POST "https://api.digitalocean.com/v2/droplets" ¥ -d'{"name":"apibased.zem.jp","region":"sgp1","size":"512mb","image":"centos-6-5-x64", "ssh_keys":["737302“],"private_networking":true}' ¥ -H "Authorization: Bearer $TOKEN" ¥ -H "Content-Type: application/json" | jq -M "."
  78. 78. 今日から始める DigitalOcean 78 / 99 • docker-machine で docker 動作環境起動 Docker Machine $ export TOKEN=<token> $ docker-machine create ¥ --driver digitalocean ¥ --digitalocean-region=sgp1 ¥ --digitalocean-access-token=$TOKEN ¥ cloud-dev
  79. 79. HashiCorpのツール群で インフラ管理の自動化
  80. 80. 今日から始める DigitalOcean 80 / 99 • 事前準備 ➡ Vagrant のセットアップ https://www.vagrantup.com/ ➡ プラグインのセットアップ Vagrant で開発環境の準備 # vagrant plugin install vagrant-digitalocean Installing the 'vagrant-digitalocean' plugin. This can take a few minutes... Installed the plugin 'vagrant-digitalocean (0.7.3)'! $ vagrant plugin list vagrant-digitalocean (0.7.3) vagrant-share (1.1.3, system)
  81. 81. 今日から始める DigitalOcean 81 / 99 • Vagrantfile 作成 Vagrant で DigitalOcean Vagrant.configure('2') do |config| config.vm.provider :digital_ocean do |provider, override| override.ssh.private_key_path = '~/.ssh/id_rsa' override.vm.box = 'digital_ocean' override.vm.box_url = "https://github.com/smdahlen/vagrant-digitalocean/raw/master/box/digital_ocean.box" provider.token = ‘<token>' provider.image = 'centos-6-5-x64' provider.region = 'sgp1' provider.size = '512mb' provider.private_networking = 'true' end end
  82. 82. 今日から始める DigitalOcean 82 / 99 Vagrant で Droplet 起動 $ vagrant up --provider=digital_ocean Bringing machine 'default' up with 'digital_ocean' provider... ==> default: Creating new SSH key: Vagrant... ==> default: Creating a new droplet... ==> default: Assigned IP address: 128.199.91.76 ==> default: Private IP address: 10.130.137.240 ==> default: Modifying sudoers file to remove tty requirement... ==> default: Installing rsync to the VM... ==> default: Rsyncing folder: /home/zem/develop/vagrant/working/ => /vagrant... $ vagrant global-status id name provider state directory -------------------------------------------------------------------------- eebc73d default digital_ocean active /home/zem/develop/vagrant/working $ vagrant ssh eebc73d [root@default ~]# pwd /root [root@default ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/vda1 20642428 1386160 18207692 8% / tmpfs 251136 0 251136 0% /dev/shm
  83. 83. 今日から始める DigitalOcean 83 / 99 • Packer はイメージ管理用のツール https://www.packer.io/ ( HashiCorp, Inc. ) • 様々な仮想化・クラウドのイメージを管理 繰り返しの作業やプロビジョニングを自動化し、ゴールデンイメージの作成を支援 • DigitalOcean にも勿論対応! GUI操作不要のイメージ作成。並列に作成する機能があるので、コマンド実行後は放置でOK Packer で DigitalOcean イメージ管理
  84. 84. 今日から始める DigitalOcean 89 / 99 DigitalOcean Packer Provider • Packer は標準対応、以下 JSON 形式で定義 { "builders": [{ "type": "digitalocean", "api_token": "<自分のtoken>'", "image": "ubuntu-14-04-x64", "region": "sgp1", "snapshot_name": "packer-sample {{timestamp}}" }], "provisioners": [{ "type": "shell", "inline": [ "sleep 30", "sudo apt-get update", "sudo apt-get install -y apache2" ] }] }
  85. 85. 今日から始める DigitalOcean 90 / 99 DigitalOcean Packer Provider $ packer validate example.json Template validated successfully. $ packer build example.json digitalocean output will be in this color. ==> digitalocean: Creating temporary ssh key for droplet... ==> digitalocean: Creating droplet... ==> digitalocean: Waiting for droplet to become active... (省略) ==> digitalocean: Gracefully shutting down droplet... ==> digitalocean: Creating snapshot: packer-sample 1428040540 ==> digitalocean: Waiting for snapshot to complete... ==> digitalocean: Destroying droplet... ==> digitalocean: Deleting temporary ssh key... Build 'digitalocean' finished. ==> Builds finished. The artifacts of successful builds are: --> digitalocean: A snapshot was created: 'packer-sample xxxx' in region 'Singapore 1'
  86. 86. 今日から始める DigitalOcean 91 / 99 • クラウドのインフラをコードで管理 https://www.terraform.io/ ( HashiCorp, Inc. ) • 環境の適用・破棄を GUI を通さずに行う 複数のサーバやリソースの指定、繰り返しの作業の省力化、作業の正確さ、迅速な対応を実現 • 様々なクラウドのインフラに対応 もちろん DigitalOcean も!! Terraform で DigitalOcean 構成管理
  87. 87. 今日から始める DigitalOcean 92 / 99 • digitalocean.tf 等のリソース定義ファイル作成 Terraform DigtalOcean Provider variable "do_token" {} # Configure the DigitalOcean Provider provider "digitalocean" { token = "${var.do_token}" } # Create a web server resource "digitalocean_droplet" "web" { image = "centos-6-5-x64" name = "terraform.zem.jp" region = "sgp1" size = "512mb" private_networking = true ssh_keys = ["737302"] }
  88. 88. 今日から始める DigitalOcean 93 / 99 • “plan”  “apply”  “destroy” Terraform DigtalOcean Provider $ ./terraform plan -var "do_token=${TOKEN}“ $ ./terraform apply -var "do_token=${TOKEN}" digitalocean_droplet.web: Creating... image: "" => "centos-6-5-x64" ipv4_address: "" => "<computed>" ipv4_address_private: "" => "<computed>" ipv6_address: "" => "<computed>" ipv6_address_private: "" => "<computed>" locked: "" => "<computed>" name: "" => "terraform.zem.jp" private_networking: "" => "1" region: "" => "sgp1" size: "" => "512mb" ssh_keys.#: "" => "1" ssh_keys.0: "" => "737302" status: "" => "<computed>" digitalocean_droplet.web: Creation complete Apply complete! Resources: 1 added, 0 changed, 0 destroyed. The state of your infrastruct
  89. 89. $ ./terraform show ./terraform.tfstate digitalocean_droplet.web: id = 4796394 image = centos-6-5-x64 ipv4_address = 128.199.91.76 ipv4_address_private = 10.130.137.240 locked = false name = terraform.zem.jp private_networking = true region = sgp1 size = 512mb ssh_keys.# = 1 ssh_keys.0 = 737302 status = active $ ssh -l root 128.199.91.76 The authenticity of host '128.199.91.76 (128.199.91.76)' can't be established. RSA key fingerprint is d3:a7:64:79:49:53:ca:66:d3:05:43:63:9e:d1:17:93. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '128.199.91.76' (RSA) to the list of known hosts. reverse mapping checking getaddrinfo for terraform.zem.jp [128.199.91.76] failed - POSSIBLE BREAK- IN ATTEMPT! [root@terraform ~]# hostname terraform.zem.jp
  90. 90. $ ./terraform destroy -var "do_token=${TOKEN}" Do you really want to destroy? Terraform will delete all your managed infrastructure. There is no undo. Only 'yes' will be accepted to confirm. Enter a value: yes digitalocean_droplet.web: Refreshing state... (ID: 4796394) digitalocean_droplet.web: Destroying... digitalocean_droplet.web: Destruction complete Apply complete! Resources: 0 added, 0 changed, 1 destroyed. Terraformは環境を構築するだけでなく、変更や破棄 (destroy)を 迅速かつ確実にこなします。DigitalOceanの他にAWSやGCE等にも対応
  91. 91. 今日から始める DigitalOcean 96 / 99 • ここまでで気になる所はありますか? Questions? 会場での質問 「kernel の選択肢はどれくらいありますか?」  それぞれのディストリビューション毎に多数
  92. 92.  DigitalOcean は開発者向けに便利な機能を持っている  1分で仮想サーバ (droplet) を利用できる環境がある  周辺ツールとの連携で、もっともっと楽に利用できる まとめ
  93. 93.  DigitalOcean の “Datacenter in Japan” に投票しよう! http://digitalocean.uservoice.com/forums/136585-digitalocean/suggestions/6965695-datacenter-in-japan  申込時 $10 割引クーポン(で、私は $25 のクレジット ) referral code link www.digitalocean.com/?refcode=e341e6bbae58  ちゃんとした DigitalOcean Meetup Tokyo したいなぁ… おまけ ご興味あります? https://www.digitalocean.com/referral-program/ 正確には、無料 $10 分に加え $25 お使いいただければ…
  94. 94. 今日から始める DigitalOcean 99 / 99 参考資料 • DigitalOcean ➡ https://www.digitalocean.com/ • Tutorials ➡ https://www.digitalocean.com/community/tutorials • Questions ➡ https://www.digitalocean.com/community/questions References

×