Your SlideShare is downloading. ×
2014年のChefとInfrastructure as code
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

2014年のChefとInfrastructure as code

4,039
views

Published on

JTF2014のセッションスライドです。

JTF2014のセッションスライドです。

Published in: Technology

0 Comments
23 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,039
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
58
Comments
0
Likes
23
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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.