序章

インフラストラクチャの要件が拡大するにつれて、各サーバーを手動で管理することはますます困難な作業になります。 この難しさは、再現性の要件によってさらに複雑になります。再現性は、ノードに障害が発生した場合、または水平スケーリングが必要な場合に必要になります。

構成管理ソリューションは、インフラストラクチャ管理をコードベースに変えることで、これらの問題に対処するように設計されています。 これらのツールを使用すると、多数のマシンで個々のタスクを実行する代わりに、各コンポーネントを接続し、構成をプルダウンして適用できる中央の場所に要件をコミットできます。

以前のガイドでは、Chefコンポーネントの一般的な構造と、管理者の目的を達成するためにそれらが相互作用する方法について、概念レベルで説明しました。 関連する用語について話し合い、各部分の責任について話し合いました。

このガイドでは、実際のソフトウェアをインストールします。 構成手順とノードプロファイリング情報を保存して提供する一元化されたChefサーバーをセットアップします。 また、管理者がコードベースを操作してインフラストラクチャの特性を変更できるワークステーションをセットアップします。 これをフォローアップするために、新しいノードをブートストラップして、Chefエコシステムの管理下に置きます。

前提条件と目標

このガイドでは、Chefのバージョン12を設定します。 構成はバージョン間で大幅に異なる可能性があるため、最良の結果を得るには、このガイドと同じメジャーバージョン番号内で操作していることを確認してください。

Chefのドキュメントには、Chefサーバーに少なくとも4つのコアと4GBのRAMが必要であると記載されています。 また、64ビットオペレーティングシステムが必要です。 このガイドでは、64ビットのUbuntu14.04で4コア/8GBのDigitalOceanドロップレットを使用します。

ワークステーションとノードの要件はほとんどありません。 一貫性を保つために、これらにもUbuntu14.04を使用します。

完了すると、構成データを保存して提供するための集中型Chefサーバーができます。 私たちのワークステーションは、変更を加え、それらをサーバーにアップロードし、新しいノードをブートストラップして管理するために使用されます。 ノードは、インフラストラクチャ内の単一のサーバーを表します。

Chefサーバーを構成する

まず、Chefサーバーをセットアップします。 Chefは、このサーバーに少なくとも4コアと4 GBのRAMを推奨しているため、それに応じて計画することを忘れないでください。

サーバーがホスト名でアクセス可能であることを確認します

Chefサーバーのインストールを計画しているサーバーにログインしたら、最初に実行する必要のあるタスクは、サーバーのホスト名が解決可能な完全修飾ドメイン名(FQDN)またはIPアドレスであることを確認することです。 次のように入力して、これを確認できます。

hostname -f

結果は、サーバーに到達できるアドレスになります。 そうでない場合は、次のファイルを編集して、サーバーにアクセスできるドメイン名またはIPアドレスに設定できます。

sudo nano /etc/hosts

ファイルは次のようになります。

127.0.1.1 current_hostname current_hostname_alias
127.0.0.1 localhost

. . .

完全修飾ドメイン名またはIPアドレスを反映するように一番上の行を変更し、その後にスペースとホストに使用するエイリアスを追加します。 の下に、サーバーのパブリックIPアドレスが最初の列にある2行と、127.0.1.1行の最後に変更した情報を追加します。 次のようになります。

127.0.1.1 fqdn_or_IP_address host_alias
127.0.0.1 localhost
IP_address fqdn_or_IP_address host_alias

したがって、ドメイン名がない場合、パブリックIPアドレスは123.123.123.123であり、ホスト名「chef」でホストに到達できるようにする場合は、次のようなファイルを作成できます。このように見えます:

127.0.1.1 123.123.123.123 chef
127.0.0.1 localhost
123.123.123.123 123.123.123.123 chef

一方、このサーバーの完全修飾ドメイン名がchef.example.comで、IPアドレスが234.234.234.234の場合、ファイルは次のようになります。

127.0.1.1 chef.example.com chef
127.0.0.1 localhost
234.234.234.234 chef.example.com chef

終了したら、ファイルを保存して閉じます。 次のように入力すると、値が正しく設定されていることを確認できます。

hostname -f

結果は、インフラストラクチャのどこからでもChefサーバーに到達するために使用できる値になるはずです。

Chef12サーバーソフトウェアをダウンロードしてインストールします

