Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
© Hitachi Solutions, Ltd. 2013. All rights reserved.
株式会社 日立ソリューションズ オープンソース技術開発センタ
2013/9/14
喜納 健
知らなきゃ損! 今話題の自動構築フレームワークChef!
© Hitachi Solutions, Ltd. 2013. All rights reserved.
1. システム構築における課題
2. Chefの概要
3. Chef-Clientのデプロイ方法
知らなきゃ損! 今話題の自動構築フレームワークChef!
Contents
© Hitachi Solutions, Ltd. 2013. All rights reserved.
1.章 システム構築における課題
知らなきゃ損! 今話題の自動構築フレームワークChef!
© Hitachi Solutions, Ltd. 2013. All rights reserved.
1-1 システム構築における課題
3
大規模環境構築における課題 近年、OpenStackやHadoopなど大規模クラウド基盤が注目を集めている。 大規模環境の構築作業を行うには、次の様な作業が発生する事がある。
単調な繰り返し作業 待ち時間が発生する作業
このような作業は、以下の事象を引き起こす。
モチベーションの低下 設定ミスの発生 障害発生時の切り分けが困難
自動化を検討しましょう!
設定ミスがあるのは、どのマシンだ?
© Hitachi Solutions, Ltd. 2013. All rights reserved.
2.章 Chefの概要
知らなきゃ損! 今話題の自動構築フレームワークChef!
© Hitachi Solutions, Ltd. 2013. All rights reserved.
2-1 Chef の概要
5
Chefとは システム自動構築のために開発されたOSSのフレームワーク。
主な開発は、米国のOpscode社 多数の導入実績があり、Facebook も採用
システムをコードで管理する 従来は、詳細設計書や構築手順書を使用して行っていた部分を、 コード化して管理する。Chefは、その仕組みを提供する。
OS設定A
OS設定B
ソフトA
ソフトB
OS設定A
OS設定C
ソフトA
ソフトC
サーバ1
サーバ2
OS設定A
OS設定B
OS設定C
ソフトA
ソフトB
ソフトC
Chef
include_recipe "yum" directory "/etc/ntp" do owner "root" group "root" mode "0755" action :create end yum_package “ntpd" do version “X.X.XX-15.el6.centos" action :install end
構成を集約 サーバ1
サーバ2
サーバ1
サーバ2
システムの状態をコードで定義
システムA
© Hitachi Solutions, Ltd. 2013. All rights reserved.
2-2 導入効果とユーザ
6
導入効果 自動化によるコスト削減の他、コンプライアンス対応にも利用されている。
環境構築の自動化による構築コスト削減 (新規構築に限らず、既存環境の移行に伴う再構築も含む) 設定変更の自動化による運用・管理コストの削減 オペレーションの可視化によるセキュリティ・コンプライアンス対応
ユーザ(企業) クラウドサービスを提供する企業が多数。
SNS・ソーシャルゲーム、SaaS を提供するサービス企業 (Facebook/サイバーエージェント/IGNなどの企業) クラウド基盤を提供・運用するクラウドベンダ (Stratalux/Cycle Computing/DreamHostなどの企業) 自社でECサイトを運営する企業 (BookRenter/MercadoLibre/LANなどの企業)
© Hitachi Solutions, Ltd. 2013. All rights reserved.
2-3 Chefのアーキテクチャ
7
Client/Server スタンドアロン(Chef Solo)
Chef サーバ
Chef Server
構築対象マシン サーバ2
Chef Client
構築対象マシン サーバ1
Chef Client
サーバ1
サーバ2
レシピA
レシピB
レシピC
サーバとレシピの紐付け
構築対象マシン サーバ2
Chef Solo
構築対象マシン サーバ1
Chef Solo
Client/Serverタイプは、レシピと構築対象マシンの 状態を一括管理できる ・Chef ServerでレシピとClient情報を管理 ・Chef Clientを実行すると、自身に割り当てられた レシピを取得・適用
スタンドアロンタイプは、構築台数が少ない(数十台) 場合に有効 (台数が少なくても正確さが求められる構築に有効) ・構築対象マシンにレシピを配布 ・Chef Soloは配布されたレシピを読み込み・適用
DB
Chefのアーキテクチャ システムの状態は、レシピと呼ばれるファイルにコードで記述し管理する 構築対象マシンにレシピを配布し、Chefプログラムがレシピに基づいて構築 Client/Serverと、スタンドアロンの2通りの使い方がある
© Hitachi Solutions, Ltd. 2013. All rights reserved.
2-4 Chef Serverのアーキテクチャ
Chef Serverの基本構成 Chef Server、Chef Client および 操作端末で構成される。
8
Chef Client
操作端末
WebUI/CUI
Chef サーバ
Chef Server の操作 Chef Server 内部DB (V.10までは CouchDB、V.11 から PostgreSQL )
レシピに基づいた 構築の自動実行
レシピ
システムのあるべき状態を定義
Chef Client、レシピの管理
構築対象 マシン
Chef DB
Chef Server
© Hitachi Solutions, Ltd. 2013. All rights reserved.
2-5 基本的な動作(1) Web サーバ構築例
レシピの作成 管理端末でレシピを作成する。
Chef Client
Chef DB
9
管理端末
Chef サーバ 構築対象 マシン
レシピ
作業マシンでレシピを作成する。
Chef Server
© Hitachi Solutions, Ltd. 2013. All rights reserved.
2-6 基本的な動作(2) Web サーバ構築例
レシピのアップロード レシピを作成し、Chef Server にアップロードする。
Chef Client
Chef DB
10
管理端末
Chef サーバ 構築対象 マシン
レシピ
Chef サーバ へアップロードする。
Chef Server
© Hitachi Solutions, Ltd. 2013. All rights reserved.
2-7 基本的な動作(3) Web サーバ構築例
レシピの割り当て Chef Serverにアップロードしたレシピと 構築対象マシンの紐付けを行う。
Chef DB
11
Chef サーバ
レシピ
レシピを構築対象マシンに紐付ける。
Chef Server
Run list
Run list
Run list
利用可能 レシピ
ネットワーク
Webサーバ
リポジトリ
利用可能 ロール
Chef Client 導入マシン
Web
リポジトリ
ネット
© Hitachi Solutions, Ltd. 2013. All rights reserved.
2-8 基本的な動作(4) Web サーバ構築例
Chef Clientによるレシピの取得 Chef Client が レシピを取得する。
Chef Client
Chef DB
12
Chef サーバ 構築対象 マシン
Chef Server
実行
Webサーバ
リポジトリ設定
ネットワーク設定
Run list
構築対象マシンで“chef-client”コマンド を実行する。 Chef Client は 、自己に割り当てられたレシピを取得する。
© Hitachi Solutions, Ltd. 2013. All rights reserved.
2-9 基本的な動作(5) Web サーバ構築例
Chef Clientによるオペレーションの実行 Chef Client が取得したレシピに基づいて、オペレーションを行う。
実行
13
Chef サーバ 構築対象 マシン
Run list
ネットワーク 設定
Webサーバ
リポジトリ設定
Chef DB
Chef Client は、取得したレシピに基づいて インストールやファイルの設定を行う。
© Hitachi Solutions, Ltd. 2013. All rights reserved.
2-10 基本的な動作(6) Web サーバ構築例
実行
14
Chef サーバ 構築対象 マシン
Run list
リポジトリ 設定
Webサーバ
Chef DB
Chef Clientによるオペレーションの実行 Chef Client が取得したレシピに基づいて、オペレーションを行う。
Chef Client は、取得したレシピに基づいて インストールやファイルの設定を行う。
© Hitachi Solutions, Ltd. 2013. All rights reserved.
2-11 基本的な動作(7) Web サーバを構築
必要に応じて外部から構築に必要なリソースを調達 必要な外部リソースは、別途リポジトリなどから取得する。
外部 リポジトリ
実行
15
Chef サーバ 構築対象 マシン
Run list
Webサーバ
Chef DB
Yum などのパッケージ管理ツールと連携し、 外部のリポジトリからリソースを取得することでもできる。
© Hitachi Solutions, Ltd. 2013. All rights reserved.
2-12 レシピの記載例
16
システムの状態を Ruby の DSL※1 で順序立てて記載する。
# # Cookbook Name:: cm4-server # Recipe:: default # # Copyright 2012, YOUR_COMPANY_NAME # # All rights reserved - Do Not Redistribute # include_recipe "yum"
yum_package "httpd" do version "2.2.15-15.el6.centos" action :install end service "httpd" do supports :status => true action [ :enable , :start ] end remote_file "/etc/httpd/conf/httpd.conf" do source "httpd.conf" owner "root" group "root" mode "0644" action :create end
◆順序 Apache のパッケージがインストールされている状態を定義した後に、Apache のサービスが起動している状態を定義する。
レシピ(XXX.rb)
※1:特定の目的に特化したプログラミング言語
◆状態で定義 Chefの場合、レシピに状態を定義する。Chefは、レシピとシステムの状態を比較し、レシピと異なっている場合に設定を行う。 Shellの場合、ファイルの存在確認などを行う必要がある場合もある。 ファイルの存在確認を行う場合の例--- if [ -e /etc/httpd/conf/httpd.conf ] then ・・・・省略・・・ ---
© Hitachi Solutions, Ltd. 2013. All rights reserved.
3.章 Chef-Clientのデプロイ方法
知らなきゃ損! 今話題の自動構築フレームワークChef!
© Hitachi Solutions, Ltd. 2013. All rights reserved.
3-1 Chefを使用する際の流れ
18
レシピの準備
• レシピの作成
• レシピアップロード
• 構築対象マシンとレシピの紐付け設定
chef-client
のデプロイ
• chef-clientインストール
• chef-clientの設定
レシピの適用
• chef-clientの実行
管理端末
Chef サーバ
レシピ
Chef Client
構築対象 マシン
実行
構築対象 マシン
Run list
ここを1台1台やっていると大変なので、自動化!
© Hitachi Solutions, Ltd. 2013. All rights reserved.
3-2 前提と準備
前提 Red Hat系OSのシステムを構築 ハードウェアは、IPMIに対応 (IPMI:ハードウェア管理のインターフェース仕様)
準備 Chef Serverを内臓するインストール用のサーバを用意済 (以下、インストールサーバ) ChefのClientとレシピの紐付けは実施済
19
インストール サーバ
構築対象マシン群 (ブレード)
・DHCP Server ・TFTP Server ・Web Server ・Chef Server
© Hitachi Solutions, Ltd. 2013. All rights reserved.
3-3 Chef Client インストールの自動化
20
ネットワークブートと Kickstartを使用 インストール用のサーバを用意し、ネットワーク経由で構築。
構築対象 マシン
インストール用 マシン
インストーラ
Kickstart 設定ファイル OS 設定
Chef Client インストール
Chef Clientの構築をShellスクリプトで実装
インストール媒体
の用意
OSインストール
(GUIで対話的に) コマンド操作
ネットワークブート Kickstart※1
Chef Clientのインストール
(Kickstartの後処理で実行)
OSインストール
手動
自動
※1:Red Hat系Linuxのサイレントインストールツール。
アプリケーションのデプロイ
© Hitachi Solutions, Ltd. 2013. All rights reserved.
3-4 自動構築の流れ
マシンの起動からアプリケーションサービスの起動まで自動構築
21
構築用サーバ
DHCP server
TFTP server
HTTP server
Chef Server
Kickstart ファイル
ディスクイメージ
ブートローダ
構築対象マシン群
暫定IPアドレス の取得
TFTP server の参照
Kickstart file の取得
OSの インストール
chef-client デプロイと実行
IPMIを使用して 電源を入れる
次シートでもう少し詳細を説明
© Hitachi Solutions, Ltd. 2013. All rights reserved.
3-5 Chef Clientのインストール・設定を自動化
Kickstartの後処理(オプション)を使用 KickstartのOSインストール後に実行されるスクリプトでChef Clientのデプロイを行う。
22
ネットワーク設定
•ホスト名
• IPアドレス
Yumリポジトリ設定
・インストールサーバのリポジトリを登録
Chef Clientインストール
・Yumを使用したインストール
Chef Client設定
•認証キーの取得
• Client設定ファイルの取得
Chef Client実行
•レシピの取得と適用
構築対象 マシン
インストール サーバ
© Hitachi Solutions, Ltd. 2013. All rights reserved.
3-6 Chef の特徴
23
Chef には、以下の特徴がある。 レシピ再利用による構築・管理工数の削減
作業の重複を削減する 検索機能 Web上に公開されているレシピを検索・利用できる。
システム状態を管理するフレームワークの整備
システムを状態で定義・管理する仕組み 人為的ミスのリスク排除 人為的ミスのリスクを排除することで、手戻りのリスクを軽減できる。
類似構成のマシンが多い大規模システムの構築に有効
類似した構成のマシンが多い場合、 レシピ作成の費用対効果が高くなる。
レシピを共有
同じレシピを複数台に使える!
© Hitachi Solutions, Ltd. 2013. All rights reserved.
株式会社 日立ソリューションズ オープンソース技術開発センタ
知らなきゃ損! 今話題の自動構築フレームワークChef!
2013/9/14
喜納 健
END
本資料に掲載されている会社名、製品名、サービス名は各社の登録商標、又は商標です。 ・Hadoopは、Apacheソフトウェア財団の米国及びその他の国における登録商標です。 ・OpenStackは、OpenStack,LLC の登録商標です。 ・Facebookは、米国Facebook Inc.の登録商標です。 ・その他記載の会社名、製品名は、それぞれの会社の商標もしくは登録商標です。
© Hitachi Solutions, Ltd. 2013. All rights reserved.
付録1 インストールは簡単
26
Omnibusインストーラ 開発元のOpscode社が提供するインストーラを使用すれば構築は簡単。
コマンド数行でインストール
Red Hat系OSでは、“/opt/chef”以下に全て配置(環境への影響を限定) Ruby(およびRubyGems)同梱 既存のRuby/RubyGems環境と競合しない。
# rpm –ivh /tmp/chef-server-11.0.6-1.el6.x86_64.rpm # chef-server-ctl reconfigure # chef-server-ctl test
# /opt/chef/embedded/bin/ruby -v ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-linux] # /opt/chef/embedded/bin/gem -v 1.8.24 #
© Hitachi Solutions, Ltd. 2013. All rights reserved.
付録2 開発が進められているプラットフォーム
27
現状は、Linux系OSが中心 UbuntuやDebian、Red Hat系LinuxなどのLinux系OSが中心。 Windowsでも開発が進んでいる。
参照元:http://wiki.opscode.com/display/chef/System+Requirements(最終アクセス:2013/08/06)
© Hitachi Solutions, Ltd. 2013. All rights reserved.
付録3 構築対象マシンの情報を取得するOhai
28
Ohaiコンポーネント 構築対象マシンに関するOSの種類、カーネルのバージョンといった プラットフォーム情報の他、ホスト名やIPアドレスなども取得できる。
プラットフォームの詳細 (OSの種類やバージョンなど) ネットワークの使用状況 メモリの使用状況 カーネルのデータ ホスト名
構築対象マシンのホスト名を設定する場合、以下の様にレシピを記載する。 Chefで構築する際に、各ノードでそれぞれのホスト名(FQDN)が設定される。
物理レイヤ
Ohai
Chef Client/Solo
構築対象マシン ・ ・ ・
・・・ hostname=<%= node['fqdn'] %> ・・・
アプリ構築レシピ
・・・ hostname=HOSTNAME. ・・・
設定後のファイル