GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS7にChefワークステーション/サーバー/ノードをインストールする方法

Chefは、インフラストラクチャを構成および管理する自動化プラットフォームです。インフラストラクチャをコードに変換します。これはRubyベースの構成管理ツールです。この自動化プラットフォームは、Chefワークステーション、Chefサーバー、およびChefサーバーによって管理されるノードであるChefクライアントで構成されます。すべてのChef構成ファイル、レシピ、クックブック、テンプレートなどは、Chefワークステーションで作成およびテストされ、Chefサーバーにアップロードされます。その後、組織内に登録されているすべての可能なノードにこれらを配布します。これは、CephおよびOpenStackにとって理想的な自動化フレームワークです。完全に制御できるだけでなく、操作も非常に簡単です。

この記事では、CentOS7サーバーにChef自動化環境を実装するために実行した手順について説明します。

前提条件

  • FQDNホスト名を使用することをお勧めします
  • Chefは64ビットアーキテクチャのみをサポートします
  • 適切なネットワーク/ファイアウォール/ホスト構成をお勧めします

Chefの仕組みは?

Chefは、レシピとクックブックを開発するように構成されたワークステーションで構成されています。また、ナイフを実行し、chef-repoと同期して最新の状態に保つように構成されています。これは、役割と環境の定義や重要なデータがデータバッグに保存されていることの確認など、組織のポリシーの構成に役立ちます。これらのレシピ/クックブックがワークステーションでテストされたら、Chefサーバーにアップロードできます。 Chefサーバーはこれらのレシピを保存し、要件に応じてノードに割り当てます。基本的に、ノードはシェフサーバーとのみ通信し、そこから指示とレシピを受け取ります。

デモのセットアップでは、3台のサーバーがあります。

  1. chefserver.test20.com-Chefサーバー
  2. chefwork.test20.com-シェフワークステーション
  3. chefnode.test20.com-Chefノード

ワークステーションの構築から始めましょう。

ワークステーションのセットアップ

まず、サーバーにログインします chefwork 次に、Chef開発パッケージをダウンロードします。パッケージがダウンロードされたら、rpmコマンドを使用してパッケージをインストールできます。

root@chefwork ~]# wget https://packages.chef.io/stable/el/7/chefdk-0.14.25-1.el7.x86_64.rpm
--2016-05-20 03:47:31-- https://packages.chef.io/stable/el/7/chefdk-0.14.25-1.el7.x86_64.rpm
Resolving packages.chef.io (packages.chef.io)... 75.126.118.188, 108.168.243.150
Connecting to packages.chef.io (packages.chef.io)|75.126.118.188|:443... connected.
HTTP request sent, awaiting response... 302
Location: https://akamai.bintray.com/87/879656c7736ef2a061937c1f45c623e99fd57aaa2f6d802e9799d333d7e5342f?__gda__=exp=1463716772~hmac=ef9ce287129ab2f035449b76a1adc32b7bf8cae37f018f59da5a642d3e2650fc&response-content-disposition=attachment%3Bfilename%3D%22chefdk-0.14.25-1.el7.x86_64.rpm%22&response-content-type=application%2Foctet-stream [following]
--2016-05-20 03:47:32-- https://akamai.bintray.com/87/879656c7736ef2a061937c1f45c623e99fd57aaa2f6d802e9799d333d7e5342f?__gda__=exp=1463716772~hmac=ef9ce287129ab2f035449b76a1adc32b7bf8cae37f018f59da5a642d3e2650fc&response-content-disposition=attachment%3Bfilename%3D%22chefdk-0.14.25-1.el7.x86_64.rpm%22&response-content-type=application%2Foctet-stream
Resolving akamai.bintray.com (akamai.bintray.com)... 104.123.250.232
Connecting to akamai.bintray.com (akamai.bintray.com)|104.123.250.232|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 143927478 (137M) [application/octet-stream]
Saving to: ‘chefdk-0.14.25-1.el7.x86_64.rpm’

100%[====================================================================================================>] 14,39,27,478 2.52MB/s in 55s

2016-05-20 03:48:29 (2.49 MB/s) - ‘chefdk-0.14.25-1.el7.x86_64.rpm’ saved [143927478/143927478]

