概 要 Chef は Ruby 製 のシステム 管 理 ツールで サーバOSでのミドルウェアやア プリケーションのインストール OSやミドルウェアの 設 定 各 稼 動 サービスの 状 態 管 理 等 諸 々のシステム 構 築 や 運 用 作 業 を 自 動 化 してくれるツールで オ ープンソース



Similar documents
プレゼンタイトルを入力してください

iStorage ソフトウェア VMware vSphere Web Client Plug-in インストールガイド

トートリンク インストールガイド

ファイルサーバー(NFS) 構築ガイド

Agenda 2

スライド 1


Microsoft Word - TechSmith Deployment Tool Documentation.docx

(Microsoft Word - FileZillaServer_\212\310\210\325FTP\203T\201[\203o_\216g\227p\203K\203C\203h_\216Q\215l\227p__JE DOC)

Microsoft Word - tb01.doc

PowerPoint プレゼンテーション

VPS では 通 常 はインスタンスが 1 個 です 停 止 と 再 起 動 を 選 択 できます CloudStack では インスタンスの 追 加 と 破 棄 の 機 能 を 利 用 することにより お 客 様 が 契 約 されているインスタンス 数 分 の 仮 想 サーバを 自 由 に 追 加

<4D F736F F D20819C B78AFA95DB91538C7689E68DEC90AC289

利用者

CSV_Backup_Guide

技術報告会原稿フォーマット

エ CarotDAV が 起 動 すると 次 のようなウィンドウが 表 示 されます メニューバーにある File から New Connection の WebDAV を 選 択 します オ 次 のような 設 定 画 面 が 表 示 されたら General タブでネットワークアドレスなどを 設

V-CUBE One

変 更 履 歴 日 付 Document ver. 変 更 箇 所 変 更 内 容 2015/3/ 新 規 追 加 2015/9/24 誤 字 修 正 2016/2/ 動 作 環 境 最 新 のものへ 変 更 全 体 オペレーター の 表 記 を 削 除 2016/5/

(3) 小 単 元 の 指 導 と 評 価 の 計 画 小 単 元 第 11 章 税 のあらまし の 指 導 と 評 価 の 計 画 ( 四 次 確 定 申 告 制 度 抜 粋 ) 関 心 意 欲 態 度 思 考 判 断 技 能 表 現 知 識 理 解 小 単 元 の 評 価 規 準 税 に 関 す

MetaMoJi ClassRoom/ゼミナール 授業実施ガイド

C.1 共 有 フォルダ 接 続 操 作 の 概 要 アクセスが 許 可 されている 研 究 データ 交 換 システムの 個 人 用 共 有 フォルダまたは メーリングリストの 共 有 フォルダに 接 続 して フォルダを 作 成 したり ファイル をアップロードまたはダウンロードしたりすることがで

TeleOffice 3.0 Lync 2 TO

Thunderbird のメール/設定を別PCへ移行する方法(「MozBackup」を使って)

同 期 を 開 始 する( 初 期 設 定 ) 2 1 Remote Link PC Sync を 起 動 する 2 1 接 続 機 器 の [PIN コード ] [ ユーザー 名 ] [ パスワード ] を 入 力 する [PIN コード ] などの 情 報 は 接 続 機 器 の 設 定 画 面

論文誌用MS-Wordテンプレートファイル

WebAlertクイックマニュアル

端 末 型 払 い 出 しの 場 合 接 続 構 成 図 フレッツ グループから 払 出 されたIPアドレス /32 NTT 西 日 本 地 域 IP 網 フレッツ グループ フレッツ グループから 払 出 されたIPアドレス /

2016 年 度 情 報 リテラシー 変 更 された 状 態 同 様 に 価 格 のセルを 書 式 設 定 する 場 合 は 金 額 のセルをすべて 選 択 し [ 書 式 ]のプルダウンメニューか ら[ 会 計 ]を 選 択 する すると が 追 加 され 金 額 としての 書 式 が 設 定 さ

1. 概 要 ここでは CGI のインストールを 行 います CGI をインストールして 実 際 に 使 用 できるようになるまでは 以 下 のような 流 れになります フローチャート CGI の 登 録 CGI の 提 供 許 可 管 理 者 が 行 う CGI のインストール 初 期 設 定 ユ

Microsoft PowerPoint - c3_op-manual.pdf

<4D F736F F D AC90D1955D92E CC82CC895E DD8C D2816A2E646F63>

スライド 1

目 次 ログインする 前 に... 4 メンバー 管 理 編 ( 管 理 者 )... 5 ログインする... 6 トップページについて... 7 メンバー 管 理 をする... 8 メンバー 管 理 画 面 について 医 療 機 関 指 定 新 規 追 加 指 定...

研究者情報データベース

施 工 P お 気 に 入 り データを 活 用 するための 準 備 施 工 パッケージデータをお 気 に 入 りに 登 録 し 単 価 を 閲 覧 するための 方 法 を 説 明 します 1. 施 工 パッケージデータをダウンロードする 施 工 パッケージデータのダウンロードは 下 記 から 行

事前チェック提出用現況報告書作成ツール入力マニュアル(法人用)

Microsoft Word - 311Tools_END

ソフトウェア説明書

入 札 参 加 資 格 申 請 システム 操 作 マニュアル 入 札 参 加 資 格 の 資 格 有 効 ( 変 更 ) 日 を 迎 えると 追 加 届 の 登 録 ができるようになります ( 入 札 参 加 資 格 申 請 の 定 時 受 付 では いずれかの 申 請 先 団 体 から 入 札 参

Untitled

Cloud Disk とは インターネット 上 (クラウド)に 大 切 なデータを 保 存 することが 出 来 る 便 利 なアプリケーション (オンラインストレージ)です 本 資 料 について Cloud Disk サービスは マイナーバージョンアップ 等 もあるため 実 際 のクライアントと 本

タイトル位置

<IE の 設 定 について> 従 来 版 をすでにご 利 用 の 方 の 場 合 互 換 表 示 設 定 がある 状 態 になっていると 思 わ れますので 必 ず 解 除 の 設 定 を 行 ってください 従 来 版 では IE の 10 以 上 では 互 換 表 示 設 定 が 必 要 でした

(1)1オールゼロ 記 録 ケース 厚 生 年 金 期 間 A B 及 びCに 係 る 旧 厚 生 年 金 保 険 法 の 老 齢 年 金 ( 以 下 旧 厚 老 という )の 受 給 者 に 時 効 特 例 法 施 行 後 厚 生 年 金 期 間 Dが 判 明 した Bは 事 業 所 記 号 が

続 に 基 づく 一 般 競 争 ( 指 名 競 争 ) 参 加 資 格 の 再 認 定 を 受 けていること ) c) 会 社 更 生 法 に 基 づき 更 生 手 続 開 始 の 申 立 てがなされている 者 又 は 民 事 再 生 法 に 基 づき 再 生 手 続 開 始 の 申 立 てがなさ

