翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
スターターキットを使用して Chef サーバーを設定する
重要
AWS OpsWorks for Chef Automate は 2024 年 5 月 5 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。既存のお客様は、 Chef SaaS または代替ソリューションに移行することをお勧めします。ご質問がある場合は、AWS re:Post
Chef サーバー作成の進行中に、 AWS OpsWorks for Chef Automate コンソールでプロパティページを開きます。新しい Chef サーバーの初回操作時に、[Properties] ページで 2 つの必須項目をダウンロードするように求められます。Chef サーバーがオンラインになる前に、これらの項目をダウンロードします。新しいサーバーがオンラインになった後は、ダウンロードボタンは使用できません。
-
[Sign-in credentials for the Chef server (Chef サーバー用のサインイン認証情報)]。これらの認証情報を使用して Chef Automate ダッシュボードにサインインします。ここでは、ワークフローやコンプライアンススキャンなどの Chef Automate のプレミアム機能を使用します。 OpsWorks は、これらの認証情報を保存しません。これは、表示およびダウンロードできる最後の時間です。必要であれば、これらの認証情報で提供されたパスワードをサインイン後に変更できます。
-
Starter Kit (スターターキット)。スターターキットには、サンプル付きの README ファイル、
knife.rbの設定ファイル、およびプライマリユーザーまたは主要ユーザー用のプライベートキーが含まれています。スターターキットをダウンロードするごとに、新しいキーペアが生成され、以前のキーはリセットされます。
Starter Kit .zip ファイルには、新しいサーバーでのみ機能する認証情報に加えて、任意の AWS OpsWorks for Chef Automate サーバーで動作する Chef リポジトリの簡単な例が含まれています。Chef リポジトリには、Chef で管理するノード用のクックブック、ロール、設定ファイル、および他のアーティファクトが保存されます。このリポジトリは、バージョン管理システム (Git など) に保存し、ソースコードとして扱うことをお勧めします。Git で追跡されるように Chef リポジトリをセットアップする方法に関する情報およびサンプルについては、Chef ドキュメントの「About the chef-repo
前提条件
-
サーバー作成の進行中に、Chef サーバーのサインイン認証情報をダウンロードし、セキュアだが便利な場所に保存します。
-
スターターキットをダウンロードし、スターターキットの .zip ファイルをワークスペースディレクトリに解凍します。スターターキットのプライベートキーは共有しないでください。他のユーザーが Chef サーバーを管理する場合は、後で Chef Automate ダッシュボードでそのユーザーを管理者として追加します。
-
[Chef Workstation]
(以前はChef Development Kit または Chef DK として知られていた)をダウンロードして、Chef サーバおよびノードの管理に使用するコンピュータにインストールします。 knifeユーティリティは Chef Workstation の一部です。その手順については、Chef のウェブサイトにある「Install Chef Workstation」 (Chef Workstationのインストール) を参照してください。
スターターキットの内容を見る
スターターキットの内容は以下のとおりです。
-
cookbooks/- 作成するクックブックのディレクトリ。cookbooks/フォルダには、Chef スーパーマーケットウェブサイトの nginxクックブックに依存するopsworks-webserverクックブック、ラッパークックブックが含まれています。クックブックの依存関係がcookbooks/のディレクトリ内で利用できない場合、Policyfile.rbのデフォルトでは Chef supermarket を二次ソースとして使用します。 -
Policyfile.rb- ノードのポリシーになるクックブック、依存関係、属性を定義する Ruby ベースのポ リシーファイル。 -
userdata.shおよびuserdata.ps1- Chef Automate サーバーの起動後に、ユーザーデータファイルを使用してノードを自動的に関連付けることができます。userdata.shは Linux ベースのノードのブートストラップ用、userdata.ps1は Windows ベースのノード用です。 -
Berksfile- Berkshelf とberksのコマンドを使用してクックブックとその依存関係をアップロードする場合は、このファイルを使用できます。このチュートリアルでは、Policyfile.rbと Chef コマンドを使用して、クックブック、依存関係、属性をアップロードします。 -
README.md- スターターキットを使用して Chef Automate サーバーを初めて設定する方法について説明する Markdown ベースのファイル。 -
.chef- knife 設定ファイル (knife.rb) とシークレット認証キーファイル (.pem) を含む隠しディレクトリ。-
.chef/knife.rb- knife 設定ファイル (knife.rb)。このknife.rbファイルは、Chef の knifeツールオペレーションが AWS OpsWorks for Chef Automate サーバーに対して実行されるように設定されています。 -
.chef/ca_certs/opsworks-cm-ca-2020-root.pem- OpsWorksに付属している、認証機関 (CA) による署名付きの SSL プライベートキー。このキーによって、サーバーで管理されるノード上の Chef Infra クライアントエージェントに対して、サーバーが自身を識別できるようになります。
-
Chef リポジトリを設定する
Chef リポジトリには複数のディレクトリが置かれています。スターターキットの各ディレクトリには、そのディレクトリの目的、および Chef でシステムを管理するための使用方法が記述されている README ファイルがあります。Chef サーバーにクックブックをインストールするには、2 つの方法があります。knife コマンドを実行する方法と、Chef コマンドを実行する方法です。後者のコマンドは、ポリシーファイル (Policyfile.rb) をサーバーにアップロードし、指定されたクックブックをダウンロードしてインストールします。このチュートリアルでは、Chef コマンドと Policyfile.rb を使用してクックブックをサーバーにインストールします。
-
クックブックを保存するためのディレクトリ (
chef-repoなど) をローカルコンピュータ上に作成します。このリポジトリにクックブック、ロール、および他のファイルを追加した後に、バージョニングされているセキュアなシステム (CodeCommit、Git、Amazon S3 など) にリポジトリをアップロードまたは保存することをお勧めします。 -
chef-repoディレクトリに、以下のディレクトリを作成します。-
cookbooks/- クックブックを保存する。 -
roles/- ロールを.rb形式または.json形式で保存します。 -
environments/- 環境を.rb形式または.json形式で保存します。
-
Policyfile.rb を使用してリモートソースからクックブックを取得する
このセクションでは、クックブックを指定するように Policyfile.rb を編集してから、そのファイルをサーバーにアップロードしてクックブックをインストールする Chef コマンドを実行します。
-
スターターキットの
Policyfile.rbを表示します。デフォルトではPolicyfile.rbには、opsworks-webserverラッパークックブックが含まれています。これは、Chef Supermarket のウェブサイトで入手可能なnginxクックブックの依存関係となります。 nginxは、管理対象ノードにウェブサーバーをインストールして設定するクックブックです。また、管理対象ノードに Chef Infra クライアントエージェントをインストールする、必須のchef-clientクックブックも指定されています。Policyfile.rbは、ノードのコンプライアンススキャンの設定に使用できるオプションの Chef Audit クックブックも参照しています。コンプライアンススキャンの設定と管理対象ノードのコンプライアンス結果の取得の詳細については、「でのコンプライアンススキャン AWS OpsWorks for Chef Automate」を参照してください 今すぐコンプライアンススキャンと監査を設定しない場合は、'audit'セクションからrun_listを削除します。ファイルの末尾にauditクックブックの属性を指定しないでください。# Policyfile.rb - Describe how you want Chef to build your system. # # For more information about the Policyfile feature, visit # https://docs.chef.io/policyfile.html # A name that describes what the system you're building with Chef does. name 'opsworks-demo-webserver' # The cookbooks directory is the preferred source for external cookbooks default_source :chef_repo, "cookbooks/" do |s| s.preferred_for "nginx", "windows", "chef-client", "yum-epel", "seven_zip", "build-essential", "mingw", "ohai", "audit", "logrotate", "cron" end # Alternative source default_source :supermarket # run_list: chef-client runs these recipes in the order specified. run_list 'chef-client', 'opsworks-webserver', 'audit' # add 'ssh-hardening' to your runlist to fix compliance issues detected by the ssh-baseline profile # Specify a custom source for a single cookbook: cookbook 'opsworks-webserver', path: 'cookbooks/opsworks-webserver' # Policyfile defined attributes # Define audit cookbook attributes default["opsworks-demo"]["audit"]["reporter"] = "chef-server-automate" default["opsworks-demo"]["audit"]["profiles"] = [ { "name": "DevSec SSH Baseline", "compliance": "admin/ssh-baseline" } ]以下に示しているのは、現時点で
Policyfile.rbウェブサーバーのみを設定する場合に、auditクックブックとその属性を削除したnginxの例です。# Policyfile.rb - Describe how you want Chef to build your system. # # For more information on the Policyfile feature, visit # https://docs.chef.io/policyfile.html # A name that describes what the system you're building with Chef does. name 'opsworks-demo-webserver' # Where to find external cookbooks: default_source :supermarket # run_list: chef-client will run these recipes in the order specified. run_list 'chef-client', 'opsworks-webserver' # Specify a custom source for a single cookbook: cookbook 'opsworks-webserver', path: 'cookbooks/opsworks-webserver'Policyfile.rbに変更を加えた場合は、必ずこのファイルを保存してください。 -
Policyfile.rbに定義されているクックブックをダウンロードしてインストールします。chef installすべてのクックブックはクックブックの
metadata.rbファイルでバージョニングされています。クックブックを変更するたびにmetadata.rbにあるクックブックのバージョンを上げる必要があります。 -
コンプライアンススキャンを設定し、
auditクックブックの情報をポリシーファイルに保存した場合は、ポリシーopsworks-demoをサーバーにプッシュします。chef push opsworks-demo -
ステップ 3 が完了したら、ポリシーのインストールを確認します。以下のコマンドを実行してください。
chef show-policy結果は以下のようになります。
opsworks-demo-webserver ======================= * opsworks-demo: ec0fe46314 -
これで、Chef Automate サーバーにノードを追加 (ブートストラップ) する準備ができました。ノードの関連付けを自動化するには、でノードを自動的に追加する AWS OpsWorks for Chef Automate のステップに従うか、または ノードを個別に追加します のステップに従ってノードを 1 つずつ追加します。
(代替) Berkshelf を使用してリモートソースからクックブックを取得する
Berkshelf は、クックブックとその依存関係を管理するためのツールです。ローカルストレージにクックブックをインストールするために Policyfile.rb の代わりに Berkshelf を使用する場合は、前のセクションの代わりにこのセクションの手順を使用します。Chef サーバーで使用するクックブックとそのバージョンを指定し、クックブックをアップロードできます。スターターキットには、クックブックの一覧表示に使用できる Berksfile というファイルが含まれています。
-
使用を開始するには、含まれている Berksfile に
chef-clientクックブックを追加します。chef-clientクックブックは、Chef Automate サーバーに接続する各ノードで Chef Infra クライアントエージェントソフトウェアを設定します。このクックブックの詳細については、Chef Supermarket にある「Chef Client Cookbook」(Chef クライアントクックブック) を参照してください。 -
テキストエディタを使用して、ウェブサーバーアプリケーションをインストールする Berksfile に別のクックブックを追加します。たとえば、Apache ウェブサーバーをインストールする
apache2クックブックです。Berksfile は以下のようになります。source 'https://supermarket.chef.io' cookbook 'chef-client' cookbook 'apache2' -
そのクックブックをローカルコンピュータにダウンロードしてインストールします。
berks install -
そのクックブックを Chef サーバーにアップロードします。
Linux では、次のコマンドを実行します。
SSL_CERT_FILE='.chef/ca_certs/opsworks-cm-ca-2020-root.pem' berks uploadWindows では、PowerShell セッションで次の Chef Workstation コマンドを実行します。コマンドを実行する前に、PowerShell の実行ポリシーを
RemoteSignedに設定しておきます。PowerShell で Chef Workstation のユーティリティコマンドを利用できるように、chef shell-initを追加します。$env:SSL_CERT_FILE="ca_certs\opsworks-cm-ca-2020-root.pem" chef shell-init berks upload Remove-Item Env:\SSL_CERT_FILE -
Chef Automate サーバーで現在使用可能なクックブックのリストを表示して、クックブックがインストールされていることを確認します。そのためには、以下の
knifeコマンドを実行します。AWS OpsWorks for Chef Automate サーバーで管理するノードを追加する準備ができました。
knife cookbook list
(オプション) カスタムドメインを使用するように knife を設定します。
Chef Automate サーバーがカスタムドメインを使用している場合は、サーバーの証明書チェーンに署名したルート CA の PEM 証明書を追加するか、証明書が自己署名の場合はサーバー PEM 証明書を追加する必要があります。ca_certs は、Chef knife ユーティリティによって信頼される認証機関 (CA) を含む chef/ のサブディレクトリです。
カスタムドメインを使用していない場合、またはカスタム証明書がオペレーティングシステムで信頼されているルート CA によって署名されている場合は、このセクションを省略できます。それ以外の場合は、次のステップで説明するように、Chef Automate サーバーの SSL 証明書を信頼するように knife を設定します。
-
以下のコマンドを実行してください。
knife ssl check結果が次のような場合は、この手順の残りの部分をスキップして、「Chef サーバーで管理するノードを追加する」に進みます。
Connecting to host my-chef-automate-server.my-corp.com:443 Successfully verified certificates from 'my-chef-automate-server.my-corp.com'次のようなエラーメッセージが表示された場合は、次のステップに進みます。
Connecting to host my-chef-automate-server.my-corp.com:443 ERROR: The SSL certificate of my-chef-automate-server.my-corp.com could not be verified. ... -
knife ssl fetchを実行して、 AWS OpsWorks for Chef Automate サーバーの証明書を信頼します。または、サーバーのルート CA 証明書 (PEM 形式) を、trusted_certs_dirの出力のknife ssl checkの値であるディレクトリに手動でコピーすることもできます。デフォルトでは、このディレクトリはスターターキットの.chef/ca_certs/にあります。出力は次のようになります。WARNING: Certificates from my-chef-automate-server.my-corp.com will be fetched and placed in your trusted_cert directory (/Users/username/starterkit/.chef/../.chef/ca_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 my-chef-automate-server in /Users/users/starterkit/.chef/../.chef/ca_certs/servv-aqtswxu20swzkjgz.crt Adding certificate for MyCorp_Root_CA in /Users/users/starterkit/.chef/../.chef/ca_certs/MyCorp_Root_CA.crt -
knife ssl checkをもう一度実行します。出力は次のようになります。Connecting to host my-chef-automate-server.my-corp.com:443 Successfully verified certificates from 'my-chef-automate-server.my-corp.com'これで、Chef Automate サーバーで
knifeを使用する準備ができました。