Your SlideShare is downloading. ×
ニフティ社内の Chef 利用について
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

ニフティ社内の Chef 利用について

9,837
views

Published on

2011年7月21日(土) 開催 DevLOVE Chef de DevOps 発表資料。 …

2011年7月21日(土) 開催 DevLOVE Chef de DevOps 発表資料。

NIFTY Cloud 向け Cookbook の紹介と、Chef のテストフレームワークの話が中心です。


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

No Downloads
Views
Total Views
9,837
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
67
Comments
0
Likes
18
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. ニフティ社内の Chef 利用について 2012.7.21 ニフティ株式会社 竹内 豪 (@tily)Copyright © NIFTY Corporation All Rights Reserved.
  • 2. アジェンダ 1. 自己紹介 2. NIFTY Cloud Cookbook 3. Chef のテストについて調べてみたCopyright © NIFTY Corporation All Rights Reserved. Confidential 2
  • 3. 1.自己紹介Copyright © NIFTY Corporation All Rights Reserved. Confidential
  • 4. 自己紹介 ・竹内 豪 (Twitter ID: @tily) ・もともと Web エンジニア (Dev 寄り) → SNS エンジンやソーシャルゲームの開発/運用 ・社内で NIFTY Cloud を効率的に利用する取り組み → クラウド系の部署へ ・プライベートでもいろいろ変なものを作ってます ブログ:http://d.hatena.ne.jp/tilyCopyright © NIFTY Corporation All Rights Reserved. Confidential 4
  • 5. Chef 関連の活動 ~ knife-nc knife-ec2 の NIFTY Cloud 版 NIFTY Cloud 管理サーバ Chef サーバ API 経由でインスタンス作成 インスタンス A knife validator ruby chef .pem ruby gems インスタンス A client validator .pem SSH 経由でブートストラップ Copyright © NIFTY Corporation All Rights Reserved. Confidential 5
  • 6. Chef 関連の活動 ~ ドキュメント日本語化 主要ドキュメントの 30% 程度。協力者募集中ですCopyright © NIFTY Corporation All Rights Reserved. Confidential 6
  • 7. Chef 関連の活動 ~ 日本 Chef ユーザ会 DevOps Day TOKYO 2012 で発足 今のところ目立った活動は特にしていませんが、 ぜひ何かやりましょうCopyright © NIFTY Corporation All Rights Reserved. Confidential 7
  • 8. 2. NIFTY Cloud 向け CookbookCopyright © NIFTY Corporation All Rights Reserved. Confidential
  • 9. NIFTY Cloud 社内利用の問題点 同じような構築手順の繰り返し ・管理画面にログインしてポチポチ FW 設定を追加したり ・10 サーバにログインして同じユーザの追加を行ったり→ インフラ構築の自動化 ・PoolParty ・AWS CloudFormationCopyright © NIFTY Corporation All Rights Reserved. Confidential 9
  • 10. poolparty の例 Ruby の DSL 形式でインフラ構造を表現 pool "myapp" do cloud "app" do using :ec2 instances 1..1 security_group do authorize :from_port => 22, :to_port => 22 end end end Copyright © NIFTY Corporation All Rights Reserved. Confidential
  • 11. poolparty の例 JSON 形式でインフラ構造を表現 { "AWSTemplateFormatVersion" : "2010-09-09", /* 省略 */ "Resources" : { "Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]}, "SecurityGroupIds" : [{ "Ref" : "InstanceSecurityGroup" }], "SubnetId" : { "Ref" : "SubnetId" }, "KeyName" : { "Ref" : "KeyName" } } }, "InstanceSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "VpcId" : { "Ref" : "VpcId" }, /* 省略 */ Copyright © NIFTY Corporation All Rights Reserved. Confidential
  • 12. NIFTY Cloud 社内利用の問題点 初期構築だけでなく、運用に関するタスクが山盛り ・セキュリティパッチ適用 ・セキュリティチェック ・アカウント棚卸し → 構成管理ツール ・Puppet ・ChefCopyright © NIFTY Corporation All Rights Reserved. Confidential 12
  • 13. 解決策 NIFTY Cloud 向け CookbookCopyright © NIFTY Corporation All Rights Reserved. Confidential 13
  • 14. 概要図 NIFTY Cloud Chef 実行 向け API 経由で作成 Cookbook JSO JSON クラウド { N LB “instance”: [ { /* インスタンス 1 の設定 */ }, { /* インスタンス 2 の設定 */ }, { /* インスタンス 3 の設定 */ }, { /* インスタンス 4 の設定 */ } ], “security_group”: [ { /* ファイアウォール 1 の設定 */}, { /* ファイアウォール 2 の設定 */} ], “load_balancer”: [ { /* ロードバランサ 1 の設定 */}, { /* ロードバランサ 2 の設定 */} ] }Copyright © NIFTY Corporation All Rights Reserved. Confidential
  • 15. 解決策 ・Chef の Cookbook という形で初期構築ツールを実装 → 基本的な NIFTY Cloud 上リソースの作成・削除 - サーバ、ファイアウォール、ロードバランサ、ディスク 〇 クラウドインフラ構造をテンプレート (JSON) で管理 → テンプレートの使いまわし、作業効率化 〇 初期構築~構成管理までを Chef でシームレスに管理 → 運用に強いフレームワークCopyright © NIFTY Corporation All Rights Reserved. Confidential 15
  • 16. chef-solo 実行機能 { "run_list": "recipe[nc::manager]", "nc": { "resource": { "instance": [ { "instance_id" : "server01", "image_id" : 14, “chef_solo”: { “json_attributes”: { “run_list”: [ “recipe[apache]”, インスタンスで実行したい “recipe[mysql]”, chef-solo の内容を直接記述 “recipe[php]” ] } } /* … */ Copyright © NIFTY Corporation All Rights Reserved. Confidential 16
  • 17. NIFTY Cloud 向け Cookbook の仕組み 管理サーバ NIFTY Cloud Web サーバ API 経由でインスタンス作成 インスタンス A Apache Cookbook NIFTY Cloud 向け Cookbook Apache chef MySQL Cookbook solo PHP Cookbook JSON ファイル PHP MySQL Copyright © NIFTY Corporation All Rights Reserved. Confidential
  • 18. デモ デモCopyright © NIFTY Corporation All Rights Reserved. Confidential 18
  • 19. 3. Chef のテストについて調べてみたCopyright © NIFTY Corporation All Rights Reserved. Confidential
  • 20. Chef のテストについて調べてみた“Test-Driven Infrastructure with Chef”・インフラ自動構築システムのテスト =コストが高い → 物理サーバの購入 → テスト環境の構築・クラウドの台頭によってテスト自動化が現実的に → 仮想サーバを安価に構築 → API によりテスト環境構築も自動化可能 Copyright © NIFTY Corporation All Rights Reserved. Confidential
  • 21. さまざまなテストツール・toft・cucumber-nagios + cuken・vmth・cucumber-chef - クラウド(現在は AWS のみ) 上でテスト - LXC で 1 インスタンスの中に複数サーバを構築 → サーバ間をまたいだテストも実行可能※LXC (Linux Containers、出典:Wikipedia 日本語版) 一つのコントロールホスト上で、複数の隔離された Linux システム(コンテナ)を走らせる、OSレベル仮想化のソフトウェア。Copyright © NIFTY Corporation All Rights Reserved. Confidential
  • 22. cucumber-chef の主要コマンド ・インストール gem install cucumber-chef ・便利コマンド cucumber-chef displayconfig # 現在の設定表示 cucumber-chef setup # AWS 上にテスト環境構築 cucumber-chef test テスト名 # テスト実行 Copyright © NIFTY Corporation All Rights Reserved. Confidential
  • 23. Cucumber-chef のテスト例 Cucumber なので自然な英語でテストが表現される。Feature: Technical team members can log into team server So that we are more efficient with our time As a technical team We can connect to a shared server to collaborate on client work Scenario: Users can connect to server via ssh key Given a newly bootstrapped server When the technical users recipe is applied Then a user should be able to ssh to the server 「サーバを作成して technical_users レシピすれば SSH ログインできること」をテストするフィーチャ Copyright © NIFTY Corporation All Rights Reserved. Confidential
  • 24. Copyright © NIFTY Corporation All Rights Reserved. Confidential

×