AWS CloudFormation を使用して AWS OpsWorks for Chef Automate サーバーを作成する - AWS OpsWorks

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

AWS CloudFormation を使用して AWS OpsWorks for Chef Automate サーバーを作成する

重要

AWS OpsWorksfor Chef Automateは新規のお客様の受け入れを終了しました。既存のお客様は、2024 年 5 月 5 日まで影響を受けません。この時点で、サービスは利用できなくなります。既存のお客様には、Chef SaaS または代替ソリューションに移行することをお勧めします。詳細については、「AWS OpsWorksシェフオートメイトのサポート終了に関するよくある質問用」を参照してください。

AWS OpsWorks for Chef Automate を使用すると、AWS で Chef Automate (Chefの自動化) サーバーを実行できるようになります。約 15 分で Chef Automate サーバーをプロビジョニングできます。

2021 年 5 月 3 日より、AWS OpsWorks for Chef Automate は一部のChef Automate サーバー属性を AWS Secrets Manager に保存します。詳細については、「AWS Secrets Manager との統合」を参照してください。

以下のウォークスルーでは、AWS OpsWorks for Chef Automate でスタックを作成することにより、AWS CloudFormation でサーバーを作成でき ます。

前提条件

新しい Chef Automate サーバーを作成する前に、Chef サーバーにアクセスして管理するために必要なリソースを AWS OpsWorks for Chef Automate の外部で作成してください。詳細については、このガイドの「はじめる」セクションにある「前提条件」を参照してください。

AWS CloudFormationユーザーガイドテンプレートリファレンスのOpsWorks -CM セクションを参照して、AWS CloudFormationサーバーの作成に使用するテンプレートでサポートされる値と必須の値を確認してください。

カスタムドメインを使用するサーバーを作成する場合は、カスタムドメイン、証明書、およびプライベートキーが必要です。AWS CloudFormation テンプレートでこれら 3 つのパラメータすべてに値を指定する必要があります。、CustomPrivateKeyおよびパラメータの要件の詳細についてはCustomDomainCustomCertificateAWS OpsWorksCM API CreateServerリファレンスのを参照してください

