でノードを自動的に追加する AWS OpsWorks for Chef Automate - AWS OpsWorks

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

でノードを自動的に追加する AWS OpsWorks for Chef Automate

重要

AWS OpsWorks for Chef Automate は 2024 年 5 月 5 日にサポートが終了し、新規および既存のお客様の両方で無効になっています。既存のお客様は、 Chef SaaS または代替ソリューションに移行することをお勧めします。ご質問がある場合は、 AWS re:Post または AWS Premium Support を通じて AWS Support チームにお問い合わせください。

このトピックでは、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] (Chef のウェブサイト) を参照してください。

ステップ 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-name myChefAutomateinstanceprofile --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: 自動関連付けスクリプトを使用してインスタンスを作成する

  1. 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 のままにします。

  2. EC2 ドキュメントのインスタンスの作成の手順に従い、ここで説明する変更を加えます。EC2 インスタンス起動ウィザードで、Amazon Linux AMI を選択します。

  3. [Configure Instance Details] ページで IAM ロールとして作成した「ステップ 1: インスタンスプロファイルとして使用する IAM ロールを作成します」を選択します。

  4. [Advanced Details] で、先の手順で作成した userdata.sh スクリプトをアップロードします。

  5. [Add Storage] ページで必要な変更はありません。[Add Tags] に進みます。

  6. [セキュリティグループの設定] ページで、[ルールの追加] を選択し、タイプに [HTTP] を選択してこの例の Apache ウェブサーバーでポート番号 443 と 80 を開きます。

  7. Review and Launch (確認と作成) を選択してから、Launch (起動) を選択します。新しいノードを開始すると、そのノードは RUN_LIST パラメータで渡されたレシピによって指定された設定を適用します。

  8. オプション: 実行リストに nginx クックブックを追加した場合、新しいノードのパブリック DNS にリンクしたウェブページを開くと、nginx ウェブサーバーがホストするウェブサイトが表示されます。

chef-client の繰り返し実行を自動化する他の方法

達成はより難しく、推奨されませんが、このトピックのスクリプトはスタンドアロンインスタンスのユーザーデータの一部としてのみ実行したり、 AWS CloudFormation テンプレートを使用して新しいインスタンスのユーザーデータに追加したり、スクリプトを定期的に実行するようにcronジョブを設定したり、サービスchef-client内で実行したりできます。ただし、他の自動化の方法にはいくつかの欠点があるため、Chef クライアントクックブックの方法をお勧めします。

chef-client に指定できるパラメータの詳細なリストについては、Chef のドキュメントを参照してください。

次の AWS ブログ記事では、Auto Scaling グループを使用するか、複数のアカウント内でノードを Chef Automate サーバーに自動的に関連付ける方法について詳しく説明します。