[root@chefwork ~]# rpm -ivh chefdk-0.14.25-1.el7.x86_64.rpm
warning: chefdk-0.14.25-1.el7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:chefdk-0.14.25-1.el7 ################################# [100%]
Thank you for installing Chef Development Kit!

ChefDKとは何ですか?

Chef開発キットには、コード管理に不可欠なツールとともに、Chefから始まるすべてのものが含まれています。

  • 新しいコマンドラインツール「chef」が含まれています
  • クックブック依存関係マネージャーBerkshelf
  • TestKitchen統合テストフレームワーク。
  • クックブック構文をテストするためのChefSpec
  • Foodcritic、クックブックで静的コード分析を行うためのツール。
  • Chef Client、Knife、Ohai、ChefZeroなどのすべてのChefツールもあります

ワークステーションでいくつかのレシピを作成することから始めて、ローカルでテストして機能することを確認しましょう。

/ root /にchef-repoという名前のフォルダーを作成し、そのフォルダー内にレシピを作成できます。

[root@chefwork ~]# mkdir chef-repo
[root@chefwork ~]# cd chef-repo

Creating a recipe called hello.rb.
[root@chefwork chef-repo]# vim hello.rb
[root@chefwork chef-repo]#
[root@chefwork chef-repo]# cat hello.rb
file '/etc/motd' do
content 'Welcome to Chef'
end

このレシピhello.rbは、 / etc / motdという名前のファイルを作成します コンテンツ付き「WelcometoChef」。 このレシピは、リソースファイルを利用してこのタスクを強化します。 これで、このレシピを実行して、その動作を確認できます。

[root@chefwork chef-repo]# chef-apply hello.rb
Recipe: (chef-apply cookbook)::(chef-apply recipe)
* file[/etc/motd] action create (up to date)

Confirm the recipe execution:

[root@chefwork chef-repo]# cat /etc/motd
Welcome to Chef

ファイルの削除

レシピファイルを変更して、作成したファイルを削除し、以下のようにコマンドchef-applyを使用して実行できます。

[root@chefwork chef-repo]# cat hello.rb
file '/etc/motd' do
action :delete
end

[root@chefwork chef-repo]# chef-apply hello.rb
Recipe: (chef-apply cookbook)::(chef-apply recipe)
* file[/etc/motd] action delete
- delete file /etc/motd

パッケージのインストール

サーバーにhttpdパッケージをインストールし、index.htmlファイルをデフォルトのドキュメントルートにコピーしてインストールを確認するようにレシピファイルを変更しています。パッケージとサービスリソースは、これを実装するために使用されます。パッケージリソースのデフォルトのアクションはインストールであるため、そのアクションを個別に指定する必要はありません。

[root@chefwork chef-conf]# cat hello.rb
package 'httpd'
service 'httpd' do
action [:enable, :start]
end

file '/var/www/html/index.html' do
content 'Welcome to Apache in Chef'
end
[root@chefwork chef-conf]# chef-apply hello.rb
Recipe: (chef-apply cookbook)::(chef-apply recipe)
* yum_package[httpd] action install
 - install version 2.4.6-40.el7.centos.1 of package httpd
 * service[httpd] action enable
 - enable service service[httpd]
 * service[httpd] action start
 - start service service[httpd]
 * file[/var/www/html/index.html] action create (up to date)

コマンドの実行により、レシピ内の各インスタンスが明確に記述されます。 Apacheパッケージをインストールし、サーバー上でhttpdサービスを有効にして開始します。また、デフォルトのドキュメントルートに「WelcometoApacheinChef」というコンテンツのindex.htmlファイルを作成します。したがって、ブラウザでサーバーIPを実行することで確認できます。

クックブックの作成

これで、最初のクックブックを作成し、/ rootディレクトリの下にchef-repoというフォルダを作成し、コマンド「chef generateCookbook[クックブック名​​]」を実行してクックブックを生成できます。

root@chefwork chef-repo]# mkdir cookbooks
[root@chefwork chef-repo]# cd cookbooks/
[root@chefwork cookbooks]# chef generate cookbook httpd_deploy
Installing Cookbook Gems:
Compiling Cookbooks...
Recipe: code_generator::cookbook
* directory[/root/chef-repo/cookbook/httpd_deploy] action create
- create new directory /root/chef-repo/cookbook/httpd_deploy

