建立 Chef Automate 伺服器 - AWS OpsWorks

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

建立 Chef Automate 伺服器

重要

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

您可以使用 AWS OpsWorks for Chef Automate 主控台建立 Chef 伺服器,或 AWS CLI.

創建一個廚師自動化服務器 AWS Management Console

  1. 請登入 AWS Management Console 並開啟 AWS OpsWorks 主控台,網址為 https://console.aws.amazon.com/opsworks/

  2. 在 AWS OpsWorks 首頁上,選擇轉到 OpsWorks 廚師自動化

    AWS OpsWorks 服務首頁
  3. 在 AWS OpsWorks for Chef Automate 首頁上,選擇「建立 Chef 自動化伺服器」。

    Chef Automate 伺服器首頁
  4. Set name, region, and type (設定名稱、區域和類型) 頁面上,指定您的伺服器名稱。Chef 伺服器名稱最多可包含 40 個字元,而且只能包含英數字元和破折號。選取支援的區域,然後選擇支援您想要管理之節點數目的執行個體類型。如有需要,您可以在建立伺服器之後變更執行個體類型。在本逐步解說中,我們將在美國西部 (奧勒岡) 區域建立 m5.large 執行個體類型。選擇下一步

    Set name, region, and type (設定名稱、區域和類型) 頁面
  5. Configure server (設定伺服器) 頁面上,保留 SSH key (SSH 金鑰) 下拉式清單中的預設選項,除非您想要指定金鑰對名稱。

    Select an SSH key (選取 SSH 金鑰) 頁面
  6. 保留 Specify server endpoint (指定伺服器端點) 中的預設值 Use an automatically-generated endpoint (使用自動產生的端點),然後選擇 Next (下一步),除非您希望伺服器位於您自己的自訂網域中。若要設定自訂網域,請繼續下一個步驟。

    指定伺服器端點區段
  7. 若要使用自訂網域,請在 Specify server endpoint (指定伺服器端點) 下拉式清單中選擇 Use a custom domain (使用自訂網域)

    使用自訂網域
    1. Fully qualified domain name (FQDN) (完整網域名稱 (FQDN)) 中指定 FQDN。您必須擁有想要使用的網域名稱。

    2. SSL certificate (SSL 憑證) 中貼上整個 PEM 格式憑證,開頭為 –––--BEGIN CERTIFICATE----- 且結尾為 –––--END CERTIFICATE-----。SSL 憑證主體必須符合您在上個步驟輸入的 FQDN。

    3. SSL private key (SSL 私密金鑰) 中貼上整個 RSA 私密金鑰,開頭為 –––--BEGIN RSA PRIVATE KEY----- 且結尾為 –––--END RSA PRIVATE KEY-----。SSL 私密金鑰必須符合您在上個步驟的 SSL 憑證中輸入的公開金鑰。選擇下一步

  8. Configure Advanced Settings (設定進階設定) 頁面的 Network and Security (網路與安全) 區域中,選擇 VPC、子網路,以及一或多個安全群組。下列是您的 VPC 的需求:

    • VPC 必須至少有一個公有子網路。

    • 必須啟用 DNS 解析。

    • 必須在公有子網路上啟用 Auto-assign public IP (自動指派公有 IP)

    AWS OpsWorks 如果您還沒有要使用的安全性群組、服務角色和執行個體設定檔,可以為您產生安全性群組、服務角色和執行個體設定檔。您的伺服器可以是多個安全群組的成員。離開此頁面之後,您將無法變更 Chef 伺服器的網路與安全設定。

    網路與安全
  9. System maintenance (系統維護) 區段中,將日和小時設為您希望開始系統維護的時間。因為您應預期伺服器在系統維護期間離線,請選擇一般工作時間內伺服器需求較低的時間。連線的節點會進入 pending-server 狀態,直到維護完成為止。

    需要維護時段。您可以使用 AWS Management Console、 AWS CLI或 API 來變更開始日期和稍後的時間。

    系統維護
  10. 設定備份。預設會啟用自動備份。設定要開始自動備份的偏好頻率和小時數,並設定要存放在 Amazon 簡單儲存服務中的備份世代數量。最多可保留 30 個備份;達到最大備份時, AWS OpsWorks for Chef Automate 會刪除最舊的備份以騰出空間供新備份使用。

    自動備份
  11. (選用) 在 Tags (標籤) 中,將標籤新增至伺服器和相關資源,例如 EC2 執行個體、彈性 IP 地址、安全群組、S3 儲存貯體和備份。如需標記 AWS OpsWorks for Chef Automate 伺服器的更多資訊,請參閱在 AWS OpsWorks for Chef Automate 資源上使用標籤

  12. 當您完成設定進階設定時,選擇 Next (下一步)

  13. Review (檢閱) 頁面上,檢視您的選擇。當您準備好建立伺服器時,選擇 Launch (啟動)

    在等待 AWS OpsWorks 創建 Chef 服務器時,請轉到使用入門套件設定 Chef 伺服器並下載入門套件和 Chef 自動化儀表板憑據。不要等到您的伺服器上線,再下載這些項目。

    伺服器建立完成之後, AWS OpsWorks for Chef Automate 首頁即會顯示您的 Chef 伺服器,且狀態為 online (線上)。伺服器上線之後,伺服器的網域會提供 Chef Automate 儀表板,URL 格式如下:https://your_server_name-random.region.opsworks-cm.io

