chef windows linux環境構築

22
CHEF WINDOWS と LINUX ととととと

Upload: -

Post on 23-Jan-2017

303 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Chef windows linux環境構築

CHEF( WINDOWS と LINUX の環境構築)

Page 2: Chef windows linux環境構築

目次1 . 概要2 . 環境構成3 . 環境構築4 . 自動化作業

Page 3: Chef windows linux環境構築

そもそも Chef って?・・・・: Chef とは構成管理製品と呼ばれる。インフラにおける 構築作業などを自動化処理を行う為の製品。

構築作業におけるルーチンワークの自動化をする且つメンテナンス時のサービス停止等も自動化して楽ができます。

ってことは?

1 . 概要

Page 4: Chef windows linux環境構築

3.今回の目標

1. Chef の環境を作れます( Windows でも、 Linux でも!)2. Chef の実行プログラムを作れるようになります  ( Service,FileTransfer,FileInstall,OSReboot)

4.インフラ作業を Chef で自動化できます。3.実行プログラムをどうやって動かすかがわかります。

◆ 今回のハンズオンでは下記の内容を習得します。

つまるところ⇒  Chef を使った業務に入り込むことができます

Page 5: Chef windows linux環境構築

⇒ 今回の構築を行う上での特殊な用語について下記に記載する。2 . 用語説明

No 名称 意味1 構成管理 インフラ作業をコード化するソフトウェア製品の総称2 Chef 今回使用する構成管理製品3 ChefServe

rChef のサーバ用途をもつマシン。 Chef の設定、 Node 管理等

4 WorkStation

cookbook を作成するコマンドの実行 , 作業サーバ5 Node Chef のクライアント用途をもつマシン6 Knife ChefServe rと WorkStation のインターフェースを提供するコマン

ドラインツール7 bootstrap Knife コマンドのオプション。 Client 導入作業をサーバからコントロールする8 Cookbook コードをパッケージ化したもの。実行時の Recipe 、ファイル展開時のファイル9 Recipe Chef のコード。 Ruby 形式で記載

Page 6: Chef windows linux環境構築

◆ 参考資料⇒ 構成管理製品( Chef )の概要資料   http://www.slideshare.net/100003829577658/chef-48229145◆ 説明者

・氏名:小田島 靖(株式会社 Rosso )・部署:システムソリューション・業務歴:構成管理を使用した自動化システム設計、構築・業務歴:シンクライアント環境の運用

Page 7: Chef windows linux環境構築

まずは環境・・・・

:環境構成図:構成内容一覧( OS とか。。。 Disk とか。。。)

:導入パッケージ ( Chef 作るためには何をどこに入れるの?)

2 . 環境構成

Page 8: Chef windows linux環境構築

環境構成図⇒ 構成管理の機能を確認する上での最小構成とする。⇒WindowsNode と LinuxNode では通信プロトコルの違いから使用するポートも違う⇒Recipe の実行はサーバからクライアントに対しそれぞれのプロトコルを使用し実行する。⇒Node 登録は BootStrap を使用する為、 Node 登録時にクライアントへのログインはしない

CentOS   6.7Chef ServerWorkStation

CentOS   6.7ChefNodeApach

Win2k12Chef NodeDHCP

Recipe 実行 :SSH 通信 (22)

Recipe 実行: WinRM 通信 (5985,5986)

Node 登録: bootstrap

Page 9: Chef windows linux環境構築

⇒ChefServer と WorkStation を同一マシンに導入することで管理サーバの数を減らす。⇒No5~7 は Chef 環境構築の前提条件になる。

構成内容一覧

No

項目 Server Client(Linux) Client(Windows)

1 OS CentOS 6.7Final CentOS 6.7 Final

Windows 2012 std

2 Hostname chefserver Linnode Winnode3 Disk/Mem/CPU 20GB/1028/1core 20GB/

1028/1core60GB/2048/2core

4 用途 ChefServerWorkStation

ChefNodeApache Web

ChefNodeDHCPServer

5 通信ポート 22,80,443,5985,5986

22 5985,5986

