建立 Puppet Enterprise 主伺服器 - AWS OpsWorks

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

建立 Puppet Enterprise 主伺服器

重要

該 AWS OpsWorks for Puppet Enterprise 服務於 2024 年 3 月 31 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post 或透過進AWS 階 Support 與 AWS Support 團隊聯絡。

您可以使用 Puppet 企業主控台 OpsWorks 建立傀儡主控台,或 AWS CLI.

使用建立 Puppet 企業主機 AWS Management Console

  1. 請登入 AWS Management Console 並開啟 AWS OpsWorks 主控台,網址為 https://console.aws.amazon.com/opsworks/

  2. 在 AWS OpsWorks 首頁上, OpsWorks 針對 Puppet 企業選擇移至

    AWS OpsWorks 服務首頁
  3. 在 OpsWorks Puppet 企業首頁上,選擇建立 Puppet 企業伺服器

    Puppet 主伺服器儀表板
  4. Set name, region, and type (設定名稱、區域和類型) 頁面上,指定您的伺服器名稱。Puppet 主伺服器名稱最多可包含 40 個字元、必須以字母開頭,而且只能包含英數字元和破折號。選取支援的區域,然後選擇支援您想要管理之節點數目的執行個體類型。如有需要,您可以在建立伺服器之後變更執行個體類型。在本逐步解說中,我們將在美國西部 (奧勒岡) 區域建立 m5.xlarge 執行個體類型。選擇下一步

    Set name, region, and type (設定名稱、區域和類型) 頁面
  5. Configure server (設定伺服器) 頁面上,保留 SSH key (SSH 金鑰) 下拉式清單中的預設選項,除非您想要指定金鑰對名稱。在「設定傀儡程式碼管理員」區域的 r10k 遠端欄位中,指定 Git 遠端的有效安全殼層或 HTTPS 網址。在 r10k 私密金鑰欄位中,貼上 AWS OpsWorks 可用來存取 r10k 遠端儲存庫的 SSH 私密金鑰。當您建立私有儲存庫時這是由 Git 所提供,但如果您使用 HTTPS 身分驗證來存取控制儲存庫則非必要。選擇下一步

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

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

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

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

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

  8. 在 [設定進階設定] 頁面的 [網路和安全性] 區域中,選擇 VPC、子網路以及一或多個安全性群組。 AWS OpsWorks 如果您還沒有要使用的安全性群組、服務角色和執行個體設定檔,可以為您產生安全性群組、服務角色和執行個體設定檔。您的伺服器可以是多個安全群組的成員。離開此頁面之後,您將無法變更 Puppet 主伺服器的網路與安全設定。

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

    需要維護時段。您可以使用 AWS Management Console、 AWS CLI或 API 來變更開始日期和稍後的時間。

    系統維護
  10. 設定備份。預設會啟用自動備份。設定要開始自動備份的偏好頻率和小時數,並設定要存放在 Amazon 簡單儲存服務中的備份世代數量。最多可以保留 30 個備份;當達到上限時, OpsWorks Puppet Enterprise 會刪除最舊的備份,以騰出空間供新備份使用。

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

  12. 當您完成設定進階設定時,選擇 Next (下一步)

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

    等待建立 Puppet 主 AWS OpsWorks 機時,請繼續下載入門套件使用入門套件設定 Puppet 主伺服器和 Puppet 企業主控台認證。不要等到您的伺服器上線,再下載這些項目。

    伺服器建立完成後,您的 Puppet 主版可在 OpsWorks Puppet 企業版首頁上使用,其狀態為上。伺服器上線之後,伺服器的網域會提供 Puppet Enterprise 主控台,URL 格式如下:https://your_server_name-randomID.region.opsworks-cm.io

使用建立 Puppet 企業主機 AWS CLI

重要

該 AWS OpsWorks for Puppet Enterprise 服務於 2024 年 3 月 31 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post 或透過進AWS 階 Support 與 AWS Support 團隊聯絡。

透過執行 AWS CLI 命令建立 Puppet 企業主要伺服器,與在主控台中建立伺服器不同。 OpsWorks 如果您未指定要使用的現有服務角色和安全性群組,請在主控台中為您 AWS OpsWorks 建立服務角色和安全性群組。在中 AWS CLI,如果您未指定安全性群組,但不會自動建立服務角色,則 AWS OpsWorks 可以為您建立安全性群組;您必須提供服務角色 ARN 做為create-server命令的一部分。在主控台中建立 Puppet 主機時 AWS OpsWorks ,您會下載 Puppet Enterprise 主控台的入門套件和登入認證。因為在使用建立 Puppet Enterprise 主機版時無法執行此操作 AWS CLI,因此您可以使用 JSON 處理公用程式,在 Puppet Enterprise 主機的新 OpsWorks 主機上線後,從create-server命令的結果中取得登入認證和入門套件。 OpsWorks