次に、Chef12サーバーソフトウェアをダウンロードします。 Chefサイトにアクセスすると、インストールする必要のあるパッケージを見つけることができます。 具体的には、Ubuntuのインストールの場合、このリンクをたどることができます。

「UbuntuLinux14.04」ヘッダーの下で、ダウンロードリンクを右クリックし、リンクの場所をコピーします。

Chef server download

サーバーに戻り、ホームディレクトリに移動します。 コピーしたリンクを貼り付け、wgetコマンドでパッケージをダウンロードします。 この記事の執筆以降にマイナーバージョンの更新があった場合、コピーしたリンクは以下のリンクとは異なる場合があります。

cd ~
wget https://web-dl.packagecloud.io/chef/stable/packages/ubuntu/trusty/chef-server-core_12.0.5-1_amd64.deb

ダウンロードが完了したら、次のように入力してパッケージをインストールします。

sudo dpkg -i chef-server-core_*.deb

これにより、ベースChef12システムがサーバーにインストールされます。 推奨量よりも強力でないハードウェアを備えたサーバーを選択した場合、この手順は失敗する可能性があります。

インストールが完了したら、reconfigureコマンドを呼び出す必要があります。このコマンドは、サーバーを構成するコンポーネントを特定の環境で連携するように構成します。

sudo chef-server-ctl reconfigure

管理者ユーザーと組織を作成する

次に、管理者ユーザーを作成する必要があります。 これは、作成する組織のインフラストラクチャコンポーネントに変更を加えるためのアクセス権を持つユーザー名になります。

これは、chef-server-ctlコマンドのuser-createサブコマンドを使用して実行できます。 このコマンドでは、作成プロセス中にいくつかのフィールドを渡す必要があります。 一般的な構文は次のとおりです。

chef-server-ctl user-create USERNAME FIRST_NAME LAST_NAME EMAIL PASSWORD

この情報を含め、新しいユーザーの秘密RSAキーを出力するファイル名を指定するために、追加のフラグである-fを最後に追加します。 後でknife管理コマンドを使用して認証するためにこれが必要になります。

この例では、次の情報を使用してユーザーを作成します。

  • ユーザー名:管理者
  • :管理者
  • :管理者
  • メール:admin @example .com
  • パスワード:examplepass
  • ファイル名:admin.pem

この情報を使用してユーザーを作成するために必要なコマンドは次のとおりです(情報、特にパスワードを反映するようにこれを変更する必要があります)。

sudo chef-server-ctl user-create admin admin admin [email protected] examplepass -f admin.pem

これで、現在のディレクトリにadmin.pemという秘密鍵が作成されます。

これでユーザーができたので、org-createサブコマンドを使用して組織を作成できます。 組織とは、Chef内のインフラストラクチャと構成をグループ化したものにすぎません。 このコマンドの一般的な構文は次のとおりです。

chef-server-ctl org-create SHORTNAME LONGNAME --association_user USERNAME

短縮名は、Chef内から組織を参照するために使用する名前です。 ロングネームは組織の実際の名前です。 --association_userは、組織を管理するためのアクセス権を持つユーザー名を指定します。 ここでも、-fフラグを追加して、秘密鍵を配置するファイルの名前を指定できるようにします。 作成されるキーは、独自のクライアントキーを取得できるようになるまで、組織の一部として新しいクライアントを検証するために使用されます。

私たちは、以下の資質を備えた組織を作ります。

  • 短い名前:digitalocean
  • ロングネーム:DigitalOcean、Inc.
  • アソシエーションユーザー:管理者
  • ファイル名:digitalocean-validator.pem

上記の品質を備えた組織を作成するには、次のコマンドを使用します。

sudo chef-server-ctl org-create digitalocean "DigitalOcean, Inc." --association_user admin -f digitalocean-validator.pem

これに続いて、ホームディレクトリに2つの.pemキーファイルが必要です。 この場合、それらはadmin.pemおよびdigitalocean-validator.pemと呼ばれます。 このサーバーに接続し、これらのキーをワークステーションに一時的にダウンロードする必要があります。 今のところ、Chefサーバーのインストールは完了しています。

Chefワークステーションを構成する

Chefサーバーが稼働しているので、次のアクションはワークステーションを構成することです。 実際のインフラストラクチャの調整と構成は、Chefサーバーでは行われません。 この作業はワークステーションで実行され、ワークステーションはデータをサーバーにアップロードしてChef環境に影響を与えます。