これは、作成されたクックブックのファイル構造です。クックブック内でのこれらのファイル/フォルダーの使用法を1つずつ見ていきましょう。

Berksfile :これは構成ファイルであり、主にBerkShelfにクックブックの依存関係を通知します。これは、このファイル内で直接指定することも、metadata.rbを介して間接的に指定することもできます。また、これらの依存関係を探す場所をBerkshelfに指示します。

シェフニョーレ :クックブックをChefサーバーにアップロードするときに無視する必要があるすべてのファイルをChefに通知します。

metadata.rb :名前、連絡先、説明など、クックブックに関するメタ情報が含まれています。クックブックの依存関係を示すこともできます。

README.md :リポジトリのドキュメントエントリポイントが含まれています。

レシピ :クックブックのレシピが含まれています。 default.rbファイルの実行から始まります。

default.rb :デフォルトのレシピ形式。

仕様 :ライブラリの単体テストケースが保存されます。

テスト :レシピの単体テストケースが保存されます。

テンプレートの作成

次に、自分用のテンプレートファイルを作成します。以前、いくつかの内容を含むファイルを作成しましたが、それはレシピやクックブックの構造に適合しません。では、テンプレートを作成する方法を見てみましょう。

[root@chefwork cookbook]# chef generate template httpd_deploy index.html
Installing Cookbook Gems:
Compiling Cookbooks...
Recipe: code_generator::template
* directory[./httpd_deploy/templates/default] action create
- create new directory ./httpd_deploy/templates/default
* template[./httpd_deploy/templates/default/index.html.erb] action create
- create new file ./httpd_deploy/templates/default/index.html.erb
- update content in file ./httpd_deploy/templates/default/index.html.erb from none to e3b0c4
(diff output suppressed by config)

クックブックのファイル構造を見ると、 index.html.erbの名前テンプレートで作成されたフォルダーがあります。 ファイル。 index.html.erbテンプレートファイルを編集して、以下のようにレシピに追加できます。

root@chefwork default]# cat index.html.erb
Welcome to Chef Apache Deployment
[root@chefwork default]# pwd
/root/chef-repo/cookbook/httpd_deploy/templates/default

このテンプレートを使用してレシピを作成する

[root@chefwork recipes]# pwd
/root/chef-repo/cookbook/httpd_deploy/recipes
[root@chefwork recipes]# cat default.rb
#
# Cookbook Name:: httpd_deploy
# Recipe:: default
#
# Copyright (c) 2016 The Authors, All Rights Reserved.
package 'httpd'
service 'httpd' do
action [:enable, :start]
end

template '/var/www/html/index.html' do
 source 'index.html.erb'
end

次に、chef-repoフォルダーに戻り、ワークステーションでレシピを実行/テストします。

[root@chefwork chef-repo]# chef-client --local-mode --runlist 'recipe[httpd_deploy]'
[2016-05-20T05:44:40+00:00] WARN: No config file found or specified on command line, using command line options.
Starting Chef Client, version 12.10.24
resolving cookbooks for run list: ["httpd_deploy"]
Synchronizing Cookbooks:
- httpd_deploy (0.1.0)
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 3 resources
Recipe: httpd_deploy::default
* yum_package[httpd] action install
 - install version 2.4.6-40.el7.centos.1 of package httpd
 * service[httpd] action enable
 - enable service service[httpd]
 * service[httpd] action start
 - start service service[httpd]
* template[/var/www/html/index.html] action create
 - update content in file /var/www/html/index.html from 152204 to 748cbd
 --- /var/www/html/index.html 2016-05-20 04:18:38.553231745 +0000
 +++ /var/www/html/.chef-index.html20160520-20425-1bez4qs 2016-05-20 05:44:47.344848833 +0000
 @@ -1,2 +1,2 @@
 -Welcome to Apache in Chef
 +Welcome to Chef Apache Deployment

Running handlers:
Running handlers complete
Chef Client finished, 4/4 resources updated in 06 seconds

[root@chefwork chef-repo]# cat /var/www/html/index.html
Welcome to Chef Apache Deployment

