• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
ニフティ社内の Chef 利用について
 

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

on

  • 9,860 views

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

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

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

Statistics

Views

Total Views
9,860
Views on SlideShare
7,011
Embed Views
2,849

Actions

Likes
18
Downloads
65
Comments
0

12 Embeds 2,849

http://jedipunkz.github.com 1207
http://devloveblog.wordpress.com 697
http://d.hatena.ne.jp 664
http://jedipunkz.github.io 196
http://webcache.googleusercontent.com 27
https://si0.twimg.com 18
http://localhost 18
https://twitter.com 11
http://bukumatube.com 6
http://us-w1.rockmelt.com 3
https://twimg0-a.akamaihd.net 1
http://translate.googleusercontent.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • ニフティ社内の Chef 利用について 2012.7.21 ニフティ株式会社 竹内 豪 (@tily)Copyright © NIFTY Corporation All Rights Reserved.
    • アジェンダ 1. 自己紹介 2. NIFTY Cloud Cookbook 3. Chef のテストについて調べてみたCopyright © NIFTY Corporation All Rights Reserved. Confidential 2
    • 1.自己紹介Copyright © NIFTY Corporation All Rights Reserved. Confidential
    • 自己紹介 ・竹内 豪 (Twitter ID: @tily) ・もともと Web エンジニア (Dev 寄り) → SNS エンジンやソーシャルゲームの開発/運用 ・社内で NIFTY Cloud を効率的に利用する取り組み → クラウド系の部署へ ・プライベートでもいろいろ変なものを作ってます ブログ:http://d.hatena.ne.jp/tilyCopyright © NIFTY Corporation All Rights Reserved. Confidential 4
    • 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
    • Chef 関連の活動 ~ ドキュメント日本語化 主要ドキュメントの 30% 程度。協力者募集中ですCopyright © NIFTY Corporation All Rights Reserved. Confidential 6
    • Chef 関連の活動 ~ 日本 Chef ユーザ会 DevOps Day TOKYO 2012 で発足 今のところ目立った活動は特にしていませんが、 ぜひ何かやりましょうCopyright © NIFTY Corporation All Rights Reserved. Confidential 7
    • 2. NIFTY Cloud 向け CookbookCopyright © NIFTY Corporation All Rights Reserved. Confidential
    • NIFTY Cloud 社内利用の問題点 同じような構築手順の繰り返し ・管理画面にログインしてポチポチ FW 設定を追加したり ・10 サーバにログインして同じユーザの追加を行ったり→ インフラ構築の自動化 ・PoolParty ・AWS CloudFormationCopyright © NIFTY Corporation All Rights Reserved. Confidential 9
    • 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
    • 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
    • NIFTY Cloud 社内利用の問題点 初期構築だけでなく、運用に関するタスクが山盛り ・セキュリティパッチ適用 ・セキュリティチェック ・アカウント棚卸し → 構成管理ツール ・Puppet ・ChefCopyright © NIFTY Corporation All Rights Reserved. Confidential 12
    • 解決策 NIFTY Cloud 向け CookbookCopyright © NIFTY Corporation All Rights Reserved. Confidential 13
    • 概要図 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
    • 解決策 ・Chef の Cookbook という形で初期構築ツールを実装 → 基本的な NIFTY Cloud 上リソースの作成・削除 - サーバ、ファイアウォール、ロードバランサ、ディスク 〇 クラウドインフラ構造をテンプレート (JSON) で管理 → テンプレートの使いまわし、作業効率化 〇 初期構築~構成管理までを Chef でシームレスに管理 → 運用に強いフレームワークCopyright © NIFTY Corporation All Rights Reserved. Confidential 15
    • 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
    • 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
    • デモ デモCopyright © NIFTY Corporation All Rights Reserved. Confidential 18
    • 3. Chef のテストについて調べてみたCopyright © NIFTY Corporation All Rights Reserved. Confidential
    • Chef のテストについて調べてみた“Test-Driven Infrastructure with Chef”・インフラ自動構築システムのテスト =コストが高い → 物理サーバの購入 → テスト環境の構築・クラウドの台頭によってテスト自動化が現実的に → 仮想サーバを安価に構築 → API によりテスト環境構築も自動化可能 Copyright © NIFTY Corporation All Rights Reserved. Confidential
    • さまざまなテストツール・toft・cucumber-nagios + cuken・vmth・cucumber-chef - クラウド(現在は AWS のみ) 上でテスト - LXC で 1 インスタンスの中に複数サーバを構築 → サーバ間をまたいだテストも実行可能※LXC (Linux Containers、出典:Wikipedia 日本語版) 一つのコントロールホスト上で、複数の隔離された Linux システム(コンテナ)を走らせる、OSレベル仮想化のソフトウェア。Copyright © NIFTY Corporation All Rights Reserved. Confidential
    • cucumber-chef の主要コマンド ・インストール gem install cucumber-chef ・便利コマンド cucumber-chef displayconfig # 現在の設定表示 cucumber-chef setup # AWS 上にテスト環境構築 cucumber-chef test テスト名 # テスト実行 Copyright © NIFTY Corporation All Rights Reserved. Confidential
    • 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
    • Copyright © NIFTY Corporation All Rights Reserved. Confidential