SlideShare a Scribd company logo
2014年のChefと
Infrastructure as code
JTF2014 (June 22 2014)
@sawanoboly (HiganWoks LLC)
運営組織
2
• 業務執行社員をつとめる合同会社
• アプリケーションのためのプラットフォーム構築/運
用自動化をテーマにした活動を担当
• http://opsrock.in 共同開発・運営
• Chefをはじめ、Infrastracture as Code
関連を主に取り扱うソリューションを提供
• 導入支援・トレーニングも
本日のお話
• Chefをひと通り解説
• Chef本ベース+補足など
!
• 近頃のChef関連 Update
• Chef-Zero, ChefDK, Chef-Metal..
• local_mode, local_template
3
Chefの本
5
ちなみに買った人ー?
6
7
Chef
書籍:Chef活用ガイドより
Chefとは
• 米Chef社(Chef Software, Inc.)が開発保守
する構成管理のフレームワーク
• 旧社名Opscode
• Infrastructure as codeの一部で利用
9
Infrastructure as code
• 背景に、APIコールでサーバインスタンスが
調達できる環境
• インフラを抽象化し、設計、実装といったプ
ロセスをコードで管理しよう
• テストなど、アプリ開発の優れた手法を取り
入れ
• バージョン管理を行い、Githubなどでコー
ドを中心にしたコミュニケーション
10
Chef社が提唱する10の原則のうち
構成管理ツールに求められる要素抜粋
• 拡張に対応しやすい
• 変更や増強、改良が容易。
• 再現できる
• 環境の再生や複製は重要。
• 冪等性を持つ
• 必要な時にだけ実行
• 収束性がある
• 宣言し、その通りの状態へ。
11
Chefの基本機能
• ノード(サーバ)情報の収集
• 収集した情報の集約
• コンフィグレーション
• Cookbook/Recipeにリソースを定義し、
収集したノード情報を元に状態を収束する
• ほか、いわゆるプロビジョニング
12
情報収集&集約
情報収集イメージ
(Server/Client構成)
14
書籍:Chef活用ガイドより
情報収集ライブラリ
OHAI 書籍:Chef活用ガイドより
Ohaiの役割
• (非常に)泥臭くプラットフォームを判別し、
Chef実行時にハード・OS情報を提供。
• 拡張は容易、さらに単体でも使えます。
16
書籍:Chef活用ガイドより
Ohai単独の例
17
Chef-Server
書籍:Chef活用ガイドより
Chef-Serverの概要
• ノード情報の集約
• ポリシー配布のハブ
• 作業端末とノードの中間に位置
• 基本的にメタデータの保持
• 種類は2つ
• Open Source Chef
• Enterprise Chef
19
最近は導入の敷居も低い
• OpenSource版のインストールはパッケージ
で簡単。
• 管理コマンド`chef-server-ctl`
20
Chef-Clientの一味
(Chef-Client, Chef-Solo, Chef-
apply, Chef-Shell)
書籍:Chef活用ガイドより
Chef-Clientの役割
• Chef-Server(または任意のデータストア)への
Node情報アップロード
• Nodeの収束
• 実行状況と結果のレポート
!
• 意外と多機能なエージェントとして作られてい
ます
• サーバに色々入れるの嫌か、インスタンスのイ
ンターフェースとして受け入れるかは自由
22
Chef-Clientの種類
• Chef-Client: 前項の全て
• Chef-Shell: 対話式
• Cookbook開発やデバックに
• Knifeによる一括更新
• Chef-Apply: 簡易実行
• Chef-Solo: 主にプロビジョナ用途
• handler等の活用で、Chef-Server環境に劣
らない連携も可能
23
プロビジョナとしての
Chefと連携するツール
仮想環境ユーティリティ
25
Test-KitchenはChef公式ツール
プロビジョナの相互適用例
• VagrantまたはTest-KitchenでCookbookの
開発とテストを実施
• プロビジョナ部分をpackerで実行し、AMI
やVagrant boxにして配布
26
*aaS
• ※こちらはコンフィグレーションも含む
27
Workstation
(& Git(hub))
書籍:Chef活用ガイドより
書籍:Chef活用ガイドより
Infrastructure as code
導入のキモWorkstatonとリポジトリ
30
引用:Infrastructure as Code - naoyaのはてなダイアリー
<http://d.hatena.ne.jp/naoya/20131215/1387090668>
Seach
Data Bags
Environment
Role
Cookbook & LWRP
書籍:Chef活用ガイドより
書籍:Chef活用ガイドより
書籍:Chef活用ガイドより
細かすぎるので省略。
でも一点だけ
役割ベースの設計
• Chefを活用する場合、システムが提供する
サービスを役割で分け、レイヤを積み重ねる
ように設計するのが良いです。
!
• 『ベテランシステム管理者であれば、既にサー
バーをロールベースでスクリプト化している
はず』

