Upload
yukihiko-sawanobori
View
4.178
Download
0
Embed Size (px)
DESCRIPTION
JTF2014のセッションスライドです。
Citation preview
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
終