6 名前解決 Server/Client Server/Client Server/Client7 時刻同期 Osaka,Japan Osaka,Japan Japan/Osaka8 構成 ChefServer(11.16.

4)ChefClient(11.0.8)

ChefClient(11.1.8)Apache(2.0)

ChefClient(11.1.8)

Page 10: Chef windows linux環境構築

導入パッケージ(ソフトウェア)⇒Client 導入に関しては Server より「 bootstrap 」を使用してインストールを行う。⇒WindowsNode に対して扱う CookBook に関しては外部サイトよりダウンロードして使用。

No パッケージ名 用途 備考1 chef-server-11.0.8-

1.el6.x86_64.rpmChef のサーバパッケージ

・ Chef のサイトより DL・ Server 側にインストール2 chef-11.16.4-1.el6.x86_64.rpm Chef のパッケージ

( Knife)・ Chef のサイトより DL・ Server 側にインストール3 Chef-repo Cookbook ・ SuperMarket より DL4 windows Windows 用

Cookbook・ SuperMarket より DL5 chef_handler Reboot 用 CookBook ・ SuperMarket より DL

Page 11: Chef windows linux環境構築

環境はわかったけど、入れ方わからん。。。

:環境構築手順: Chef を使うためのディレクトリ構成

3 . 環境構築

Page 12: Chef windows linux環境構築

環境構築手順⇒Windows も管理対象 Node の場合、 Node に対しても設定を行う必要がある。

No 項目 実行サーバ コマンドライン

1時刻同期 Server/ Client ntpd - q2名前解決 Server/ Client vi / etc/ hosts3ポート解放 Server/ Client vi / etc/ sysconfig/ iptables4サーバインストール Server rpm - ivh <Server >パッケージ

5 Server設定、鍵の作成 Server chef- server- ctl reconfigure6 WorkStation Server rpm - ivh <Client >パッケージ

7鍵コピー Server cp <src:admin.pem> <dest:admin.pem>Server cp <src:validation.pem> <dest:validation.pem>

8 Knife初期設定 Server knife configure - i9 Client設定ファイル生成 Server knife configure client

10 knife windows 設定 Server yum install libxml2- devel libxslt- devel/ opt/ chef/ embedded/ bin/ gem install knife- windows - - no- ri - - no- rdoc

11 PowerShell有効可 WinNode Set - Execut i onPol i cy bypass12 WinRm設定 WinNode Enabl e- PSRemot i ng - f orce13 Set - I tem - Path "WSMan: \ l ocal host \ MaxTi meoutms" 180000014 Set - I tem - Path "WSMan: \ l ocal host \ Servi ce\ Al l owUnencrypted" "t rue"15 set - I tem - Path "WSMan: \ l ocal host \ Servi ce\ Auth\ Basi c" "t rue"16 Node追加 Server knife bootstrap <host> - - ssh- user root - - node- name <node>

knife bootstrap windows winrm <host> - x "<user>" - P

Page 13: Chef windows linux環境構築

Chef を使うためのディレクトリ構成⇒ 実行する Recipe を格納するディレクトリの一覧を記載する。 ( 一部ダウンロード)

No ディレクトリ構造 作成方法 用途1 Cookbook ダウンロード CookBook格納ディレクトリ。ダウンロードしコピー2 apache 作成 (Apache) Cookbook3 Recipes 作成 (Apache) Recipe格納ディレクトリ4 default.rb 作成 (Apache) Recipeインストール&設定5 files 作成 (Apache) 配布ファイル格納ディレクトリ6 default 作成 (Apache) 配布ファイル格納ディレクトリ7 sample.html 作成 (Apache) 配布ファイル8 httpd_conf 作成 (Apache) 配布ファイル9 windows ダウンロード (Windows) CookBook機能

