翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
でノードを自動的に追加する AWS OpsWorks for Chef Automate
重要
AWS OpsWorks for Chef Automate は 2024 年 5 月 5 日にサポートが終了し、新規および既存のお客様の両方で無効になっています。既存のお客様は、 Chef SaaS または代替ソリューションに移行することをお勧めします。ご質問がある場合は、 AWS re:Post
このトピックでは、Amazon Elastic Compute Cloud (Amazon EC2) ノードを Chef サーバーに自動的に追加する方法を説明します。スターターキットのコードでは、ユーザーの介入なしに複数のノードを自動的に追加する方法を示しています。ユーザーの介入なしに (自動で) で新しいノードを関連付ける方法としては、Chef クライアントクックブックuserdata
スクリプトを使用し、run_list
スクリプトの userdata
セクションを変更することも、または、ノードに適用するクックブックの Policyfile.rb
を変更することもできます。chef-client
エージェントを実行する前に、Chef Client クックブックを Chef サーバーにアップロードし、以下のサンプルコマンドで示しているように (例えば HTTPD ロールを使用して)、chef-client
エージェントをサービスモードでインストールします。
chef-client -r "chef-client,role[httpd]"
Chef サーバーと通信するには、chef-client
エージェントソフトウェアは、クライアントノードのパブリックキーへのアクセスを許可されている必要があります。Amazon EC2 でパブリックキーとプライベートキーのペアを生成し、そのパブリックキーを AWS OpsWorks associate-node
ノード名で API コールに渡すことができます。スターターキットに含まれているスクリプトは、お客様の組織名、サーバー名、サーバーエンドポイントを収集します。これにより、そのノードが Chef サーバーに関連付けられ、プライベートキーを照合した後に、そのノードで実行される chef-client
エージェントソフトウェアがサーバーと通信できるようになります。
AWS OpsWorks for Chef Automate サーバーに関連付けられているノードでサポートされている chef-client
の最小バージョンは 13.x です。最新の安定したchef-client
バージョンを実行することをお勧めします。
ノードの関連付けを解除する方法については、このガイドAWS OpsWorks for Chef Automate サーバーからノードの関連付けを解除するの「」および AWS OpsWorks for Chef Automate API disassociate-node
ドキュメントの「」を参照してください。
トピック
サポートされるオペレーティングシステム
ノードでサポートされているオペレーティングシステムの最新の一覧については、[Chef website
ステップ 1: インスタンスプロファイルとして使用する IAM ロールを作成します
EC2 インスタンスプロファイルとして使用する AWS Identity and Access Management (IAM) ロールを作成し、次のポリシーを IAM ロールにアタッチします。このポリシーでは、ノード登録時に AWS OpsWorks for Chef Automate
(opsworks-cm
) API が EC2 インスタンスと通信することが許可されています。インスタンスプロファイルの詳細については、Amazon EC2 のドキュメントの「Using Instance Profiles (インスタンスプロファイルの使用)」を参照してください。IAM ロールを作成する方法については、Amazon EC2 のドキュメントの「Creating an IAM Role in the Console」(コンソールでの IAM ロールの作成) を参照してください。。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "opsworks-cm:AssociateNode", "opsworks-cm:DescribeNodeAssociationStatus", ], "Resource": "*", "Effect": "Allow" } ] }
AWS OpsWorks には、前述のポリシーステートメントで IAM ロールを作成するために使用できる AWS CloudFormation テンプレートが用意されています。次の AWS CLI コマンドは、このテンプレートを使用してインスタンスプロファイルロールを作成します。デフォルトのリージョンで新しい AWS CloudFormation スタックを作成する場合は、 --region
パラメータを省略できます。
aws cloudformation --region
region ID
create-stack --stack-namemyChefAutomateinstanceprofile
--template-url https://s3.amazonaws.com/opsworks-cm-us-east-1-prod-default-assets/misc/opsworks-cm-nodes-roles.yaml --capabilities CAPABILITY_IAM
ステップ 2: Chef クライアントクックブックをインストールする
まだ実行していない場合は、「(代替) Berkshelf を使用してリモートソースからクックブックを取得する」の手順に従って、Berksfile または Policyfile.rb
ファイルレファレンス によって Chef クライアントクックブックが参照され、クックブックがインストールされることを確認します。
ステップ 3: 自動関連付けスクリプトを使用してインスタンスを作成する
-
EC2 インスタンスを作成するには、Starter Kit から EC2 インスタンスの手順、Amazon EC2 Auto Scaling グループの起動設定、または AWS CloudFormation テンプレートの
userdata
セクションにuserdata
スクリプトをコピーします。 EC2 ユーザーデータへのスクリプトの追加の詳細については、Amazon EC2 ドキュメントの「Running Commands on Your Linux Instance at Launch」(Linux インスタンスでの起動時のコマンドの実行) を参照してください。このスクリプトは、
opsworks-cm
API のassociate-node
コマンドを実行して、新しいノードを Chef サーバーに関連付けます。デフォルトでは、登録された新しいノードの名前はインスタンス ID ですが、
NODE_NAME
スクリプトのuserdata
変数の値を変更することで、その名前を変更できます。現在、Chef コンソール UI の組織名を変更することはできないため、CHEF_AUTOMATE_ORGANIZATION
の設定はdefault
のままにします。 -
EC2 ドキュメントのインスタンスの作成の手順に従い、ここで説明する変更を加えます。EC2 インスタンス起動ウィザードで、Amazon Linux AMI を選択します。
-
[Configure Instance Details] ページで IAM ロールとして作成した「ステップ 1: インスタンスプロファイルとして使用する IAM ロールを作成します」を選択します。
-
[Advanced Details] で、先の手順で作成した
userdata.sh
スクリプトをアップロードします。 -
[Add Storage] ページで必要な変更はありません。[Add Tags] に進みます。
-
[セキュリティグループの設定] ページで、[ルールの追加] を選択し、タイプに [HTTP] を選択してこの例の Apache ウェブサーバーでポート番号 443 と 80 を開きます。
-
Review and Launch (確認と作成) を選択してから、Launch (起動) を選択します。新しいノードを開始すると、そのノードは
RUN_LIST
パラメータで渡されたレシピによって指定された設定を適用します。 -
オプション: 実行リストに
nginx
クックブックを追加した場合、新しいノードのパブリック DNS にリンクしたウェブページを開くと、nginx ウェブサーバーがホストするウェブサイトが表示されます。
chef-client
の繰り返し実行を自動化する他の方法
達成はより難しく、推奨されませんが、このトピックのスクリプトはスタンドアロンインスタンスのユーザーデータの一部としてのみ実行したり、 AWS CloudFormation テンプレートを使用して新しいインスタンスのユーザーデータに追加したり、スクリプトを定期的に実行するようにcron
ジョブを設定したり、サービスchef-client
内で実行したりできます。ただし、他の自動化の方法にはいくつかの欠点があるため、Chef クライアントクックブックの方法をお勧めします。
chef-client
に指定できるパラメータの詳細なリストについては、Chef のドキュメント
関連トピック
次の AWS ブログ記事では、Auto Scaling グループを使用するか、複数のアカウント内でノードを Chef Automate サーバーに自動的に関連付ける方法について詳しく説明します。