ニフティクラウド プライベートクラウド サービス …...プライベートクラウド サービス仕様書 4 ニフティ株式会社 • 作成するサーバータイプにより、vCPU
ニフティ社内の Chef 利用について
description
Transcript of ニフティ社内の Chef 利用について
Copyright © NIFTY Corporation All Rights Reserved.
ニフティ社内の Chef 利用について2012.7.21
ニフティ株式会社竹内 豪 (@tily)
Copyright © NIFTY Corporation All Rights Reserved. Confidential
アジェンダ
1. 自己紹介
2. NIFTY Cloud Cookbook
3. Chef のテストについて調べてみた
2
Copyright © NIFTY Corporation All Rights Reserved. Confidential
1.自己紹介
Copyright © NIFTY Corporation All Rights Reserved. Confidential
自己紹介
・竹内 豪 (Twitter ID: @tily)
・もともと Web エンジニア (Dev 寄り)→ SNS エンジンやソーシャルゲームの開発/運用
・社内で NIFTY Cloud を効率的に利用する取り組み→ クラウド系の部署へ
・プライベートでもいろいろ変なものを作ってますブログ:http://d.hatena.ne.jp/tily
4
Copyright © NIFTY Corporation All Rights Reserved. Confidential
Chef 関連の活動 ~ knife-nc
knife-ec2 の NIFTY Cloud 版
5
knife
ruby インスタンス A
管理サーバ Chef サーバ
インスタンス A
NIFTY Cloud
validator.pem
API 経由でインスタンス作成
SSH 経由でブートストラップ
validator.pem
rubygemschefclient
Copyright © NIFTY Corporation All Rights Reserved. Confidential
Chef 関連の活動 ~ ドキュメント日本語化
主要ドキュメントの 30% 程度。協力者募集中です
6
Copyright © NIFTY Corporation All Rights Reserved. Confidential
Chef 関連の活動 ~ 日本 Chef ユーザ会
DevOps Day TOKYO 2012 で発足今のところ目立った活動は特にしていませんが、ぜひ何かやりましょう
7
Copyright © NIFTY Corporation All Rights Reserved. Confidential
2. NIFTY Cloud 向け Cookbook
Copyright © NIFTY Corporation All Rights Reserved. Confidential
NIFTY Cloud 社内利用の問題点
同じような構築手順の繰り返し・管理画面にログインしてポチポチ FW 設定を追加したり・10 サーバにログインして同じユーザの追加を行ったり
9
→ インフラ構築の自動化・PoolParty・AWS CloudFormation
Copyright © NIFTY Corporation All Rights Reserved. Confidential
poolparty の例
pool "myapp" docloud "app" do
using :ec2instances 1..1security_group do
authorize :from_port => 22, :to_port => 22end
endend
Ruby の DSL 形式でインフラ構造を表現
Copyright © NIFTY Corporation All Rights Reserved. Confidential
poolparty の例
{"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" },/* 省略 */
JSON 形式でインフラ構造を表現
Copyright © NIFTY Corporation All Rights Reserved. Confidential
NIFTY Cloud 社内利用の問題点
初期構築だけでなく、運用に関するタスクが山盛り・セキュリティパッチ適用・セキュリティチェック・アカウント棚卸し
12
→ 構成管理ツール・Puppet・Chef
Copyright © NIFTY Corporation All Rights Reserved. Confidential
解決策
NIFTY Cloud 向け Cookbook
13
Copyright © NIFTY Corporation All Rights Reserved. Confidential
概要図
JSON{
“instance”: [{ /* インスタンス 1 の設定 */ },{ /* インスタンス 2 の設定 */ },{ /* インスタンス 3 の設定 */ },{ /* インスタンス 4 の設定 */ }
],“security_group”: [{ /* ファイアウォール 1 の設定 */},{ /* ファイアウォール 2 の設定 */}
],“load_balancer”: [{ /* ロードバランサ 1 の設定 */},{ /* ロードバランサ 2 の設定 */}
]}
NIFTY Cloud向け
Cookbook
JSON クラウド
LB
Chef 実行 API 経由で作成
Copyright © NIFTY Corporation All Rights Reserved. Confidential
解決策
15
〇 クラウドインフラ構造をテンプレート (JSON) で管理→ テンプレートの使いまわし、作業効率化
〇 初期構築~構成管理までを Chef でシームレスに管理→ 運用に強いフレームワーク
・Chef の Cookbook という形で初期構築ツールを実装→ 基本的な NIFTY Cloud 上リソースの作成・削除
- サーバ、ファイアウォール、ロードバランサ、ディスク
Copyright © NIFTY Corporation All Rights Reserved. Confidential 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]”,“recipe[php]”
]}
}/* … */
インスタンスで実行したいchef-solo の内容を直接記述
Copyright © NIFTY Corporation All Rights Reserved. Confidential
NIFTY Cloud 向け Cookbook の仕組み
管理サーバ Web サーバ
インスタンス A
NIFTY Cloud
API 経由でインスタンス作成
chefsolo
NIFTY Cloud向け Cookbook
Apache Cookbook
MySQL Cookbook
PHP CookbookJSON ファイル
Apache
PHP MySQL
Copyright © NIFTY Corporation All Rights Reserved. Confidential 18
デモ
デモ
Copyright © NIFTY Corporation All Rights Reserved. Confidential
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 のテスト例
Feature: Technical team members can log into team serverSo that we are more efficient with our timeAs a technical teamWe can connect to a shared server to collaborate on client work
Scenario: Users can connect to server via ssh keyGiven a newly bootstrapped serverWhen the technical users recipe is appliedThen a user should be able to ssh to the server
Cucumber なので自然な英語でテストが表現される。
「サーバを作成して technical_users レシピすればSSH ログインできること」をテストするフィーチャ
Copyright © NIFTY Corporation All Rights Reserved. Confidential