シェフリポジトリのクローンを作成する

インフラストラクチャのChef構成は、総称してChefリポジトリと呼ばれる階層ファイル構造で維持されます。 この一般的な構造は、Chefチームが提供するGitHubリポジトリにあります。 gitを使用して、このリポジトリをワークステーションに複製し、インフラストラクチャのChefリポジトリの基盤として機能させます。

まず、aptパッケージツールを使用してgitをインストールする必要があります。 パッケージインデックスを更新し、次のように入力してツールをインストールします。

sudo apt-get update
sudo apt-get install git

gitをインストールしたら、Chefリポジトリをマシンに複製できます。 このガイドでは、ホームディレクトリにクローンを作成します。

cd ~
git clone https://github.com/chef/chef-repo.git

これにより、基本的なChefリポジトリ構造がホームディレクトリのchef-repoというディレクトリにプルダウンされます。

Chefリポジトリをバージョン管理下に置く

Chefリポジトリ内で作成された構成は、コードを管理するのと同じ方法でバージョン管理システム内で管理するのが最適です。 上記のリポジトリのクローンを作成したため、gitリポジトリはすでに初期化されています。

ワークステーションを新しいコミット用に設定するには、いくつかのことを行う必要があります。

まず、gitがコミットにタグを付けるために使用する名前とメールアドレスを設定します。 これは、gitがコミットを受け入れるための要件です。 これをグローバルに設定して、作成するgitリポジトリが次の値を使用するようにします。

git config --global user.name "Your Name"
git config --global user.email "username@domain.com"

次に、gitに、~/chef-repo/.chefディレクトリに含まれる情報を無視するように指示します。 機密情報を保存するために、このディレクトリを数分で作成します。 今のところ、この場所を.gitignoreファイルに追加して、gitが他の人に公開してはならないデータを保存しないようにすることができます。

echo ".chef" >> ~/chef-repo/.gitignore

.gitignoreファイルに変更を加えたので、先に進んでバージョン管理システムへの最初の新しいコミットを行うことができます。 まず、変更したすべてのファイルを現在のステージング領域に追加します。

cd ~/chef-repo
git add .

次に、変更をコミットします。 -mフラグを使用して、行っている変更を説明するインラインコミットメッセージを指定します。

git commit -m "Excluding the ./.chef directory from version control"

Chefリポジトリは現在バージョン管理下にあります。 インフラストラクチャの構成を作成するときに、上記の2つのコマンドを使用して、gitリポジトリを最新の状態に保つことができます。

ChefDevelopmentKitをダウンロードしてインストールします

次に、Chefワークステーション用に設計されたソフトウェアスイートであるChefDevelopmentKitをインストールする必要があります。 これには、インフラストラクチャの構成を設計するときに役立つ多くのユーティリティが含まれています。 この時点で関心のあるツールは、バンドルされたknifeコマンドです。このコマンドは、ChefサーバーとChefクライアントの両方と通信して制御できます。

Chef 12開発キットは、ChefのWebサイトにあります。 ワークステーションとしてUbuntu14.04を使用しているため、こちらのページに最新のダウンロードリンクが含まれています。 この記事の執筆時点では、ダウンロードリンクはUbuntu12.04とUbuntu13.10のみを参照していますが、Ubuntu14.04には問題なくインストールされるはずです。

「UbuntuLinux」の下にあるダウンロードボタンを右クリックして、リンクの場所をコピーします。

Ubuntu Chef dev kit

ワークステーションに戻り、ホームディレクトリに移動します。 コピーしたリンクを貼り付け、wgetコマンドでパッケージをダウンロードします。 新しい開発キットバージョンがリリースされている場合、コピーしたリンクは以下のリンクとは異なる場合があります。

cd ~
wget https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chefdk_0.4.0-1_amd64.deb

.debパッケージがダウンロードされたら、次のように入力してインストールできます。

sudo dpkg -i chefdk_*.deb

インストール後、新しいchefコマンドを使用して、すべてのコンポーネントが期待される場所で使用可能であることを確認できます。

chef verify

ワークステーションが主にインフラストラクチャのChefの管理に使用される場合は、デフォルトでChefとともにインストールされるRubyのバージョンを使用することをお勧めします。 これを行うには、.bash_profileを変更して、ChefのRubyが優先されるようにします。

