

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

# 更新 AWS OpsWorks for Chef Automate 伺服器以使用自訂網域
<a name="opscm-update-server-custom-domain"></a>

**重要**  
AWS OpsWorks for Chef Automate 已於 2024 年 5 月 5 日結束生命週期，並已針對新客戶和現有客戶停用。我們建議現有客戶遷移至 Chef SaaS 或替代解決方案。如果您有任何問題，可以在 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

本節說明如何使用伺服器備份來建立新 AWS OpsWorks for Chef Automate 伺服器，以更新現有伺服器來使用自訂網域和憑證。基本上，您要複製現有的 AWS OpsWorks for Chef Automate 2.0 伺服器，方法是從備份建立新伺服器，然後將新伺服器設定為使用自訂網域、憑證和私有金鑰。

**Topics**
+ [先決條件](#opscm-update-server-custom-domain-reqs)
+ [限制](#opscm-update-server-custom-domain-limits)
+ [更新伺服器以使用自訂網域](#opscm-update-server-custom-domain-howto)
+ [另請參閱](#opscm-update-server-custom-domain-seealso)

## 先決條件
<a name="opscm-update-server-custom-domain-reqs"></a>

以下是更新現有 AWS OpsWorks for Chef Automate 伺服器以使用自訂網域和憑證的要求。
+ 要更新 (或複製) 的伺服器必須執行 Chef Automate 2.0。
+ 決定要使用哪個備份來建立新伺服器。您必須至少有一個可用的備份，以供您要更新的伺服器使用。如需 中備份的詳細資訊 AWS OpsWorks for Chef Automate，請參閱 [備份 AWS OpsWorks for Chef Automate 伺服器](opscm-chef-backup.md)。
+ 準備好您要用來建立做為備份來源的現有伺服器的服務角色和執行個體描述檔 ARN。
+ 請確定您正在執行最新版本的 AWS CLI。如需更新 AWS CLI 工具的詳細資訊，請參閱《*AWS 命令列界面使用者指南*》中的[安裝 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) 。

## 限制
<a name="opscm-update-server-custom-domain-limits"></a>

當您透過從備份建立新伺服器來更新現有伺服器時，新伺服器不能與現有 AWS OpsWorks for Chef Automate 伺服器完全相同。
+ 您只能使用 AWS CLI 或其中一個 [AWS SDKs](https://docs.aws.amazon.com/#sdks) 來完成此程序。您無法使用 AWS 管理主控台從備份建立新伺服器。
+ 新伺服器不能使用與帳戶內及 AWS 區域內現有伺服器相同的名稱。名稱必須與您做為備份來源使用的現有伺服器不同。
+ 連接到現有伺服器的節點不會由新伺服器管理。您必須執行下列其中一項作業。
  + 連接不同的節點，因為節點不能由多個 Chef Automate 伺服器管理。
  + 將節點從現有伺服器 (備份的來源) 移轉至新伺服器和新的自訂網域端點。如需有關如何遷移節點的詳細資訊，請參閱 Chef 文件。

## 更新伺服器以使用自訂網域
<a name="opscm-update-server-custom-domain-howto"></a>

若要更新現有的 Chef Automate 2.0 伺服器，您可以製作它的副本，方法是執行 `create-server` 命令，並新增參數以指定備份、自訂網域、自訂憑證和自訂私密金鑰。

1. 如果您沒有可在 `create-server` 命令中指定的服務角色或執行個體描述檔 ARN，請遵循 [使用 建立 Chef Automate 伺服器 AWS CLI](gettingstarted-opscm-create.md#gettingstarted-opscm-create-cli) 中的步驟 1-5 來建立可使用的服務角色和執行個體設定檔。

1. 如果您還沒有這樣做，請找到現有的 Chef Automate 2.0 伺服器的備份 (您想以該伺服器為基礎來建立使用自訂網域之新伺服器)。執行下列命令，以顯示您帳戶和區域中所有 AWS OpsWorks for Chef Automate 備份的相關資訊。請記下您要使用的備份 ID。

   ```
   aws opsworks-cm --region region name describe-backups
   ```

1. 執行 `create-server`命令來建立 AWS OpsWorks for Chef Automate 伺服器。
   + `--engine` 值為 `ChefAutomate`、`--engine-model` 為 `Single`，而 `--engine-version` 為 `12`。
   + 伺服器名稱在每個區域中 AWS 的帳戶內必須是唯一的。伺服器名稱開頭必須是字母，後面允許字母、數字或連字號 (-)，最多可包含 40 個字元。
   + 使用步驟 1 中的執行個體描述檔 ARN 和服務角色 ARN。
   + 有效的執行個體類型為 `m5.large`、`r5.xlarge` 或 `r5.2xlarge`。如需這些執行個體類型規格的詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)。
   + `--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 伺服器。如需建立 SSH 金鑰對的詳細資訊，請參閱《[Amazon EC2 使用者指南》中的 Amazon EC2 金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。 *Amazon EC2 *
   + 若要使用自訂網域，請將下列參數新增至您的命令。否則，Chef Automate 伺服器建立程序會自動為您產生端點。需要所有三個參數才能設定自訂網域。如需使用這些參數的其他需求的相關資訊，請參閱《CM API OpsWorks 參考》中的 [CreateServer](https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_CreateServer.html)。
     + `--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。
   + 針對 `--backup-id`，輸入您在步驟 2 中複製的備份 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 --backup-id backup_ID
   ```

   以下範例建立一個使用自訂網域的 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 \
       --backup-id MyChefServer-20191004122143125
   ```

1. AWS OpsWorks for Chef Automate 建立新伺服器大約需要 15 分鐘。在 `create-server` 命令的輸出中，複製 `Endpoint` 屬性的值。下列是 範例。

   ```
   "Endpoint": "automate-07-exampleexample.opsworks-cm.us-east-1.amazonaws.com"
   ```

   請勿關閉 `create-server` 命令的輸出或關閉您的 shell 工作階段，因為輸出可能包含不會再顯示的重要資訊。若要從 `create-server` 結果取得密碼和入門套件，請前往下一個步驟。

1. 如果您選擇讓 為您 AWS OpsWorks for Chef Automate 產生金鑰和密碼，您可以使用 JSON 處理器，例如 [jq](https://stedolan.github.io/jq/)，從`create-server`結果中擷取可用格式的金鑰和密碼。安裝 [jq](https://stedolan.github.io/jq/) 之後，您可以執行下列命令來解壓縮樞紐金鑰、Chef Automate 儀表板管理員密碼和入門套件。如果您未在步驟 3 中提供自己的樞紐金鑰和密碼，請務必將解壓縮的樞紐金鑰和管理員密碼儲存在方便但安全的位置。

   ```
   #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
   ```

1. 或者，如果您沒有從`create-server`命令結果中擷取入門套件，您可以從 AWS OpsWorks for Chef Automate 主控台的伺服器屬性頁面下載新的入門套件。下載新的入門套件會重設 Chef Automate 儀表板管理員密碼。

1. 在企業的 DNS 管理工具中建立 CNAME 項目，將自訂網域指向您在步驟 4 中複製的 AWS OpsWorks for Chef Automate 端點。在完成此步驟之前，您無法連線或登入伺服器。

1. 完成伺服器建立程序之後，繼續[使用入門套件設定 Chef 伺服器](opscm-starterkit.md)。

## 另請參閱
<a name="opscm-update-server-custom-domain-seealso"></a>
+ [使用 建立 Chef Automate 伺服器 AWS CLI](gettingstarted-opscm-create.md#gettingstarted-opscm-create-cli)
+ [從備份還原 AWS OpsWorks for Chef Automate 伺服器](opscm-chef-restore.md)
+ CM API OpsWorks 參考中的 [CreateServer](https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_CreateServer.html) 
+ 《AWS CLI 命令參考》**中的 [https://docs.aws.amazon.com/cli/latest/reference/opsworks-cm/create-server.html](https://docs.aws.amazon.com/cli/latest/reference/opsworks-cm/create-server.html) 一節