10 chef- handler ダウンロード (Windows) CookBook機能11 win_operation 作成 (Windows) CookBook操作12 recipes 作成 (Windows) Recipe操作 格納ディレクトリ13 01_FileTransfer.rb 作成 (Windows) OS Recipe再起動14 02_Service.rb 作成 (Windows) Recipeサービス起動15 03_Feature.rb 作成 (Windows) Recipe役割追加16 04_Pkginstall.rb 作成 (Windows) S/ W Recipeインストール17 05_Reboot.rb 作成 (Windows) OS再起動18 files 作成 (Windows) 配布ファイル格納ディレクトリ19 default 作成 (Windows) 配布ファイル格納ディレクトリ20 7z1514- x64.msi 作成 (Windows) 配布ファイル

Page 14: Chef windows linux環境構築

さぁ!自動化!!

: Chef-Repo 、 CooKbook 格納: Recipe 作成 - Windows&Linux -

: Recipe 実行

4 . 自動化作業

Page 15: Chef windows linux環境構築

◆ 1「 WinZip 」等で Server に「 Chef-Repo 」を格納する。

Chef-Repo 、 CooKbook 格納⇒ 追加した Node に対して CookBook 格納ディレクトリを配置する⇒ 「 Chef-Repo 」「 windows 」「 chef-handler 」に関しては事前に外部サイトよりダウンロード。

[root@chef_server work]# ls -la chef-repoLICENSE README.md chefignore cookbooks data_bags environments roles[root@chef_server work]# ls -la chef-repo/cookbooksREAD.ME

◆ 2「 Windows 」「 Chef-Handler 」を「 CookBook 」に丸ごとコピー[root@chef_server work]# ls -la chef-repo/cookbooksREAD.ME chef-handler windows

◆ 3「 Knife 」コマンドにて CooKbook  「 apache 」「 win_operation 」 を作成[root@chef_server chef-repo]# knife cookbook create   apache –o /chef-repo/cookbooks[root@chef_server chef-repo]# knife cookbook create win_operation –o /chef-repo/cookbooks

------------------------------------------------------------------------

------------------------------------------------------------------------

------------------------------------------------------------------------

Page 16: Chef windows linux環境構築

Recipe の作成 -Linux-⇒apache の設定ファイル等(編集済み)のファイルを Cookbook/apache/files/default に格納⇒ ファイルパスの配置( fails/default) は Chef の読込先の為基本的に固定する。

◆ 4「 httpd_conf 」「 Sampl.html 」を「 CookBook/apache/files/default 」にコピー[root@chef_server work]# ls -la chef-repo/apache/files/defaulthttpd_conf sample.html

◆ 5「 Cookbooks/apache/recipes/default.rb 」編集する。※ ファイル内容は「別紙: apache:default.rb 」にて記載。

※ ファイル内容は「別紙: apachefile 」にて記載。

◆ 6 Windows 用「 7zip インストールファイル」を「 Cookbook/win_opration/files/default 」に格納する。[root@chef_server work]# ls -la chef-repo/win_operation/files/default7z1514-x64.msi( インストールする対象のファイルを格納すること)

------------------------------------------------------------------------

------------------------------------------------------------------------

------------------------------------------------------------------------

Page 17: Chef windows linux環境構築

Recipe 作成 - Windows-⇒apache の設定ファイル等(編集済み)のファイルを Cookbook/apache/files/default に格納⇒ ファイルパスの配置( fails/default) は Chef の読込先の為基本的に固定する。

◆ 7「 Cookbook/win_operation/recipes 」の「 default.rb 」を下記の名前にリネームコピー[root@chef_server work]# cp –p /Cookbook/win_operation/recipes/default.rb /Cookbook/win_operation/recipes/01_FileTransfer[root@chef_server work]# ls /Cookbook/win_operation/recipesDefault.rb 01_FileTransfer.rb 02_install.rb 03_Fiuture.rb 04_service.rb 05_reboot.rb↑赤文字記載ファイルを作成する。

◆ 8「◆7」で作成したファイルをそれぞれ編集する。※ ファイル内容は「別紙: apache:default.rb 」にて記載。

◆ 9 Recipe 実行のリスト( Run_list) を以下のコマンドを実行し作成する[root@chef_server work]# knife role create sample -e vi“recipe[01_FileTransfer]”,“<recipe>”

------------------------------------------------------------------------

------------------------------------------------------------------------

