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