如果您的本機電腦尚未執行 AWS CLI,請 AWS CLI 按照 AWS 命令列界面使用者指南中的安裝指示下載並安裝。本節不會說明您可以搭配 create-server 命令使用的所有參數。如需 create-server 參數的詳細資訊,請參閱「 參考」create-server中的 AWS CLI

  1. 請務必完成必要條件。若要建立您的 Puppet 主伺服器,您需要子網路 ID,因此您必須具備 VPC。

  2. 建立服務角色和執行個體設定檔。 AWS OpsWorks 提供可用來建立兩者的 AWS CloudFormation 樣板。執行下列 AWS CLI 命令以建立可為您建立服務角色和執行個體設定檔的 AWS CloudFormation 堆疊。

    aws cloudformation create-stack --stack-name OpsWorksCMRoles --template-url https://s3.amazonaws.com/opsworks-cm-us-east-1-prod-default-assets/misc/opsworks-cm-roles.yaml --capabilities CAPABILITY_NAMED_IAM
  3. 建立堆疊 AWS CloudFormation 完成後,尋找並複製帳戶中服務角色的 ARN。

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

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

    { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" } } ] }, "RoleId": "AROZZZZZZZZZZQG6R22HC", "CreateDate": "2018-01-05T20:42:20Z", "RoleName": "aws-opsworks-cm-ec2-role", "Path": "/service-role/", "Arn": "arn:aws:iam::000000000000:role/service-role/aws-opsworks-cm-ec2-role" }, { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "opsworks-cm.amazonaws.com" } } ] }, "RoleId": "AROZZZZZZZZZZZZZZZ6QE", "CreateDate": "2018-01-05T20:42:20Z", "RoleName": "aws-opsworks-cm-service-role", "Path": "/service-role/", "Arn": "arn:aws:iam::000000000000:role/service-role/aws-opsworks-cm-service-role" }
  4. 在您的帳戶中,找出並複製執行個體描述檔的 ARN。

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

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

    { "Path": "/", "InstanceProfileName": "aws-opsworks-cm-ec2-role", "InstanceProfileId": "EXAMPLEDC6UR3LTUW7VHK", "Arn": "arn:aws:iam::123456789012:instance-profile/aws-opsworks-cm-ec2-role", "CreateDate": "2017-01-05T20:42:20Z", "Roles": [ { "Path": "/service-role/", "RoleName": "aws-opsworks-cm-ec2-role", "RoleId": "EXAMPLEE4STNUQG6R22HC", "Arn": "arn:aws:iam::123456789012:role/service-role/aws-opsworks-cm-ec2-role", "CreateDate": "2017-01-05T20:42:20Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } ] },
  5. 透過執行create-server命令建立 Puppet 企業主機。 OpsWorks

    • --engine值為Puppet--engine-modelMonolithic,且--engine-version可以是20192017

    • 伺服器名稱在您的 AWS 帳戶中,在每個區域內必須是唯一的。伺服器名稱開頭必須是字母,後面允許字母、數字或連字號 (-),最多可包含 40 個字元。

    • 使用您在步驟 3 和 4 中複製的執行個體描述檔 ARN 和服務角色 ARN。

    • 有效的執行個體類型為 m5.xlargec5.2xlargec5.4xlarge。如需這些執行個體類型規格的詳細資訊,請參閱 Amazon EC2 使用者指南中的執行個體類型

    • --engine-attributes 參數為選用;如果您未指定 Puppet 管理員密碼,伺服器建立程序會為您產生密碼。如果您新增 --engine-attributes,請指定 PUPPET_ADMIN_PASSWORD,這是用於登入 Puppet Enterprise 主控台網頁的管理員密碼。此密碼必須使用 8 到 32 個 ASCII 字元。

    • SSH 金鑰對為選用,但如果您需要重設主控台管理員密碼,它可協助您連線至 Puppet 主伺服器。如需有關建立安全殼層 key pair 的詳細資訊,請參閱 Amazon EC2 使用者指南中的 Amazon EC2 金鑰配對

    • 若要使用自訂網域,請將下列參數新增至您的命令。否則,Puppet 主伺服器建立程序會自動為您產生端點。需要所有三個參數才能設定自訂網域。如需有關使用這些參數的其他需求的詳細資訊,請參閱 AWS OpsWorks CM API 參考CreateServer中的。

      • --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: ProductionDepartment: Marketing。如需在 Puppet Enterprise 伺服器上 OpsWorks 新增和管理標籤的詳細資訊,請參閱本指南在 AWS OpsWorks for Puppet Enterprise 資源上使用標籤中的。

    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\"}]
  6. OpsWorks 對於木偶企業大約需要 15 分鐘來創建一個新的服務器。請勿關閉 create-server 命令的輸出或關閉您的 shell 工作階段,因為輸出可能包含不會再顯示的重要資訊。若要從 create-server 結果取得密碼和入門套件,請前往下一個步驟。

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

    "Endpoint": "puppet-07-exampleexample.opsworks-cm.us-east-1.amazonaws.com"
  7. 如果您選擇讓 Puppet 企業為您 OpsWorks 產生密碼,您可以使用 JSON 處理器 (例如 j q),以可用的格式從create-server結果中擷取密碼。安裝 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 Management Console中重新產生新的 Puppet 主伺服器入門套件。使用建立 Puppet 主機時 AWS CLI,請執行上述jq命令,將 base64 編碼的入門套件儲存為 ZIP 檔案。create-server

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

  9. 繼續進行下一節:使用入門套件設定 Puppet 主伺服器