

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

# 建立 Puppet Enterprise 主伺服器
<a name="gettingstarted-opspup-create"></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 主控台或 來建立 Puppet 主伺服器 AWS CLI。

**Topics**
+ [使用 建立 Puppet Enterprise Master AWS 管理主控台](#gettingstarted-opspup-create-console)
+ [使用 建立 Puppet Enterprise Master AWS CLI](#gettingstarted-opspup-create-cli)

## 使用 建立 Puppet Enterprise Master AWS 管理主控台
<a name="gettingstarted-opspup-create-console"></a>

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/opsworks/](https://console.aws.amazon.com/opsworks/) 開啟 OpsWorks 主控台。

1. 在 OpsWorks 首頁上，選擇 **Go to OpsWorks for Puppet Enterprise**。  
![\[OpsWorks 服務首頁\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/opspup_day0.png)

1. 在 OpsWorks for Puppet Enterprise 首頁上，選擇**建立 Puppet Enterprise 伺服器**。  
![\[Puppet 主伺服器儀表板\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/opspup_dashboardhome.png)

1. 在 **Set name, region, and type (設定名稱、區域和類型)** 頁面上，指定您的伺服器名稱。Puppet 主伺服器名稱最多可包含 40 個字元、必須以字母開頭，而且只能包含英數字元和破折號。選取支援的區域，然後選擇支援您想要管理之節點數目的執行個體類型。如有需要，您可以在建立伺服器之後變更執行個體類型。在此演練中，我們會在美國西部 （奧勒岡） 區域中建立 **m5.xlarge **執行個體類型。選擇**下一步**。  
![\[Set name, region, and type (設定名稱、區域和類型) 頁面\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/opspup_setname.png)

1. 在 **Configure server (設定伺服器)** 頁面上，保留 **SSH key (SSH 金鑰)** 下拉式清單中的預設選項，除非您想要指定金鑰對名稱。在**設定 Puppet Code Manager** 區域的 **r10k 遠端**欄位中，指定 Git 遠端的有效 SSH 或 HTTPS URL。在 **r10k 私有金鑰**欄位中，貼上 OpsWorks 可用於存取 r10k 遠端儲存庫的 SSH 私有金鑰。當您建立私有儲存庫時這是由 Git 所提供，但如果您使用 HTTPS 身分驗證來存取控制儲存庫則非必要。選擇**下一步**。  
![\[設定伺服器頁面\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/opspup_configcreds.png)

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

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

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

   1. 在 **SSL certificate (SSL 憑證)** 中貼上整個 PEM 格式憑證，開頭為 `–––--BEGIN CERTIFICATE-----` 且結尾為 `–––--END CERTIFICATE-----`。SSL 憑證主體必須符合您在上個步驟輸入的 FQDN。在憑證之前和之後移除任何額外的資料行。

   1. 在 **SSL private key (SSL 私密金鑰)** 中貼上整個 RSA 私密金鑰，開頭為 `–––--BEGIN RSA PRIVATE KEY-----` 且結尾為 `–––--END RSA PRIVATE KEY-----`。SSL 私密金鑰必須符合您在上個步驟的 SSL 憑證中輸入的公開金鑰。在私密金鑰之前和之後刪除任何額外的資料行。選擇**下一步**。

1. 在**設定進階設定**頁面的網路**和安全**區域中，選擇 VPC、子網路和一或多個安全群組。如果您還沒有要使用的安全群組、服務角色和執行個體描述檔， OpsWorks 可以為您產生。您的伺服器可以是多個安全群組的成員。離開此頁面之後，您將無法變更 Puppet 主伺服器的網路與安全設定。  
![\[網路與安全\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/opspup_network_sec.png)

1. 在 **System maintenance (系統維護)** 區段中，將日和小時設為您希望開始系統維護的時間。因為您應預期伺服器在系統維護期間離線，請選擇一般工作時間內伺服器需求較低的時間。

   需要維護時段。您可以使用 AWS 管理主控台 AWS CLI或 APIs 來變更開始日期和時間。  
![\[系統維護\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/opspup_sysmaint.png)

1. 設定備份。預設會啟用自動備份。設定自動備份開始的偏好頻率和小時數，並設定要在 Amazon Simple Storage Service 中存放的備份產生次數。最多可保留 30 個備份；達到上限時，OpsWorks for Puppet Enterprise 會刪除最舊的備份，為新的備份騰出空間。  
![\[自動備份\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/opspup_backupconfig.png)

1. (選用) 在 **Tags (標籤)** 中，將標籤新增至伺服器和相關資源，例如 EC2 執行個體、彈性 IP 地址、安全群組、S3 儲存貯體和備份。如需標記 OpsWorks for Puppet Enterprise 伺服器的詳細資訊，請參閱 [在 AWS OpsWorks for Puppet Enterprise 資源上使用標籤](opspup-tags.md)。

1. 當您完成設定進階設定時，選擇 **Next (下一步)**。

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

   當您等待 OpsWorks 建立 Puppet 主伺服器時，請前往 [使用入門套件設定 Puppet 主伺服器](opspup-starterkit.md)並下載入門套件和 Puppet Enterprise 主控台登入資料。不要等到您的伺服器上線，再下載這些項目。

   當伺服器建立完成時，您可以在 OpsWorks for Puppet Enterprise 首頁上使用 Puppet 主伺服器，狀態為**線上**。伺服器上線之後，伺服器的網域會提供 Puppet Enterprise 主控台，URL 格式如下：`https://your_server_name-randomID.region.opsworks-cm.io`。

## 使用 建立 Puppet Enterprise Master AWS CLI
<a name="gettingstarted-opspup-create-cli"></a>

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

透過執行 AWS CLI 命令建立 OpsWorks for Puppet Enterprise 主伺服器與在主控台中建立伺服器不同。在 主控台中，如果您未指定要使用的現有服務角色和安全群組， 會為您 OpsWorks 建立服務角色和安全群組。在 中 AWS CLI， OpsWorks 如果您未指定安全群組，但它不會自動建立服務角色，則必須在`create-server`命令中提供服務角色 ARN。在 主控台中，當 OpsWorks 正在建立 Puppet 主伺服器時，您可以下載 Puppet Enterprise 主控台的入門套件和登入憑證。由於您在使用 建立 OpsWorks for Puppet Enterprise 主控端時無法執行此操作 AWS CLI，因此在新的 OpsWorks for Puppet Enterprise 主控端上線之後，您可以使用 JSON 處理公用程式從`create-server`命令結果取得登入憑證和入門套件。

如果您的本機電腦尚未執行 AWS CLI， AWS CLI 請遵循 *AWS Command Line Interface 使用者指南*中的[安裝說明](https://docs.aws.amazon.com/cli/latest/userguide/installing.html)下載並安裝 。本節不會說明您可以搭配 `create-server` 命令使用的所有參數。如需 `create-server` 參數的詳細資訊，請參閱「[ 參考」`create-server`](https://docs.aws.amazon.com/cli/latest/reference/opsworks-cm/create-server.html)中的 *AWS CLI *。

1. 請務必完成[先決條件](gettingstarted-opspup.md#gettingstarted-opspup-prereqs)。若要建立您的 Puppet 主伺服器，您需要子網路 ID，因此您必須具備 VPC。

1. 建立服務角色和執行個體描述檔。

1. 尋找並複製您帳戶中服務角色ARNs。

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

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

1. 在您的帳戶中，找出並複製執行個體描述檔的 ARN。

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

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

1. 執行 `create-server`命令來建立 OpsWorks for Puppet Enterprise 主伺服器。
   + `--engine` 值為 `Puppet`、 `--engine-model`為 `Monolithic`，而且`--engine-version`可以是 `2019`或 `2017`。
   + 伺服器名稱在每個區域中 AWS 的帳戶內必須是唯一的。伺服器名稱開頭必須是字母，後面允許字母、數字或連字號 (-)，最多可包含 40 個字元。
   + 使用您在步驟 3 和 4 中複製的執行個體描述檔 ARN 和服務角色 ARN。
   + 有效的執行個體類型為 `m5.xlarge`、`c5.2xlarge` 或 `c5.4xlarge`。如需這些執行個體類型規格的詳細資訊，請參閱《*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
   ```

   下列是 範例。

   ```
   aws opsworks-cm create-server --engine "Puppet" --engine-model "Monolithic" --engine-version "2019" --server-name "puppet-02" --instance-profile-arn "arn:aws:iam::111122223333:instance-profile/aws-opsworks-cm-ec2-role" --instance-type "m5.xlarge" --engine-attributes '{"PUPPET_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::111122223333:role/service-role/aws-opsworks-cm-service-role" --subnet-ids subnet-383daa71
   ```

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

   ```
   aws opsworks-cm create-server \
       --engine "Puppet" \
       --engine-model "Monolithic" \
       --engine-version "2019" \
       --server-name "puppet-02" \
       --instance-profile-arn "arn:aws:iam::111122223333:instance-profile/aws-opsworks-cm-ec2-role" \
       --instance-type "m5.xlarge" \
       --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::111122223333:role/service-role/aws-opsworks-cm-service-role" \
       --subnet-ids subnet-383daa71
   ```

   下列範例會建立可新增兩個標籤的 Puppet 主伺服器：`Stage: Production` 和 `Department: Marketing`。如需在 OpsWorks for Puppet Enterprise 伺服器上新增和管理標籤的詳細資訊，請參閱本指南[在 AWS OpsWorks for Puppet Enterprise 資源上使用標籤](opspup-tags.md)中的 。

   ```
   aws opsworks-cm create-server \
       --engine "Puppet" \
       --engine-model "Monolithic" \
       --engine-version "2019" \
       --server-name "puppet-02" \
       --instance-profile-arn "arn:aws:iam::111122223333:instance-profile/aws-opsworks-cm-ec2-role" \
       --instance-type "m5.xlarge" \
       --engine-attributes '{"PUPPET_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::111122223333:role/service-role/aws-opsworks-cm-service-role" \
       --subnet-ids subnet-383daa71 \
       --tags [{\"Key\":\"Stage\",\"Value\":\"Production\"},{\"Key\":\"Department\",\"Value\":\"Marketing\"}]
   ```

1. OpsWorks for Puppet Enterprise 約需 15 分鐘才能建立新的伺服器。請勿關閉 `create-server` 命令的輸出或關閉您的 shell 工作階段，因為輸出可能包含不會再顯示的重要資訊。若要從 `create-server` 結果取得密碼和入門套件，請前往下一個步驟。

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

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

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

1. 繼續進行下一節：[使用入門套件設定 Puppet 主伺服器](opspup-starterkit.md)。