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

CentOS/RHELインフラストラクチャを管理するためのシンプルなChefクックブックを作成する

クックブックは、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

以上です。


Cent OS
  1. CentOS / Fedora / RedHat(RHEL)のキックスタートファイルを作成する方法

  2. CentOS 6 /RHEL6でMonitを使用してサービスを監視および管理する

  3. CentOS 7 /RHEL7でネットワークブリッジを作成する方法

  1. CentOSとRHELにPartKeepr(在庫管理システム)をインストールする

  2. CentOS / RHEL :httpd で yum リポジトリを作成してホストする方法

  3. CentOS / RHEL で新しい /boot パーティションを作成する方法

  1. Centos /RHEL8でスワップパーティションを作成して有効にする方法

  2. CentOS/RHEL でネットワーク ブリッジを作成する方法

  3. CentOS/RHEL サーバーで SSH バナーを作成する方法