CHEF_AUTOMATE_ADMIN_PASSWORD エンジン属性のパスワード値を作成します。パスワードの最小の長さは 8 文字、最大は 32 文字です。パスワードには、文字、数字、および特殊文字 ((!/@#$%^+=_)) を使用できます。パスワードは、少なくとも 1 つの小文字、1 つの大文字、1 つの数字、および 1 つの特殊文字を含む必要があります。このパスワードは、AWS CloudFormation テンプレートで指定するか、スタックの作成時に CHEF_AUTOMATE_ADMIN_PASSWORD パラメータの値として指定します。

AWS CloudFormation で Chef Automate サーバーの作成を開始する前に、base64 でエンコードされた RSA キーペアを生成します。ペアの公開鍵はCHEF_AUTOMATE_PIVOTAL_KEYCreateServerAPI の Chef EngineAttributes固有の値です。このキーは、AWS CloudFormation コンソールまたは AWS CLI の create-stack コマンドで [Parameters (パラメータ)] の値として提供されます。このキーを生成するには、次の方法をお勧めします。

  • Linux ベースのコンピュータで、次の OpenSSL コマンドを実行してこのキーを生成できます。

    openssl genrsa -out pivotal_key_file_name.pem 2048

    生成したら、鍵ペアの RSA 公開鍵部分をファイルにエクスポートします。公開鍵は、CHEF_AUTOMATE_PIVOTAL_KEY の値となります。

    openssl rsa -in pivotal_key_file_name.pem -pubout -out public.pem -outform PEM
  • Windows ベースのコンピュータでは、PuTTYgen ユーティリティを使用して base64 でエンコードされた RSA キーペアを生成できます。詳細については、SSH.com で「PuTTYgen - Key Generator for PuTTY on Windows」を参照してください。

AWS CloudFormation で Chef Automate サーバーを作成する

このセクションでは、AWS CloudFormation テンプレートを使用して、AWS OpsWorks for Chef Automate サーバーを作成するスタックを構築する方法について説明します。これを行うには、AWS CloudFormation コンソールまたは AWS CLI を使用します。AWS CloudFormationAWS OpsWorks for Chef Automateサーバースタックの構築に使用できるサンプルテンプレートが用意されています。サンプルテンプレートを更新するには、必ず、独自のサーバー名、IAM ロール、インスタンスプロファイル、サーバーの説明、バックアップ保持数、メンテナンスオプション、およびオプションのタグを使用してください。サーバーでカスタムドメインを使用する場合は、CustomDomain テンプレートで、CustomCertificateCustomPrivateKey、および AWS CloudFormation パラメータの値を指定する必要があります。AWS CloudFormation テンプレートで CHEF_AUTOMATE_ADMIN_PASSWORD および CHEF_AUTOMATE_PIVOTAL_KEY エンジン属性とその値を指定するか、属性だけを指定した後、AWS CloudFormation の [Create Stack] (スタックの作成) ウィザードまたは create-stack コマンドで属性の値を指定できます。これらの属性の詳細については、このガイドの「はじめに」セクションの「AWS Management Console で Chef Automate サーバーを作成する」を参照してください。

AWS CloudFormation (コンソール) を使用して Chef Automate サーバーを作成する

  1. AWS Management Console にサインインし、AWS CloudFormationコンソール (https://console.aws.amazon.com/cloudformation) を開きます。

  2. AWS CloudFormation ホームページでは、[スタックの作成] を選択します。

  3. サンプルテンプレートを使用している場合は、「前提条件-テンプレートの準備」で、「AWS CloudFormationテンプレート準備完了」を選択します。

  4. [Specify template] 内で、テンプレートのソースを選択します。このウォークスルーでは、[Upload a template file] を選択し、Chef Automate サーバを生成する AWS CloudFormation テンプレートをアップロードします。テンプレートファイルを参照し、[Next] を選択します。

    AWS CloudFormation テンプレートは YAML 形式または JSON 形式のいずれかで使用できます。サンプル AWS CloudFormation テンプレートを使用できます。必ず、サンプル値を独自の値に置き換えてください。AWS CloudFormation テンプレートデザイナーを使用すると、新しいテンプレートを構築したり、既存のテンプレートを検証したりすることができます。この方法の詳細については、AWS CloudFormationユーザーガイドのAWS CloudFormationDesigner インターフェイスの概要」を参照してください。

    
                     CloudFormation スタックページの作成
  5. [Specify stack details] ページでスタックの名前を入力します。これは、サーバーの名前と同じ名前にしないでください。スタック名にすぎません。[Parameters (パラメータ)] 領域に、「前提条件」で作成した値を貼り付けます。[Password] にパスワードを入力します。

    RSA キーファイルの内容を貼り付けますPivotalKey。AWS CloudFormation コンソールでは、下記のスクリーンショットにあるように、主要キー値の各行の末尾に改行 (\n) 文字を追加する必要があります。[Next] (次へ) を選択します。

    
                     スタックの詳細ページを指定 CloudFormation
  6. [Configure stack options] (スタックオプションの設定) ページでは、スタックを使用して作成するサーバーにタグを追加することができ、テンプレートで使用する IAM ロールをまだ指定していない場合には、リソースを作成するための IAM ロールを選択できます。オプションの指定を終了したら、[Next (次へ)] を選択します。ロールバックトリガーなどの詳細オプションの詳細については、AWS CloudFormationユーザーガイドのAWS CloudFormationスタックオプションを設定する」を参照してください。

  7. [確認] ページで選択内容を確認します。サーバースタックを作成する準備ができたら、[Create stack] を選択します。

    AWS CloudFormation がスタックを作成している間、スタックの作成状況が表示されます。スタックの作成に失敗した場合、コンソールに表示されるエラーメッセージを確認し、問題を解決します。AWS CloudFormationスタックのエラーのトラブルシューティングの詳細については、AWS CloudFormationユーザーガイドのエラーのトラブルシューティング」を参照してください。

    サーバーの作成が完了すると、AWS OpsWorks for Chef Automate のホームページで、Chef Automate サーバーが [online] のステータスになり、利用可能になります。サーバーの [Properties (プロパティ)] ページで、新しいスターターキットと Chef Automate ダッシュボードの認証情報を生成します。サーバーがオンラインになると、Chef Automate ダッシュボードがサーバーのドメインで https://your_server_name-randomID.region.opsworks-cm.io の形式の URL で利用できます。

    注記

    サーバーのカスタムドメイン、証明書、プライベートキーを指定した場合は、エンタープライズの DNS 管理ツールで CNAME エントリを作成します。このエントリは、AWS OpsWorks for Chef Automate によってサーバー用に自動的に生成されたエンドポイントに、カスタムドメインをマッピングします。生成されたエンドポイントをカスタムドメイン値にマッピングするまで、サーバーを管理したり、サーバーの Chef Automate ダッシュボードに接続したりできません。

    生成されたエンドポイント値を取得するには、サーバーがオンラインになった後に次の AWS CLI コマンドを実行します。

    aws opsworks describe-servers --server-name server_name

AWS CloudFormation (CLI) を使用して Chef Automate サーバーを作成する

ローカルコンピュータで AWS CLI を実行していない場合は、「AWS コマンドラインインターフェイスのユーザーガイド」の「インストール手順」の指示に従って AWS CLI をダウンロードおよびインストールします。このセクションでは、create-stack コマンドで使用できるパラメータのすべては説明しません。create-stack パラメータの詳細については、「create-stackリファレンス」の「AWS CLI」を参照してください。

  1. 必ず [前提条件] を実行して AWS OpsWorks for Chef Automate サーバーを作成してください。

  2. サービスロールとインスタンスプロファイルを作成します。AWS OpsWorks では、両方の作成に使用できる AWS CloudFormation テンプレートが提供されています。次の AWS CLI コマンドを実行して、サービスロールとインスタンスプロファイルを作成する AWS CloudFormation スタックを作成します。

    aws cloudformation create-stack --stack-name OpsWorksCMRoles --template-url https://s3.amazonaws.com/opsworks-cm-us-east-1-prod-default-assets/misc/opsworks-cm-roles.yaml --capabilities CAPABILITY_NAMED_IAM

    AWS CloudFormation によるスタックの作成が完了したら、アカウントのサービスロールの ARN を見つけてコピーします。

    aws iam list-roles --path-prefix "/service-role/" --no-paginate

    list-roles コマンドの結果内で、次のようなサービスロールとインスタンスプロファイルのエントリを探します。サービスロールとインスタンスプロファイルの ARN を書き留め、サーバースタックの作成に使用する AWS CloudFormation テンプレートにそれらを追加します。

    { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" } } ] }, "RoleId": "AROZZZZZZZZZZQG6R22HC", "CreateDate": "2018-01-05T20:42:20Z", "RoleName": "aws-opsworks-cm-ec2-role", "Path": "/service-role/", "Arn": "arn:aws:iam::000000000000:role/service-role/aws-opsworks-cm-ec2-role" }, { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "opsworks-cm.amazonaws.com" } } ] }, "RoleId": "AROZZZZZZZZZZZZZZZ6QE", "CreateDate": "2018-01-05T20:42:20Z", "RoleName": "aws-opsworks-cm-service-role", "Path": "/service-role/", "Arn": "arn:aws:iam::000000000000:role/service-role/aws-opsworks-cm-service-role" }
  3. create-stack コマンドをもう一度実行して AWS OpsWorks for Chef Automate サーバーを作成します。

    • stack_name をスタックの名前に置き換えます。これは、Chef Automate サーバーではなく、AWS CloudFormation スタックの名前です。Chef Automate サーバー名は、ServerName テンプレートにおける AWS CloudFormation の値です。

    • template をテンプレートファイルへのパスに置き換え、yaml または json を必要に応じて .yaml または .json に置き換えます。

    • の値は CreateServerAPI--parameters EngineAttributesからの値に対応しています。Chef の場合、サーバーを作成するためにユーザーが指定するエンジン属性は、CHEF_AUTOMATE_PIVOTAL_KEY (「前提条件」で説明されているユーティリティを使用して生成する base64 でエンコードされた RSA パブリックキー) と CHEF_AUTOMATE_ADMIN_PASSWORD (ユーザーが作成する 8~32 文字のパスワード) です。CHEF_AUTOMATE_ADMIN_PASSWORD の詳細については、「AWS CLI を使用して Chef Automate サーバーを作成する」を参照してください。例に示すように、PivotalKey パラメータの値として重要なキーが含まれている PEM ファイルへのポインターを指定できます。CHEF_AUTOMATE_ADMIN_PASSWORDCHEF_AUTOMATE_PIVOTAL_KEY の値がテンプレートで指定されていない場合、AWS CLI コマンドで値を指定する必要があります。

    aws cloudformation create-stack --stack-name stack_name --template-body file://template.yaml or json --parameters ParameterKey=PivotalKey,ParameterValue="base64_encoded_RSA_public_key_value"

    CHEF_AUTOMATE_ADMIN_PASSWORD 属性と CHEF_AUTOMATE_PIVOTAL_KEY 属性のサンプル値が含まれている例を以下に示します。AWS CloudFormation テンプレートでこれらの属性の値を指定しなかった場合、同様のコマンドを実行します。

    aws cloudformation create-stack --stack-name "OpsWorksCMChefServerStack" --template-body file://opsworkscm-server.yaml --parameters ParameterKey=PivotalKey,ParameterValue="$(openssl rsa -in "pivotalKey.pem" -pubout)" ParameterKey=Password,ParameterValue="SuPer\$ecret890"
  4. スタックの作成が完了したら、AWS OpsWorks for Chef Automate コンソールで新しいサーバーの [Properties] (プロパティ) ページを開き、スターターキットをダウンロードします。新しいスターターキットをダウンロードすると、Chef Automate ダッシュボードの管理者パスワードがリセットされます。

  5. サーバーでカスタムドメイン、証明書、およびプライベートキーを使用する場合は、(オプション) カスタムドメインを使用するように knife を設定します。knife.rb を設定のステップに従い、ステップ 7 に進みます。

    カスタムドメインを使用していない場合は、次の Amazon S3 バケットの場所からルート認証局 (CA) 証明書をダウンロードします: https://s3.amazonaws.com/opsworks-cm-us-east-1-prod-default-assets/misc/opsworks-cm-ca-2020-root.pem。証明書ファイルを安全かつ便利な場所に保存します。この証明書は、次のステップで knife.rb を設定するために必要です。

  6. 新しいサーバーで knife コマンドを使用するには、Chef knife.rb 設定ファイルの設定を更新します。サンプル knife.rb ファイルは、スターターキットに含まれています。次の例は、カスタムドメインを使用しないサーバーで knife.rb を設定する方法を示しています。カスタムドメインを使用している場合は、knife 設定手順の (オプション) カスタムドメインを使用するように knife を設定します。 を参照してください。

    • ENDPOINT をサーバーのエンドポイント値で置き換えます。これは、スタック作成オペレーションの出力の一部です。エンドポイントを取得するには、次のコマンドを実行します。

      aws cloudformation describe-stacks --stack-name stack_name
    • client_key の設定の key_pair_file.pem を、サーバーの作成に使用した CHEF_AUTOMATE_PIVOTAL_KEY を含む PEM ファイルの名前に置き換えます。

      base_dir = File.join(File.dirname(File.expand_path(__FILE__)), '..') log_level :info log_location STDOUT node_name 'pivotal' client_key File.join(base_dir, '.chef', 'key_pair_file.pem') syntax_check_cache_path File.join(base_dir, '.chef', 'syntax_check_cache') cookbook_path [File.join(base_dir, 'cookbooks')] chef_server_url 'ENDPOINT/organizations/default' ssl_ca_file File.join(base_dir, '.chef', 'ca_certs', 'opsworks-cm-ca-2020-root.pem') trusted_certs_dir File.join(base_dir, '.chef', 'ca_certs')
  7. サーバーの作成プロセスが完了したら、「スターターキットを使用して Chef サーバーを設定する」に進みます。スタックの作成に失敗した場合、コンソールに表示されるエラーメッセージを確認し、問題を解決します。AWS CloudFormationスタックのエラーのトラブルシューティングの詳細については、AWS CloudFormationユーザーガイドのエラーのトラブルシューティング」を参照してください。