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

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

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

AWS OpsWorks for Chef Automateを実行することができます。Chef Automateサーバー内AWS。約 15 分で Chef Automate サーバーをプロビジョニングできます。

2021 年 5 月 3 日開始AWS OpsWorks for Chef AutomateChef Automateのサーバー属性をいくつかに格納しますAWS Secrets Manager。詳細については、「AWS Secrets Manager との統合」を参照してください。

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

前提条件

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

を確認します。OpsWorksCMセクションAWS CloudFormationユーザーガイドテンプレートリファレンス(Template Reference)では、サポートされている値と必須の値について説明しますAWS CloudFormationサーバーの作成に使用するテンプレート。

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

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_KEY、シェフ特定EngineAttributesからのCreateServerアピ。このキーは、の値として提供されます。パラメータのAWS CloudFormationコンソール、またはcreate-stackコマンドのAWS CLI。このキーを生成するには、次の方法をお勧めします。

  • 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 を使用します。An例AWS CloudFormationテンプレートの構築に使用できるAWS OpsWorks for Chef Automateサーバースタック。必ず、独自のサーバー名、IAM ロール、インスタンスプロファイル、サーバーの説明、バックアップ保持数、メンテナンスオプション、オプションのタグを使用してください。サーバーでカスタムドメインを使用する場合は、AWS CloudFormation テンプレートで、CustomDomainCustomCertificate、および CustomPrivateKey パラメータの値を指定する必要があります。AWS CloudFormation テンプレートで CHEF_AUTOMATE_ADMIN_PASSWORD および CHEF_AUTOMATE_PIVOTAL_KEY エンジン属性とその値を指定するか、属性だけを指定した後、AWS CloudFormation の [スタックの作成] ウィザードまたは 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. Eclipse前提条件-テンプレートを準備するを使用している場合には、例AWS CloudFormationテンプレートで、Template is ready (テンプレートの準備ができています)

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

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

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

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

    
                     スタックの詳細を指定するのページ内CloudFormation
  6. リポジトリの []スタックオプションの設定ページで、スタックを使用して作成するサーバーにタグを追加することができ、テンプレートで使用する 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 CLIAWS コマンドラインインターフェイスのユーザーガイドの「インストール手順」の指示に従って をダウンロードおよびインストールします。このセクションでは、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 サーバー名は、AWS CloudFormation テンプレートにおける ServerName の値です。

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

    • の値--parametersに対応しています。EngineAttributesからのCreateServerアピ。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.rb(オプション) カスタムドメインを使用するように knife を設定します。をクリックし、ステップ 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
    • 置換key_pair_file.pemclient_keyを含む PEM ファイルの名前を設定します。CHEF_AUTOMATE_PIVOTAL_KEYサーバーを作成していたことです。

      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ユーザーガイド