------------------------------------------------------------------------

Page 18: Chef windows linux環境構築

Recipe 実行⇒Runlist は roles に登録している場合手順 10 は必要ない( Windows では roles に登録している)⇒Windows と Linux では Recipe を実行するときのコマンドが違う。

◆ 10.作成した Recipe のアップロードする(以下コマンド実行)[root@chef_server work]# knife cookbook upload apache -o /chef-repo/cookbook [root@chef_server work]# knife cookbook upload chef-handler -o /chef-repo/cookbook

◆ 11. Linux 用 ApacheRecipe のみ Run_list へ登録する。[root@chef_server work]# knife node run_list add linnode 'recipe[apache]'

◆ 12. upload した Recipe を LinuxNode へ実行する(以下コマンド実行)[root@chef_server work]# knife ssh 'name:linnode' 'chef-client -o recipe[apache]'

◆ 12. Upload した Recipe を WindowsNode へ実行する(以下コマンド実行)[root@chef_server work]# knife winrm 'name:winnode' 'chef-client -o role[sample]'

[root@chef_server work]# knife cookbook upload windows -o /chef-repo/cookbook [root@chef_server work]# knife cookbook upload win_operation -o /chef-repo/cookbook

------------------------------------------------------------------------

------------------------------------------------------------------------

------------------------------------------------------------------------

------------------------------------------------------------------------

Page 19: Chef windows linux環境構築

別紙 .apache –default.rb-⇒Default.rbだけで Apache のインストールと設定を行っている。⇒Default.rb のリネームを行うと実行時の Recipe もリネームする必要がある

package “httpd” do action :installend

cookbook_file "/etc/httpd/conf/httpd.conf" do source "httpd.conf" owner 'root' group 'root' mode 00644end

directory "/var/www/html/sample" do owner "apache" group "apache" mode 00755 action :createend

cookbook_file "/var/www/html/sample/sample.html" do source "sample.html" owner 'root' group 'root' mode 00644end

service "httpd" do action [ :enable, :start ]end

Service:HTTPD インストールHTTPD.CONF の設定

※httpd_conf は作成して files/default に格納

サンプルページ用ディレクトリの作成

サンプルページ用ファイルの展開

httpdService の起動設定

Page 20: Chef windows linux環境構築

別紙 .Win_operations

windows_feature 'DHCPServer' do action :installend

include_recipe ‘windows::reboot_handler’        // include_recipe  で 外部レシピの実行windows_reboot 30 do                   //   WindowsReboot のリソース reason ‘only win restart’                 //   action :nothing                       //   Reboot はアクションの後に呼び出すendlog 'Mack ChefRecipe' do message ‘Make ChefRecipe!!’             //  ログを吐き出すリソース notifies :request, ‘windows_reboot[30]}       //  再起動リソースを実行end

⇒Roles に Run_list を登録し 01~05 の Recipe をシーケンシャルに実行しているcookbook_file 'C:\work\7z1514-x64.msi' do mode 00644end

windows_package '7zip' do source 'C:/work/7z1514-x64.msi' action :installend

service "SNMPTRAP" do action :startendservice "msiserver" do action :startend

Page 21: Chef windows linux環境構築

別紙 .apachfile 設定 /role(run_list)⇒Chef で転送する apache の設定ファイルの内容を下記に記載。⇒/files/default においてあるファイルが転送される⇒role の Run_list に記載することで単体で作成された Resipe を連続して起動させている

Listen 80ServerRoot "/etc/httpd"DocumentRoot "/var/www/html"

Httpd.conf

<html> <body> <h1> Makechef-Apache</h1></html>

Sample.html

[root@chefserver recipes]# knife role create sample -e vi{ "name": "sample", "description": "", "json_class": "Chef::Role", "default_attributes": {

}, "override_attributes": {

}, "chef_type": "role", "run_list": [ "recipe[win_operation::06_Win_feature]" ], "env_run_lists": {

}}

レシピを実行順に記載

Role:sample

Page 22: Chef windows linux環境構築

お疲れ様でした。

:最終的に。。。⇒ 自己責任で。。。