クックブックは、Chef構成管理システムの重要なコンポーネントの1つです。これにより、リモートのChefノードで特殊なタスクを構成して実行(変更をプッシュ)できます。
このガイドでは、クックブックを作成してから、それらをプッシュするようにChefに指示します。つまり、クックブックで概説されている手順をノードに実行します。
このガイドは、サーバー、ワークステーション、および構成変更をプッシュするための少なくとも1つのノードを含むChef環境が機能していることを前提としています。
読む: CentOS 7 /RHEL7でChef12をセットアップする方法
クックブック:
Chef Cookbooksは、ノードを特定の状態にするための構成とポリシーの詳細を保持するユニットです。クックブックはワークステーションで作成され、Chefサーバーにアップロードされます。次に、クックブックがノード「run-list」に割り当てられます。これは、ノードを目的の状態にするためにノードで実行されるアクションの順次リストです。
シンプルなシェフクックブックを作成する:
この部分では、ApacheWebサーバーをインストールして構成するための簡単なクックブックを作成します。
読む: CentOS 7 /RHEL7でLAMPを構成する
Chefワークステーションにログインし、〜/ chef-repo / Cookbooksに移動します ディレクトリ。
cd ~/chef-repo/cookbooks/
「httpd」というクックブックを作成します 「。 「httpd」を置き換えます 「別の名前を付けたい場合は。
chef generate cookbook httpd
出力:
Generating cookbook httpd - Ensuring correct cookbook file content - Ensuring delivery configuration - Ensuring correct delivery build cookbook content Your cookbook is ready. Type `cd httpd` to enter it. There are several commands you can run to get started locally developing and testing your cookbook. Type `delivery local --help` to see a full list. Why not start by writing a test? Tests for the default recipe are stored at: test/recipes/default_test.rb If you'd prefer to dive right in, the default recipe can be found at: recipes/default.rb
新しく作成したクックブックのディレクトリ、つまり httpdに移動します 。
cd httpd
新しいクックブックのディレクトリに移動すると、以下のディレクトリ構造が表示されます。
出力:
-rw-r--r--. 1 root root 47 Nov 12 21:18 Berksfile -rw-r--r--. 1 root root 1133 Nov 12 21:18 chefignore -rw-r--r--. 1 root root 568 Nov 12 21:18 metadata.rb -rw-r--r--. 1 root root 53 Nov 12 21:18 README.md drwxr-xr-x. 2 root root 23 Nov 12 21:18 recipes drwxr-xr-x. 3 root root 38 Nov 12 21:18 spec drwxr-xr-x. 3 root root 20 Nov 12 21:18 test
レシピ:
レシピは、特定のサービスまたはアプリケーションの状態を定義する一連のリソースで構成されます。たとえば、あるリソースは「NTPサービスを実行する必要があります」、別のリソースは「telnetサービスを停止する必要があります」と言うことができます。
>レシピは、サービスを管理するためだけに限定されていません。コマンドの実行、ユーザー管理などにも使用できます。
読む:さまざまな種類のリソース。
レシピディレクトリに移動します。そこに「default.rb」というファイルがあります。 「。このファイルを使用して、Apacheサーバーを実行するために必要なリソースを追加します。
cd recipes cat default.rb
出力:
デフォルトでは、ファイルにはヘッダー行が含まれています。
# # Cookbook Name:: httpd # Recipe:: default # # Copyright (c) 2016 The Authors, All Rights Reserved.
Apacheのインストール:
まず、apacheパッケージをインストールするためのリソースを追加しましょう。
package 'httpd' do action :install end
どこで、
パッケージ –パッケージリソースを定義します
httpd –インストールするパッケージの名前は、正当なパッケージ名である必要があります。
アクション:インストール –これは、リソース「パッケージ」のアクションを指定します 「この場合、 httpdのインストール 。
このレシピがノードで実行されると、ChefはApacheがインストールされているかどうかを確認します。インストールされている場合は、このリソースをスキップして次のリソースに移動します。そうでない場合は、システムインストーラーを使用してApacheをインストールします。
Apacheサービスの管理:
次に、Apacheサービスをシステムの起動時に自動的に開始するようにします。また、サービスが稼働している必要があります。以下のコードは、必要なことを実行します。
service 'httpd' do action [ :enable, :start ] end
どこで、
サービス –サービスリソースを定義します。
httpd –サービスの名前は、正当なサービス名である必要があります。
アクション[:enable、:start] –実行するアクションを指定します。この場合、このリソースは「 httpd 」と入力して有効にします。
インデックスファイル:
次のリソースは、 index.htmlを配置するためのものです。 Apacheサーバーのドキュメントルート上のファイル。ファイルが必要な場所とファイルを取得する場所を指定する必要があるすべてです。
cookbook_file "/var/www/html/index.html" do source "index.html" mode "0644" end
どこで、
cockbook_file – httpd / filesのサブディレクトリからファイルを転送するためのリソース シェフノードにある前述のパスへ。
ソース –ソースファイルの名前を指定します。ファイルは通常、 COOK_BOOKS / filesにあります 。
モード –ファイルの権限を設定します。
インデックスファイルの作成:
「cookbook_file」を定義したので 」リソースの場合、ソースファイル「 index.html」を作成する必要があります 」ファイル内 クックブックのサブディレクトリ。
cd ~/chef-repo/cookbooks
サブディレクトリ「ファイル」を作成します クックブックの下にあります。
mkdir httpd/files
index.htmlに簡単なテキストを追加します 。
echo "Installed and Setup Using Chef" > httpd/files/index.html
ファイアウォール:
最後のリソースは、 httpを許可するようにファイアウォールを構成するためのものです。 およびhttps 外部マシンからのトラフィック。
execute 'httpd_firewall' do command '/usr/bin/firewall-cmd --permanent --zone public --add-service http' ignore_failure true end execute 'reload_firewall' do command '/usr/bin/firewall-cmd --reload' ignore_failure true end
どこで、
実行 –単一のコマンドを実行するためのリソース。
コマンド –ノードで実行する実際のコマンドを定義します。
ignore_failure –何らかの理由でリソースに障害が発生した場合でもレシピの実行を継続すると、システムでfirewallDが有効になっていない場合に役立ちます。
default.rbの最終バージョン 以下のようになります。
vi ~chef-repo/cookbooks/httpd/recpies/default.rb
出力:
# # Cookbook Name:: httpd # Recipe:: default # # Copyright (c) 2016 The Authors, All Rights Reserved. package 'httpd' do action :install end service 'httpd' do action [ :enable, :start ] end cookbook_file "/var/www/html/index.html" do source "index.html" mode "0644" end execute 'httpd_firewall' do command '/usr/bin/firewall-cmd --permanent --zone public --add-service http' ignore_failure true end execute 'reload_firewall' do command '/usr/bin/firewall-cmd --reload' ignore_failure true end
クックブックをアップロードする:
クックブックが完成したら、Chefサーバーにアップロードできます。
knife cookbook upload httpd
出力:
Uploading httpd [0.1.0] Uploaded 1 cookbook.
アップロードしたばかりのクックブックを一覧表示できるかどうかを確認してください。
knife cookbook list
出力:
httpd 0.1.0
クックブックを削除するには(オプション 。
knife cookbook delete cookbook_name
クックブックをノードに追加します:
クックブックをrun_listに追加できます 次のコマンドを使用して特定のノードの chefclient.itzgeek.localを置き換えます クライアントノード名を使用します。
knife node run_list add chefclient.itzgeek.local httpd
出力:
chefclient.itzgeek.local: run_list: recipe[httpd]
run_listから特定のレシピを削除するには(オプション 。
knife node run_list remove chefclient.itzgeek.local recipe[cookbook_name]
構成の取得:
Chefクライアントソフトウェアが実行されているクライアントノードにログインします。
読む:ナイフを使用した新しいノードのブートストラップ
chef-clientを実行します クライアントノードでコマンドを実行して、新しい run_listがないかChefサーバーに確認します。 それらのrun_listを実行します 割り当てられています。
chef-client
出力:
Starting Chef Client, version 12.16.42 resolving cookbooks for run list: ["httpd"] Synchronizing Cookbooks: - httpd (0.1.0) Installing Cookbook Gems: Compiling Cookbooks... Converging 5 resources Recipe: httpd::default * yum_package[httpd] action install - install version 2.4.6-40.el7.centos.4 of package httpd * service[httpd] action enable - enable service service[httpd] * service[httpd] action start - start service service[httpd] * cookbook_file[/var/www/html/index.html] action create (up to date) * execute[httpd_firewall] action run - execute /usr/bin/firewall-cmd --permanent --zone public --add-service http * execute[reload_firewall] action run - execute /usr/bin/firewall-cmd --reload Running handlers: Running handlers complete Chef Client finished, 5/6 resources updated in 24 seconds
これが機能することを確認するには、ウェブブラウザからノードのIPアドレスまたはドメイン名にアクセスします。
http:// your-ip-addr-ess /出力:
その他:
ユーザーを作成するためのシェフクックブック:
次のクックブックを使用して、新しいユーザーを作成できます。 緑を交換してください 環境に応じた値。
group "raj" do gid 9999 end user 'raj' do comment 'Admin [at] ITzGeek' uid '9999' gid '9999' manage_home true home '/home/raj' shell '/bin/bash' password '$6$89lC6OcN$xGO/4ia1j8YXY5TytLFccCjeITSCkgCgQbFMloF4O/kUWFOWhQBH5/BavEkvMj.0fuGx1pMxoUkKF6s9Tpnoj/' end
以上です。