29
© Hitachi Solutions, Ltd. 2013. All rights reserved. 株式会社 日立ソリューションズ オープンソース技術開発センタ 2013/9/14 喜納 知らなきゃ損! 今話題の自動構築フレームワークChef

知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© Hitachi Solutions, Ltd. 2013. All rights reserved.

株式会社 日立ソリューションズ オープンソース技術開発センタ

2013/9/14

喜納 健

知らなきゃ損! 今話題の自動構築フレームワークChef!

Page 2: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© Hitachi Solutions, Ltd. 2013. All rights reserved.

1. システム構築における課題

2. Chefの概要

3. Chef-Clientのデプロイ方法

知らなきゃ損! 今話題の自動構築フレームワークChef!

Contents

Page 3: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© Hitachi Solutions, Ltd. 2013. All rights reserved.

1.章 システム構築における課題

知らなきゃ損! 今話題の自動構築フレームワークChef!

Page 4: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© Hitachi Solutions, Ltd. 2013. All rights reserved.

1-1 システム構築における課題

3

大規模環境構築における課題 近年、OpenStackやHadoopなど大規模クラウド基盤が注目を集めている。 大規模環境の構築作業を行うには、次の様な作業が発生する事がある。

単調な繰り返し作業 待ち時間が発生する作業

このような作業は、以下の事象を引き起こす。

モチベーションの低下 設定ミスの発生 障害発生時の切り分けが困難

自動化を検討しましょう!

設定ミスがあるのは、どのマシンだ?

Page 5: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© Hitachi Solutions, Ltd. 2013. All rights reserved.

2.章 Chefの概要

知らなきゃ損! 今話題の自動構築フレームワークChef!

Page 6: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© 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

Page 7: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© Hitachi Solutions, Ltd. 2013. All rights reserved.

2-2 導入効果とユーザ

6

導入効果 自動化によるコスト削減の他、コンプライアンス対応にも利用されている。

環境構築の自動化による構築コスト削減 (新規構築に限らず、既存環境の移行に伴う再構築も含む) 設定変更の自動化による運用・管理コストの削減 オペレーションの可視化によるセキュリティ・コンプライアンス対応

ユーザ(企業) クラウドサービスを提供する企業が多数。

SNS・ソーシャルゲーム、SaaS を提供するサービス企業 (Facebook/サイバーエージェント/IGNなどの企業) クラウド基盤を提供・運用するクラウドベンダ (Stratalux/Cycle Computing/DreamHostなどの企業) 自社でECサイトを運営する企業 (BookRenter/MercadoLibre/LANなどの企業)

Page 8: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© 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通りの使い方がある

Page 9: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© 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

Page 10: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© Hitachi Solutions, Ltd. 2013. All rights reserved.

2-5 基本的な動作(1) Web サーバ構築例

レシピの作成 管理端末でレシピを作成する。

Chef Client

Chef DB

9

管理端末

Chef サーバ 構築対象 マシン

レシピ

作業マシンでレシピを作成する。

Chef Server

Page 11: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© Hitachi Solutions, Ltd. 2013. All rights reserved.

2-6 基本的な動作(2) Web サーバ構築例

レシピのアップロード レシピを作成し、Chef Server にアップロードする。

Chef Client

Chef DB

10

管理端末

Chef サーバ 構築対象 マシン

レシピ

Chef サーバ へアップロードする。

Chef Server

Page 12: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© 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

リポジトリ

ネット

Page 13: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© 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 は 、自己に割り当てられたレシピを取得する。

Page 14: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •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 は、取得したレシピに基づいて インストールやファイルの設定を行う。

Page 15: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •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 は、取得したレシピに基づいて インストールやファイルの設定を行う。

Page 16: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •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 などのパッケージ管理ツールと連携し、 外部のリポジトリからリソースを取得することでもできる。

Page 17: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© 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 ・・・・省略・・・ ---

Page 18: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© Hitachi Solutions, Ltd. 2013. All rights reserved.

3.章 Chef-Clientのデプロイ方法

知らなきゃ損! 今話題の自動構築フレームワークChef!

Page 19: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© 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台やっていると大変なので、自動化!

Page 20: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© 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

Page 21: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© 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のサイレントインストールツール。

アプリケーションのデプロイ

Page 22: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© 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を使用して 電源を入れる

次シートでもう少し詳細を説明

Page 23: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© 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実行

•レシピの取得と適用

構築対象 マシン

インストール サーバ

Page 24: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© Hitachi Solutions, Ltd. 2013. All rights reserved.

3-6 Chef の特徴

23

Chef には、以下の特徴がある。 レシピ再利用による構築・管理工数の削減

作業の重複を削減する 検索機能 Web上に公開されているレシピを検索・利用できる。

システム状態を管理するフレームワークの整備

システムを状態で定義・管理する仕組み 人為的ミスのリスク排除 人為的ミスのリスクを排除することで、手戻りのリスクを軽減できる。

類似構成のマシンが多い大規模システムの構築に有効

類似した構成のマシンが多い場合、 レシピ作成の費用対効果が高くなる。

レシピを共有

同じレシピを複数台に使える!

Page 25: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© Hitachi Solutions, Ltd. 2013. All rights reserved.

株式会社 日立ソリューションズ オープンソース技術開発センタ

知らなきゃ損! 今話題の自動構築フレームワークChef!

2013/9/14

喜納 健

END

Page 26: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

本資料に掲載されている会社名、製品名、サービス名は各社の登録商標、又は商標です。 ・Hadoopは、Apacheソフトウェア財団の米国及びその他の国における登録商標です。 ・OpenStackは、OpenStack,LLC の登録商標です。 ・Facebookは、米国Facebook Inc.の登録商標です。 ・その他記載の会社名、製品名は、それぞれの会社の商標もしくは登録商標です。

Page 27: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© 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 #

Page 28: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© 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)

Page 29: 知らなきゃ損! 今話題の自動構築 ...€¦ · のデプロイ •chef-clientインストール •chef-clientの設定 レシピの適用 •chef-clientの実行 管理端末

© 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. ・・・

設定後のファイル