

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

# でノードを自動的に追加する AWS OpsWorks for Chef Automate
<a name="opscm-unattend-assoc"></a>

**重要**  
AWS OpsWorks for Chef Automate は 2024 年 5 月 5 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。既存のお客様は、 Chef SaaS または代替ソリューションに移行することをお勧めします。ご質問がある場合は、[AWS re:Post](https://repost.aws/) または[AWS プレミアムサポート](https://aws.amazon.com/support)を通じて AWS サポート チームにお問い合わせください。

このトピックでは、Amazon Elastic Compute Cloud (Amazon EC2) ノードを Chef サーバーに自動的に追加する方法を説明します。[スターターキット](opscm-starterkit.md)のコードでは、ユーザーの介入なしに複数のノードを自動的に追加する方法を示しています。ユーザーの介入なしに (自動で) で新しいノードを関連付ける方法としては、[Chef クライアントクックブック](https://supermarket.chef.io/cookbooks/chef-client)を設定することをお勧めします。スターターキットの `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 でパブリックキーとプライベートキーのペアを生成し、そのパブリックキーを OpsWorks `associate-node`ノード名で API コールに渡すことができます。スターターキットに含まれているスクリプトは、お客様の組織名、サーバー名、サーバーエンドポイントを収集します。これにより、そのノードが Chef サーバーに関連付けられ、プライベートキーを照合した後に、そのノードで実行される `chef-client` エージェントソフトウェアがサーバーと通信できるようになります。

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

ノードの関連付けを解除する方法については、このガイド[AWS OpsWorks for Chef Automate サーバーからノードの関連付けを解除する](opscm-disassociate-node.md)の「」と AWS OpsWorks for Chef Automate API ドキュメントの[https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_DisassociateNode.html](https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_DisassociateNode.html)「」を参照してください。

**Topics**
+ [サポートされるオペレーティングシステム](#w2ab1b9c28c17c15c17)
+ [ステップ 1: インスタンスプロファイルとして使用する IAM ロールを作成します](#opscm-create-instance-profile)
+ [ステップ 2: Chef クライアントクックブックをインストールする](#w2ab1b9c28c17c15c21)
+ [ステップ 3: 自動関連付けスクリプトを使用してインスタンスを作成する](#opscm-unattend-script)
+ [`chef-client` の繰り返し実行を自動化する他の方法](#w2ab1b9c28c17c15c25)
+ [関連トピック](#opscm-unattend-assoc-related)

## サポートされるオペレーティングシステム
<a name="w2ab1b9c28c17c15c17"></a>

ノードでサポートされているオペレーティングシステムの最新の一覧については、[[Chef website](https://docs.chef.io/platforms.html)] (Chef のウェブサイト) を参照してください。

## ステップ 1: インスタンスプロファイルとして使用する IAM ロールを作成します
<a name="opscm-create-instance-profile"></a>

EC2 インスタンスプロファイルとして使用する AWS Identity and Access Management (IAM) ロールを作成し、次のポリシーを IAM ロールにアタッチします。このポリシーでは、ノード登録時に AWS OpsWorks for Chef Automate (`opsworks-cm`) API が EC2 インスタンスと通信することが許可されています。インスタンスプロファイルの詳細については、Amazon EC2 のドキュメントの[「Using Instance Profiles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) (インスタンスプロファイルの使用)」を参照してください。IAM ロールを作成する方法については、Amazon EC2 のドキュメントの[「Creating an IAM Role in the Console」](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#create-iam-role-console)(コンソールでの IAM ロールの作成) を参照してください。。

------
#### [ JSON ]

****  

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

------

## ステップ 2: Chef クライアントクックブックをインストールする
<a name="w2ab1b9c28c17c15c21"></a>

まだ実行していない場合は、「[(代替) Berkshelf を使用してリモートソースからクックブックを取得する](opscm-starterkit.md#opscm-berkshelf)」の手順に従って、Berksfile または `Policyfile.rb` ファイルレファレンス によって Chef クライアントクックブックが参照され、クックブックがインストールされることを確認します。

## ステップ 3: 自動関連付けスクリプトを使用してインスタンスを作成する
<a name="opscm-unattend-script"></a>

1. EC2 インスタンスを作成するには、[スターターキット](opscm-starterkit.md)から EC2 インスタンス手順の `userdata`セクション、Amazon EC2 Auto Scaling グループの起動設定、または CloudFormation テンプレートに`userdata`スクリプトをコピーします。ユーザーデータへのスクリプトの追加の詳細については、Amazon EC2 ドキュメントの[「Running Commands on Your Linux Instance at Launch」](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)(Linux インスタンスでの起動時のコマンドの実行) を参照してください。

   このスクリプトは、`opsworks-cm` API の [https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_AssociateNode.html](https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_AssociateNode.html) コマンドを実行して、新しいノードを Chef サーバーに関連付けます。

   デフォルトでは、登録された新しいノードの名前はインスタンス ID ですが、`NODE_NAME` スクリプトの `userdata` 変数の値を変更することで、その名前を変更できます。現在、Chef コンソール UI の組織名を変更することはできないため、`CHEF_AUTOMATE_ORGANIZATION`の設定は `default` のままにします。

1. EC2 ドキュメントの[インスタンスの作成](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launching-instance.html)の手順に従い、ここで説明する変更を加えます。EC2 インスタンス起動ウィザードで、Amazon Linux AMI を選択します。

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

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

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

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

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

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

## `chef-client` の繰り返し実行を自動化する他の方法
<a name="w2ab1b9c28c17c15c25"></a>

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

`chef-client` に指定できるパラメータの詳細なリストについては、[Chef のドキュメント](https://docs.chef.io/ctl_chef_client.html)を参照してください。

## 関連トピック
<a name="opscm-unattend-assoc-related"></a>

次の AWS ブログ記事では、Auto Scaling グループを使用するか、複数のアカウント内で、Chef Automate サーバーにノードを自動的に関連付ける方法について詳しく説明します。
+ [Using AWS OpsWorks for Chef Automate to Manage EC2 Instances with Auto Scaling](https://aws.amazon.com/blogs/mt/using-aws-opsworks-for-chef-automate-to-manage-ec2-instances-with-auto-scaling/)
+ [OpsWorks for Chef Automate – Automatically Bootstrapping Nodes in Different Accounts](https://aws.amazon.com/blogs/mt/opsworks-for-chef-automate-automatically-bootstrapping-nodes-in-different-accounts/)