echo 'eval "$(chef shell-init bash)"' >> ~/.bash_profile

その後、.bash_profileファイルを入手して、現在のセッションの正しい環境変数を設定できます。

source ~/.bash_profile

Rubyのバージョンを個別に管理する場合は、上記の手順をスキップできます。

ワークステーションに認証キーをダウンロードします

この時点で、ワークステーションには、Chefサーバーと対話してインフラストラクチャ構成を構成するために必要なすべてのソフトウェアがあります。 ただし、Chefサーバーおよび環境と対話するようにまだ構成されていません。 このセクションでは、Chefサーバーで作成したクレデンシャルをダウンロードします。

scpユーティリティを使用して、Chefサーバーで作成したユーザーキーと組織バリデーターキーをダウンロードします。 その前に、これらのファイルを保存する隠しディレクトリを作成します。

mkdir ~/chef-repo/.chef

Chefサーバーへの接続に使用する方法によって、キーのダウンロードがどの程度正確に行われるかが決まります。 設定に一致する以下の方法に従ってください。

パスワードを使用してChefサーバーに接続するときにキーをダウンロードする方法

パスワードベースの認証を使用してSSH経由でChefサーバーに接続する場合、scpコマンドは大幅な変更なしで機能します。

ワークステーションで、Chefサーバーへの接続に使用するユーザー名とドメイン名またはIPアドレスを指定します。 すぐにコロン(:)とダウンロードしたいファイルへのパスを続けてください。 スペースを追加した後、ダウンロードを配置するローカルコンピューター上のディレクトリ(この場合は~/chef-repo/.chef)を指定します。

rootユーザーアカウントを使用してChefサーバーにログインすると、コマンドは次のようになります。 ドメイン名またはIPアドレスと、ダウンロードしようとしているキーファイルの名前の両方を環境に合わせて変更することを忘れないでください。

scp root@server_domain_or_IP:/root/admin.pem ~/chef-repo/.chef
scp root@server_domain_or_IP:/root/digitalocean-validator.pem ~/chef-repo/.chef

root以外のユーザーを使用してChefサーバーに接続する場合、コマンドは次のようになります。

scp username@server_domain_or_IP:/home/username/admin.pem ~/chef-repo/.chef
scp username@server_domain_or_IP:/home/username/digitalocean-validator.pem ~/chef-repo/.chef

SSHキーを使用してChefサーバーに接続するときにキーをダウンロードする方法

代わりに、SSHキーを使用してChefサーバーに接続する場合(推奨)、いくつかの追加手順を実行する必要があります。

まず、ワークステーションとのSSHセッションを終了します。 新しいパラメータで一時的に再接続する必要があります。

exit

ローカルコンピューターに戻ったら、Chefサーバーへの接続に使用するSSHキーをSSHエージェントに追加する必要があります。 標準のSSHスイートであるOpenSSHには、次のように入力して開始できるSSHエージェントが含まれています。

eval $(ssh-agent)

次のような出力が表示されます(数値は異なる可能性があります)。

Agent pid 13881

エージェントが起動したら、SSHキーを追加できます。

ssh-add
Identity added: /home/demo/.ssh/id_rsa (rsa w/o comment)

これにより、SSHキーがメモリに保存されたままになります。 これで、ssh-Aオプションを使用して接続するときに、保存されているキーをワークステーションに転送できます。 これにより、ローカルコンピュータから接続しているかのように、ワークステーションから任意のコンピュータに接続できます。

ssh -A username@workstation_domain_or_IP

これで、転送されたSSHクレデンシャルを使用して、パスワードを必要とせずにChefサーバーに接続できます。 Chefサーバーのキーがrootユーザーから利用できる場合、必要なコマンドは次のようになります。 必要に応じて、Chefサーバーのドメイン名またはIPアドレスとキー名を変更することを忘れないでください。

scp root@server_domain_or_IP:/root/admin.pem ~/chef-repo/.chef
scp root@server_domain_or_IP:/root/digitalocean-validator.pem ~/chef-repo/.chef

代わりに、Chefサーバー用に構成されたSSHキーを使用して通常のユーザーアカウントへの認証を行う場合、コマンドは次のようになります。

scp username@server_domain_or_IP:/home/username/admin.pem ~/chef-repo/.chef
scp username@server_domain_or_IP:/home/username/digitalocean-validator.pem ~/chef-repo/.chef

