web-dev-qa-db-ja.com

シェフのクライアントとバリデーター

Chefクライアントとバリデーターの概念、およびそれらとブートストラッププロセスとの関係を理解し​​ようとしています。

この記事 によると、/etc/chef/validation.pemはまだ存在しないため、chef-clientは/etc/chef/client.pem秘密鍵を使用して最初の実行のために自身を認証します。この最初の実行は、どういうわけか、そのclient.pemを生成し、それはその後のすべてのクライアント要求に使用されます。

私の質問:

  1. そもそも、どのプロセスが/etc/chef/validation.pemファイルをchef-clientノードに配置しますか?ブートストラップ?誰かがこれを行うナイフコマンドの例を提供できますか?
  2. 同じ質問ですが、/etc/chef/client.pemファイルについてです。
  3. Chef-clientとそのchef-validatorの名前を決定するものは何ですか?
15
IAmYourFaja

更新された質問に答える

1)Validation.Pem(およびclient.rb)は、bootstrapプロセスの後に作成されます。これらのファイルを作成するには、以下に示すコマンド(knife configure client)を実行する必要があります。ファイルは〜/ .chefディレクトリに作成され、/ etc/chefに移動する必要があります

 knife configure client ~/.chef  
 Sudo su
 mkdir -p /etc/chef
cp ~/.chef/client.rb /etc/chef
cp ~/.chef/validation.pem /etc/chef

そして出力は

クライアント構成の作成client.rbの書き込みvalidation.pemの書き込み

2)Client.pemは、最初のchef-clientの実行時に作成されます。シェフのドキュメントからの抜粋

「最初のchef-clientの実行中、this(client.pem)秘密鍵は存在しません。代わりに、chef-clientは、/ etc/chef/validationにあるchef-validatorに割り当てられた秘密鍵を使用しようとします。 pem。(何らかの理由で、chef-validatorがChefサーバーに対して認証された要求を行うことができない場合、最初のchef-clientの実行は失敗します。)」

例えば、私は一般的に次のようにそれを行います。クライアントが(初めて)セットアップされ、以下のようにchef-clientコマンドを使用してそのノードでchefレシピを実行すると、client.pemが自動的に作成されます。

chef-client -o Cookbook_name::Recipe_Name

3)ホスト名を確認してくださいISこれを行う前に一意/正しい。Centosで、/ etc/sysconfig/networkファイルを変更し、/ etc/init.d/networkrestartを使用してすべてを再バインドします。

最初の質問に対する私の答えは、ここでの解決策です。コマンドの実行後(通常、このコマンドはブートストラップの後に実行されます)

knife configure client ~/.chef 

クライアントノードのホスト名は、chef-serverに自動的に作成されます。


最初と2番目の質問への回答(質問を編集する前)

1)次のリンクに表示されるものはすべて http://mychefserver.example.com/clients は、その特定のChef-Serverに登録されているノード(物理マシン)の送信です。 Chef-Clientは、chef-serverに登録されているすべてのノードのそれぞれで実行されるエージェントです。 Chef-clientは、対応するノードでレシピを実行するために使用されます。以下は、chefクライアントを使用してノードでchefレシピを実行する方法です。

chef-client -o Cookbook_name::Recipe_Name

すべてをまとめるクライアントは、chef-serverに接続されているノードのセットです。chef-clientは、すべてのノードで実行されているエージェントであり、ノードを目的の状態にするために、ノードをchef-serverに登録するために使用されます。 chef-clientには他にも多くの用途があります。詳細については、[Chef-Client] [1]のドキュメントページをご覧ください。

2)A bootstrapは、chef-clientをターゲットシステムにインストールして、chef-clientとして実行し、Chefサーバーと通信できるようにするプロセスです。

別の言い方をすれば、bootstrapプロセスは、ノード(ハー​​ドウェアマシン)にchef-clientをインストールし、そのノードをそのchef-serverのクライアントの1つにする方法です。 bootstrapプロセスが完了し、特定のノードがクライアントリストに表示されます

http://mychefserver.example.com/clients
13
sun_dare