Microsoft PowerPoint - 報告書(概要).ppt

PowerPoint プレゼンテーション

<4D F736F F D C97F195CF8AB DEC90E096BE8F912091E6312E313294C52E646F63>

BizDataBank とは インターネット 上 (クラウド)に 大 切 なデータを 保 存 することが 出 来 る 便 利 なアプリケーション (オンラインストレージ)です 本 資 料 について BizDataBank サービスは マイナーバージョンアップ 等 もあるため 実 際 のクライアントと

Microsoft Word - 参考資料:SCC_IPsec_win8__リモート設定手順書_

Office 10 パッケージ版「リンク集」

<4D F736F F D208ED089EF95DB8CAF89C193FC8FF38BB CC8EC091D492B28DB88C8B89CA82C982C282A282C42E646F63>

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10

Untitled

<4D F736F F F696E74202D2082C882E982D982C DD8ED88EE688F882CC82B582AD82DD C668DDA9770>

図 2 のような 画 面 が 表 示 されるので Install Proself Disk.pkg を 右 クリック(Ctrl+クリック)して 開 く をクリックしてください 図 2 インストーラ 画 面 図 3 のような 画 面 が 表 示 されるので 開 く をクリックしてください 図 3 確

新 生産管理システム ご提案書 2002年10月15日 ムラテック情報システム株式会社

ソ フ ト ウ ェ ア ト ー ク ン の ダ ウ ン ロ ー ド 方 法 以 下 の サ イ ト か ら ダ ウ ン ロ ー ド 方 法 の 確 認 を 行 っ て く だ さ い な お ソ フ ト ウ ェ ア ト ー ク ン に つ い て の 詳 細 や ご 利 用 方 法 よ く あ る

ProWebRabbitインストールガイド

1

2011論稿_吉川宏之.indd

XOOPS Cube インストールマニュアル

<4D F736F F D E598BC68A8897CD82CC8DC490B68B7982D18E598BC68A8893AE82CC8A C98AD682B782E993C195CA915B C98AEE82C382AD936F985E96C68B9690C582CC93C197E1915B927582CC898492B75F8E96914F955D89BF8F915F2E646F6

目 次 1. Web メールのご 利 用 について Web メール 画 面 のフロー 図 Web メールへのアクセス ログイン 画 面 ログイン 後 (メール 一 覧 画 面 ) 画 面 共 通 項 目

スライド 1

目 次 1 ご 使 用 の 前 に 1.1 動 作 環 境 1.2 セットアップ 方 法 2 使 用 方 法 2.1 起 動 方 法 2.2 操 作 方 法 効 果 音 設 定 アニメーション 設 定 スライドジャンプ 設 定 フラッシュカード 設 定

2. F-Secure の 画 面 を 開 く デスクトップのメニューバーから F-Secure のアイコンをクリックし F-Secure PSB Workstation Security for MAC を 開 く をクリックします F-Secure の 状 態 によっては アイコンに[ ]マーク

PowerPoint プレゼンテーション

itutor (Windows Vista, 8, 8, 8.1 ) 製 品 紹 介 や 操 作 順 の PC 操 作 システム 運 順 の マニュアル 動 画 教 育 効 果 の い eラーニング 教 材 時 間 をかけず 簡 単 に 作 成 できる 2

PowerPoint プレゼンテーション

Microsoft Word - MyWebPortalOffice_BackupRestore2012.doc

文化政策情報システムの運用等

ライセンス

Mac OS Xでの利用設定 マニュアル

内 容 1. はじめに メールのログイン 初 めてのログイン メールの 受 信 / 送 信 メールの 受 信 メールの 作 成 と 送 信 メールの 新 規 作 成 メー

< A B E786C7378>

