

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

# 使用 建立 AWS OpsWorks for Puppet Enterprise 主伺服器 CloudFormation
<a name="opspup-create-server-cfn"></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 OpsWorks for Puppet Enterprise 可讓您在 中執行 [Puppet Enterprise](https://puppet.com/products/puppet-enterprise) 伺服器 AWS。只要約 15 分鐘就能佈建 Puppet Enterprise 主伺服器。

從 2021 年 5 月 3 日開始，OpsWorks for Puppet Enterprise 會在 中存放一些 Puppet Enterprise 伺服器屬性 AWS Secrets Manager。如需詳細資訊，請參閱[與 整合 AWS Secrets Manager](data-protection.md#data-protection-secrets-manager)。

下列逐步解說可協助您在 OpsWorks for Puppet Enterprise 中建立 Puppet 主伺服器，方法是在其中建立堆疊 CloudFormation。

**Topics**
+ [先決條件](#opspup-create-server-cfn-prereqs)
+ [在 CloudFormation中建立 Puppet Enterprise 主伺服器](#opspup-create-server-cfn-main)

## 先決條件
<a name="opspup-create-server-cfn-prereqs"></a>

建立新的 Puppet 主伺服器之前，請在 OpsWorks for Puppet Enterprise 外部建立您需要的資源，以存取和管理 Puppet 主伺服器。如需詳細資訊，請參閱本指南中「入門」一節的[先決條件](gettingstarted-opspup.md#gettingstarted-opspup-prereqs)。

如果您要建立使用自訂網域的伺服器，您需要自訂網域、憑證和私密金鑰。您必須為 CloudFormation 範本中這三個參數指定值。如需 `CustomDomain`、 `CustomCertificate`和 `CustomPrivateKey` 參數需求的詳細資訊，請參閱《*OpsWorks CM API 參考*》中的 [CreateServer](https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_CreateServer.html)。

檢閱 *CloudFormation 使用者指南*範本參考中的 [OpsWorks-CM 區段](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html)，以了解您用來建立伺服器的 CloudFormation 範本中支援和必要的值。

## 在 CloudFormation中建立 Puppet Enterprise 主伺服器
<a name="opspup-create-server-cfn-main"></a>

本節說明如何使用 CloudFormation 範本建置堆疊，以建立 OpsWorks for Puppet Enterprise 主伺服器。您可以使用 CloudFormation 主控台或 來執行此操作 AWS CLI。您可以使用[範例 CloudFormation 範本](samples/opsworkscm-puppet-server.zip)來建置 OpsWorks for Puppet Enterprise 伺服器堆疊。請務必使用您自己的伺服器名稱、IAM 角色、執行個體描述檔、伺服器描述、備份保留計數、維護選項和選用標籤來更新範例範本。如果您的伺服器將使用自訂網域，您必須在 CloudFormation 範本中指定 `CustomDomain`、`CustomCertificate` 和 `CustomPrivateKey` 參數的值。如需有關這些選項的詳細資訊，請參閱本指南「入門」一節的[使用 建立 Puppet Enterprise Master AWS 管理主控台](gettingstarted-opspup-create.md#gettingstarted-opspup-create-console)。

**Topics**
+ [使用 CloudFormation （主控台） 建立 Puppet Enterprise Master](#opspup-create-server-cfn-console)
+ [使用 CloudFormation (CLI) 建立 Puppet Enterprise Master](#opspup-create-server-cfn-cli)

### 使用 CloudFormation （主控台） 建立 Puppet Enterprise Master
<a name="opspup-create-server-cfn-console"></a>

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

1. 在 CloudFormation 首頁上，選擇**建立堆疊**。

1. 在 **Prerequisite - Prepare template (先決條件 - 準備範本)**中，如果您使用的是 [範例 CloudFormation 範本](samples/opsworkscm-puppet-server.zip)，請選擇 **Template is ready (範本備妥)**。

1. 在 **Specify template (指定範本)** 中，請選擇範本的來源。在此演練中，選擇**上傳範本檔案**，然後上傳建立 Puppet Enterprise 伺服器的 CloudFormation 範本。瀏覽您的範本檔案，然後選擇 **Next (下一步)**。

    CloudFormation 範本可以是 YAML 或 JSON 格式。[範例 CloudFormation 範本](samples/opsworkscm-puppet-server.zip)可供您使用；請務必將範例值取代為您自己的值。您可以使用 CloudFormation 範本設計工具來建立新的範本或驗證現有的範本。如需如何執行此操作的詳細資訊，請參閱*CloudFormation 《 使用者指南*》中的[CloudFormation 設計工具界面概觀](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer-overview.html)。  
![\[CloudFormation 建立堆疊頁面\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/cfn_select_template.png)

1. 在 **Specify stack details (指定堆疊詳細資訊)** 頁面上，輸入堆疊的名稱。這個名稱不會與您的伺服器名稱相同，這只是堆疊名稱。在 **Parameters (參數)** 區域中，輸入用於登入 Puppet Enterprise 網頁的管理員密碼。此密碼必須使用 8 到 32 個 ASCII 字元。選擇**下一步**。  
![\[在 CloudFormation 中指定詳細資訊頁面\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/cfn_template_params.png)

1. 在**選項**頁面上，您可以將標籤新增至使用堆疊建立的伺服器，如果您尚未指定要在範本中使用的 IAM 角色，請選擇用於建立資源的 IAM 角色。指定選項完成後，選擇 **Next (下一步)**。如需復原觸發等進階選項的詳細資訊，請參閱*CloudFormation 《 使用者指南*》中的[設定 CloudFormation 堆疊選項](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-add-tags.html)。

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

   當您等待 CloudFormation 建立堆疊時，請檢視堆疊建立狀態。如果堆疊建立失敗，則檢閱顯示在主控台中的錯誤訊息，以協助您解決問題。如需 CloudFormation 針對堆疊中的錯誤進行故障診斷的詳細資訊，請參閱*CloudFormation 《 使用者指南*》中的[故障診斷錯誤](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-errors)。

   當伺服器建立完成時，您可以在 OpsWorks for Puppet Enterprise 首頁上使用 Puppet 主伺服器，狀態為**線上**。伺服器上線之後，伺服器的網域會提供 Puppet Enterprise 主控台，URL 格式如下：`https://your_server_name-randomID.region.opsworks-cm.io`。
**注意**  
如果您為伺服器指定自訂網域、憑證和私有金鑰，請在企業的 DNS 管理工具中建立 CNAME 項目，將您的自訂網域映射到 OpsWorks for Puppet Enterprise 為伺服器自動產生的端點。在將產生的端點對應至您的自訂網域值之前，您無法管理伺服器或連線至該伺服器的 Puppet Enterprise 管理網站。  
若要取得產生的端點值，請在伺服器上線後執行下列 AWS CLI 命令：  

   ```
   aws opsworks describe-servers --server-name server_name
   ```

### 使用 CloudFormation (CLI) 建立 Puppet Enterprise Master
<a name="opspup-create-server-cfn-cli"></a>

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

1. 請務必完成[先決條件](gettingstarted-opspup.md#gettingstarted-opspup-prereqs)建立 OpsWorks for Puppet Enterprise 主控端的 。

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

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

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

   在 `list-roles` 命令的結果中，尋找類似如下的服務角色和執行個體描述檔項目。記下服務角色和執行個體描述檔的 ARNs，並將其新增至您用來建立 Puppet 主伺服器堆疊的 CloudFormation 範本。

1. 再次執行 **create-stack**命令，建立 OpsWorks for Puppet Enterprise 主伺服器。
   + 將 *stack\$1name* 更換成您的堆疊名稱。這是 CloudFormation 堆疊的名稱，而不是您的 Puppet 主伺服器。Puppet 主伺服器名稱就是 CloudFormation 範本內 `ServerName` 的值。
   + 將 *template* 更換成您的範本檔案路徑，並視情況，將副檔名*yaml 或 json* 改成 `.yaml` 或 `.json`。
   + `--parameters` 的值會對應到 [EngineAttributes](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-engineattributes)，其來源是 [CreateServer](https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_CreateServer.html) API。處理 Puppet 時，以下是將用來建立伺服器的使用者提供引擎屬性。r10k 引擎屬性可將您的 Puppet 主伺服器連接到程式碼儲存庫，以供管理伺服器的環境資訊設定。如需 r10k 引擎屬性的詳細資訊，請參閱 Puppet Enterprise 文件中的[搭配 r10k 管理程式碼](https://puppet.com/docs/pe/2019.8/r10k.html)。
     + `PUPPET_ADMIN_PASSWORD`，用於登入 Puppet Enterprise 主控台網頁的管理員密碼。密碼長度必須介於 8 和 32 個 ASCII 字元，且至少包含一個大寫字母、一個小寫字母、一個數字和一個特殊字元。
     + `PUPPET_R10K_REMOTE`，控制儲存庫的 URL (例如，ssh://git@your.git-repo.com:user/control-repo.git)。指定 r10k 遠端開啟 TCP 連接埠 8170。
     + `PUPPET_R10K_PRIVATE_KEY`。 如果您使用的是私有 Git 儲存庫，請新增 PUPPET\$1R10K\$1PRIVATE\$1KEY 來指定 SSH URL 和 PEM 編碼的私有 SSH 金鑰。

   ```
   aws cloudformation create-stack --stack-name stack_name --template-body file://template.yaml or json --parameters ParameterKey=AdminPassword,ParameterValue="password"
   ```

   下列是 範例。

   ```
   aws cloudformation create-stack --stack-name "OpsWorksCMPuppetServerStack" --template-body file://opsworkscm-puppet-server.json --parameters ParameterKey=AdminPassword,ParameterValue="09876543210Ab#"
   ```

   下列範例會在 CloudFormation 範本中未提供 r10k 引擎屬性時，將它們指定為參數。包含 r10k 引擎屬性的範例範本，`puppet-server-param-attributes.yaml`，已包含在[範例 CloudFormation 範本](samples/opsworkscm-puppet-server.zip)中。

   ```
   aws cloudformation create-stack --stack-name MyPuppetStack --template-body file://puppet-server-param-attributes.yaml --parameters ParameterKey=AdminPassword,ParameterValue="superSecret1%3" ParameterKey=R10KRemote,ParameterValue="https://www.yourRemote.com" ParameterKey=R10KKey,ParameterValue="$(cat puppet-r10k.pem)"
   ```

   下面範例會在 CloudFormation 範本中指定 r10k 引擎屬性及其值；此命令只需要指向範本檔案。經指定做為 `--template-body`、`puppet-server-in-file-attributes.yaml` 值的範本，則包含於[範例 CloudFormation 範本](samples/opsworkscm-puppet-server.zip)中。

   ```
   aws cloudformation create-stack --stack-name MyPuppetStack --template-body file://puppet-server-in-file-attributes.yaml
   ```

1. (選用) 若要取得堆疊建立狀態，請執行下列命令。

   ```
   aws cloudformation describe-stacks --stack-name stack_name 
   ```

1. 當堆疊建立完成後，請前往下一節[使用入門套件設定 Puppet 主伺服器](opspup-starterkit.md)。如果堆疊建立失敗，則檢閱顯示在主控台中的錯誤訊息，以協助您解決問題。如需 CloudFormation 針對堆疊中的錯誤進行故障診斷的詳細資訊，請參閱*CloudFormation 《 使用者指南*》中的[故障診斷錯誤](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-errors)。