AWS OpsWorks for Chef Automate でのノードの自動的な追加 - AWS OpsWorks

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

AWS OpsWorks for Chef Automate でのノードの自動的な追加

このトピックでは、Amazon Elastic Compute Cloud (Amazon EC2) ノードを Chef サーバーに自動的に追加する方法について説明します。「Chef サーバーで管理するノードを追加する」では、knife bootstrap コマンドを使用して一度に 1 つのノードを Chef サーバーに追加する方法について説明しました。スターターキットのコードでは、ユーザーの介入なしに複数のノードを自動的に追加する方法を示しています。ユーザーの介入なしに (自動で) で新しいノードを関連付ける方法としては、Chef クライアントクックブックを設定することをお勧めします。スターターキットの userdata スクリプトを使用し、userdata スクリプトの run_list セクションを変更することも、または、ノードに適用するクックブックの Policyfile.rb を変更することもできます。chef-client エージェントを実行する前に、Chef Client クックブックを Chef サーバーにアップロードし、以下のサンプルコマンドで示しているように (たとえば HTTPD ロールを使用して)、chef-client エージェントをサービスモードでインストールします。

chef-client -r "chef-client,role[httpd]"

Chef サーバーと通信するには、chef-client エージェントソフトウェアは、クライアントノードのパブリックキーへのアクセスを許可されている必要があります。Amazon EC2 でパブリック/プライベートkey pair を生成し、そのパブリックキーをAWS OpsWorks associate-nodeノード名を使用した API 呼び出し。スターターキットに含まれているスクリプトは、お客様の組織名、サーバー名、サーバーエンドポイントを収集します。これにより、そのノードが Chef サーバーに関連付けられ、プライベートキーを照合した後に、そのノードで実行される chef-client エージェントソフトウェアがサーバーと通信できるようになります。

AWS OpsWorks for Chef Automate サーバーに関連付けられているノードでサポートされている chef-client の最小バージョンは 13.x です。安定した現行の chef-client バージョンの実行をお勧めします。

ノードの関連付けを解除する方法については、このガイドの「AWS OpsWorks for Chef Automate サーバーからのノードの関連付けの解除」および API ドキュメントの「disassociate-nodeAWS OpsWorks for Chef Automate」を参照してください。

サポートされるオペレーティングシステム

ノードでサポートされているオペレーティングシステムの最新の一覧については、Chef のウェブサイトを参照してください。

ステップ 1: インスタンスプロファイルとして使用する IAM ロールを作成する

を作成するAWS Identity and Access ManagementEC2 インスタンスプロファイルとして使用し、IAM ロールに以下のポリシーをアタッチする (IAM) ロール。このポリシーでは、ノード登録時に AWS OpsWorks for Chef Automate (opsworks-cm) API が EC2 インスタンスと通信することが許可されています。インスタンスプロファイルの詳細については、「」を参照してください。インスタンスプロファイルの使用Amazon EC2 ドキュメントを参照してください。IAM ロールを作成する方法については、「」を参照してください。コンソールでの IAM ロールの作成Amazon EC2 ドキュメントを参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "opsworks-cm:AssociateNode", "opsworks-cm:DescribeNodeAssociationStatus", ], "Resource": "*", "Effect": "Allow" } ] }

AWS OpsWorks以下の内容を指定します。AWS CloudFormation前述のポリシーステートメントを使用した IAM ロールを作成するために使用できるテンプレートです。次の 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 インスタンスを作成するには、userdataからのスクリプトスターターキットuserdataEC2 インスタンスの手順、Amazon EC2 Auto Scaling グループの起動設定、またはAWS CloudFormationテンプレート。ユーザーデータにスクリプトを追加する方法については、「」を参照してください。Linux インスタンスでの起動時のコマンドの実行Amazon EC2 ドキュメントを参照してください。

    このスクリプトは、opsworks-cm API の associate-node コマンドを実行して、新しいノードを Chef サーバーに関連付けます。

    デフォルトでは、登録された新しいノードの名前はインスタンス ID ですが、userdata スクリプトの NODE_NAME 変数の値を変更することで、その名前を変更できます。現在、Chef コンソール UI の組織名を変更することはできないため、CHEF_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 サーバーに関連付ける方法について詳しく説明しています。