私たちのレシピによると、Apacheはワークステーションにインストールされ、サービスが開始され、起動時に有効になります。また、デフォルトのドキュメントルートにテンプレートファイルが作成されています。

これで、ワークステーションをテストしました。 Chefサーバーのセットアップの時間です。

Chefサーバーのセットアップ

まず、Chefサーバー「chefserver.test20.com」にログインし、OSバージョンと互換性のあるchefサーバーパッケージをダウンロードします。

[root@chefserver ~]# wget https://packages.chef.io/stable/el/7/chef-server-core-12.6.0-1.el7.x86_64.rpm
--2016-05-20 07:23:46-- https://packages.chef.io/stable/el/7/chef-server-core-12.6.0-1.el7.x86_64.rpm
Resolving packages.chef.io (packages.chef.io)... 75.126.118.188, 108.168.243.150
Connecting to packages.chef.io (packages.chef.io)|75.126.118.188|:443... connected.
HTTP request sent, awaiting response... 302
Location: https://akamai.bintray.com/5a/5a36d0ffa692bf788e90315171582a758d4c5d8033a892dca9a81d3c03c44d14?__gda__=exp=1463729747~hmac=86e28bf2d5197154c84b571330b4c897006c2cb7f14cc9fc386c62d8b6e34c2d&response-content-disposition=attachment%3Bfilename%3D%22chef-server-core-12.6.0-1.el7.x86_64.rpm%22&response-content-type=application%2Foctet-stream [following]
--2016-05-20 07:23:47-- https://akamai.bintray.com/5a/5a36d0ffa692bf788e90315171582a758d4c5d8033a892dca9a81d3c03c44d14?__gda__=exp=1463729747~hmac=86e28bf2d5197154c84b571330b4c897006c2cb7f14cc9fc386c62d8b6e34c2d&response-content-disposition=attachment%3Bfilename%3D%22chef-server-core-12.6.0-1.el7.x86_64.rpm%22&response-content-type=application%2Foctet-stream
Resolving akamai.bintray.com (akamai.bintray.com)... 23.15.249.68
Connecting to akamai.bintray.com (akamai.bintray.com)|23.15.249.68|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 481817688 (459M) [application/octet-stream]
Saving to: ‘chef-server-core-12.6.0-1.el7.x86_64.rpm’

100%[====================================================================================================>] 48,18,17,688 2.90MB/s in 3m 53s

[root@chefserver ~]# rpm -ivh chef-server-core-12.6.0-1.el7.x86_64.rpm
warning: chef-server-core-12.6.0-1.el7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:chef-server-core-12.6.0-1.el7 ################################# [100%]

これで、Chefサーバーがインストールされました。ただし、Chefサーバーで構成されるすべてのサービスを有効にして開始するには、Chefサーバーを再構成する必要があります。このコマンドを実行して再構成できます。

root@chefserver ~]# chef-server-ctl reconfigure
Starting Chef Client, version 12.10.26
resolving cookbooks for run list: ["private-chef::default"]
Synchronizing Cookbooks:
- enterprise (0.10.0)
- apt (2.9.2)
- yum (3.10.0)
- openssl (4.4.0)
- chef-sugar (3.3.0)
- packagecloud (0.0.18)
- runit (1.6.0)
- private-chef (0.1.0)
Installing Cookbook Gems:
Compiling Cookbooks...
[2016-05-19T02:38:37+00:00] WARN: Chef::Provider::AptRepository already exists! Cannot create deprecation class for LWRP provider apt_repository from cookbook apt
Chef Client finished, 394/459 resources updated in 04 minutes 05 seconds
Chef Server Reconfigured!

このコマンドを実行して、サービスステータスとそのpidを確認してください。

[root@chefserver ~]# chef-server-ctl status
run: bookshelf: (pid 6140) 162s; run: log: (pid 6156) 162s
run: nginx: (pid 6051) 165s; run: log: (pid 6295) 156s
run: oc_bifrost: (pid 5987) 167s; run: log: (pid 6022) 167s
run: oc_id: (pid 6038) 165s; run: log: (pid 6042) 165s
run: opscode-erchef: (pid 6226) 159s; run: log: (pid 6214) 161s
run: opscode-expander: (pid 6102) 162s; run: log: (pid 6133) 162s
run: opscode-solr4: (pid 6067) 164s; run: log: (pid 6095) 163s
run: postgresql: (pid 5918) 168s; run: log: (pid 5960) 168s
run: rabbitmq: (pid 5876) 168s; run: log: (pid 5869) 169s
run: redis_lb: (pid 5795) 290s; run: log: (pid 6280) 156s