使用建立 Chef 自動化伺服器 AWS CLI

透過執行 AWS CLI 指令建立 AWS OpsWorks for Chef Automate 伺服器與在主控台中建立伺服器不同。如果您未指定要使用的現有服務角色和安全性群組,請在主控台中為您 AWS OpsWorks 建立服務角色和安全性群組。在中 AWS CLI,如果您未指定安全性群組,但不會自動建立服務角色,則 AWS OpsWorks 可以為您建立安全性群組;您必須提供服務角色 ARN 做為create-server命令的一部分。在控制台中,在創建 Chef 自動化服務器時 AWS OpsWorks ,您可以下載 Chef 自動化入門套件和 Chef 自動化儀表板的登錄憑據。由於在使用建立 AWS OpsWorks for Chef Automate 伺服器時無法執行此操作 AWS CLI,因此您可以在新 AWS OpsWorks for Chef Automate 伺服器上線後,使用 JSON 處理公用程式從create-server命令的結果中取得登入認證和入門套件。或者,您可以在新的 AWS OpsWorks for Chef Automate 伺服器上線之後,在主控台中產生一組新的登入資料和新的入門套件。

如果您的本機電腦尚未執行 AWS CLI,請 AWS CLI 按照 AWS 命令列界面使用者指南中的安裝指示下載並安裝。本節不會說明您可以搭配 create-server 命令使用的所有參數。如需 create-server 參數的詳細資訊,請參閱「 參考」create-server中的 AWS CLI

  1. 請務必完成這些先決條件,特別是設定 VPC,或確定您具備想要使用的現有 VPC。若要建立您的 Chef Automate 伺服器,您需要子網路 ID。

  2. (選用) 使用 OpenSSL 產生 Chef 樞紐金鑰,並將金鑰儲存至您本機電腦上安全方便的檔案。如果您未在 create-server 命令中提供樞紐金鑰,則會在伺服器建立程序中自動產生。如果您想要略過此步驟,您可以改為從 create-server 命令的結果取得 Chef Automate 樞紐金鑰。如果您選擇使用以下命令產生樞紐金鑰,請務必包含 -pubout 參數,因為 Chef Automate 樞紐金鑰值是 RSA 金鑰對的公有部分。如需詳細資訊,請參閱步驟 6。

    umask 077 openssl genrsa -out "pivotal" 2048 openssl rsa -in "pivotal" -pubout
  3. 建立服務角色和執行個體設定檔。 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
  4. 建立堆疊 AWS CloudFormation 完成後,尋找並複製帳戶中服務角色的 ARN。

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

    list-roles 命令的結果中,尋找類似如下的服務角色 ARN 項目。請記下服務角色 ARN。您需要這些值,才能建立您的 Chef Automate 伺服器。

    { "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" }
  5. 在您的帳戶中,找出並複製執行個體描述檔的 ARN。

    aws iam list-instance-profiles --no-paginate

    list-instance-profiles 命令的結果中,尋找類似如下的執行個體描述檔 ARN 項目。請記下執行個體描述檔 ARN。您需要這些值,才能建立您的 Chef Automate 伺服器。

    { "Path": "/", "InstanceProfileName": "aws-opsworks-cm-ec2-role", "InstanceProfileId": "EXAMPLEDC6UR3LTUW7VHK", "Arn": "arn:aws:iam::123456789012:instance-profile/aws-opsworks-cm-ec2-role", "CreateDate": "2017-01-05T20:42:20Z", "Roles": [ { "Path": "/service-role/", "RoleName": "aws-opsworks-cm-ec2-role", "RoleId": "EXAMPLEE4STNUQG6R22HC", "Arn": "arn:aws:iam::123456789012:role/service-role/aws-opsworks-cm-ec2-role", "CreateDate": "2017-01-05T20:42:20Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } ] },
  6. 透過執行create-server指令來建立 AWS OpsWorks for Chef Automate 伺服器。

    • --engine 值為 ChefAutomate--engine-modelSingle,而 --engine-version12

    • 伺服器名稱在您的 AWS 帳戶中,在每個區域內必須是唯一的。伺服器名稱開頭必須是字母,後面允許字母、數字或連字號 (-),最多可包含 40 個字元。

    • 使用您在步驟 4 和 5 中複製的執行個體描述檔 ARN 和服務角色 ARN。

    • 有效的執行個體類型為 m5.larger5.xlarger5.2xlarge。如需這些執行個體類型規格的詳細資訊,請參閱 Amazon EC2 使用者指南中的執行個體類型

    • --engine-attributes 參數為選用;如果您未指定一或兩個值,伺服器建立程序會為您產生值。如果您新增 --engine-attributes,請指定您在步驟 2 中產生的 CHEF_AUTOMATE_PIVOTAL_KEY 值、CHEF_AUTOMATE_ADMIN_PASSWORD 或兩者。

      如果您未設定 CHEF_AUTOMATE_ADMIN_PASSWORD 的值,這時系統會產生密碼,並在 create-server 回應中傳回。您也可以在主控台中再次下載入門套件,這會重新產生此密碼。密碼長度最少 八個字元,最多 32 個字元。密碼可包含字母、數字和特殊字元 (!/@#$%^+=_)。密碼必須包含至少一個小寫字母、一個大寫字母、一個數字和一個特殊字元。

    • SSH 金鑰對為選用,但如果您需要重設 Chef Automate 儀表板管理員密碼,它可協助您連線至 Chef Automate 伺服器。如需建立安全殼層 key pair 的詳細資訊,請參閱 Amazon EC2 使用者指南中的 Amazon EC2 金鑰配對

    • 若要使用自訂網域,請將下列參數新增至您的命令。否則,Chef Automate 伺服器建立程序會自動為您產生端點。需要所有三個參數才能設定自訂網域。如需有關使用這些參數的其他需求的詳細資訊,請參閱 AWS OpsWorks CM API 參考CreateServer中的。

      • --custom-domain - 伺服器的選用公有端點,例如 https://aws.my-company.com

      • --custom-certificate - PEM 格式的 HTTPS 憑證。此值可以是單一、自我簽署的憑證或憑證鏈。

      • --custom-private-key - PEM 格式的私密金鑰,以便利用 HTTPS 連線至伺服器。私密金鑰不得加密,不能受密碼或密碼短語保護。

    • 需要每週系統維護。有效值必須以下列格式指定:DDD:HH:MM。指定的時間是以國際標準時間 (UTC) 表示。如果您未指定 --preferred-maintenance-window 的值,預設值為星期二、星期三或星期五的隨機一小時時段。

    • --preferred-backup-window 的有效值必須以下列其中一種格式指定:HH:MM 表示每日備份,或 DDD:HH:MM 表示每週備份。指定的時間是以 UTC 表示。預設值為隨機的每日開始時間。若要退出自動備份,請改為新增參數 --disable-automated-backup

    • 針對 --security-group-ids,輸入一或多個安全群組 ID,並以空格分隔。

    • 針對 --subnet-ids,輸入子網路 ID。

    aws opsworks-cm create-server --engine "ChefAutomate" --engine-model "Single" --engine-version "12" --server-name "server_name" --instance-profile-arn "instance_profile_ARN" --instance-type "instance_type" --engine-attributes '{"CHEF_AUTOMATE_PIVOTAL_KEY":"pivotal_key","CHEF_AUTOMATE_ADMIN_PASSWORD":"password"}' --key-pair "key_pair_name" --preferred-maintenance-window "ddd:hh:mm" --preferred-backup-window "ddd:hh:mm" --security-group-ids security_group_id1 security_group_id2 --service-role-arn "service_role_ARN" --subnet-ids subnet_ID

    以下是範例。

    aws opsworks-cm create-server --engine "ChefAutomate" --engine-model "Single" --engine-version "12" --server-name "automate-06" --instance-profile-arn "arn:aws:iam::12345678912:instance-profile/aws-opsworks-cm-ec2-role" --instance-type "m5.large" --engine-attributes '{"CHEF_AUTOMATE_PIVOTAL_KEY":"MZZE...Wobg","CHEF_AUTOMATE_ADMIN_PASSWORD":"zZZzDj2DLYXSZFRv1d"}' --key-pair "amazon-test" --preferred-maintenance-window "Mon:08:00" --preferred-backup-window "Sun:02:00" --security-group-ids sg-b00000001 sg-b0000008 --service-role-arn "arn:aws:iam::12345678912:role/service-role/aws-opsworks-cm-service-role" --subnet-ids subnet-300aaa00

    以下範例建立一個使用自訂網域的 Chef Automate 伺服器。

    aws opsworks-cm create-server --engine "ChefAutomate" --engine-model "Single" --engine-version "12" \ --server-name "my-custom-domain-server" \ --instance-profile-arn "arn:aws:iam::12345678912:instance-profile/aws-opsworks-cm-ec2-role" \ --instance-type "m5.large" \ --engine-attributes '{"CHEF_AUTOMATE_PIVOTAL_KEY":"MZZE...Wobg","CHEF_AUTOMATE_ADMIN_PASSWORD":"zZZzDj2DLYXSZFRv1d"}' \ --custom-domain "my-chef-automate-server.my-corp.com" \ --custom-certificate "-----BEGIN CERTIFICATE----- EXAMPLEqEXAMPLE== -----END CERTIFICATE-----" \ --custom-private-key "-----BEGIN RSA PRIVATE KEY----- EXAMPLEqEXAMPLE= -----END RSA PRIVATE KEY-----" \ --key-pair "amazon-test" \ --preferred-maintenance-window "Mon:08:00" \ --preferred-backup-window "Sun:02:00" \ --security-group-ids sg-b00000001 sg-b0000008 \ --service-role-arn "arn:aws:iam::12345678912:role/service-role/aws-opsworks-cm-service-role" \ --subnet-ids subnet-300aaa00

    以下範例建立的 Chef Automate 伺服器會新增下面二個標籤:Stage: ProductionDepartment: Marketing。如需有關在 AWS OpsWorks for Chef Automate 伺服器上新增和管理標籤的詳細資訊,請參閱本指南在 AWS OpsWorks for Chef Automate 資源上使用標籤中的。

    aws opsworks-cm create-server --engine "ChefAutomate" --engine-model "Single" --engine-version "12" \ --server-name "my-test-chef-server" \ --instance-profile-arn "arn:aws:iam::12345678912:instance-profile/aws-opsworks-cm-ec2-role" \ --instance-type "m5.large" \ --engine-attributes '{"CHEF_AUTOMATE_PIVOTAL_KEY":"MZZE...Wobg","CHEF_AUTOMATE_ADMIN_PASSWORD":"zZZzDj2DLYXSZFRv1d"}' \ --key-pair "amazon-test" \ --preferred-maintenance-window "Mon:08:00" \ --preferred-backup-window "Sun:02:00" \ --security-group-ids sg-b00000001 sg-b0000008 \ --service-role-arn "arn:aws:iam::12345678912:role/service-role/aws-opsworks-cm-service-role" \ --subnet-ids subnet-300aaa00 \ --tags [{\"Key\":\"Stage\",\"Value\":\"Production\"},{\"Key\":\"Department\",\"Value\":\"Marketing\"}]
  7. AWS OpsWorks for Chef Automate 大約需要 15 分鐘來創建一個新的服務器。請勿關閉 create-server 命令的輸出或關閉您的 shell 工作階段,因為輸出可能包含不會再顯示的重要資訊。若要從 create-server 結果取得密碼和入門套件,請前往下一個步驟。

    如果您在伺服器上使用自訂網域,請在 create-server 命令的輸出中複製 Endpoint 屬性的值。以下是範例。

    "Endpoint": "automate-07-exampleexample.opsworks-cm.us-east-1.amazonaws.com"
  8. 如果您選擇為您 AWS OpsWorks for Chef Automate 生成密鑰和密碼,則可以使用 JSON 處理器(例如 j q)以可用的格式從create-server結果中提取它們。安裝 jq 之後,您可以執行下列命令來解壓縮樞紐金鑰、Chef Automate 儀表板管理員密碼和入門套件。如果您未在步驟 4 中提供自己的樞紐金鑰和密碼,請務必將解壓縮的樞紐金鑰和管理員密碼儲存在方便但安全的位置。

    #Get the Chef password: cat resp.json | jq -r '.Server.EngineAttributes[] | select(.Name == "CHEF_AUTOMATE_ADMIN_PASSWORD") | .Value' #Get the Chef Pivotal Key: cat resp.json | jq -r '.Server.EngineAttributes[] | select(.Name == "CHEF_AUTOMATE_PIVOTAL_KEY") | .Value' #Get the Chef Starter Kit: cat resp.json | jq -r '.Server.EngineAttributes[] | select(.Name == "CHEF_STARTER_KIT") | .Value' | base64 -D > starterkit.zip
  9. 或者,如果您未從create-server命令結果中擷取入門套件,您可以從 AWS OpsWorks for Chef Automate 主控台中伺服器的 [內容] 頁面下載新的入門套件。下載新的入門套件會重設 Chef Automate 儀表板管理員密碼。

  10. 如果您不是使用自訂網域,請繼續下一個步驟。如果您在伺服器上使用自訂網域,請在企業的 DNS 管理工具中建立 CNAME 項目,以將自訂網域指向您在步驟 7 中複製的 AWS OpsWorks for Chef Automate 端點。在完成此步驟之前,您無法連線或登入具有自訂網域的伺服器。

  11. 完成伺服器建立程序之後,繼續使用入門套件設定 Chef 伺服器