SlideShare a Scribd company logo
A U TO M AT I O N M Y T H
2015年7月26日 @zembutsu
July Tech Festa 2015
HashiCorpとAtlasの
インフラ管理
クリエーションライン株式会社
前佛雅人
アジェンダ
 1. HashiCorpとは?
 HashiCorpの歴史
 The Tao of HashiCorp – HashiCorp 道
 2. HashiCorpの提供するツール群
 Vagrant … 開発環境自動構築
 Packer … マシンイメージ自動作成
 Terraform … インフラ環境の自動構築
 Serf … オーケストレーション
 Consul … サービス検出と運用自動化
 Atlas … DevOps プラットフォーム
 Vault … シークレット管理
 3. まとめ・質疑応答
開発と運用が一枚岩となって戦うDevOps
スタイルが広まりつつある昨今。これは開
発者視点だけではありません。運用として
も、避けて通れない課題。それを解決する
ためにDevOpsツール群の使用と、自動化
が必要とされています。
しかし、「運用の自動化」も本当に必要な
のでしょうか?
なぜ、必要なのでしょうか?
この答えの一つが、HashiCorpの考え方や、
ツール・サービスかもしれません。運用だ
からこそ、今、知っておきたい考え方や
ツールが、ここにあります。
本講は、運用担当者視点で、HashiCorpの
Vagrant、Packer、Terraform、Serf、Consul
の各ツールの考え方や使い方を通して、
自動化のありかたについて、皆さんと考え
る場にしたいと考えます。
自己紹介
 前佛雅人
 Technology Evangelist
 クリエーションライン株式会社
 主な経歴
 ホスティング・サービスの運用エンジニア
 自動化・省力化に取り組む
 監視ツール Zabbix・Munin 等の運用・検証
 特定業種向けMSPサービス
 趣味
 3DS:ファイアーエムブレムif
 プレゼン研究
