

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

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

**Topics**
+ [在 中建立 Chef Automate 伺服器 AWS 管理主控台](#gettingstarted-opscm-create-console)
+ [使用 建立 Chef Automate 伺服器 AWS CLI](#gettingstarted-opscm-create-cli)

## 在 中建立 Chef Automate 伺服器 AWS 管理主控台
<a name="gettingstarted-opscm-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 Chef Automate**。  
![\[OpsWorks 服務首頁\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/opspup_day0.png)

1. 在 AWS OpsWorks for Chef Automate 首頁上，選擇**建立 Chef Automate 伺服器**。  
![\[Chef Automate 伺服器首頁\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/opscm_dashboardhome.png)

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

1. 在 **Configure server (設定伺服器)** 頁面上，保留 **SSH key (SSH 金鑰)** 下拉式清單中的預設選項，除非您想要指定金鑰對名稱。  
![\[Select an SSH key (選取 SSH 金鑰) 頁面\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/opscm_keypair.png)

1. 保留 **Specify server endpoint (指定伺服器端點)** 中的預設值 **Use an automatically-generated endpoint (使用自動產生的端點)**，然後選擇 **Next (下一步)**，除非您希望伺服器位於您自己的自訂網域中。若要設定自訂網域，請繼續下一個步驟。  
![\[指定伺服器端點區段\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/opscm_use_auto_endpoint.png)

1. 若要使用自訂網域，請在 **Specify server endpoint (指定伺服器端點)** 下拉式清單中選擇 **Use a custom domain (使用自訂網域)**。  
![\[使用自訂網域\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/opscm_use_custom_domain.png)

   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. 在 **Configure Advanced Settings (設定進階設定)** 頁面的 **Network and Security (網路與安全)** 區域中，選擇 VPC、子網路，以及一或多個安全群組。下列是您的 VPC 的需求：
   + VPC 必須至少有一個公有子網路。
   + 必須啟用 DNS 解析。
   + 必須在公有子網路上啟用 **Auto-assign public IP (自動指派公有 IP)**。

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

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

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

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

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

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

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

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

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

## 使用 建立 Chef Automate 伺服器 AWS CLI
<a name="gettingstarted-opscm-create-cli"></a>

透過執行 AWS CLI 命令建立 AWS OpsWorks for Chef Automate 伺服器與在 主控台中建立伺服器不同。在 主控台中，如果您未指定要使用的現有服務角色和安全群組， 會為您 OpsWorks 建立服務角色和安全群組。在 中 AWS CLI，如果您未指定 OpsWorks 安全群組，但它不會自動建立服務角色，則必須在`create-server`命令中提供服務角色 ARN。在主控台中，當 OpsWorks 正在建立 Chef Automate 伺服器時，您可以下載 Chef Automate 入門套件和 Chef Automate 儀表板的登入憑證。由於您無法在使用 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 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. 請務必完成這些先決條件，特別是[設定 VPC](gettingstarted-opscm.md#set-up-vpc)，或確定您具備想要使用的現有 VPC。若要建立您的 Chef Automate 伺服器，您需要子網路 ID。

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

   ```
   umask 077
   openssl genrsa -out "pivotal" 2048
   openssl rsa -in "pivotal" -pubout
   ```

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

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

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

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

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

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

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

1. 執行 `create-server`命令來建立 AWS OpsWorks for Chef Automate 伺服器。
   + `--engine` 值為 `ChefAutomate`、`--engine-model` 為 `Single`，而 `--engine-version` 為 `12`。
   + 伺服器名稱在每個區域中 AWS 的帳戶內必須是唯一的。伺服器名稱開頭必須是字母，後面允許字母、數字或連字號 (-)，最多可包含 40 個字元。
   + 使用您在步驟 4 和 5 中複製的執行個體描述檔 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。

   ```
   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: Production` 和 `Department: Marketing`。如需在 AWS OpsWorks for Chef Automate 伺服器上新增和管理標籤的詳細資訊，請參閱本指南[在 AWS OpsWorks for Chef Automate 資源上使用標籤](opscm-tags.md)中的 。

   ```
   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\"}]
   ```

1. 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"
   ```

1. 如果您選擇讓 為您 AWS OpsWorks for Chef Automate 產生金鑰和密碼，您可以使用 [jq](https://stedolan.github.io/jq/) 等 JSON 處理器，從`create-server`結果中擷取可用格式的金鑰和密碼。安裝 [jq](https://stedolan.github.io/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
   ```

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

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

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