やあ! Chefサーバーの準備ができました:)。これで、管理コンソールをインストールして、Chefサーバーを管理するためのWebインターフェイスを取得できます。

Chefサーバー用の管理コンソールのインストール

このコマンド「chef-server-ctlinstallchef-manag 」を実行するだけで、管理コンソールをインストールできます。 シェフサーバーからのe"。

[root@chefserver ~]# chef-server-ctl install chef-manage
Starting Chef Client, version 12.10.26
resolving cookbooks for run list: ["private-chef::add_ons_wrapper"]
Synchronizing Cookbooks:
- enterprise (0.10.0)
- apt (2.9.2)
- yum (3.10.0)
- openssl (4.4.0)
- runit (1.6.0)
- chef-sugar (3.3.0)
- packagecloud (0.0.18)
- private-chef (0.1.0)
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 4 resources
Recipe: private-chef::add_ons_wrapper
* ruby_block[addon_install_notification_chef-manage] action nothing (skipped due to action :nothing)
* remote_file[/var/opt/opscode/local-mode-cache/chef-manage-2.3.0-1.el7.x86_64.rpm] action create
- create new file /var/opt/opscode/local-mode-cache/chef-manage-2.3.0-1.el7.x86_64.rpm
- update content in file /var/opt/opscode/local-mode-cache/chef-manage-2.3.0-1.el7.x86_64.rpm from none to 098cc4
(file sizes exceed 10000000 bytes, diff output suppressed)
* ruby_block[locate_addon_package_chef-manage] action run
- execute the ruby block locate_addon_package_chef-manage
* yum_package[chef-manage] action install
- install version 2.3.0-1.el7 of package chef-manage
* ruby_block[addon_install_notification_chef-manage] action create
- execute the ruby block addon_install_notification_chef-manage

Running handlers:
-- Installed Add-On Package: chef-manage
- #<Class:0x00000006032b80>::AddonInstallHandler
Running handlers complete
Chef Client finished, 4/5 resources updated in 02 minutes 39 seconds

管理コンソールをインストールした後、chefサーバーを再構成して、chefサーバーとそのサービスを再起動し、これらの変更を更新する必要があります。

[root@chefserver ~]# opscode-manage-ctl reconfigure
To use this software, you must agree to the terms of the software license agreement.
Press any key to continue.
Type 'yes' to accept the software license agreement, or anything else to cancel.
yes
Starting Chef Client, version 12.4.1
resolving cookbooks for run list: ["omnibus-chef-manage::default"]
Synchronizing Cookbooks:
- omnibus-chef-manage
- chef-server-ingredient
- enterprise
Recipe: omnibus-chef-manage::default
* private_chef_addon[chef-manage] action create (up to date)
Recipe: omnibus-chef-manage::config
Running handlers:
Running handlers complete
Chef Client finished, 62/79 resources updated in 44.764229437 seconds
chef-manage Reconfigured!

[root@chefserver ~]# chef-server-ctl reconfigure

管理コンソールの準備ができたので、ChefServerを管理するための管理者ユーザーを設定する必要があります。

管理者ユーザー/組織の作成

chefサーバー上に組織linoxを使用してchefadminという名前の管理者ユーザーを作成して管理しました。 chefコマンドchef-server-ctluser-createを使用してユーザーを作成できます コマンドchef-server-ctlorg-createを使用した編成。

root@chefserver ~]# chef-server-ctl user-create chefadmin saheetha shameer [email protected] 'chef123' --filename /root/.chef/chefadmin.pem
[root@chefserver ~]#

[root@chefserver .chef]# chef-server-ctl org-create linox Chef Linoxide --association_user chefadmin --filename /root/.chef/linoxvalidator.pem

キーは/root/.chefフォルダー内に保存されます。 Chefサーバーとワークステーション間の通信を開始するには、これらのキーをChefサーバーからワークステーションにコピーする必要があります。