おや…スライドの様子が…
俺のスライドが
こんなに堅いはずがない。
普通のプレゼンだと思った?
残念、俺だよ!
【運命の分岐点】 進む道を選んでください。
運用に自動化を求めるのは間違っているだろうか
俺のコンテナがこんなに軽いわけがない。
ラブライブ!に学ぶ運用組織論
一応、選択肢を用意しました
今回のスライドで伝えたい事
扱う範囲は…次のスライドで
運用に自動化を求めるのは間違っているだろうか
“私の最強デッキ戦略”とは
A U T O M A T I O N M Y T H
我々は何処から来たのか、何者なのか、
何処へ行くのか?
1■□□□ Where Do We Come From/ What Are We? Where Are We Going?
13
自己紹介
‣ @zembutsu a.k.a. 前佛雅人
- Technology Evangelist; Creationline, Inc. – 1.5 yrs
- Data Center Operations Engineer – 15+ yrs
興味関心:運用監視自動化、趣味でOSSやクラウド系の検証・情報発信
- SlideShare http://slideshare.net/zembutsu
- Blog http://pocketstudio.jp/log3
書籍・記事
- Serf/Consulで管理を自動化! (Gihyo.jp)
http://gihyo.jp/admin/feature/01/serf-consul
- HashiCorpのツール群からみる
インフラ構築運用の未来 (Think IT)
http://thinkit.co.jp/book/2015/03/05/5700
Why am I here?
+MasahitoZembutsu
ISBN-10: 4774174416 ISBN-10: 4844338145 ISBN-10: 4798139785
一応改めて自己紹介です。
会社的にこういう立場ですが
無理にHashiCorp導入しても…
無理にDockerを入れても…
そして時間があれば農業の事
16Personalities
http://www.16personalities.com/ja
性格タイプ:仲介者 INFP型
• 理想主義者
• 人生の意味を求める者
• 今の自分のことは分かっているが、
今後どうなるかは分からない
ちなみに、こんな性格です。
Technology Evangelist
こんな肩書きなので、どんな
仕事されてるんですかとよく
聞かれます。
Technology Evangelist
私がずっと紹介しているのは
仕事とか関係無く、良い物を
皆で共有したいという立場!
みなさん、仕事は楽しいですか
ところで…
「楽」の漢字の語源は、木の
棒に糸を貼ったもの。
楽しい 楽
Fun Easy
≒
現状では「楽しい」と「楽」
意味あいがちょっと違います
楽しい 楽
Easy
≠
Fun
むしろ仕事では一致しません
たとえば…
DANDELION ATTACK
さ し み た ん ぽ ぽ し ゅ う ら い
出典:タンポポとは (タンポポとは) [単語記事] - ニコニコ大百科
“ 近年インターネット上で、「誰にでもできる簡単な仕事」かつ「やりがいのない単調な仕事」を
表現する時に、もしくは「非常に過酷な仕事」を表現するネタとして、刺身の上にタンポポを
乗せる」という仕事がしばしば引き合いに出される。本当にそのような、タンポポを乗せる「だけ」
の仕事があり、その上きちんと給料が出るのかは不明。”
http://en.wikipedia.org/wiki/Taraxacum#/media/File:T_japonicum04.jpg
Creative Commons License
BY-SA 3.0
26
‣ 苦痛
painful
‣ 時間を消費する
time-consuming
‣ 退屈でつまらない
tedious process
刺身タンポポ的な手作業
What is the “Sashimi-Tanpopo”’s working?
WEAVING SUTRA
し ゃ き ょ う ぶ ん か
運用に自動化を求めるのは間違っているだろうか
29
‣ 動的に変化するシステム基盤が当たり前
自動化や省力化を推進する、クラウド・コンピューティングの価値。もう普通に使える技術。
‣ 変化に応じて設定ファイルの書き換えが発生
例:監視設定ファイル、リバース・プロキシ設定、サーバ情報一覧の追加・削除が都度発生
‣ 変化に対応できないと、この先生きのこれないかも
例:銀行の窓口対応よりも、24時間稼働するATMを使うほうが正確で速く便利。
「刺身タンポポ」「写経文化」の現在…
??「駆逐してやる!!」
刺身タンポポ・写経対抗
もしかして:自動化
あの日セットアップしたサーバの名前を僕達はまだ知らない
あの日セットアップしたサーバの名前を僕達はまだ知らない
シ ス テ ム
33 / 130
稼働率 =
MTBF
MTBF+MTTR
平均故障間隔
Meam Time Between Failures
平均修理時間
Meam Time to Repair
Availability
平均故障間隔
Meam Time Between Failures
http://www.flickr.com/photos/ewan_the_moomintroll/4127615397/ by Ewan Bellamy
前職はデータセンタでずっと
運用保守に携わってきました
運用
監視
Operation
Monitoring
―Don't forget. always, somewhere,
someone is fighting for you.
―As long as you remember her.
you are not alone.
忘れないで、いつもどこかで誰かがあなたの為に戦っている。
彼女を覚えている限り、あなたは一人じゃない。
(出典:魔法少女まどかマギカ最終話「わたしの、最高の友達」)
DECISIVE BATTLE
A HUMAN WORK
You can advance.
This Photo is under creative commons license by torkildr
http://www.flickr.com/photos/torkildr/3462606643/sizes/l/in/photostream/
INFRASTRUCTURE ENGINEER
SERVER OPERATION
DATACENTER
http://www.flickr.com/photos/torkildr/3462606643/ by torkildr http://www.flickr.com/photos/toyohara/395472864/ by toyohara
Before After軽く環境の変遷を見てみます
監視第1世代・物理 (~2000年)=死活監視
First Generation Monitoring System, Dead or Alive とりあえずNagios+MRTG的な。
ピークが読めた時代です。
(出典)総務省「平成23年通信利用動向調査」
http://www.soumu.go.jp/johotsusintokei/statistics/statistics05.html
5,593
6,942
7,730
7,948
8,529
8,754 8,811
9,091
9,408 9,462 9,610
46.3
57.8
64.3 66.0
70.8 72.6 73.0
75.3
78.0 78.2 79.1
0
10
20
30
40
50
60
70
80
90
100
0
1,000
2,000
3,000
4,000
5,000
6,000
7,000
8,000
9,000
10,000
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011
普
及
率
(
%
)
利
用
者
数
(
万
人
)
利用者数 人口普及率
ですが利用者数が増えると、
環境が変わります。
監視第2世代・仮想化 (~2009年)=時系列リソース
Second Generation Monitoring System, Time Series and Resource Monitoring
携帯電話とSNSの普及が拍車
スキルも交換が必要でした
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
CLOUDCOMPUTING!!
そこにうまくハマったのが
クラウド技術の登場です。
運用に自動化を求めるのは間違っているだろうか
これはクラウド違いです…
The NIST Definition of Cloud Computing (NIST Special Publication 800-145)
http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf
NISTによるクラウドコンピューティングの定義 米国国立標準技術研究所による推奨(IPA翻訳版)
https://www.ipa.go.jp/files/000025366.pdf
基本的な特長:
• オンデマンド・セルフサービス
• 幅広いネットワークアクセス
• リソースの共用
• スピーディーな拡張性
• サービスが計測可能であること
サービスモデル:
• SaaS ( Software as a Service )
• PaaS ( Platform as a Service )
• IaaS ( Infrastructure as a Service )
実装モデル:
• Private Cloud
• Community Cloud
• Public Cloud
• Hybrid Cloud
監視第3世代・クラウド対応 (~現在)=時系列サービス
Third Generation Monitoring System, Time Series Service Level
今はこんな感じで凌ぎますが
?M2M ; Machine to Machine
この先どうなるんだろうと。
今の運用や監視はあくまでも
「人」が対応する組織設計
しかしコンテナが、
コンテナが来たら…
ニンゲンヤメマスカ?
Do you resign as human being?
It is necessary to answer the following questions to start OPERATION.
YES はい
はい YES
運用を続けるためには、イカの質問に答える必要があります。
正直、キツそうです。
今の手法では、正直このまま
この先生きのこる自信がない
じゃ、どうするの?
まったく、Dockerは最高だぜ
手作業が許されるのは小学生
まったく、Dockerは最高だぜ
手作業が許されるのは小学生
という話にはなりません。
TMTOWTDI
There’s More Than One Way To Do It
これはPerlのスローガン。
答えは1つではなく、色々な
やりかたがあってもいい。
そして、ピンと来ました。
これだ!
脱・刺身タンポポ
脱・写経
その為の自動化スキルセット
┌──────────────────────┐
│ドッカースウォームが あらわれた! │
│ドッカーコンポーズが あらわれた! │
│コマンド? │
│ ∨ │
└━━━━━━━━━━━━━━━━━━━━━━┘
┌────┐
│ていじで │
│かえろう │
└━━━━┘
┌──────コマンド─────┐
│ たたかう じゅもん │
│ にげる げんじつとうひ │
└━━━━━━━━━━━━━━━┘
>
新しいツールだ!敵だ!と
構えるのではなく、
自分の手札にしませんか?
自由に使えるカードが沢山!
自分だけの最強デッキを作ろう
もちろん敢えて刺身タンポポ
写経文化を受け入れるのなら
止めませんが、それは
A Certain Information Management
あと、使わないのと知らない
には、天地の差があります。
ATOKの [TAB] 補完で日本語変換速度向上TAB
シェルのように使える機能、
ご存知でしたか? 分野は
違いますが、これも効率化に
A U T O M A T I O N M Y T H
ご注文はコンテナですか?
2■■□□ Is the Order a Container?
ご注文はコンテナですか?
Is the order a container?
ご注文はコンテナですか?
Is the order a container?
物理時代
仮想化・クラウド時代
コンテナ時代
機
材
発
注
機
材
納
品
設
置
機
器
設
定
事
前
設
計
ク
リ
ッ
ク
見
積
も
り
O
S
設
定
環
境
構
築
試
験
利
用
開
始
試
験
開
発
試
験
運
用
利
用
開
始
…
…
事
前
設
計
ク
リ
ッ
ク
試
験
利
用
開
始
…
事
前
設
計
ク
リ
ッ
ク
試
験
利
用
開
始
…
開 発 段 階 検 証 段 階 本 番 段 階
すべてを迅速に、一貫した環境で行いやすい← New
こういった時代変遷があり…
社外開発環境 本番環境ステージング環境
社内共有開発環境
個人開発環境
社内テスト環境
社外開発環境 本番環境ステージング環境
CI/CD Docker レジストリ
Docker動作環境(docker machine)
別々の環境で、動く・動かないを
吸収するプラットフォームの役割
OpenStack
CloudStack
Mackerel
Amazon Web Services
Google Cloud Platform
Windows Azure
SoftLayer
Niftyクラウド
さくらのクラウド
Salesforce
Heroku
DigitalOcean
LinodeさくらのVPS
VMware
Circle CI
Jenkins
GitHub
Slack
NewRelic
Datadog
IaaS
パブリック・クラウド
日本国内
パブリック
クラウド
VPS
Monitoring
PagerDuty
Operations
CI
PaaS
Atlas
プライベート
クラウド
開発環境 SaaS
Cloud n
Docker
( Linux Containers)
クラウドを取り巻く業界俯瞰図
2年前に登場したDockerは
OpenStack
CloudStack
Mackerel
Amazon Web Services
Google Cloud Platform
Windows Azure
SoftLayer
Niftyクラウド
さくらのクラウド
Salesforce
Heroku
DigitalOcean
LinodeさくらのVPS
VMware
Circle CI
Jenkins
GitHub
Slack
NewRelic
Datadog
IaaS
パブリック・クラウド
日本国内
パブリック
クラウド
VPS
Monitoring
PagerDuty
Operations
CI
PaaS
Atlas
プライベート
クラウド
開発環境 SaaS
Cloud n
Docker
( Linux Containers)
クラウドを取り巻く業界俯瞰図
あっと言う間に巻き込みます
なぜ?
【速さ】という価値
運用に自動化を求めるのは間違っているだろうか
■ore no container ga konnnani karui wake ga nai
docker run
docker pull
docker …
docker hub
( public
repository)
•
Docker
• コンテナにはアプリケーションに
依存するバイナリとライブラリのみ
• 数百MB程度~のコンテナ
• 他のコンテナ間で kernel を共有
81
Dockerと基本コマンド
docker run
コンテナ実行
docker stop
コンテナ停止
docker commit
コンテナイメージ化
docker pull
イメージの取得
docker build
イメージの自動構築
docker attach
コンテナにアタッチ
docker logs
標準出力の表示
docker inspect
詳細情報の表示
docker rm
イメージ削除
docker images
イメージ一覧表示
diff | history
差分・履歴表示
背景画像CREDIT:スフィア / PIXTA(ピクスタ)
82Introduction to Docker Basic Course
‣ コンテナ化とは、ホストOS上のKernel機能を使い
複数の root ファイルシステムを実行できる。
各々の root ファイルシステムの事を「コンテナ」( container ) と呼称する。
これ何て chroot?と言われる所以。
‣ 各々のコンテナは各々のリソースを持つ
プロセス(計算資源)
メモリ
デバイス
ネットワーク
コンテナ?
[zem@artemis ~]$ docker run Ubuntu echo “Hey World”
Hey World
[zem@artemis ~]$ docker run centos cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
[zem@artemis ~]$ docker run centos:6 cat /etc/redhat-release
CentOS release 6.6 (Final)
[zem@artemis ~]$ docker run ubuntu cat /etc/issue
Ubuntu 14.04.2 LTS ¥n ¥l
プロセスとして手軽に実行を
することができます。
[zem@artemis ~]$ docker run –t -i --name=madoka ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from ubuntu
83e4dde6b9cf: Extracting 65.79 MB/65.79 MB
b670fb0c7ecd: Download complete
29460ac93442: Download complete
d2a0ecffe6fa: Download complete
ubuntu: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.
Digest:
sha256:cb90b1a107073ab3e17271e45a6177b23f548b44157d88d955b7e8bcdbcfd14a
Status: Downloaded newer image for ubuntu:latest
446712c7188861edb406fc85e3c50ecb2efab329d2cb8c5511a4e323358c75ea
root@e1096840bb9e:/#
これは、典型的な起動例。
bashを実行するコンテナを
起動しているものです。
# ps ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:00 bash
16 ? R+ 0:00 ps ax
----
root 933 0.0 0.1 66216 1176 ? Ss Jul17 0:34 /usr/sbin/sshd
root 32109 0.0 0.3 99964 4032 ? Ss 19:54 0:00 ¥_ sshd: root@pts/0
root 32111 0.0 0.1 108304 1892 pts/0 Ss 19:54 0:00 | ¥_ -bash
root 878 0.0 0.7 153372 7436 pts/0 Sl+ 20:03 0:00 | ¥_ docker run -t -i --name=madoka ubuntu bash
コンテナのなかではPID「1」
でも、ホスト側からは別の
PIDを持っています。
root@e1096840bb9e:/# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/docker-252:1-263708-e1096840bb9e4d4a671b913affc7f0d28d0824941d877e8738d6f5cc98a45bbe 10190136 236132 9429716 3% /
tmpfs 510172 0 510172 0% /dev
shm 65536 0 65536 0% /dev/shm
/dev/vda1 30830588 2177572 27080256 8% /etc/hosts
tmpfs 510172 0 510172 0% /proc/kcore
tmpfs 510172 0 510172 0% /proc/timer_stats
root@e1096840bb9e:/# /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:02
inet addr:172.17.0.2 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:468 (468.0 B) TX bytes:558 (558.0 B)
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:65536 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)
ディスク領域・ネットワーク
それぞれ分離されています。
Docker Engine
kernel
コンテナA
PID 1
コンテナB
PID 1
コンテナC
PID 1
コンテナN
PID 1
…
こんなイメージで並んでます
88Introduction to Docker Basic Course
‣ 利点
開発者にとっての効率の良さ
すぐに利用できる点と、バージョン・コントロール、CI/CDの自動化。
アプリケーションのポータビリティ
開発をはじめ、テストやリリースに至るまで、コンテナを通して一環したインフラ環境を利用できる。
‣ ポイント
Dockerそのものが何かするのではない(仮想化・クラウドと同じ)
– Dockerは、あくまでも、利用者の利便性を向上する道具
(プラットフォームの役割)
Dockerはインフラを抽象化--developer’s efficiency and application portability
ベース・イメージ
(CentOS)
ベース・イメージ
(Ubuntu)
変更内容 A
変更内容 B
変更内容 C
書き込み可能領域
書き込み可能領域
kernel
あとは独特なのが、イメージ
管理という仕組みです。
[zem@artemis ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED
VIRTUAL SIZE
magical_girl latest 755948a5430e 6 seconds ago
188.3 MB
# docker run -ti magical_girl bash
root@d4a7018a4949:/# echo "madoka" > /who.txt
root@d4a7018a4949:/# exit
exit
[zem@artemis ~]$ docker ps -l
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
d4a7018a4949 magical_girl "bash" 34 seconds ago
Exited (0) 19 seconds ago trusting_goldstine
イメージはスナップショット
のようなもの。
[zem@artemis ~]$ docker ps -l
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
d4a7018a4949 magical_girl "bash" 34 seconds ago
Exited (0) 19 seconds ago trusting_goldstine
[zem@artemis ~]$ docker diff d4
C /root
C /root/.bash_history
A /who.txt
[zem@artemis ~]$ docker commit d4 magical_girl:madoka
76111a745047008b7a383ae91af27c5a543da273bea94e9590c7062fbef457cd
[zem@artemis ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED
VIRTUAL SIZE
magical_girl madoka 76111a745047 6 seconds ago
188.3 MB
magical_girl latest 755948a5430e About a minute
ago 188.3 MB
差分を確認したり、イメージ
コミットして保存もできます
[zem@artemis ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED
VIRTUAL SIZE
magical_girl mami a1504bae269e 3 seconds ago
188.3 MB
magical_girl madoka 76111a745047 3 minutes ago
188.3 MB
magical_girl latest 755948a5430e 5 minutes ago
188.3 MB
[zem@artemis ~]# docker run magical_girl:madoka cat /who.txt
madoka
[zem@artemis ~]# docker run magical_girl:mami cat /who.txt
mami
同じイメージのレポジトリで
違うタグを持つイメージ群
[zem@artemis ~]$ docker run -ti magical_girl:mami bash
root@add71b4968ba:/# rm -rf --no-preserve-root /
(snip)
rm: cannot remove '/sys/block/dm-1': Read-only file system
rm: cannot remove '/sys/block/dm-2': Read-only file system
root@add71b4968ba:/# ps
bash: ps: command not found
root@add71b4968ba:/# ls
bash: ls: command not found
root@add71b4968ba:/# exit
exit
[zem@artemis ~]$ docker run -ti magical_girl:mami bash
root@cdd86dbb4b50:/# cat /who.txt
mami
コミットさえしなければ、
消えたとしても・・・
ほら、大丈夫。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
cdd86dbb4b50 magical_girl:mami "bash" About a minute ago Exited (0) 6 seconds ago
insane_blackwell
add71b4968ba magical_girl:mami "bash" 2 minutes ago Exited (127) About a minute ago
mad_yalow
04bb8e9143b5 magical_girl:mami "bash" 2 minutes ago Exited (0) 2 minutes ago
cranky_ritchie
3fbf384fce5b magical_girl:mami "cat /who.txt" 12 minutes ago Exited (0) 12 minutes ago
high_perlman
75ed3382443c magical_girl:madoka "cat /who.txt" 12 minutes ago Exited (0) 12 minutes ago
elated_goldstine
47f99d7f78a7 magical_girl "bash" 14 minutes ago Exited (0) 14 minutes ago
jovial_pasteur
d4a7018a4949 magical_girl "bash" 18 minutes ago Exited (0) 18 minutes ago
trusting_goldstine
e1096840bb9e ubuntu "bash" 37 minutes ago Exited (0) 19 minutes ago
madoka
$ docker rm $(docker ps -aq --filter='status=exited')
でも、別々のコンテナIDが作
られるので、因果が…
容量を圧迫するので、たまに
綺麗に片付けましょう。
95Introduction to Docker Basic Course
‣ https://hub.docker.com/
Docker Hub
# docker search wordpress
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
wordpress The WordPress rich content management syst... 358 [OK]
tutum/wordpress Wordpress Docker image - listens in port 8... 44 [OK]
tutum/wordpress-stackable Wordpress Docker image - listens in port 8... 23 [OK]
centurylink/wordpress Wordpress image with MySQL removed. 7
.
.
.
ブラウザ上で公式イメージを
含む様々な検索が可能です。
物理マシン 物理マシン 物理マシン
OS OS OS
HyperVisor HyperVisor HyperVisor
VM VM VM VM VM VM
Guest
OS
Guest
OS
Guest
OS
Guest
OS
Guest
OS
Guest
OS
物理マシン 仮想マシン クラウド
OS OS OS
Docker
Engine
Docker
Engine
Docker
Engine
App App App App App App
App App App App
仮想化・クラウド Dockerのコンテナ管理
でも、Docker Engineだけでは
足りない所があります。
物理マシン 物理マシン 物理マシン
OS OS OS
HyperVisor HyperVisor HyperVisor
VM VM VM VM VM VM
Guest
OS
Guest
OS
Guest
OS
Guest
OS
Guest
OS
Guest
OS
物理マシン 仮想マシン クラウド
OS OS OS
Docker
Engine
Docker
Engine
Docker
Engine
GUI
CLI
API
Docker Cluster 管理レイヤ
( ECS, Docker Swarm, rkt, Rancher …etc )
App App App App App App App App App App
仮想化・クラウド Dockerのコンテナ管理
クラスタ管理部分が今は弱い
物理マシン 物理マシン 物理マシン
OS OS OS
HyperVisor HyperVisor HyperVisor
VM VM VM VM VM VM
Guest
OS
Guest
OS
Guest
OS
Guest
OS
Guest
OS
Guest
OS
App App App App
物理マシン 仮想マシン クラウド
OS OS OS
Docker
Engine
Docker
Engine
Docker
Engine
App App App App App App
GUI
CLI
API
Docker Cluster 管理レイヤ
( ECS, Docker Swarm, rkt, Rancher …etc )
オーケストレーション
サービス検出・クラスタ管理
仮想化・クラウド Dockerのコンテナ管理
色々な動きが進みそうです。
APCERA
Cloud Foundry
shippable
Google Container
Engine
Amazon EC2
Container Service
IBM Containers
on Bluemix
コンテナを取り巻く業界俯瞰図
開発環境
Build / Deploy
運用自動化
Orchestration
kitematic
Etcd
SkyDNS
Service Discovery
Docker
fleet
flannel
rkt
CoreOS
Tectonic
Mesosphere
Apache Auora
Marathon
Cluster Management
Kubernetes
構成管理
Docker Swarm
Docker Machine
Docker Compose
Docker特化OS
PaaS
Networking
コンテナ管理用プラットフォーム
パブリック・クラウド陣営
Google Container
Engine
Amazon EC2
Container Service
IBM Containers
on Bluemix Google Kubernetes
Tectonic
CoreOS
商用サポート/エンタープライズ
管理・効率化
Docker ネイティブサポート
最小環境
Docker
競合
オープンソース
コミュニティ
101
DockerCon 2015
‣ Docker, Inc.主催
サンフランシスコ
6月22日・23日の2日間
セッション、ハンズオン、
トレーニング、ブース出展
http://www.dockercon.com/
Google Kubernetes
CoreOS× libcontainer 廃止
The Open Container Project (OCP)
runC
Orchestration
PROJECT ORCA
appcは独自に継続
Linux
Foundation
事務局として協力
Google Container
Engine
IBM Containers
on Bluemix
Amazon ECS
$ wget –O scope git.io/scope
$ chmod a+x ./scope
$ sudo mv scope /usr/local/bin/scope
ネットワーク周りや、
ボリューム周りで、着々と
機能改善が図られている模様
105Introduction to Docker Basic Course
‣ Docker 動作環境の自動作成
仮想サーバの起動と Docker のプロビジョニングを自動的に行う
‣ コマンドラインで使うツール
docker-machine –d <ドライバ> [option] マシン名 …のように、コマンドで操作
‣ Linux, Windows, Mac OS X に対応
‣ VirtualBox だけでなく、多くのクラウドに対応
Amazon Web Services, DigitalOcean, exoscale, Google Compute Engine, SoftLayer, Azure, Hyper-V,
OpenStack, RackSpace, VMwareFusion, VMwarea vCloud Air, VMware vSphere, SSH 可能なリモートホスト
Docker Machine
従来はboot2dockerが必要で
したが・・・
リモート・ローカル一括管理。
もちろんAmazon EC2にも対応
しています。任意のリージョ
ンで、任意のホストを自動的
に起動し、作業が終われば停
止することもコマンド1つで
簡単に行えます。
109Introduction to Docker Basic Course
Docker Swarm
‣ Docker クラスタ管理ツール
Docker ホストの集まりを作成したり、アクセスできるようにするツールで、API を持つ
‣ コマンドラインで操作
docker-machine で環境を作り、docker run swarm create
‣ クラスタ形成
ディスカバリ(マネージャへの登録に、consul や etcd にも対応)
フィルタ(コンテナを配置する条件の設定は、Docker を抽象化)
ストラテジ(どこのノードにコンテナを自動配置するか方針設定)
VM
Docker
Swarm
Manager
Dokku, Docker Compose, Krane, Jenkins, Apache Mesos …
VM
Docker
VM
Docker
VM
Docker
…
コンテナ コンテナ コンテナ コンテナ
111Introduction to Docker Basic Course
Docker Compose
‣ 複数コンテナのアプリケーション自動設定
Dockerfile を複数のコンテナに拡張したようなイメージ
‣ コマンドラインで操作
docker-compose docker-compose.yml
‣ Linux, Windows, Mac OS X に対応
‣ 構成情報を YAML 形式のファイルで定義
docker-compose.yml
web:
build: .
command: php -S 0.0.0.0:8000 -t /wordpress
ports:
- "8000:8000"
links:
- db
volumes:
- .:/wordpress
db:
image: orchardup/mysql
environment:
MYSQL_DATABASE: wordpress
Dockerfile
FROM orchardup/php5
ADD . /wordpress
TMTOWTDI
There’s More Than One Way To Do It
VS
仮想化システム
構成管理ツール
クラウド環境
比較対象ではなく、お互いの
価値を高めるもの!
競合じゃ無いんです。
production
365D 24H
あとは、本番でも使えるよう
な機能改善だったり運用が
365d
PRODUCTION
現状における大きな課題です。
プロダクションで使うには。
続きはウェブで…
Docker入門 - 基礎編 いまから始めるDocker管理
http://www.slideshare.net/zembutsu/introduction-to-docker-management-and-operations-basic
http://docker.jp
Coming Soon
このドメイン持ってまして、
個人的にドキュメントなどを
集めていく予定です。
ご興味のある方いらっしゃい
ます?
A U T O M A T I O N M Y T H
HashiCorp
3■■■□ Next Generation Datacenter
HashiCorpも同様です。全てを
使う必要はありません。必要
があれば使えば良い的な。
Hashi Colle
Bridge Collection of Koto Ward in Tokyo
Next Generation Tactical Bridge Investigation Game
© 2015 Pocketstudio.net / Masahito Zembutsu All Rights Reserved.
れ
こ
• Vagrant
• Packer
• Terraform
• Serf
• Consul
• Vault
• Atlas
HashiCorpのツール群を調べて
いて思いました。ハッ、これは
運用に自動化を求めるのは間違っているだろうか
No.001
empty
No.002
empty
No.003
empty
No.004
empty
No.005
empty
No.006
empty
No.007
empty
No.008
empty
No.001
empty
No.002
empty
No.003
empty
No.004
empty
No.005
empty
No.006
empty
No.007
empty
No.008
empty
No. 001
永代橋(えいたいばし)は、隅田川にかかる橋で、東京
都道・千葉県道10号東京浦安線(永代通り)を通す。
西岸は中央区新川一丁目、東岸は江東区佐賀一
丁目及び同区永代一丁目。地下に東京メトロ東西
線が通る。夕刻から22時まで青白くライトアップされる。
脱線しました、ゴメンナサイ
127 / 130
The Tao of HashiCorp
•
最も簡単にするためのワークフローを考え、そこに対応するツールが無ければ作るという設計思想
•
Unix哲学と同様、全体の問題を解決するのではなく、個々の要素(コンポーネント)に分解
•
システムや基盤に対するバージョン管理や自動化によって、システムにとっても人にとっても利点となる
https://hashicorp.com/blog/tao-of-hashicorp.html
運用に自動化を求めるのは間違っているだろうか
Vagrant Packer Serf Consul Terraform Atlas Vault
HashiCorp
Vagrant
Development environments made easy. Vagrant is
the defacto way to create and configure lightweight,
reproducible, and portable development
environments with support for VirtualBox, VMware,
Hyper-V, Docker, and more.
Say goodbye to long onboarding times and “works on
my machine” excuses.
開発環境を簡単にします。Vagrant は開発環境の作成として広く
使われており、簡単な設定、持ち運び可能です。サポートしている
環境は VirtualBox、VMware、Hyper-V、Docker 等です。
長い待機時間と「私のマシンでは動くのに」問題にサヨナラを。
https://vagrantup.com/
$ vagrant up
運用に自動化を求めるのは間違っているだろうか
Vagrant Packer Serf Consul Terraform Atlas Vault
HashiCorp
Vagrant
開発環境の構築と
作成を簡単にする
ためのツールで、
様々な環境に対応
Packer
Packer is a tool for creating images for platforms
such as Amazon AWS, OpenStack, VMware, VirtualBox,
Docker, and more – all from a single source
configuration.
Common use case for Packer include creating
appliances, pre-baking deployment images, packaging
applications, testing configuration management, and
more.
Packer は Amazon AWS、OpenStack、VMware、VirtualBox、
Docker といったプラットフォーム向けのイメージを作成するための
ツールであり、すべて単一のソースから作成します。
アプライアンスにPackerを使うのは一般的な使用例であり、
アプリケーションを組み込み、環境構築済みであり、テストされ、
設定済みのイメージを提供します。
https://packer.io
$ packer build dev.json
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
Vagrant Packer Serf Consul Terraform Atlas Vault
HashiCorp
Vagrant
開発環境の構築と
作成を簡単にする
ためのツールで、
様々な環境に対応
Packer Serf
自動的にマシン
イメージを生成、
様々な開発環境
クラウドも対応
Packer
Serf is a lightweight and decentralized solution for
cluster membership, failure detection, and orchestration.
Serf is used as a building block for highly available
systems, such as Consul.
Serf はクラスタのメンバー管理、障害検出のほか、オーケスト
レーションを行うための軽量かつ非中央集権的ソリューションです。
Serf は Consul という高可用性を持つシステムの確立の
ためにも使われています。
https://serfdiom.io
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
Vagrant Packer Serf Consul Terraform Atlas Vault
HashiCorp
Vagrant
開発環境の構築と
作成を簡単にする
ためのツールで、
様々な環境に対応
Packer Serf
自動的にマシン
イメージを生成、
様々な開発環境
クラウドも対応
Consul
クラスタの管理や
障害検出や自動的
な処理を同時実行
Serf
Consul is a distributed, highly-available, and multi-
datacenter aware tool for service discovery, configuration,
and orchestration. In the ever-growing datacenter, Consul
enables rapid deployment, configuration, and maintenance
of service-oriented architectures.
Consul は分散し、高い可用性を持ち、複数のデータセンタで
サービス検出や、設定、オーケストレーションを行うための
ツールです。成長しつづけるデータセンタにおいて、Consul は
迅速なデプロイ、設定、サービス指向アーキテクチャにおける
管理機能を提供します。
https://consul.io
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
運用に自動化を求めるのは間違っているだろうか
Vagrant Packer Serf Consul Terraform Atlas Vault
HashiCorp
Vagrant
開発環境の構築と
作成を簡単にする
ためのツールで、
様々な環境に対応
Packer Serf
自動的にマシン
イメージを生成、
様々な開発環境
クラウドも対応
Consul
クラスタの管理や
障害検出や自動的
な処理を同時実行
Terraform
サービス検出機能、
DNS・HTTP・API
各インターフェース
連携する自動処理
Consul
Terraform allows you to effortlessly combine high-level
system providers with you own or with each – from
physical and virtual servers to email and DNS providers.
Once launched, Terraform safely and efficiently changes
infrastructure as the configuration is evolved.
Terraform によって、自分自身で持っているかどうかに関わらず、
高レベルのシステム、たとえば物理や仮想サーバであったり、
メールや DNSプロバイダが提供するシステムを効率的に連携
することができます。
https://terraform.io
運用に自動化を求めるのは間違っているだろうか
$ terraform plan
$ terraform apply
$ terraform destroy
Vagrant Packer Serf Consul Terraform Atlas Vault
HashiCorp
Vagrant
開発環境の構築と
作成を簡単にする
ためのツールで、
様々な環境に対応
Packer Serf
自動的にマシン
イメージを生成、
様々な開発環境
クラウドも対応
Consul
クラスタの管理や
障害検出や自動的
な処理を同時実行
Terraform
サービス検出機能、
DNS・HTTP・API
各インターフェース
連携する自動処理
Atlas
仮想マシンを含む
インフラ全体環境
自動構築コード化
抽象化する仕組み
VaultTerraform
Atlas provides a unified dashboard and workflow for
developing, deploying, and maintaining applications on
any public, private, or hybrid infrastructure. Developers
and operators have a single unified view to manager and
provide visibility for infrastructure.
Atlas は開発・デプロイ・アプリケーションの維持を、統一の
ダッシュボードとワークフローを通し、あらゆるパブリック、
プライベート、ハイブリッドなインフラで提供します。開発者と
運用担当者は統一画面で一緒に管理し、インフラの可視性を
提供するものです。
https://atlas.hashicorp.com
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
Vagrant Packer Serf Consul Terraform Atlas Vault
HashiCorp
Vagrant
開発環境の構築と
作成を簡単にする
ためのツールで、
様々な環境に対応
Packer Serf
自動的にマシン
イメージを生成、
様々な開発環境
クラウドも対応
Consul
クラスタの管理や
障害検出や自動的
な処理を同時実行
Terraform
サービス検出機能、
DNS・HTTP・API
各インターフェース
連携する自動処理
Atlas
仮想マシンを含む
インフラ全体環境
自動構築コード化
抽象化する仕組み
開発から運用まで
一貫の作業手順で、
各々ツールと連携し
共有と権限管理機能
VaultAtlas
Vault secures, stores, and tightly controls access token,
passwords, certificates, API keys, and other secrets in
modern computing. Vault handles leasing, key revocation,
key rolling, and auditing.
Vault はアクセス・トークンやパスワードや、証明書、API 鍵等
最近のコンピューティングにおけるシークレット(秘密情報)の
安全な保管や厳密な制御をします。Vault は鍵の一時提供や、
無効化、キーローリング、監査機能を持ちます。
https://vaultproject.io
Vagrant Packer Serf Consul Terraform Atlas Vault
HashiCorp
Vagrant
開発環境の構築と
作成を簡単にする
ためのツールで、
様々な環境に対応
Packer Serf
自動的にマシン
イメージを生成、
様々な開発環境
クラウドも対応
Consul
クラスタの管理や
障害検出や自動的
な処理を同時実行
Terraform
サービス検出機能、
DNS・HTTP・API
各インターフェース
連携する自動処理
Atlas
仮想マシンを含む
インフラ全体環境
自動構築コード化
抽象化する仕組み
開発から運用まで
一貫の作業手順で、
各々ツールと連携し
共有と権限管理機能
Vault
パスワードやAPI
情報を暗号化し
分散保管する
インターフェース
Vault
TMTOWTDI
There’s More Than One Way To Do It
そういえば?
DockerとHashicorp
似てね?
運用に自動化を求めるのは間違っているだろうか
続きはウェブで…
HashiCode 01 - HashiCorp道と自動化ツール群
http://www.slideshare.net/zembutsu/hashicode-01-the-tao-of-hashicorp
A U T O M A T I O N M Y T H
まとめ;最後に残った道しるべ
4■■■■ The Only Thing We Have Left To Guide Us
正しい努力
脱・刺身タンポポ
脱・写経
テラリアを始めたとき、今か
ら思えば無駄に穴を掘ること
しか考えていませんでした。
本人は努力しているつもりで
したが、何の価値もなかった。
刺身タンポポ・写経に通じる
ものを感じています。
171 / 130
運用における自動化を進めな
いといけない、あるいは運用
の仕事をなくさなくてはいけ
ないと思うのは、家業の農業
の影響を受けているかもしれ
ません。
こんな感じの稲作農家。
これは先週の写真です。
もはや機械化は欠かせません。
手で田植えするのは考えられ
ないです。田植機を使えば、
圧倒的な「速さ」「正確さ」
で田植えが可能です。
でも、まだたりないものが、
本当に沢山あります。
※写真は私です。
こういったカードを使い分け
るところに何かヒントがある
のではないかとも。
正直、使わなくても構わない
Docker,HashiCorpを無理して
使う理由は無いと思います。
ですが、使わない理由もない
のではないでしょうか。自由
に使えるツールが、すでにあ
るのですから。
運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
【速さ】【効率性】
【自動化】
自動化という、対抗手段。
?
そうしたら環境が変わっても
デッキを使い分ける事により
仕事の幅もひろがるのでは。
そして、運用の仕事も変わる。
本当は運用自動化デモをした
かったのですが、まだどっか
の機会にて。。
自分だけの最強デッキを作ろう
楽しい 楽
Easy
≠
Fun
楽しい 楽
Fun Easy
=
運用も次の段階へ
Let’s Try
"われわれが行動するばあいには、気づくことが
先決条件である。技術があれば、何でも解決
できるわけではない。技術以前に気づくというこ
とが必要になる。日本にはいくらも技術屋はいる
がなかなか解決出来ない。気づかないからだ。"
本田宗一郎(2008) 『ざっくばらん』 PHP 研究所 10pp.
そのためには、勉強会に参加
して聞いたり、スライドを見
るだけでなく、試さないと。
たとえば、Uberを使う機会が
最近ありました。
(」・ω・)」うー!(/・ω・)/ばー!
使うまではネガティブな印象
でしたけれど、体験してみな
いと凄さも課題も分からない。
百聞は一見にしかずとは正に。
これは又、どっか別の場所で
運用に自動化を求めるのは間違っているだろうか
ということで、次へ!
A U TO M AT I O N M Y T H
運用に自動化を求めるのは間違っているだろうか
Operation Automation Project
ビビッド オペレーション
運用視点でも自動化や省力化
などの情報交換が出来ないか
またどっかでやろうと思って
います。最後までありがとう
ございました。

More Related Content

運用に自動化を求めるのは間違っているだろうか