<4D F736F F D203193FA8AD45F95CA8E86325F89898F4B315F94F093EF8AA98D AD97DF914F82CC8FEE95F182CC8EFB8F C28E8B89BB2E646F63>

パソコンバンクWeb21 操作マニュアル[導入・事前設定編]

RaQuest MindManager

スライド 1

<4D F736F F D D3188C091538AC7979D8B4B92F F292B98CF092CA81698A94816A2E646F63>

2016 年 度 情 報 リテラシー 次 に Excel のメニューから[ 挿 入 ]タブをクリックし 表 示 されたメニュー 内 の[グラフ]にある[ 折 れ 線 グラフ]のボタンをクリックする するとサブメニューが 表 示 されるので 左 上 の[ 折 れ 線 ]を 選 択 する [ 挿 入 ]

参加表明書・企画提案書様式

ESET Smart Security 8 リリースノート

電子納品チェックシステム利用マニュアル

S16-386・ソフトウェアの調達に関する入札実施の件

目 次 機 能 概 要 配 信 管 理 1. メールの 配 信 履 歴 と 予 約 を 確 認 する

Microsoft Word - FBE3A91F.doc

購買ポータルサイトyOASIS簡易説明書 b

Basic

HTG-35U ブルーバック表示の手順書 (2014年12月改定)

年齢別人数計算ツールマニュアル

目 次 1. はじめに 3 2. システム 要 件 4 3. HDD Password Tool のインストール 5 Windows の 場 合 5 Mac の 場 合 8 4. HDD Password Tool の 使 い 方 HDD Password Tool を 起 動 する