キーのコピー

サーバー間の接続を強化するために、ユーザーキーとバリデーターキーをChefサーバーからワークステーションにコピーしています。

[root@chefserver .chef]# scp chefadmin.pem [email protected]:/root/chef-repo/.chef/
The authenticity of host '139.162.35.39 (139.162.35.39)' can't be established.
ECDSA key fingerprint is 5b:0b:07:85:9a:fb:b6:59:51:07:7f:14:1b:07:07:f0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '139.162.35.39' (ECDSA) to the list of known hosts.
[email protected]'s password:
chefadmin.pem 100% 1678 1.6KB/s 00:00
[root@chefserver .chef]#

[root@chefserver .chef]# scp linoxvalidator.pem [email protected]:/root/chef-repo/.chef/
The authenticity of host '139.162.35.39 (139.162.35.39)' can't be established.
ECDSA key fingerprint is 5b:0b:07:85:9a:fb:b6:59:51:07:7f:14:1b:07:07:f0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '139.162.35.39' (ECDSA) to the list of known hosts.
[email protected]'s password:
linoxvalidator.pem 100% 1678 1.6KB/s 00:00
[root@chefserver .chef]#

Now login to our Management console for our Chef server with the user/password  "chefadmin" created.

サインアップのパネルから組織を作成するように求められます。別のものを作成するだけです。

WorkStation用スターターキットをダウンロード

組織のいずれかを選択し、ChefServerからワークステーションにスターターキットをダウンロードします。

このキットをダウンロードした後。それをWorkstation/rootフォルダーに移動して解凍します。これにより、Chefサーバーで起動するためのデフォルトのスターターキットが提供されます。シェフレポが含まれています。

root@chefwork ~]# ls
chef-starter.zip hello.rb
[root@chefwork~]# unzip chef-starter.zip
Archive: chef-starter.zip
creating: chef-repo/cookbooks/
creating: chef-repo/cookbooks/starter/
creating: chef-repo/cookbooks/starter/recipes/
inflating: chef-repo/cookbooks/starter/recipes/default.rb
creating: chef-repo/cookbooks/starter/files/
creating: chef-repo/cookbooks/starter/files/default/
inflating: chef-repo/cookbooks/starter/files/default/sample.txt
creating: chef-repo/cookbooks/starter/templates/
creating: chef-repo/cookbooks/starter/templates/default/
inflating: chef-repo/cookbooks/starter/templates/default/sample.erb
inflating: chef-repo/cookbooks/starter/metadata.rb
creating: chef-repo/cookbooks/starter/attributes/
inflating: chef-repo/cookbooks/starter/attributes/default.rb
inflating: chef-repo/cookbooks/chefignore
inflating: chef-repo/README.md
inflating: chef-repo/.gitignore
creating: chef-repo/.chef/
creating: chef-repo/roles/
inflating: chef-repo/.chef/knife.rb
inflating: chef-repo/roles/starter.rb
inflating: chef-repo/.chef/chefadmin.pem
inflating: chef-repo/.chef/ln_blog-validator.pem

これは、ダウンロードされたChefリポジトリのファイル構造です。最初に必要なすべてのファイル構造が含まれています。

クックブックスーパーマーケット

シェフのクックブックはクックブックスーパーマーケットで入手できます。ここからシェフのスーパーマーケットに行くことができます。そこから必要なクックブックをダウンロードします。そこからApacheをインストールするためのクックブックの1つをダウンロードしています。

root@chefwork chef-repo]# knife cookbook site download learn_chef_httpd
Downloading learn_chef_httpd from Supermarket at version 0.2.0 to /root/chef-repo/learn_chef_httpd-0.2.0.tar.gz
Cookbook saved: /root/chef-repo/learn_chef_httpd-0.2.0.tar.gz

Extract this cookbook inside the "cookbooks" folder.

[root@chefwork chef-repo]# tar -xvf learn_chef_httpd-0.2.0.tar.gz

必要なすべてのファイルは、このクックブックの下に自動的に作成されます。変更する必要はありませんでした。レシピフォルダ内のレシピの説明を確認しましょう。

[root@chefwork recipes]# cat default.rb
#
# Cookbook Name:: learn_chef_httpd
# Recipe:: default
#
# Copyright (C) 2014
#
#
#
package 'httpd'

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