Chef環境を管理するためのKnifeの構成

ワークステーションでChefクレデンシャルを使用できるようになったので、Chefインフラストラクチャに接続して制御するために必要な情報を使用してknifeコマンドを構成できます。 これは、キーとともに~/chef-repo/.chefディレクトリに配置するknife.rbファイルを介して行われます。

テキストエディタでそのディレクトリにあるknife.rbというファイルを開きます。

nano ~/chef-repo/.chef/knife.rb

このファイルに、次の情報を貼り付けます。

current_dir = File.dirname(__FILE__)
log_level                :info
log_location             STDOUT
node_name                "name_for_workstation"
client_key               "#{current_dir}/name_of_user_key"
validation_client_name   "organization_validator_name"
validation_key           "#{current_dir}/organization_validator_key"
chef_server_url          "https://server_domain_or_IP/organizations/organization_name"
syntax_check_cache_path  "#{ENV['HOME']}/.chef/syntaxcache"
cookbook_path            ["#{current_dir}/../cookbooks"]

次の項目は、インフラストラクチャに合わせて調整する必要があります。

  • node_name :これは、knifeがChefサーバーへの接続に使用する名前を指定します。 これはユーザー名と一致する必要があります。
  • client_key :これは、Chefサーバーからコピーしたユーザーキーの名前とパスである必要があります。 キーがknife.rbファイルと同じディレクトリにある場合は、#{current_dir}スニペットを使用してパスを入力できます。
  • validation_client_name :これは、knifeが新しいノードをブートストラップするために使用する検証クライアントの名前です。 これは、組織の短縮名の後に-validatorが続く形式になります。
  • validation_key client_keyと同様に、これにはChefサーバーからコピーした検証キーの名前とパスが含まれます。 ここでも、検証キーがknife.rbファイルと同じディレクトリにある場合は、#{current_dir}Rubyスニペットを使用して現在のディレクトリを指定できます。
  • chef_server_url :これはChefサーバーにアクセスできるURLです。 https://で始まり、その後にChefサーバーのドメイン名またはIPアドレスが続く必要があります。 その後、/organizations/your_organization_nameを追加して組織へのパスを指定する必要があります。

ガイドの場合、knife.rbファイルは次のようになります。 次の場合は、サーバーのドメイン名またはIPアドレスを調整する必要があります。

current_dir = File.dirname(__FILE__)
log_level                :info
log_location             STDOUT
node_name                "admin"
client_key               "#{current_dir}/admin.pem"
validation_client_name   "digitalocean-validator"
validation_key           "#{current_dir}/digitalocean-validator.pem"
chef_server_url          "https://server_domain_or_IP/organizations/digitalocean"
syntax_check_cache_path  "#{ENV['HOME']}/.chef/syntaxcache"
cookbook_path            ["#{current_dir}/../cookbooks"]

終了したら、knife.rbファイルを保存して閉じます。

次に、単純なknifeコマンドを試して構成ファイルをテストします。 構成ファイルを正しく読み取るには、~/chef-repoディレクトリにいる必要があります。

cd ~/chef-repo
knife client list

この最初の試行は、次のようなエラーで失敗するはずです。

ERROR: SSL Validation failure connecting to host: server_domain_or_IP - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: 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_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

これは、ワークステーションにChefサーバーのSSL証明書がないために発生します。 これは、次のように入力することで取得できます。

knife ssl fetch

これにより、Chefサーバーの証明書ファイルが~/chef-repo/.chefディレクトリのリストに追加されます。