エ シラバスの 公 開 サイトはレスポンシブ 対 応 ( 様 々な 種 類 の 機 器 や 画 面 サイズに 単 一 のファイルで 対 応 )しているこ オ 教 員, 職 員 の 利 用 グループを 作 成 し,グループ 毎 に 予 め 設 定 した 権 限 ( 利 用 メニューやマスタメンテナンス

2.4 箇 条 書 のスタイルを 変 更 する 右 クリックして 箇 条 書 と 番 号 付 け を 選 択 する. あとは 少 し 遊 べば, このようなことをやりたい 人 は 理 解 できると 思 います 3 いろいろな 入 力 ワープロを 使 う 上 で 肝 心 な 点 は, 空 白 調 整

2. ど の 様 な 経 緯 で 発 覚 し た の か ま た 遡 っ た の を 昨 年 4 月 ま で と し た の は 何 故 か 明 ら か に す る こ と 回 答 3 月 17 日 に 実 施 し た ダ イ ヤ 改 正 で 静 岡 車 両 区 の 構 内 運 転 が 静 岡 運

平成21年9月29日

<4D F736F F D208CA990CF96BE8DD78F918EAE82CC95CF8D >

1.ログインするためのパソコンの 設 定 (USBトークンの 設 定 ) Internet Explorer(IE)の 場 合 方 法 1 情 報 バーからアドオン(ActiveXコントロール)をインストールする 画 面 はIE8です またIEのバージョンにより 操 作 方 法 画 面 や 表 示

Transcription:

平 成 23 年 度 研 究 レポート 課 題 サーバの 構 築 作 業 や 運 用 管 理 を 自 動 化 する Chef を 使 うためのチュートリアル サービスディベロップメントグループ 並 河 祐 貴 2011 年 8 月 31 日 1

概 要 Chef は Ruby 製 のシステム 管 理 ツールで サーバOSでのミドルウェアやア プリケーションのインストール OSやミドルウェアの 設 定 各 稼 動 サービスの 状 態 管 理 等 諸 々のシステム 構 築 や 運 用 作 業 を 自 動 化 してくれるツールで オ ープンソースソフトウェアとして 公 開 されている Chefは 世 界 中 で 主 にサー ビスプロバイダの 運 用 基 盤 として 利 用 されており 利 用 実 績 も 出 始 めている 本 レポートでは この Chef の 概 要 やアーキテクチャ セットアップ 手 順 を 解 説 した 上 で 実 際 の 設 定 の 流 れをチュートリアル 形 式 で 解 説 する 2

第 1 章 はじめに Chef は Ruby 製 のシステム 管 理 ツールで サーバOSでのミドルウェアや アプリケーションのインストール OSやミドルウェアの 設 定 各 稼 動 サービス の 状 態 管 理 等 諸 々のシステム 構 築 や 運 用 作 業 を 自 動 化 してくれるツールで オープンソースソフトウェアとして 公 開 されている 国 外 では 既 に37signals やEngine Yard RightScaleといったサービスプロバイダの 運 用 基 盤 として 利 用 されており 利 用 実 績 も 出 始 めている ところで Ruby 製 のシステム 管 理 ツールといえば Puppet を 思 い 浮 かべる 方 も 多 いのではないだろうか ChefはPuppetの 競 合 ソフトウェアとなる 位 置 付 けで これらのツールで 出 来 ることだけ 挙 げると 特 別 大 きな 差 はないと 感 じ ているが Puppetは 基 本 的 に 外 部 DSLとして 設 定 を 記 載 するのに 対 し Chefは 内 部 DSLで 設 定 を 記 載 できるというような " 使 い 方 "の 違 いがある 個 人 的 には Rubyのコードで ある 程 度 柔 軟 に 設 定 を 書 いていけるような 内 部 DSLの 仕 組 みは 好 みだが 人 によっては 好 みの 差 があるので システム 管 理 者 が 使 いやすいツ ールを 選 択 すれば 良 いのではないかと 考 えている サーバ 構 築 システム 管 理 の 自 動 化 が 必 要 な 理 由 筆 者 の 担 当 するアメーバピグやピグライフというサービスは 現 在 (2011/08) 合 計 で 約 300 台 近 くのサーバを 利 用 している 管 理 するサーバが 数 台 のうちは あまり 運 用 コストを 気 にしなくて 良 いが 上 記 のような 数 十 台 数 百 台 といっ たオーダーになると サーバを 運 用 管 理 する 上 で 以 下 のような 様 々な 面 倒 事 が 発 生 する サーバ 一 台 一 台 に 対 して 全 て 手 作 業 でオペレーションを 行 うのは 大 変 手 作 業 でのオペレーションミスは 防 止 が 困 難 同 じ 役 割 のサーバごとで 環 境 差 異 が 発 生 大 規 模 なサービスになると まとまった 台 数 のサーバを 投 入 することも 良 く ある 話 で その 都 度 サーバのセットアップを1つ1つ 手 で 構 築 することは 大 変 で あり 何 より 投 入 までのリードタイムが 長 くなることで 投 入 が 遅 れ 機 会 損 失 を 発 生 させることは 事 業 的 に 避 けたいと 誰 もが 思 うことだろう 3

また サーバを 運 用 していると 特 定 の 役 割 のサーバ 数 十 台 に 対 して ある 設 定 を 追 加 したい といった 作 業 もよく 発 生 する こういった 作 業 についても 自 動 化 の 仕 組 みを 作 っておくことで 設 定 + 確 認 作 業 をミス 無 く 実 施 (もしくは 間 違 いが 発 生 しても 複 数 台 に 即 修 正 を 反 映 できる)ことは 大 きなメリットであ るといえる そこで これらの 課 題 を 解 決 する1つの 解 が Chef のようなシステム 管 理 ツ ールの 利 用 になると 考 える 本 レポートでは Chefの 概 要 やアーキテクチャの 説 明 セットアップ 手 順 から 読 者 が 実 際 に 設 定 して 利 用 できるようにチュー トリアル 形 式 で 使 い 方 の 解 説 を 行 う 4

第 2 章 Chef の 仕 組 み Chefは HTTP(S) 通 信 でのやりとりを 前 提 としたサーバ クライアント 式 のモ デルで 基 本 的 にはクライアント 側 からサーバへ 情 報 を 取 得 するPULL 型 のシス テムアーキテクチャとなる 尚 動 作 プラットフォームとしては Linux BSD MacOS Solaris 等 がサポートされている ( 現 状 Windowsはサポートされてい ない ) クライアント サーバ 側 のソフトウェア 構 成 は 以 下 となる 図 1: Chefのアーキテクチャ 上 図 では 全 てオープンソースソフトウェアでの 構 成 となっているため Chef の 利 用 をはじめる 上 で 必 要 となるソフトウェア 費 用 等 は 特 に 発 生 しない( 各 ソ フトウェアの 詳 細 については 今 回 は 割 愛 する) 各 ソフトウェアは 各 々HTTPで REST 形 式 のAPIを 介 して JSON 形 式 のデータのやり 取 り 連 携 を 行 うシンプルな アーキテクチャモデルとなる 5

主 な 処 理 の 流 れとしては chef-clientといったクライアントソフトウェアが chef-serverから 自 分 自 身 (クライアント)に 必 要 な 設 定 を 確 認 し 必 要 なミドル ウェアのインストールや 設 定 をクライアント 自 身 に 実 施 するといった 流 れとな る Chefでは サーバがどのような 状 態 であるべきかを 記 載 した Cookbookと 呼 ばれる 設 定 を 書 くことで 複 数 のプラットフォームの 差 を 吸 収 してくれる 仕 組 みがあるため CentOSやUbuntuといった 利 用 するOSディストリビューション によって インストールスクリプトや 設 定 を 書 き 直 すといった 面 倒 事 がなくな り プラットフォームによる 差 異 を 意 識 せずに 済 むようになる Chefでの 登 場 人 物 と 役 割 ここからは Chefで 行 う 設 定 について 簡 単 に 記 す 以 下 は Chefの 全 ての 設 定 がおさめられるリポジトリのディレクトリ 構 成 の 第 一 階 層 目 となる chef-repo/ -- Rakefile -- certificates -- config -- cookbooks -- data_bags `-- roles Chefの 仕 組 みを 読 み 解 くと ディレクトリの 中 で まずcookbooksとrolesと いった2 種 類 の 大 きな 設 定 がある cookbooksは Chef 側 でシステムのあるべき 形 を 定 義 する 設 定 を 記 述 するもの である rolesは サーバ(Chefでいうとclient またはnodeと 呼 ばれる)の 役 割 を 定 義 した 設 定 のことで 例 えば"Webサーバ"や"DBサーバ"といった 役 割 単 位 で グルーピングしたい 場 合 などは このrolesを 定 義 する 次 に 先 ほど 紹 介 したcookbooksの 中 にも 様 々な 設 定 項 目 があり 以 下 が cookbooksディレクトリ 内 の 構 成 となる 6

cookbooks/ -- attributes -- definitions -- files -- libraries -- metadata.rb -- providers -- recipes -- resources `-- templates この 中 で 基 本 となる 部 分 は recipes templates atteributesの3つである それぞれについて 以 下 で 説 明 する recipesは システムのあるべき 姿 つまり 設 定 内 容 を 実 際 に 記 載 したRubyス クリプトである 例 えば Apacheのパッケージをインストールしたい 場 合 は 以 下 のようにrecipeに 記 述 する package "apache2" do end action :install また あわせて 以 下 のように 記 載 すると 自 動 起 動 が 有 効 になっているか およびサービスが 起 動 しているかどうかの 確 認 も 行 うよう 設 定 される ( 設 定 が 有 効 になっていない 場 合 は 有 効 に サービスが 起 動 していない 場 合 は サービ スを 起 動 することが 可 能 ) service "apache2" do end action [ :enable, :start ] 次 に templatesは ERB 形 式 で 記 述 可 能 な 実 際 にサーバへ 配 置 する 設 定 フ ァイルのテンプレートである 動 的 にパラメータを 変 更 したい 箇 所 など 各 サ ーバで Chefを 実 行 した 際 に 実 際 にそのサーバの 役 割 にあった 設 定 値 をあて はめる 場 合 などで 利 用 する そこで Chefでは この 実 際 にあてはめる 設 定 値 (パ 7

ラメータ)のことをattributesと 呼 んでいる 例 えば Apacheがインストールされたサーバで roles( 役 割 )ごとに 設 定 値 を 変 えたい 場 合 以 下 のようなports.fileのテンプレートを 事 前 に 作 成 しておく Listen <%= port %> NameVirtualHost *:<%= port %> 実 際 の 設 定 値 (attributes)に 関 しては roles( 役 割 )ごとに 設 定 したり 各 サ ーバ(node)ごとに 設 定 することも 出 来 る また rolesやnodeにattributesが 設 定 されていない 場 合 は default 値 を 決 めておくことも 可 能 となる 8

第 3 章 セットアップ 方 法 本 章 では 実 際 にChefが 動 く 環 境 のセットアップ 方 法 について 記 す ここで は クライアント サーバともにLinux(CentOS 5 系 )での 構 築 を 前 提 として 説 明 を 進 める クライアント 編 ChefはRuby 製 のため まずRubyのインストールが 必 要 となる 尚 CentOS 5 系 では パッケージ 管 理 されているRubyのバージョンが 古 いため 外 部 リポジ トリからのインストールを 以 下 の 手 順 で 行 う # wget -O /etc/yum.repos.d/aegis.repo http://rpm.aegisco.com/aegisco/el5/ae gisco.repo # yum install ruby-1.8.7.334-2.el5 ruby-devel-1.8.7.334-2.el5 ruby-ri-1.8.7.33 4-2.el5 ruby-rdoc-1.8.7.334-2.el5 ruby-static-1.8.7.334-2.el5 rubygems 次 に Chefのインストールを 行 う 今 回 利 用 したChefのバージョンは0.9.18 となる # gem install chef -v 0.9.18 その 後 以 下 の 手 順 でバージョン 情 報 が 表 示 されると クライアントのイン ストールは 無 事 完 了 となる # chef-client -v Chef: 0.9.18 サーバ 編 まずは 先 ほど 記 したクライアント 編 のセットアップと 同 じ 手 順 を 実 施 し chef-clientが 実 行 できることを 確 認 する 次 に 以 下 の 手 順 で 外 部 リポジトリから 必 要 なパッケージをインストールす 9

る # rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release -5-4.noarch.rpm # yum install ruby-shadow gcc gcc-c++ couchdb erlang rabbitmq-server jav a libxml2-devel zlib-devel sqlite-devel chef-serverのバックエンドで 必 要 となるCouchDBとRabbitMQを 起 動 する # /etc/init.d/couchdb start # /etc/init.d/rabbitmq-server start RabbitMQをChefで 使 う 設 定 を 行 う # rabbitmqctl add_vhost /chef # rabbitmqctl add_user chef testing # rabbitmqctl set_permissions -p /chef chef ".*" ".*" ".*" chef-serverや merb chef-serverとの 連 携 で 利 用 するアダプタ 等 のインス トールを 行 う # gem install chef-server -v 0.9.18 # gem install merb # gem install sqlite3-ruby -v 1.2.5 尚 CentOS 5 系 でインストールできるsqliteのバージョンが 古 いため sqlite3-rubyパッケージだけはバージョンを 指 定 する 形 でインストールを 行 う 次 に JAVA_HOMEの 環 境 変 数 およびPATHを 通 した 後 chef-solr-indexerと chef-solrを 起 動 する # export JAVA_HOME=/usr # export PATH=$JAVA_HOME/bin:$PATH # chef-solr-indexer & # chef-solr & 10

尚 きちんとした 運 用 をする 際 は これらの 起 動 / 停 止 スクリプトを 適 宜 作 成 した 方 が 良 い ( 本 レポートでは 割 愛 する ) 次 に chef-serverの 設 定 ファイルを "/etc/chef/server.rb"として 以 下 の 内 容 で 配 置 する 以 下 の 内 容 は Chefの 公 式 サイトで 公 開 されているため 実 際 に 利 用 する 際 は 以 下 リンク 先 からコピーすると 良 い http://wiki.opscode.com/display/chef/manual+chef+server+configuration# ManualChefServerConfiguration-ConfigureChefServer log_level log_location ssl_verify_mode chef_server_url :info STDOUT :verify_none "http://xxx.xxx.xxx.xxx:4000" signing_ca_path couchdb_database "/var/chef/ca" 'chef' cookbook_path [ "/var/chef/cookbooks", "/var/chef/site-cookbooks" ] file_cache_path "/var/chef/cache" node_path "/var/chef/nodes" openid_store_path "/var/chef/openid/store" openid_cstore_path "/var/chef/openid/cstore" search_index_path "/var/chef/search_index" role_path "/var/chef/roles" validation_client_name "chef-validator" validation_key "/etc/chef/validation.pem" client_key "/etc/chef/client.pem" web_ui_client_name "chef-webui" web_ui_key "/etc/chef/webui.pem" web_ui_admin_user_name "admin" web_ui_admin_default_password "somerandompasswordhere" supportdir = "/srv/chef/support" 11

solr_jetty_path File.join(supportdir, "solr", "jetty") solr_data_path File.join(supportdir, "solr", "data") solr_home_path File.join(supportdir, "solr", "home") solr_heap_size "256M" umask 0022 Mixlib::Log::Formatter.show_time = false 最 後 に chef-serverおよび chef-serverのapiにguiでアクセス 可 能 となる chef-server-webuiを 起 動 する これらも 必 要 に 応 じて 起 動 / 停 止 スクリプト を 作 っておくと 良 い # chef-server -N -e production # chef-server-webui -p 4040 -e production 起 動 後 ブラウザで http://(chef-serverのipアドレス):4040 にアクセス すると 図 2のログイン 画 面 が 表 示 される 図 2: chef-server-webui のログイン 画 面 ブラウザから ユーザ 名 とパスワードを"/etc/chef/server.rb"の "web_ui_admin_user_name"と"web_ui_admin_default_password"で 設 定 したも 12

の( サンプルでは admin / somerandompasswordhere )を 入 力 してログインする 画 面 遷 移 した 後 パスワードの 変 更 が 求 められるとログインは 成 功 となる ChefクライアントからChefサーバへのアクセス まず Chefサーバ 内 のファイル"/etc/chef/validation.pem"をChefクライア ントの"/etc/chef" 配 下 にscpコマンド 等 でコピーする 次 に Chefクライアン トの"/etc/chef" 配 下 に "client.rb"というファイル 名 で 以 下 の 内 容 を 記 述 する chef_server_url 'http://xxx.xxx.xxx.xxx:4000' node_name 'chef-test01' "chef_server_url"のxxx.xxx.xxx.xxxには ChefサーバのIPアドレスを 記 述 する また "node_name"は 任 意 の 文 字 列 を 入 力 する "node_name"はわかりや すくホスト 名 などを 付 けると 良 い 今 回 はサンプルとしてchef-test01としてい る 次 に 以 下 のコマンドを 実 行 し Chefサーバへアクセスする $ sudo chef-client 実 行 後 特 にエラーも 表 示 されず 実 行 されていれば 処 理 は 成 功 となる この 段 階 で 上 記 コマンドを 実 行 したChefクライアントの 情 報 が 登 録 され "/etc/chef/" 配 下 に"client.pem"という 鍵 ファイルが 配 置 され サーバに 情 報 が 登 録 される knifeコマンドのセットアップ knifeコマンドは Chefサーバにアクセスするクライアントソフトウェアの1 つで コマンドラインから 様 々な 操 作 を 実 行 することが 可 能 である 尚 knife コマンドはchefに 同 梱 されている knifeコマンドのセットアップは まず 以 下 のコマンドを 実 行 し knifeコマ ンドの 初 期 設 定 を 行 う 13

$ sudo knife configure "knife configure"では 設 定 項 目 について 以 下 のようにインタラクテイブに 入 力 する Where should I put the config file? [~/.chef/knife.rb] Please enter the chef server URL: [http://localhost:4000] http://xxx.xxx.xxx.x xx:4000 Please enter an existing username or clientname for the API: [username] chef-test01 Please enter the validation clientname: [chef-validator] Please enter the location of the validation key: [/etc/chef/validation.pem] Please enter the path to a chef repository (or leave blank): 上 記 2つ 目 の 質 問 では chefサーバのurl(ipアドレス:4000 番 ポート)を 3 つ 目 の 質 問 では chefクライアントのnode name( 今 回 のサンプルでは chef-test01)を 残 りは 基 本 的 にデフォルトのまま(Enterを 押 すのみ)で 問 題 な い 次 に 以 下 のコマンドを 実 行 し 先 ほどchef-clientコマンドを 実 行 した 際 に 発 行 された"client.pem"ファイルへのアクセスを 有 効 にする $ sudo chmod 644 /etc/chef/client.pem $ ln -s /etc/chef/client.pem ~/.chef/chef-test01.pem ここまででknifeコマンドに 関 する 最 低 限 の 設 定 は 完 了 となる 次 のコマンド を 実 行 し 登 録 済 のnode(Chefクライアント) 名 が 表 示 されれば 動 作 確 認 は 完 了 となる $ knife node list [ "chef-test01" ] 14

第 4 章 Chef を 使 いこなすための 第 一 歩 本 章 では Chefを 利 用 するためにまず 覚 える 事 項 をチュートリアル 形 式 で 記 す Chefのディレクトリ 一 式 を 作 成 する Chefに 触 れる 上 で 最 初 にやる 事 は Chefのディレクトリ 一 式 を 作 成 するこ とである Chefの 設 定 は どのマシンで 行 っても 良 いが 今 回 はChefクライア ントのマシンで 設 定 を 行 う まずは Chefクライアントのマシンの 任 意 のワーキングディレクトリ(ここで はサンプルとして ホームディレクトリ 配 下 とする)で 以 下 のコマンドを 実 行 する $ cd ~ $ wget --no-check-certificate -O./chef-repo.tar.gz http://github.com/opscode/c hef-repo/tarball/master $ tar zxvf chef-repo.tar.gz $ mv opscode-chef-repo-xxxxxx chef-repo 流 れとしては opscode(chefの 開 発 元 )のgithubから Chefのディレクトリ 一 式 ( 雛 形 )が 入 ったファイルをダウンロードした 後 に 展 開 する ここでは サン プルとして そのディレクトリ 一 式 をchef-repoとする Cookbookを 作 る まず Cookbookの 雛 形 となるディレクトリをknifeコマンドで 作 成 する 今 回 は サンプルとしてsampleという 名 前 のCookbookを 以 下 のコマンドで 作 成 する $ knife cookbook create sample -o ~/chef-repo/cookbooks "~/chef-repo/cookbooks/sample"にcookbookの 雛 形 となるディレクトリが 作 成 されていれば 成 功 となる 15

Recipeの 例 Chefでは 様 々なリソースがあらかじめ 用 意 されており それをRecipeに 組 み 合 わせて 記 載 したり Rubyで 処 理 ロジックを 書 くことで そのサーバのある べき 姿 を 設 定 として 定 義 する 例 えば そのサーバで 単 純 にApacheがインストールされ 稼 動 している 状 態 を 作 りたい 場 合 は 以 下 の 内 容 をRecipeに 記 載 する package "httpd" do end action :install service "httpd" do supports :status => true, :restart => true, :reload => true action [ :enable, :start ] end 1つ 目 のセクションのpackageリソースでは "httpd"のパッケージをインスト ールし 2つ 目 のセクションのserviceリソースでは OSブート 時 の 自 動 起 動 を 有 効 にした 上 で httpdをstartさせている (stopしている 場 合 はstartし 既 にstartしている 場 合 は 何 も 行 わない ) 尚 Chefで 利 用 できるリソースについては 公 式 ドキュメント ( http://wiki.opscode.com/display/chef/resources )に 全 項 目 の 説 明 と 利 用 可 能 オプション サンプルまで 揃 っているため ChefのRecipeを 書 く 際 は こ のページをリファレンスとして 確 認 しながら 記 述 していくと 良 い 実 際 にRecipeを 書 く ここから 簡 単 な 例 ではあるが Templateを 使 ったRecipeとして 1つのテキ ストファイルを 特 定 の 場 所 に 配 置 する 例 を 記 す このテキストファイルには Chefクライアントのサーバの 簡 単 なシステム 情 報 を 出 力 させるようにする 16

まず "~/chef-repo/cookbooks/sample/recipes/default.rb"ファイルを 開 き 以 下 の 内 容 を 記 述 し 保 存 する template "/tmp/chef-sample.txt" do source "chef-sample.txt.erb" mode 0644 end 次 に システム 情 報 を 出 力 するファイルのテンプレートとして "~/chef-repo/cookbooks/sample/templates/default/chef-sample.txt.erb"フ ァイルを 以 下 の 内 容 で 作 成 する Welcome to Chef! CPU : <%= node[:cpu][:"0"][:model_name] %> Memory: <%= node[:memory][:total] %> OS : <%= node[:platform] %> <%= node[:platform_version] %> 簡 単 な 例 ではあるが これでRecipeとTemplateの 記 述 が 完 了 となる Chefサーバへの 登 録 作 成 したCookbook(RecipeやTemplateを 含 んだもの)をChefサーバへ 登 録 する Chefサーバへの 登 録 は 以 下 のknifeコマンドを 実 行 する $ knife cookbook upload -a -o ~/chef-repo/cookbooks/ "-a"オプションを 付 けると 指 定 ディレクトリ 配 下 のCookbook 全 てをアップ ロードすることが 可 能 となる Cookbookのアップロード 後 以 下 のコマンドを 実 行 することで 登 録 されたCookbookを 確 認 できる $ knife cookbook list [ "sample" ] 17

次 に 先 ほど 作 ったCookbook(sample)を 適 用 するため 以 下 のコマンドを 実 行 し node(chefクライアントに)に 紐 付 ける $ knife node run_list add chef-test01 'recipe[sample]' chef-test01は 今 回 利 用 しているnode(Chefクライアント) 名 であり 引 数 の 最 後 に'recipe[Cookbook 名 ]'を 記 述 している chefを 実 行 して 反 映 する Chefクライアントのコンソールで 以 下 のコマンドを 実 行 して Cookbookで 設 定 した 内 容 を 反 映 する $ sudo chef-client エラーも 無 く 無 事 に 完 了 した 場 合 実 際 に 配 置 されたテキストファイルを 以 下 コマンドで 確 認 すると chef-clientコマンドを 実 行 したChefクライアントの システム 情 報 が 表 示 されている $ cat /tmp/chef-sample.txt Welcome to Chef! CPU : Intel(R) Core(TM)2 Quad CPU Q8400 @ 2.66GHz Memory: 4005864kB OS : centos 5.4 Attributeを 使 う Attributeは Templateなどで 実 際 に 利 用 する 設 定 値 を 格 納 する 器 のことで Cookbookでデフォルト 値 を 定 義 したり Role(nodeを"Webサーバ"などでグルー ピングしたい 場 合 に 利 用 )での 共 通 の 設 定 値 またnodeごとに 設 定 値 を 定 義 でき る 18

例 えば 先 ほどのsampleというCookbookでデフォルトのAttributeを 設 定 する ここでは 以 下 のように "~/chef-repo/cookbooks/sample/templates/default/chef-sample.txt.erb"の 最 後 に1 行 追 記 して 保 存 する Welcome to Chef! CPU : <%= node[:cpu][:"0"][:model_name] %> Memory: <%= node[:memory][:total] %> OS : <%= node[:platform] %> <%= node[:platform_version] %> Memo : <%= node[:memo] %> 次 に Cookbookでのデフォルト 値 を 定 義 する "~/chef-repo/cookbooks/sample/attributes/default.rb"ファイルを 以 下 の 内 容 で 作 成 する default[:memo] = "None." ファイルの 作 成 後 先 ほど 同 様 以 下 のコマンドでCookbookをアップロード する $ knife cookbook upload -a -o ~/chef-repo/cookbooks/ そして Chefクライアントで 再 度 以 下 コマンドを 実 行 する $ sudo chef-client chef-clientの 実 行 後 同 様 に 配 置 されたファイルを 確 認 すると 最 後 の 行 に デフォルト 値 として 設 定 したものが 表 示 されている $ cat /tmp/chef-sample.txt Welcome to Chef! CPU : Intel(R) Core(TM)2 Quad CPU Q8400 @ 2.66GHz 19

Memory: 4005864kB OS : centos 5.4 Memo : None. 最 後 に 先 ほどのデフォルト 値 を 設 定 したまま NodeのAttributeを 設 定 する knifeコマンドでnodeのattributeを 編 集 する 場 合 は 以 下 のコマンドを 実 行 す る $ EDITOR=vi knife node edit chef-test01 "EDITOR=vi"の 部 分 は 好 みのエディタを 指 定 することが 可 能 である 上 記 コ マンドを 実 行 すると エディタでNodeのAttributeが 編 集 できる Attributeは JSON 形 式 になっており 以 下 のように "normal"のkeyのvalueの 中 に サンプ ルとして "memo": "test chef-node." を 入 力 する { "normal": { "tags": [ ], "memo": "This is a chef-node." }, "name": "chef-test01", "override": { }, "default": { "memo": "None." }, 以 下 省 略 エディタを 保 存 して 終 了 すると "Saved node[chef-test01]"と 標 準 出 力 され Attributeの 設 定 が 完 了 する その 後 これまでと 同 様 の 手 順 で Cookbookをアップロードした 後 chef-clientコマンドを 実 行 する その 後 配 置 されたファイルを 確 認 すると 20

最 終 行 がNodeのAttributeに 設 定 した 値 に 置 き 換 わっていることが 確 認 できる $ cat /tmp/chef-sample.txt Welcome to Chef! CPU : Intel(R) Core(TM)2 Quad CPU Q8400 @ 2.66GHz Memory: 4005864kB OS : centos 5.4 Memo : This is a chef-node. このようにCookbookやRoleなどにデフォルトのAttributeを 設 定 しておくこ とで 基 本 的 にそれらの 値 を 反 映 させつつ 上 記 のようにNodeのAttributeを 利 用 し 特 定 のNodeについては 個 別 に 値 を 反 映 させたり 特 別 な 処 理 (Recipeに 記 載 しておく)を 加 えたりすることもできる 21

第 5 章 まとめ 本 レポートでは Chefの 概 要 アーキテクチャの 解 説 や 実 際 にCookbookを 作 成 し 基 本 となるRecipe Template Attributeを 使 った 簡 単 なサンプルをチ ュートリアル 形 式 で 解 説 した Chef 自 体 は アメーバピグやピグライフ およびdkstatの 一 部 で 導 入 してお り アメーバのインフラとして 運 用 の 過 程 で 改 善 している 段 階 である 同 一 の 環 境 とするべきサーバが 複 数 台 ある 環 境 においては 間 違 いなく 運 用 コスト は 下 がると 考 える アメーバでの 運 用 過 程 で 得 られたこれらのノウハウについ ては 次 回 のレポートや 社 内 外 の 勉 強 会 で 発 信 していく 次 第 である Chef 自 体 はまだ 多 くの 機 能 があるため もっと 深 く 学 ぶ 場 合 は 公 式 ドキュメ ント(http://wiki.opscode.com/display/chef/Home)を 読 むことで 多 くの 情 報 を 得 ることができる また 今 回 はknifeコマンドで 多 くの 設 定 を 行 ったが Role やNodeの 設 定 については chef-serverのwebuiから 設 定 を 行 うことが 可 能 であ る ちょっとした 確 認 や 設 定 であれば WebUIを 使 う 方 が 視 覚 的 にわかりやすい 面 もあるため 一 度 触 ってみると 良 いだろう 本 レポートにより エンジニア がシステム 管 理 ツールを 導 入 するための 第 一 歩 目 になれば 幸 いである 22