

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

# 更新適用於 Puppet Enterprise Server 的 OpsWorks 以使用自訂網域
<a name="opspup-update-server-custom-domain"></a>

**重要**  
 AWS OpsWorks for Puppet Enterprise 此服務已於 2024 年 3 月 31 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

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

**Topics**
+ [先決條件](#opspup-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="opspup-update-server-custom-domain-reqs"></a>

以下是更新現有 OpsWorks for Puppet Enterprise 伺服器以使用自訂網域和憑證的要求。
+ 您要更新 （或複製） 的伺服器必須執行 Puppet Enterprise 2019.8.5。
+ 決定要使用哪個備份來建立新伺服器。您必須至少有一個可用的備份，以供您要更新的伺服器使用。如需 OpsWorks for Puppet Enterprise 備份的詳細資訊，請參閱 [備份 Puppet Enterprise Server 的 OpsWorks](opspup-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>

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

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

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

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

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

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

1. 執行 `create-server`命令來建立 OpsWorks for Puppet Enterprise 伺服器。
   + `--engine` 值為 `Puppet`、 `--engine-model` 為 `Monolithic`，而 `--engine-version`為 `2019`或 `2017`。
   + 伺服器名稱在每個區域中 AWS 的帳戶內必須是唯一的。伺服器名稱開頭必須是字母，後面允許字母、數字或連字號 (-)，最多可包含 40 個字元。
   + 使用您在步驟 3 和 4 中複製的執行個體描述檔 ARN 和服務角色 ARN。
   + 有效的執行個體類型為 `c4.large`、`c4.xlarge` 或 `c4.2xlarge`。如需這些執行個體類型規格的詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)。
   + `--engine-attributes` 參數為選用；如果您未指定 Puppet 管理員密碼，伺服器建立程序會為您產生密碼。如果您新增 `--engine-attributes`，請指定 `PUPPET_ADMIN_PASSWORD`，這是用於登入 Puppet Enterprise 主控台網頁的管理員密碼。此密碼必須使用 8 到 32 個 ASCII 字元。
   + SSH 金鑰對為選用，但如果您需要重設主控台管理員密碼，它可協助您連線至 Puppet 主伺服器。如需建立 SSH 金鑰對的詳細資訊，請參閱《[Amazon EC2 使用者指南》中的 Amazon EC2 金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。 *Amazon EC2 *
   + 若要使用自訂網域，請將下列參數新增至您的命令。否則，Puppet 主伺服器建立程序會自動為您產生端點。需要所有三個參數才能設定自訂網域。如需使用這些參數的其他需求的相關資訊，請參閱《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。

   ```
   aws opsworks-cm create-server --engine "Puppet" --engine-model "Monolithic" --engine-version "2019" --server-name "server_name" --instance-profile-arn "instance_profile_ARN" --instance-type "instance_type" --engine-attributes '{"PUPPET_ADMIN_PASSWORD":"ASCII_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
   ```

   下列範例會建立使用自訂網域的 Puppet 主伺服器。

   ```
   aws opsworks-cm create-server \
       --engine "Puppet" \
       --engine-model "Monolithic" \
       --engine-version "2019" \
       --server-name "puppet-02" \
       --instance-profile-arn "arn:aws:iam::1019881987024:instance-profile/aws-opsworks-cm-ec2-role" \
       --instance-type "c4.large" \
       --engine-attributes '{"PUPPET_ADMIN_PASSWORD":"zZZzDj2DLYXSZFRv1d"}' \
       --custom-domain "my-puppet-master.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::044726508045:role/service-role/aws-opsworks-cm-service-role" \
       --subnet-ids subnet-383daa71
   ```

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

   ```
   "Endpoint": "puppet-2019-exampleexample.opsworks-cm.us-east-1.amazonaws.com"
   ```

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

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

   ```
   #Get the Puppet password:
   cat resp.json | jq -r '.Server.EngineAttributes[] | select(.Name == "PUPPET_ADMIN_PASSWORD") | .Value'
   
   #Get the Puppet Starter Kit:
   cat resp.json | jq -r '.Server.EngineAttributes[] | select(.Name == "PUPPET_STARTER_KIT") | .Value' | base64 -D > starterkit.zip
   ```
**注意**  
您無法在 AWS 管理主控台中重新產生新的 Puppet 主伺服器入門套件。當您使用 建立 Puppet 主伺服器時 AWS CLI，請執行上述`jq`命令，將`create-server`結果中的 base64 編碼入門套件儲存為 ZIP 檔案。

1. 或者，如果您沒有從`create-server`命令結果中擷取入門套件，您可以從 OpsWorks for Puppet Enterprise 主控台的伺服器屬性頁面下載新的入門套件。

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

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

## 另請參閱
<a name="opscm-update-server-custom-domain-seealso"></a>
+ [使用 建立 Puppet Enterprise Master AWS CLI](gettingstarted-opspup-create.md#gettingstarted-opspup-create-cli)
+ [備份和還原 Puppet Enterprise Server 的 OpsWorks](opspup-backup-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) 一節