Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Chef windows linux環境構築

1,144 views

Published on

Chefを使ったWindowsLinux環境の構築

Published in: Technology
  • Be the first to comment

Chef windows linux環境構築

  1. 1. CHEF (WINDOWSとLINUXの環境構築)
  2. 2. 目次 1.概要 2.環境構成 3.環境構築 4.自動化作業
  3. 3. そもそもChefって?・・・・ :Chefとは構成管理製品と呼ばれる。インフラにおける 構築作業などを自動化処理を行う為の製品。 構築作業におけるルーチンワークの自動化をする 且つメンテナンス時のサービス停止等も自動化して 楽ができます。 ってことは? 1.概要
  4. 4. 3.今回の目標 1.Chefの環境を作れます(Windowsでも、Linuxでも!) 2.Chefの実行プログラムを作れるようになります (Service,FileTransfer,FileInstall,OSReboot) 4.インフラ作業をChefで自動化できます。 3.実行プログラムをどうやって動かすかがわかります。 ◆今回のハンズオンでは下記の内容を習得します。 つまるところ⇒ Chefを使った業務に入り込むことができます
  5. 5. ⇒今回の構築を行う上での特殊な用語について下記に記載する。 2.用語説明 No 名称 意味 1 構成管理 インフラ作業をコード化するソフトウェア製品の総称 2 Chef 今回使用する構成管理製品 3 ChefServer Chefのサーバ用途をもつマシン。Chefの設定、Node管理等 4 WorkStatio n cookbookを作成するコマンドの実行, 作業サーバ 5 Node Chefのクライアント用途をもつマシン 6 Knife ChefServerとWorkStationのインターフェースを提供するコマンドライン ツール 7 bootstrap Knifeコマンドのオプション。Client導入作業をサーバからコントロールする 8 Cookbook コードをパッケージ化したもの。実行時のRecipe、ファイル展開時のファイ ル 9 Recipe Chefのコード。Ruby形式で記載
  6. 6. ◆参考資料 ⇒構成管理製品(Chef)の概要資料 http://www.slideshare.net/100003829577658/chef-48229145 ◆説明者 ・氏名:小田島 靖(株式会社Rosso) ・部署:システムソリューション ・業務歴:構成管理を使用した自動化システム設計、構築 ・業務歴:シンクライアント環境の運用
  7. 7. まずは環境・・・・ :環境構成図 :構成内容一覧(OSとか。。。Diskとか。。。) :導入パッケージ (Chef作るためには何をどこに入れるの?) 2.環境構成
  8. 8. 環境構成図 ⇒構成管理の機能を確認する上での最小構成とする。 ⇒WindowsNodeとLinuxNodeでは通信プロトコルの違いから使用するポートも違う ⇒Recipeの実行はサーバからクライアントに対しそれぞれのプロトコルを使用し実行する。 ⇒Node登録はBootStrapを使用する為、Node登録時にクライアントへのログインはしない CentOS 6.7 Chef Server WorkStation CentOS 6.7 ChefNode Apach Win2k12 Chef Node DHCP Recipe実行:SSH通信(22) Recipe実行:WinRM通信(5985,5986) Node登録:bootstrap
  9. 9. ⇒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 Winnode 3 Disk/Mem/CPU 20GB/1028/1core 20GB/1028/1co re 60GB/2048/2core 4 用途 ChefServer WorkStation ChefNode Apache Web ChefNode DHCPServer 5 通信ポート 22,80,443,5985,5 986 22 5985,5986 6 名前解決 Server/Client Server/Client Server/Client 7 時刻同期 Osaka,Japan Osaka,Japan Japan/Osaka 8 構成 ChefServer(11.16.4 ) ChefClient(11.0.8) ChefClient(11.1. 8) Apache(2.0) ChefClient(11.1.8)
  10. 10. 導入パッケージ(ソフトウェア) ⇒Client導入に関してはServerより「bootstrap」を使用してインストールを行う。 ⇒WindowsNodeに対して扱うCookBookに関しては外部サイトよりダウンロードして使用。 No パッケージ名 用途 備考 1 chef-server-11.0.8- 1.el6.x86_64.rpm Chefのサーバパッケー ジ ・Chefのサイトより DL ・Server側にインス トール 2 chef-11.16.4-1.el6.x86_64.rpm Chefのパッケージ (Knife) ・Chefのサイトより DL ・Server側にインス トール 3 Chef-repo Cookbook ・SuperMarketより DL 4 windows Windows用Cookbook ・SuperMarketより DL 5 chef_handler Reboot用CookBook ・SuperMarketより DL
  11. 11. 環境はわかったけど、入れ方わからん。。。 :環境構築手順 :Chefを使うためのディレクトリ構成 3.環境構築
  12. 12. 環境構築手順 ⇒Windowsも管理対象Nodeの場合、Nodeに対しても設定を行う必要がある。 No 項目 実行サーバ コマンドライン 1 時刻同期 Server/Client ntpd -q 2 名前解決 Server/Client vi /etc/hosts 3 ポート解放 Server/Client vi /etc/sysconfig/iptables 4 サーバインストール Server rpm -ivh <Serverパッケージ> 5 Server設定、鍵の作成 Server chef-server-ctl reconfigure 6 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 -i 9 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-ExecutionPolicy bypass 12 WinRm設定 WinNode Enable-PSRemoting -force 13 Set-Item -Path "WSMan:localhostMaxTimeoutms" 1800000 14 Set-Item -Path "WSMan:localhostServiceAllowUnencrypted" "true" 15 set-Item -Path "WSMan:localhostServiceAuthBasic" "true" 16 Node追加 Server knife bootstrap <host> --ssh-user root --node-name <node> knife bootstrap windows winrm <host> -x "<user>" -P
  13. 13. Chefを使うためのディレクトリ構成 ⇒実行するRecipeを格納するディレクトリの一覧を記載する。(一部ダウンロード) No ディレクトリ構造 作成方法 用途 1 Cookbook ダウンロード CookBook格納ディレクトリ。ダウンロードしコピー 2 apache 作成 (Apache) Cookbook 3 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) 配布ファイル
  14. 14. さぁ!自動化!! :Chef-Repo、CooKbook格納 :Recipe作成 -Windows&Linux- :Recipe実行 4.自動化作業
  15. 15. ◆1「WinZip」等でServerに「Chef-Repo」を格納する。 Chef-Repo、CooKbook格納 ⇒追加したNodeに対してCookBook格納ディレクトリを配置する ⇒「Chef-Repo」「windows」「chef-handler」に関しては事前に外部サイトよりダウンロード。 [root@chef_server work]# ls -la chef-repo LICENSE README.md chefignore cookbooks data_bags environments roles [root@chef_server work]# ls -la chef-repo/cookbooks READ.ME ◆2「Windows」「Chef-Handler」を「CookBook」に丸ごとコピー [root@chef_server work]# ls -la chef-repo/cookbooks READ.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 ------------------------------------------------------------------------ ------------------------------------------------------------------------ ------------------------------------------------------------------------
  16. 16. 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/default httpd_conf sample.html ◆5「Cookbooks/apache/recipes/default.rb」編集する。 ※ファイル内容は「別紙:apache:default.rb」にて記載。 ※ファイル内容は「別紙:apachefile」にて記載。 ◆6Windows用「7zipインストールファイル」を「Cookbook/win_opration/files/default」に格納する。 [root@chef_server work]# ls -la chef-repo/win_operation/files/default 7z1514-x64.msi(インストールする対象のファイルを格納すること) ------------------------------------------------------------------------ ------------------------------------------------------------------------ ------------------------------------------------------------------------
  17. 17. 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/recipes Default.rb 01_FileTransfer.rb 02_install.rb 03_Fiuture.rb 04_service.rb 05_reboot.rb ↑赤文字記載ファイルを作成する。 ◆8「◆7」で作成したファイルをそれぞれ編集する。 ※ファイル内容は「別紙:apache:default.rb」にて記載。 ◆9Recipe実行のリスト(Run_list)を以下のコマンドを実行し作成する [root@chef_server work]# knife role create sample -e vi “recipe[01_FileTransfer]”, “<recipe>” ------------------------------------------------------------------------ ------------------------------------------------------------------------ ------------------------------------------------------------------------
  18. 18. 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 ------------------------------------------------------------------------ ------------------------------------------------------------------------ ------------------------------------------------------------------------ ------------------------------------------------------------------------
  19. 19. 別紙.apache –default.rb- ⇒Default.rbだけでApacheのインストールと設定を行っている。 ⇒Default.rbのリネームを行うと実行時のRecipeもリネームする必要がある package “httpd” do action :install end cookbook_file "/etc/httpd/conf/httpd.conf" do source "httpd.conf" owner 'root' group 'root' mode 00644 end directory "/var/www/html/sample" do owner "apache" group "apache" mode 00755 action :create end cookbook_file "/var/www/html/sample/sample.html" do source "sample.html" owner 'root' group 'root' mode 00644 end service "httpd" do action [ :enable, :start ] end Service:HTTPDインストール HTTPD.CONFの設定 ※httpd_confは作成して files/defaultに格納 サンプルページ用ディレクトリの作 成 サンプルページ用ファイルの展開 httpdServiceの起動設定
  20. 20. 別紙.Win_operations windows_feature 'DHCPServer' do action :install end include_recipe ‘windows::reboot_handler’ // include_recipe で 外部レシピの実行 windows_reboot 30 do // WindowsRebootのリソース reason ‘only win restart’ // action :nothing // Rebootはアクションの後に呼び出す end log 'Mack ChefRecipe' do message ‘Make ChefRecipe!!’ // ログを吐き出すリソース notifies :request, ‘windows_reboot[30]} // 再起動リソースを実行 end ⇒RolesにRun_listを登録し01~05のRecipeをシーケンシャルに実行している cookbook_file 'C:work7z1514-x64.msi' do mode 00644 end windows_package '7zip' do source 'C:/work/7z1514-x64.msi' action :install end service "SNMPTRAP" do action :start end service "msiserver" do action :start end
  21. 21. 別紙.apachfile設定/role(run_list) ⇒Chefで転送するapacheの設定ファイルの内容を下記に記載。 ⇒/files/defaultにおいてあるファイルが転送される ⇒roleのRun_listに記載することで単体で作成されたResipeを連続して起動させている Listen 80 ServerRoot "/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
  22. 22. お疲れ様でした。 :最終的に。。。 ⇒自己責任で。。。

×