WARNING: Certificates from server_domain_or_IP will be fetched and placed in your trusted_cert
directory (/home/demo/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 server_domain_or_IP in /home/demo/chef-repo/.chef/trusted_certs/server_domain_or_IP.crt

SSL証明書がフェッチされた後、前のコマンドが機能するはずです。

knife client list
digitalocean-validator

上記のコマンドが正しく返されると、ワークステーションはChef環境を制御するように設定されています。

ナイフを使用した新しいノードのブートストラップ

Chefサーバーとワークステーションを構成したら、Chefを使用してインフラストラクチャ内に新しいサーバーを構成できます。

これは、「ブートストラップ」と呼ばれるプロセスを通じて発生します。このプロセスでは、Chefクライアントの実行可能ファイルが新しいコンピューターにインストールされ、組織の検証キーも渡されます。 次に、新しいノードはバリデーターキーを使用してChefサーバーに接続し、その代わりに、独自の一意のクライアントキーとそれに割り当てられている構成を受け取ります。 このプロセスにより、新しいサーバーが初期状態になり、将来の管理用にセットアップされます。

新しいサーバーに接続するには、新しいノードに関するいくつかの情報が必要になります。

  • 到達可能なドメイン名またはIPアドレス
  • 管理アクションを完了するために使用されるユーザー名。 これは、root、またはsudo特権で構成されたユーザーのいずれかです。
  • 上記のユーザーとしてログインする方法。 これは、パスワード、またはSSHキーを使用する機能のいずれかです。
  • 管理タスクを実行する方法。 rootユーザーの場合、これは不要です。 sudo特権に依存しているユーザーの場合、通常はパスワードが必要です。

コマンドの一般的な構文は次のとおりです。

knife bootstrap node_domain_or_IP [options]

最終的に使用する可能性のある一般的なオプションは次のとおりです。

  • -x :SSHを介して認証するユーザー名を指定するために使用されます。 これは通常必要です。
  • -N :Chef内に表示されるノードの新しい名前。 これを省略すると、通常、Chefノード名にホスト名が使用されます。
  • -P :リモートサーバー上のユーザー名のパスワードを指定するために使用されます。 これは、SSHセッションでSSHセッションにパスワード認証が必要な場合またはユーザー名にsudoコマンドのパスワードが必要な場合に必要です。
  • -sudo :リモートサーバーのユーザー名が管理アクションを実行するためにsudoを使用する必要がある場合は、このフラグが必要です。 デフォルトでは、sudoパスワードの入力を求められます。
  • -use-sudo-password -Pフラグを持つユーザーのパスワードをすでに提供している場合は、--sudoフラグは、プロンプトなしで-Pパスワードを使用します。
  • -A :このオプションは、パスワード認証を使用するのではなく、SSHキーをリモートホストに転送してログインします。

-Aオプションを使用する場合は、ローカルコンピューターでSSHエージェントを起動し、新しいノードへの接続に使用できるSSHキーを追加し、-Aフラグを最初に。 これを行う方法の詳細については、Chefサーバーからのキーのダウンロードに関するワークステーション構成のセクションを参照してください。

上記の情報を使用して、さまざまな状況に対応する正しいブートストラップコマンドを作成することができます。

たとえば、sudo権限で構成され、SSHとsudoのパスワードが必要な、ユーザー名demoを使用して、「testing」という名前のノードをブートストラップするには]検証、次のように入力できます。

knife bootstrap node_domain_or_IP -N testing -x demo -P password --sudo --use-sudo-password

rootユーザーを使用してブートストラップし、ワークステーションで使用可能なキーを使用してSSHキー認証を行い、ノードのホスト名をChefノード名として引き続き使用する場合は、次のように入力できます。

knife bootstrap node_domain_or_IP -x root -A

SSHキーを使用してsudoユーザーを認証する場合でも、-Pフラグ、--sudoフラグ、および--use-sudo-passwordフラグ:

knife bootstrap node_domain_or_IP -x demo -A -P password --sudo --use-sudo-password -N name

上記のシナリオで、sudoパスワードの入力を求められてもかまわない場合は、代わりに次のように入力できます。

knife bootstrap node_domain_or_IP -x demo -A --sudo -N name

新しいノードがブートストラップされると、新しいクライアントが必要になります。

knife client list
digitalocean-validator
name

同じ名前の新しいノードも必要です。

knife node list
name

上記の手順を使用して、任意の数の新しいサーバーに新しいChefクライアントを簡単にセットアップできます。

新しいDigitalOceanドロップレットを既存のChefインフラストラクチャに、それぞれをブートストラップせずに自動的に追加する方法について知りたい場合は、このチュートリアルを確認してください。

結論

このガイドに従うと、インフラストラクチャ用に完全に機能するChefサーバーが構成されているはずです。 また、Chefがインフラストラクチャに適用する構成を管理および保守するために使用できるワークステーションをセットアップしました。 knifeコマンドを使用して、Chefによって構成されるサーバーをブートストラップする方法を示しました。

次のガイドでは、いくつかのChefコンストラクトを使用してノードの構成を設計する方法を示します。 宣言型構成を使用してインフラストラクチャを制御する方法として、Chefレシピとクックブックの基本について説明します。