- [翻訳] Dockerについてよくある勘違い(http://
techracho.bpsinc.jp/hachi8833/2014_06_16/17982) より
33
Enterprise Chefの
追加要素
Reporting
• Chef-Clientの実行状況を記録。
35
Push jobs
36
• サーバからPushでジョブ実行、成否の管
理。
ただしChef-Clientの
ソースは共通
多少工夫すれば
OpenSource版でも同様の実装はOK
38
2014年のChef
(※2013モノも含む)
2014年のChef傾向
• Chef-Server構成
• 検証しやすさを向上
• Chef-Client系
• 単体でもServer相当機能
• 極シンプルな実行をサポート
• WorkStation系
• セットアップ負担の軽減をめざす
• ? Infrastructure as code推進系
• リソース定義の概念を広げる
40
Chef-Zero
Server構成を検証しやすくする
(揮発性)軽量Chef-Server
Chef-Zeroの特徴
• Chef-Server APIのCRUDを全てサポート
• ただし認証は全部通る
• オンメモリでデータの永続性は無い
• 消しやすさ = テスト向き
42
Chef-Zeroの活用
• Test-KitchenでChef-Server対応Cookbook
の動作確認に
• Vagrantのchef-clientプロビジョナと組み合
わせてクラスタ向けCookbookの動作確認
• vagrant-pluginもあるがやや環境依存
• 専用VMを当てるかローカルで上げ下げす
るのが無難
43
Chef Development Kit
(Chef-DK)
WorkStation環境の簡単セットアップ
Omnibusの系譜
Chef-DKとは
• ChefのCookbook開発とServer管理ツール
一式をパッケージ形式にしたもの。
• 新規: chefコマンド
• Mac OS X, Linux対応、Windowsは
Coming Soon…
• (現状)公式おすすめのワークフローを実践す
るツールとの連携設定済み
• Test-Kitchen, Barkshelf, Foodcritic等
45
で、DK使ったほうがいいの?
• 古参からするとあまり必要でないかも
• Rubyプロジェクト管理手法がわかってい
ればとくに
• Chef系以外にもインテグレーションしたい
ツールは沢山ある
• チームで環境を えたい等にはよいのかも
• あと、DKパッケージは妙にデカイ
46
Chef-Client Local Mode
Chef-RepoをServerレスで
Local Mode
• chef-client -z / knife -z
• knife solo っぽい形態
• ローカルファイルシステムにあるChef-Repo
を元にChef-Clientを実行
• nodes/以下に自分及び他nodeの情報を設置
して、Searchが可能
• knifeでServer環境と同一の操作体系
48
Chef-Metal
LWRPで片鱗、
よりInfrastructure as codeへ
リソース解釈を拡大
50
http://qiita.com/inokappa/items/78c31bdf0b415ed2d954
http://qiita.com/TsuyoshiUshio@github/items/180a54994df57a1d08d3
51
Chefで扱うリソースの拡大
• 従来の一般的なChefリソース
• 単一Node上の要素(file, service,
package等)
!
• Chef-Metalで扱うリソース
• IaaS上のコンピュータリソース
• 台数などの要素を状態管理
52
補足:状態を持つリソースについて
• recipe = 単一ノードへの変更という概念はわか
りやすさ優先のミスリード
• 構造化されたデータを取得し、定義通りになるア
クションを(主にRubyで)実行できるならば、なん
でも管理対象
• LWRPでは以前から実践されている
• コミュニティCookbook等では、LWRPとして
『リソース=クラスタ』という状態管理するも
のも存在
• MongoDB, RabbitMQ, ElasticSerach等
53
Chef-Metalの対応
• 基本はコンピュータリソースの調達

(ノードの増減とレシピの適用)
• vagrant
• fog (マルチクラウド対応ライブラリ)
• ec2, digitaloceanなどPublic IaaS
• *Stackな Private IaaS
• 国内ベンダ 『Sakura no Cloud』
54
fog補足
• fogの対象はコンピュート系リソース以外にも
及ぶ
• ストレージ
• Network
• NameServiceなどなど
!
• 複数クラウドを対象に可搬性のある
CloudFormation (にするつもりかもしれない)
55
Local Template
ちょっとChef、をとても便利に
地味ながら使える機能拡張
予備知識:Chef-Apply
• Recipeを次の形式で実行
• 標準入力
• 単一ファイル
• 簡単な設定変更やバッチ処理に
• Cookbookのお決まり事が不要
57
58
local trueでの挙動は単純
• local => false
• erbテンプレートのサーチ対象
• レシピと同じCookbook
• 任意Cookbook内のtemplates/
!
• local => true
• 絶対パス
• Chef-Applyがtemplateを気軽に扱えるように
59
2014年のChef傾向まとめ
• Chef-Server構成
• 検証しやすさを向上 (Chef-Zero, Local Mode)
• Chef-Client系
• 単体でもServer相当機能 (Local Mode)
• 極シンプルな実行をサポート (Local Template)
• WorkStation系
• セットアップ負担の軽減をめざす (Chef-DK)
• ? Infrastructure as code推進系
• リソース定義の概念を広げる (Chef-Metal)
60
終

More Related Content

2014年のChefとInfrastructure as code

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy