Upload
kiyotaka-kunihira
View
633
Download
1
Embed Size (px)
DESCRIPTION
Asian Automation Alience(http://kokucheese.com/event/index/160374/)にて発表した資料です。
Citation preview
Asian Automation Alliance
気が狂わないサーバ増設x10kuchitama
AsianAutomationAlliance 2014/6/28
Asian Automation Alliance
Kuchitama
• くちたま • FuRyu株式会社 • FuRyuTechBlog編集長 • 先週結婚式を挙げました
Kuchitama
Asian Automation Alliance
Case.1
Kuchitama
and more …
新規サーバ構築
同じ構成で!
Asian Automation Alliance
作った人にお願い
前回と同じ構成で構築してもらえますか?
その人辞めちゃった
インフラチーム
Asian Automation Alliance
作った人にお願い
前回と同じ構成で構築してもらえますか?
その人辞めちゃった
インフラチーム
構築者=退職者
既存サーバを参考に
]# find / … ]# grep … ]# printenv
EC2スケールアウト
_人人人人人人人人人_ > /etc/profile.d < ‾Y^Y^Y^Y^Y^Y^‾
Asian Automation Alliance
Case.2
ある日の出来事
Nginx/Play•http://tech.furyu.jp/blog/?p=2069
AWS•Scale up
• EC2/RDS インスタンスタイプ変更 •サーバのスペックアップ •Scale out
• EC2インスタンス追加
EC2スケールアウトスケールアウト
EC2スケールアウトスケールアウト
EC2スケールアウトスケールアウト
AMI作って
EC2スケールアウトスケールアウト
AMI作って作成
EC2スケールアウトスケールアウト
AMI作って作成手動で
EC2スケールアウト
_人人人人_ > 手動 < ‾Y^Y^Y‾
手順1元になるAMIを選択
手順1元になるAMIを選択
多いわ!
手順2作成したEC2インスタンスに接続
手順2作成したEC2インスタンスに接続
どれやねん!
手順3から]# ntpd stop ]# hostname hoge ]# vi /etc/hosts ]# network restart ]# ... ]# ... ]# ...
手順3から]# ntpd stop ]# hostname hoge ]# vi /etc/hosts ]# network restart ]# ... ]# ... ]# ...
・・・
手順1~3]# ntpd stop ]# hostname hoge ]# vi /etc/hosts ]# network restart ]# ... ]# ... ]# ...
手順1~3]# ntpd stop ]# hostname hoge ]# vi /etc/hosts ]# network restart ]# ... ]# ... ]# ...
これをx10
結果
Asian Automation Alliance
ここから得られた課題
•見える化/読める化
•暗黙知を作らない •自動化
•ルーチンを一撃で
Asian Automation Alliance
そこで Provisioning
Asian Automation Alliance
Provisioning Framework
Asian Automation Alliance
Provisioning Framework
インフラ運用のコード化 Infrastructure as a code
Asian Automation Alliance
Provisioning Framework
インフラ運用のコード化 Infrastructure as a code
決められた状態に収束 何度繰り返しても同じ結果になる べき等性
Asian Automation Alliance
見える化/読める化
https://gist.github.com/Kuchitama/5547882
Asian Automation Alliance
自動化
•Chef-Serverは構築がめんどうそう •あまり構築済みのサーバをへんこうすることはない
Asian Automation Alliance
Provisioning•Ruby製 • Puppet(Pull/Push) • Chef(Pull) •Python製 • Ansible(Push)
Asian Automation Alliance
Chef
• Chef is an automation platform that transforms infrastructure into code. Stop thinking in terms of physical and virtual servers. With Chef, your real asset is the code that brings those servers and the services they provide to life. An automated infrastructure can accelerate your time to market, help you manage scale and complexity, and safeguard your systems.
• http://www.opscode.com/chef/
Asian Automation Alliance
Chef
• OpsCode製PF • Facebookで採用 • 単一サーバで動作するChef-Solo • サーバ-クライアント構成 • ChefServer-ChefClient
Asian Automation Alliance
Chef
• ドキュメントが充実
• 入門Chefsolo オススメ • Cookbookも充実
Asian Automation Alliance
knife
• ChefのCLI
• Chefと一緒にインストールされる
• Pluggable
Asian Automation Alliance
見える化/読める化
https://gist.github.com/Kuchitama/5547882
Asian Automation Alliance
自動化
•サーバの自動構築 •複数台のサーバに対応
Asian Automation Alliance
knife-solo
• knifeのプラグイン • knife-solo adds a handful of commands that
aim to make working with chef-solo as powerful as chef-server.
• chef-soloをchef-serverみたいに便利にしてくれるCLIツール
• ver.0.3.0以降がオススメ
Asian Automation Alliance
knife-solo
• knife solo prepare {host}
• chef-soloのリモートインストール
• knife solo cook {host}
• cookbookのリモート実行
Asian Automation Alliance
knife-solo
• knife solo prepare {host}
• chef-soloのリモートインストール
• echo host1 host2 host3 | xargs -n 1 knife solo prepare
• knife solo cook {host}
• cookbookのリモート実行
• echo host1 host2 host3 | xargs -n 1 knife solo prepare
Asian Automation Alliance
更に自動化
Asian Automation Alliance
さらに自動化
•AWSの操作 • Ruby-SDK •サーバの操作 • Chef
Asian Automation Alliance
作った
Asian Automation Alliance
自動でやりたいこと
•AMIからEC2を起動 •EC2でChefレシピを実行 •EC2をAMIとして保存
Asian Automation Alliance
更に自動化
•実行も自動化したい •タイミングはrecipeとかを更新したときがいい
→ Git push時
Asian Automation Alliance
web api
Asian Automation Alliance
web api
Push
POST
Asian Automation Alliance
公開しました
•Kuchitama/ec2_automation •https://github.com/Kuchitama/ec2_automation
Asian Automation Alliance
更に更に自動化
Asian Automation Alliance
更に更に自動化
Asian Automation Alliance
処理の流れ
•ec2_automationと同じことをやる •packerを使うことで… •色々なマシンイメージに対応 •色々なPFに対応(Chef以外もOK)
Asian Automation Alliance
公開しました
•Kuchitama/packer-remote •https://github.com/Kuchitama/packer-remote/
Asian Automation Alliance
実際のチームの現状
Asian Automation Alliance
Chef未導入
Asian Automation Alliance
自動化コスト•暗黙知は手順書化 •初期のサーバ構築自体は機会が少ない •ルーチンはスクリプトで •毎日本番環境をAMI化 •サーバ増設時はAMIからインスタンス起動 •アプリのデプロイは元々別で自動化済 •コマンド一つで任意台数作成可能
Asian Automation Alliance
自動化コスト
•学習コストバランス •自動化したら誰でもできる? •動かすだけならね •自動化≠無知化
Asian Automation Alliance
弊社現状
•今のところ問題は起こってない •シェルスクリプトとAMIを使った環境構築
•そんなことやってる間にAnsibleが
Asian Automation Alliance
Chef-Ansible
Asian Automation Alliance
比較• CookBookが充実 • ググらビリティ低い • Chef = 料理人 • Opscode -> Chef • Pull型(knife-soloでpushも可能)
• Rubyの内部DSLで記述 • 日本語で本出てる
• yamlで記述 • モジュールを好きな言語で作成できる
• Push型 • 公式Playbookリポジトリがない(準備中?)
Asian Automation Alliance
Chef•公式リポジトリの充実(コミットは面倒だけど)
• http://community.opscode.com/cookbooks
•Recipeの依存解決ツールがある(Berkshelf) •Ruby内部DSLで書ける(書き方、環境の統一がしやすい) •プロキシに弱い
Asian Automation Alliance
Ansible•好きな言語でモジュールを書ける(組織の特色が強くなる?) •公式リポジトリみたいなのはない •プロキシの設定がしやすい •比較的環境構築が楽 •弊社でも採用
Asian Automation Alliance
まとめ
Asian Automation Alliance
まとめ•Chefによるプロビジョニングで • 暗黙知 -> 形式知 • ルーチン -> 自動化 •自動化の要件 • 手段/ツールが目的化しないように • ヒト/モノ/金/時間 のトレードオフ