template '/var/www/html/index.html' do
 source 'index.html.erb'
end

service 'iptables' do
 action :stop
end
[root@chefwork recipes]#
[root@chefwork recipes]# pwd
/root/chef-repo/cookbooks/learn_chef_httpd/recipes
[root@chefwork recipes]#

したがって、このクックブックは完璧に見えるので、Chefサーバーにアップロードする必要があります。

サーバーとワークステーション間の接続の検証

クックブックをアップロードする前に、Chefサーバーとワークステーション間の接続を確認して確認する必要があります。まず、適切なナイフ構成ファイルがあることを確認してください。

[root@chefwork .chef]# cat knife.rb
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
node_name "chefadmin"
client_key "#{current_dir}/chefadmin.pem"
validation_client_name "linox-validator"
validation_key "#{current_dir}/linox-validator.pem"
chef_server_url "https://chefserver.test20.com:443/organizations/linox"

cookbook_path ["#{current_dir}/../cookbooks"]

この構成ファイルは、 /root/chef-repo/.chefにあります。 フォルダ。強調表示されている部分は、注意すべき主なものです。これで、このコマンドを実行して接続を確認できます。

root@chefwork .chef]# knife client list
ERROR: SSL Validation failure connecting to host: chefserver.test20.com - SSL_connect returned=1 errno=0 state=error: certificate verify failed
ERROR: Could not establish a secure connection to the server.
Use `knife ssl check` to troubleshoot your SSL configuration.
If your Chef Server uses a self-signed certificate, you can use
`knife ssl fetch` to make knife trust the server's certificates.

Original Exception: OpenSSL::SSL::SSLError: SSL Error connecting to https://chefserver.test20.com/clients - SSL_connect returned=1 errno=0 state=error: certificate verify failed

SSLエラーレポートを確認できます。このエラーを修正するには、Chef ServerのSSL証明書を取得し、それを/root/.chef/trusted_certsフォルダーに保存する必要があります。このコマンドを実行することでこれを行うことができます。

root@chefwork .chef]# knife ssl fetch
WARNING: Certificates from chefserver.test20.com will be fetched and placed in your trusted_cert
directory (/root/chef-repo/.chef/trusted_certs).

Knife has no means to verify these are the correct certificates. You should
verify the authenticity of these certificates after downloading.

Adding certificate for chefserver.test20.com in /root/chef-repo/.chef/trusted_certs/chefserver_test20_com.crt

Verifying the SSL:

