Submit Search
2014年のChefとInfrastructure as code
•
26 likes
•
6,846 views
Yukihiko SAWANOBORI
JTF2014のセッションスライドです。
Read less
Read more
1 of 61
Download now
Downloaded 67 times
More Related Content
2014年のChefとInfrastructure as code
1.
2014年のChefと Infrastructure as code JTF2014
(June 22 2014) @sawanoboly (HiganWoks LLC)
2.
運営組織 2 • 業務執行社員をつとめる合同会社 • アプリケーションのためのプラットフォーム構築/運 用自動化をテーマにした活動を担当 •
http://opsrock.in 共同開発・運営 • Chefをはじめ、Infrastracture as Code 関連を主に取り扱うソリューションを提供 • 導入支援・トレーニングも
3.
本日のお話 • Chefをひと通り解説 • Chef本ベース+補足など ! •
近頃のChef関連 Update • Chef-Zero, ChefDK, Chef-Metal.. • local_mode, local_template 3
4.
Chefの本
5.
5 ちなみに買った人ー?
6.
6
7.
7
8.
Chef 書籍:Chef活用ガイドより
9.
Chefとは • 米Chef社(Chef Software,
Inc.)が開発保守 する構成管理のフレームワーク • 旧社名Opscode • Infrastructure as codeの一部で利用 9
10.
Infrastructure as code •
背景に、APIコールでサーバインスタンスが 調達できる環境 • インフラを抽象化し、設計、実装といったプ ロセスをコードで管理しよう • テストなど、アプリ開発の優れた手法を取り 入れ • バージョン管理を行い、Githubなどでコー ドを中心にしたコミュニケーション 10
11.
Chef社が提唱する10の原則のうち 構成管理ツールに求められる要素抜粋 • 拡張に対応しやすい • 変更や増強、改良が容易。 •
再現できる • 環境の再生や複製は重要。 • 冪等性を持つ • 必要な時にだけ実行 • 収束性がある • 宣言し、その通りの状態へ。 11
12.
Chefの基本機能 • ノード(サーバ)情報の収集 • 収集した情報の集約 •
コンフィグレーション • Cookbook/Recipeにリソースを定義し、 収集したノード情報を元に状態を収束する • ほか、いわゆるプロビジョニング 12
13.
情報収集&集約
14.
情報収集イメージ (Server/Client構成) 14 書籍:Chef活用ガイドより
15.
情報収集ライブラリ OHAI 書籍:Chef活用ガイドより
16.
Ohaiの役割 • (非常に)泥臭くプラットフォームを判別し、 Chef実行時にハード・OS情報を提供。 • 拡張は容易、さらに単体でも使えます。 16 書籍:Chef活用ガイドより
17.
Ohai単独の例 17
18.
Chef-Server 書籍:Chef活用ガイドより
19.
Chef-Serverの概要 • ノード情報の集約 • ポリシー配布のハブ •
作業端末とノードの中間に位置 • 基本的にメタデータの保持 • 種類は2つ • Open Source Chef • Enterprise Chef 19
20.
最近は導入の敷居も低い • OpenSource版のインストールはパッケージ で簡単。 • 管理コマンド`chef-server-ctl` 20
21.
Chef-Clientの一味 (Chef-Client, Chef-Solo, Chef- apply,
Chef-Shell) 書籍:Chef活用ガイドより
22.
Chef-Clientの役割 • Chef-Server(または任意のデータストア)への Node情報アップロード • Nodeの収束 •
実行状況と結果のレポート ! • 意外と多機能なエージェントとして作られてい ます • サーバに色々入れるの嫌か、インスタンスのイ ンターフェースとして受け入れるかは自由 22
23.
Chef-Clientの種類 • Chef-Client: 前項の全て •
Chef-Shell: 対話式 • Cookbook開発やデバックに • Knifeによる一括更新 • Chef-Apply: 簡易実行 • Chef-Solo: 主にプロビジョナ用途 • handler等の活用で、Chef-Server環境に劣 らない連携も可能 23
24.
プロビジョナとしての Chefと連携するツール
25.
仮想環境ユーティリティ 25 Test-KitchenはChef公式ツール
26.
プロビジョナの相互適用例 • VagrantまたはTest-KitchenでCookbookの 開発とテストを実施 • プロビジョナ部分をpackerで実行し、AMI やVagrant
boxにして配布 26
27.
*aaS • ※こちらはコンフィグレーションも含む 27
28.
Workstation (& Git(hub)) 書籍:Chef活用ガイドより
29.
書籍:Chef活用ガイドより
30.
Infrastructure as code 導入のキモWorkstatonとリポジトリ 30 引用:Infrastructure
as Code - naoyaのはてなダイアリー <http://d.hatena.ne.jp/naoya/20131215/1387090668>
31.
Seach Data Bags Environment Role Cookbook &
LWRP 書籍:Chef活用ガイドより 書籍:Chef活用ガイドより 書籍:Chef活用ガイドより
32.
細かすぎるので省略。 でも一点だけ
33.
役割ベースの設計 • Chefを活用する場合、システムが提供する サービスを役割で分け、レイヤを積み重ねる ように設計するのが良いです。 ! • 『ベテランシステム管理者であれば、既にサー バーをロールベースでスクリプト化している はず』 -
[翻訳] Dockerについてよくある勘違い(http:// techracho.bpsinc.jp/hachi8833/2014_06_16/17982) より 33
34.
Enterprise Chefの 追加要素
35.
Reporting • Chef-Clientの実行状況を記録。 35
36.
Push jobs 36 • サーバからPushでジョブ実行、成否の管 理。
37.
ただしChef-Clientの ソースは共通
38.
多少工夫すれば OpenSource版でも同様の実装はOK 38
39.
2014年のChef (※2013モノも含む)
40.
2014年のChef傾向 • Chef-Server構成 • 検証しやすさを向上 •
Chef-Client系 • 単体でもServer相当機能 • 極シンプルな実行をサポート • WorkStation系 • セットアップ負担の軽減をめざす • ? Infrastructure as code推進系 • リソース定義の概念を広げる 40
41.
Chef-Zero Server構成を検証しやすくする (揮発性)軽量Chef-Server
42.
Chef-Zeroの特徴 • Chef-Server APIのCRUDを全てサポート •
ただし認証は全部通る • オンメモリでデータの永続性は無い • 消しやすさ = テスト向き 42
43.
Chef-Zeroの活用 • Test-KitchenでChef-Server対応Cookbook の動作確認に • Vagrantのchef-clientプロビジョナと組み合 わせてクラスタ向けCookbookの動作確認 •
vagrant-pluginもあるがやや環境依存 • 専用VMを当てるかローカルで上げ下げす るのが無難 43
44.
Chef Development Kit (Chef-DK) WorkStation環境の簡単セットアップ Omnibusの系譜
45.
Chef-DKとは • ChefのCookbook開発とServer管理ツール 一式をパッケージ形式にしたもの。 • 新規:
chefコマンド • Mac OS X, Linux対応、Windowsは Coming Soon… • (現状)公式おすすめのワークフローを実践す るツールとの連携設定済み • Test-Kitchen, Barkshelf, Foodcritic等 45
46.
で、DK使ったほうがいいの? • 古参からするとあまり必要でないかも • Rubyプロジェクト管理手法がわかってい ればとくに •
Chef系以外にもインテグレーションしたい ツールは沢山ある • チームで環境を えたい等にはよいのかも • あと、DKパッケージは妙にデカイ 46
47.
Chef-Client Local Mode Chef-RepoをServerレスで
48.
Local Mode • chef-client
-z / knife -z • knife solo っぽい形態 • ローカルファイルシステムにあるChef-Repo を元にChef-Clientを実行 • nodes/以下に自分及び他nodeの情報を設置 して、Searchが可能 • knifeでServer環境と同一の操作体系 48
49.
Chef-Metal LWRPで片鱗、 よりInfrastructure as codeへ リソース解釈を拡大
50.
50 http://qiita.com/inokappa/items/78c31bdf0b415ed2d954 http://qiita.com/TsuyoshiUshio@github/items/180a54994df57a1d08d3
51.
51
52.
Chefで扱うリソースの拡大 • 従来の一般的なChefリソース • 単一Node上の要素(file,
service, package等) ! • Chef-Metalで扱うリソース • IaaS上のコンピュータリソース • 台数などの要素を状態管理 52
53.
補足:状態を持つリソースについて • recipe =
単一ノードへの変更という概念はわか りやすさ優先のミスリード • 構造化されたデータを取得し、定義通りになるア クションを(主にRubyで)実行できるならば、なん でも管理対象 • LWRPでは以前から実践されている • コミュニティCookbook等では、LWRPとして 『リソース=クラスタ』という状態管理するも のも存在 • MongoDB, RabbitMQ, ElasticSerach等 53
54.
Chef-Metalの対応 • 基本はコンピュータリソースの調達 (ノードの増減とレシピの適用) • vagrant •
fog (マルチクラウド対応ライブラリ) • ec2, digitaloceanなどPublic IaaS • *Stackな Private IaaS • 国内ベンダ 『Sakura no Cloud』 54
55.
fog補足 • fogの対象はコンピュート系リソース以外にも 及ぶ • ストレージ •
Network • NameServiceなどなど ! • 複数クラウドを対象に可搬性のある CloudFormation (にするつもりかもしれない) 55
56.
Local Template ちょっとChef、をとても便利に 地味ながら使える機能拡張
57.
予備知識:Chef-Apply • Recipeを次の形式で実行 • 標準入力 •
単一ファイル • 簡単な設定変更やバッチ処理に • Cookbookのお決まり事が不要 57
58.
58
59.
local trueでの挙動は単純 • local
=> false • erbテンプレートのサーチ対象 • レシピと同じCookbook • 任意Cookbook内のtemplates/ ! • local => true • 絶対パス • Chef-Applyがtemplateを気軽に扱えるように 59
60.
2014年のChef傾向まとめ • Chef-Server構成 • 検証しやすさを向上
(Chef-Zero, Local Mode) • Chef-Client系 • 単体でもServer相当機能 (Local Mode) • 極シンプルな実行をサポート (Local Template) • WorkStation系 • セットアップ負担の軽減をめざす (Chef-DK) • ? Infrastructure as code推進系 • リソース定義の概念を広げる (Chef-Metal) 60
61.
終
Download