chef windows linux環境構築
TRANSCRIPT
CHEF( WINDOWS と LINUX の環境構築)
目次1 . 概要2 . 環境構成3 . 環境構築4 . 自動化作業
そもそも Chef って?・・・・: Chef とは構成管理製品と呼ばれる。インフラにおける 構築作業などを自動化処理を行う為の製品。
構築作業におけるルーチンワークの自動化をする且つメンテナンス時のサービス停止等も自動化して楽ができます。
ってことは?
1 . 概要
3.今回の目標
1. Chef の環境を作れます( Windows でも、 Linux でも!)2. Chef の実行プログラムを作れるようになります ( Service,FileTransfer,FileInstall,OSReboot)
4.インフラ作業を Chef で自動化できます。3.実行プログラムをどうやって動かすかがわかります。
◆ 今回のハンズオンでは下記の内容を習得します。
つまるところ⇒ Chef を使った業務に入り込むことができます
⇒ 今回の構築を行う上での特殊な用語について下記に記載する。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 形式で記載
◆ 参考資料⇒ 構成管理製品( Chef )の概要資料 http://www.slideshare.net/100003829577658/chef-48229145◆ 説明者
・氏名:小田島 靖(株式会社 Rosso )・部署:システムソリューション・業務歴:構成管理を使用した自動化システム設計、構築・業務歴:シンクライアント環境の運用
まずは環境・・・・
:環境構成図:構成内容一覧( OS とか。。。 Disk とか。。。)
:導入パッケージ ( Chef 作るためには何をどこに入れるの?)
2 . 環境構成
環境構成図⇒ 構成管理の機能を確認する上での最小構成とする。⇒WindowsNode と LinuxNode では通信プロトコルの違いから使用するポートも違う⇒Recipe の実行はサーバからクライアントに対しそれぞれのプロトコルを使用し実行する。⇒Node 登録は BootStrap を使用する為、 Node 登録時にクライアントへのログインはしない
CentOS 6.7Chef ServerWorkStation
CentOS 6.7ChefNodeApach
Win2k12Chef NodeDHCP
Recipe 実行 :SSH 通信 (22)
Recipe 実行: WinRM 通信 (5985,5986)
Node 登録: bootstrap
⇒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)
導入パッケージ(ソフトウェア)⇒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
環境はわかったけど、入れ方わからん。。。
:環境構築手順: Chef を使うためのディレクトリ構成
3 . 環境構築
環境構築手順⇒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
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) 配布ファイル
さぁ!自動化!!
: Chef-Repo 、 CooKbook 格納: Recipe 作成 - Windows&Linux -
: Recipe 実行
4 . 自動化作業
◆ 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
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
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( インストールする対象のファイルを格納すること)
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
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>”
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
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
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
別紙 .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 の起動設定
別紙 .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
別紙 .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
お疲れ様でした。
:最終的に。。。⇒ 自己責任で。。。