[root@chefwork .chef]# knife ssl check
Connecting to host chefserver.test20.com:443
Successfully verified certificates from `chefserver.test20.com'

[root@chefwork .chef]# knife client list
chefnode
linox-validator
[root@chefwork .chef]# knife user list
chefadmin

クックブックのアップロード

以下のようにknifeコマンドを使用して、ワークステーションからシェフサーバーにクックブックをアップロードできます。

#knifeクックブックアップロードlearn_chef_httpd

[root@chefwork cookbooks]# knife cookbook upload learn_chef_httpd
Uploading learn_chef_httpd [0.2.0]
Uploaded 1 cookbook.

ChefServer管理コンソールからクックブックを確認します。

ノードの追加

これは、Chef実装の最後のステップです。ワークステーションとChefサーバーをセットアップしました。次に、自動化のためにクライアントをChefサーバーに追加する必要があります。 シェフノードを追加します 以下のようにknifebootstrapコマンドを使用してサーバーに送信します。

[root@chefwork cookbooks]# knife bootstrap 45.33.76.60 --ssh-user root --ssh-password dkfue@321 --node-name chefnode
Creating new client for chefnode
Creating new node for chefnode
Connecting to 45.33.76.60
45.33.76.60 -----> Installing Chef Omnibus (-v 12)
45.33.76.60 downloading https://omnitruck-direct.chef.io/chef/install.sh
45.33.76.60 to file /tmp/install.sh.5457/install.sh
45.33.76.60 trying wget...
45.33.76.60 el 7 x86_64
45.33.76.60 Getting information for chef stable 12 for el...
45.33.76.60 downloading https://omnitruck-direct.chef.io/stable/chef/metadata?v=12&p=el&pv=7&m=x86_64
45.33.76.60 to file /tmp/install.sh.5466/metadata.txt
45.33.76.60 trying wget...
45.33.76.60 sha1 4def83368a1349959fdaf0633c4d288d5ae229ce
45.33.76.60 sha256 6f00c7bdf96a3fb09494e51cd44f4c2e5696accd356fc6dc1175d49ad06fa39f
45.33.76.60 url https://packages.chef.io/stable/el/7/chef-12.10.24-1.el7.x86_64.rpm
45.33.76.60 version 12.10.24
45.33.76.60 downloaded metadata file looks valid...
45.33.76.60 downloading https://packages.chef.io/stable/el/7/chef-12.10.24-1.el7.x86_64.rpm
45.33.76.60 to file /tmp/install.sh.5466/chef-12.10.24-1.el7.x86_64.rpm
45.33.76.60 trying wget...
45.33.76.60 Comparing checksum with sha256sum...
45.33.76.60 Installing chef 12
45.33.76.60 installing with rpm...
45.33.76.60 warning: /tmp/install.sh.5466/chef-12.10.24-1.el7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
45.33.76.60 Preparing... ################################# [100%]
45.33.76.60 Updating / installing...
45.33.76.60 1:chef-12.10.24-1.el7 ################################# [100%]
45.33.76.60 Thank you for installing Chef!
45.33.76.60 Starting the first Chef Client run...
45.33.76.60 Starting Chef Client, version 12.10.24
45.33.76.60 resolving cookbooks for run list: []
45.33.76.60 Synchronizing Cookbooks:
45.33.76.60 Installing Cookbook Gems:
45.33.76.60 Compiling Cookbooks...
45.33.76.60 [2016-05-20T15:36:41+00:00] WARN: Node chefnode has an empty run list.
45.33.76.60 Converging 0 resources
45.33.76.60
45.33.76.60 Running handlers:
45.33.76.60 Running handlers complete
45.33.76.60 Chef Client finished, 0/0 resources updated in 08 seconds
[root@chefwork chef-repo]#

このコマンドは、ChefノードでのChef-clientのインストールも初期化します。以下のknifeコマンドを使用して、ワークステーションのCLIから確認できます。

[root@chefwork chef-repo]# knife node list
chefnode

[root@chefwork chef-repo]# knife node show chefnode
Node Name: chefnode
Environment: _default
FQDN: chefnode.test20.com
IP: 45.33.76.60
Run List: recipe[learn_chef_httpd]
Roles: 
Recipes: 
Platform: centos 7.2.1511
Tags:

Verifying it from the Management console.

We can get more information regarding the added node by selecting the node and viewing the Attributes section.

Managing Node Run List

Let's see how we can add a cookbook to the node and manage its runlist from the Chef server. As you see in the screenshot, you can click the Actions tab and select the Edit Runlist option to manage the runlist.

In the Available Recipes, you can see our learn_chef_httpd recipe, you can drag that from the available packages to the current run list and save the runlist.

Now login to your node and just run the command chef-client to execute your runlist.

root@chefnode ~]# chef-client
Starting Chef Client, version 12.10.24
resolving cookbooks for run list: ["learn_chef_httpd"]
Synchronizing Cookbooks:
- learn_chef_httpd (0.2.0)
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 4 resources
Recipe: learn_chef_httpd::default
* yum_package[httpd] action install

Similarly, we can add any number of nodes to your Chef Server depending on its configuration and hardware. I hope this article provided you with the basic understanding of Chef implementation. I would recommend your valuable comments and suggestions on this. Thank you for reading this :)

Happy Automation with Chef!!


Cent OS
  1. RHEL 8 / CentOS8Linuxサーバー/ワークステーションにgitをインストールする方法

  2. CentOS7にMinecraftサーバーをインストールする方法

  3. CentOS8にTeamspeak3サーバーをインストールする方法

  1. CentOS8にNginxをインストールする方法

  2. CentOS8にPostgreSQLをインストールする方法

  3. CentOS8にMariaDBをインストールする方法

  1. CentOS7にFreeIPAサーバーをインストールする方法

  2. CentOS8にSambaサーバーをインストールする方法

  3. Centos7にCentreonをインストールする方法