Ubuntu 14.04サーバーでChef 12構成管理システムをセットアップする方法

前書き

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

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

https://www.digitalocean.com/community/articles/how-to-understand-the-chef-configuration-environment-on-a-vps [前のガイド]で、概念レベルで、 Chefコンポーネントの一般的な構造と、管理者の目的を達成するために相互作用する方法。 関連する用語について話し、それぞれの部分の責任について話し合いました。

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

前提条件と目標

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

Chef documentationは、Chefサーバーには少なくとも4つのコアと4 GBのRAMが必要であることを示しています。 また、http://docs.chef.io/server/install_server.html#prerequisites [64-bit operating system]も必要です。 このガイドでは、64ビットUbuntu 14.04で4コア/ 8 GB DigitalOceanドロップレットを使用します。

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

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

Chefサーバーを構成する

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

サーバーがホスト名でアクセス可能であることを確認してください

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

hostname -f

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

sudo nano /etc/hosts

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

127.0.1.1
127.0.0.1 localhost

. . .

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

127.0.1.1
127.0.0.1 localhost

したがって、ドメイン名を持っていない場合、パブリック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サーバーに到達するために使用できる値になります。

Chef 12 Serverソフトウェアをダウンロードしてインストールします

次に、Chef 12サーバーソフトウェアをダウンロードします。 Chefサイトにアクセスして、インストールする必要のあるパッケージを見つけることができます。 具体的には、Ubuntuインストールの場合、https://downloads.chef.io/chef-server/ubuntu/#/ [このリンク]をたどることができます。

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

画像:https://assets.digitalocean.com/articles/chef12_ubuntu1404/download_chef_server.png [シェフサーバーダウンロード]

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

cd ~
wget https://web-dl.packagecloud.io/chef/stable/packages/ubuntu/trusty/chef-server-core__amd64.deb

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

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

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

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

sudo chef-server-ctl reconfigure

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

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

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

chef-server-ctl user-create

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

この例では、次の情報を持つユーザーを作成します。

  • ユーザー名:admin

  • :管理者

  • :管理者

  • メール[email protected]

  • パスワード:examplepass

  • ファイル名:admin.pem

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

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

これで、現在のディレクトリに「+ admin.pem +」というプライベートキーが作成されます。

ユーザーができたので、 `+ org-create +`サブコマンドで組織を作成できます。 組織は、Chef内のインフラストラクチャと構成の単なるグループです。 コマンドの一般的な構文は次のとおりです。

chef-server-ctl org-create   --association_user

短い名前は、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 Workstationを構成する

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 Repoをバージョン管理下に置く

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

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

最初に、 `+ git `がコミットのタグ付けに使用する名前と電子メールを設定します。 これは、コミットを受け入れるための ` git `の要件です。 これをグローバルに設定して、作成するすべての ` git +`リポジトリがこれらの値を使用するようにします。

git config --global user.name ""
git config --global user.email "@"

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

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

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

cd ~/chef-repo
git add .

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

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

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

Chef Development Kitをダウンロードしてインストールします

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

Chef 12開発キットは、Chef Webサイトで見つけることができます。 ワークステーションとしてUbuntu 14.04を使用しているため、https://downloads.chef.io/chef-dk/ubuntu/#/ [こちら]ページに最新のダウンロードリンクが含まれます。 この記事の執筆時点では、ダウンロードリンクはUbuntu 12.04とUbuntu 13.10のみを参照していますが、Ubuntu 14.04でも問題なくインストールできるはずです。

「Ubuntu Linux」の下のダウンロードボタンを右クリックして、リンクの場所をコピーします:

image:https://assets.digitalocean.com/articles/chef12_ubuntu1404/download_chef_dev_kit.png [Ubuntu Chef dev kit]

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

cd ~
wget https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chefdk__amd64.deb

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

sudo dpkg -i chefdk_*.deb

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

chef verify

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

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アドレスを指定します。 すぐにコロン(:)とダウンロードするファイルへのパスを続けてください。 スペースを追加した後、ファイルをダウンロードする_local_コンピューター上のディレクトリを指定します(この例では +〜/ chef-repo / .chef +)。

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

scp [email protected]:/root/ ~/chef-repo/.chef
scp [email protected]:/root/ ~/chef-repo/.chef

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

scp @:/home// ~/chef-repo/.chef
scp @:/home// ~/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//.ssh/id_rsa (rsa w/o comment)

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

ssh -A @

これで、転送されたSSH認証情報を使用してパスワードを必要とせずにChefサーバーに接続できます。 Chefサーバー上のキーがrootユーザーを介して利用可能であった場合、必要なコマンドはこれに似たものになります。 必要に応じて、Chefサーバーのドメイン名またはIPアドレスとキー名を忘れずに変更してください。

scp [email protected]:/root/ ~/chef-repo/.chef
scp [email protected]:/root/ ~/chef-repo/.chef

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

scp @:/home// ~/chef-repo/.chef
scp @:/home// ~/chef-repo/.chef

Chef環境を管理するためのナイフの構成

ワークステーションで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                ""
client_key               "#{current_dir}/"
validation_client_name   ""
validation_key           "#{current_dir}/"
chef_server_url          "https:///organizations/"
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 / +`を追加して組織へのパスを指定する必要があります。

このガイドでは、 `+ 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:///organizations/digitalocean"
syntax_check_cache_path  "#{ENV['HOME']}/.chef/syntaxcache"
cookbook_path            ["#{current_dir}/../cookbooks"]

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

次に、単純な `+ knife `コマンドを試して設定ファイルをテストします。 設定ファイルを正しく読み込むために、 `〜/ chef-repo in`ディレクトリにいる必要があります。

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  [options]

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

  • * + -x + *:SSHで認証するためのユーザー名を指定するために使用されます。 これは通常必要です。

  • * + -N + *:Chef内に表示されるノードの新しい名前。 これを省略すると、通常、Chefノード名にホスト名が使用されます。

  • * + -P + *:リモートサーバー上のユーザー名のパスワードを指定するために使用されます。 これは、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  -N testing -x demo -P  --sudo --use-sudo-password

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

knife bootstrap  -x root -A

SSHキーを使用して `+ sudo `ユーザーの認証を行う場合、 ` -P `フラグ、 `-sudo `フラグ、および `-useを使用してパスワードを提供する必要があります。 -sudo-password + `フラグはプロンプトを回避します:

knife bootstrap  -x  -A -P  --sudo --use-sudo-password -N

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

knife bootstrap  -x  -A --sudo -N

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

knife client list
digitalocean-validator

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

knife node list

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

それぞれをブートストラップせずに、既存のChefインフラストラクチャに新しいDigitalOcean Dropletsを自動的に追加する方法について学びたい場合は、https://www.digitalocean.com/community/tutorials/how-to-automatically-add-new-設定管理システムへのドロップレット[このチュートリアルをご覧ください]。

結論

このガイドに従った後、完全に機能するChefサーバーをインフラストラクチャ用に構成する必要があります。 また、Chefがインフラストラクチャに適用する構成を管理および維持するために使用できるワークステーションをセットアップしました。 `+ knife +`コマンドを使用して、Chefによって設定されるサーバーをブートストラップする方法を示しました。

https://www.digitalocean.com/community/tutorials/how-to-create-simple-chef-cookbooks-to-manage-infrastructure-on-ubuntu [次のガイド]では、構成を設計する方法を示しますいくつかのChefコンストラクトを使用するノード。 宣言的な構成でインフラストラクチャを制御する方法として、Chefレシピとクックブックの基礎について説明します。

Related