使用建立 AWS OpsWorks for Chef Automate 伺服器 AWS CloudFormation - AWS OpsWorks

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用建立 AWS OpsWorks for Chef Automate 伺服器 AWS CloudFormation

重要

AWS OpsWorks 廚師自動化已於 2024 年 5 月 5 日終止使用壽命,並已針對新客戶和現有客戶停用。我們建議現有客戶遷移到 Chef SaaS 或替代解決方案。如果您有任何疑問,可以通過 AWS Re: post 或通過AWS 高級 Support 與 AWS Support 團隊聯繫。

AWS OpsWorks for Chef Automate 可讓您在中執行 Chef 自動化伺服器 AWS。只要約 15 分鐘就能佈建 Chef Automate 伺服器。

自 2021 年 5 月 3 日起,將一些廚師自動化伺服器屬性 AWS OpsWorks for Chef Automate 儲存在中 AWS Secrets Manager。如需詳細資訊,請參閱 整合 AWS Secrets Manager

下列逐步解說可協助您 AWS OpsWorks for Chef Automate 透過在中建立堆疊來建立中的伺服器 AWS CloudFormation。

必要條件

在建立新的 Chef Automate 伺服器之前,請先建立 AWS OpsWorks for Chef Automate 之外的資源,即您將用來存取和管理 Chef 伺服器的資源。如需詳細資訊,請參閱本指南中「入門」一節的必要條件

檢閱使用AWS CloudFormation 者指南範本參考的 OpsWorks-CM 部分,以瞭解您用來建立伺服器之 AWS CloudFormation 範本中支援和必要的值。

如果您要建立使用自訂網域的伺服器,您需要自訂網域、憑證和私密金鑰。您必須在 AWS CloudFormation 範本中為這三個參數指定值。如需有關CustomDomainCustomCertificate和參數需求的詳細資訊,請CustomPrivateKey參閱 AWS OpsWorks CM API 參考CreateServer中的。

建立 CHEF_AUTOMATE_ADMIN_PASSWORD 引擎屬性值的密碼值。密碼長度最少 八個字元,最多 32 個字元。密碼可包含字母、數字和特殊字元 (!/@#$%^+=_)。密碼必須包含至少一個小寫字母、一個大寫字母、一個數字和一個特殊字元。您可以在 AWS CloudFormation 範本中指定此密碼,或在建立堆疊時指定為CHEF_AUTOMATE_ADMIN_PASSWORD參數值。

在開始在中建立 Chef 自動化伺服器之前,請先產生 Base64 編碼的 RSA key pair。 AWS CloudFormation貨幣對的公鑰是 CreateServerAPI CHEF_AUTOMATE_PIVOTAL_KEY 中廚師特定EngineAttributes的值。此機碼在 AWS CloudFormation 主控台中提供為 Parameters 的值,或在中的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 – 適用於 Windows 上 PuTTY 的金鑰產生器

在 AWS CloudFormation中建立 Chef Automate 伺服器

本節說明如何使用 AWS CloudFormation 範本建立可建立 AWS OpsWorks for Chef Automate 伺服器的堆疊。您可以使用主 AWS CloudFormation 控台或 AWS CLI. 範例 AWS CloudFormation 範本可供您用來建置 AWS OpsWorks for Chef Automate 伺服器堆疊。請務必使用您自己的伺服器名稱、IAM 角色、執行個體設定檔、伺服器說明、備份保留計數、維護選項和選用標籤來更新範例範本。如果您的伺服器將使用自訂網域,您必須在 AWS CloudFormation 範本中指定CustomDomainCustomCertificate、和CustomPrivateKey參數的值。您可以在 AWS CloudFormation 範本中指定CHEF_AUTOMATE_ADMIN_PASSWORDCHEF_AUTOMATE_PIVOTAL_KEY引擎屬性及其值,或僅提供屬性,然後在 [ AWS CloudFormation 建立堆疊] 精靈或create-stack命令中指定屬性的值。如需有關這些屬性的詳細資訊,請參閱本指南「入門」一節的創建一個廚師自動化服務器 AWS Management Console

使用 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 (指定範本) 中,請選擇範本的來源。對於本逐步解說,請選擇 [上傳範本檔案],然後上傳建立 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 控制台中,你必須在樞紐鍵值的每一行的末尾添加 newline (\n) 字符,如下面的屏幕截圖。選擇下一步

    在中指定堆疊詳細資料頁 CloudFormation
  6. 在 [設定堆疊選項] 頁面上,您可以將標籤新增到使用堆疊建立的伺服器,並選擇 IAM 角色來建立資源 (如果尚未指定要在範本中使用的 IAM 角色)。指定選項完成後,選擇 Next (下一步)。若要取得有關進階選項 (例如回復觸發器) 的詳細資訊,請參閱《AWS CloudFormation 使用指南》中的〈設定 AWS CloudFormation 堆疊

  7. Review (檢閱) 頁面上,檢視您的選擇。當您準備好建立伺服器堆疊時,請選擇 Create stack (建立堆疊)

    當您等待 AWS CloudFormation 建立堆疊時,請檢視堆疊建立狀態。如果堆疊建立失敗,則檢閱顯示在主控台中的錯誤訊息,以協助您解決問題。如需疑難排解 AWS CloudFormation 堆疊中錯誤的詳細資訊,請參閱AWS CloudFormation 使用者指南中的疑難排解錯誤

    伺服器建立完成之後, AWS OpsWorks for Chef Automate 首頁即會顯示您的 Chef Automate 伺服器,且狀態為 online (線上)。從伺服器的「屬性」頁面,產生新的 Starter Kit (入門套件) 和 Chef Automate 儀表板登入資料。伺服器上線之後,伺服器的網域會提供 Chef Automate 儀表板,URL 格式如下:https://your_server_name-randomID.region.opsworks-cm.io

    注意

    如果您為伺服器指定了自訂網域、憑證和私密金鑰,請在企業的 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 CLI 按照 AWS 命令列界面使用者指南中的安裝指示下載並安裝。本節不會說明您可以搭配 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 更換成您的堆疊名稱。這是 AWS CloudFormation 堆棧的名稱,而不是您的廚師自動化服務器。Chef 自動化伺服器名稱是 AWS CloudFormation 範本ServerName中的值。

    • template 更換成您的範本檔案路徑,並視情況,將副檔名yaml 或 json 改成 .yaml.json

    • 的值對--parameters應於EngineAttributes來自 CreateServerAPI。處理 Chef 時,用於建立伺服器、由使用者提供的引擎屬性是 CHEF_AUTOMATE_PIVOTAL_KEY,即您依據必要條件所述步驟,使用公用程式產生的 base64 編碼 RSA 公用金鑰;以及 CHEF_AUTOMATE_ADMIN_PASSWORD,即您所建立,長度介於 8 和 32 個字元的密碼。如需 CHEF_AUTOMATE_ADMIN_PASSWORD 的詳細資訊,請參閱 使用建立 Chef 自動化伺服器 AWS CLI。您可以依照範例所示,提供指向包含關鍵金鑰之 PEM 檔案的指標,做為 PivotalKey 參數的值。如果樣板中CHEF_AUTOMATE_PIVOTAL_KEY未指定CHEF_AUTOMATE_ADMIN_PASSWORD和的值,您必須在指 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_PASSWORDCHEF_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 主控台中開啟新伺服器的「內容」頁面,然後下載入門套件。下載新的入門套件會重設 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
    • client_key組態中的 key_pair_file.pem 取代為包含您用來建立伺服器之 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 使用者指南中的疑難排解錯誤