逐步解說:使用 Jenkins 自動化 - AWS Systems Manager

逐步解說:使用 Jenkins 自動化

如果您的組織是在 CI/CD 管道中使用 Jenkins 軟體,您可以將自動化作為後建置步驟新增至 Amazon Machine Images (AMIs) 的預先安裝應用程式版本。自動化是 AWS Systems Manager 的功能。您也可以使用 Jenkins 排程功能呼叫自動化並建立您自己的作業系統 (OS) 修補頻率。

以下範例示範如何從現場部署或在 Amazon Elastic Compute Cloud (Amazon EC2) 中執行的 Jenkins 伺服器呼叫自動化。針對身分驗證,Jenkins 伺服器會使用您在範例中建立之 AWS Identity and Access Management (IAM) 使用者的 AWS 登入資料。如果您的 Jenkins 伺服器是在 Amazon EC2 中執行,您也可以使用 IAM 執行個體描述檔角色對其驗證。

注意

設定執行個體時,請務必遵照 Jenkins 安全最佳實務。

開始之前

在您以 Jenkins 設定自動化之前,請完成以下任務:

  • 完成 演練:使用自動化、AWS Lambda 和 Parameter Store 簡化 AMI 修補 範例。以下範例使用在該範例中建立的 UpdateMyLatestWindowsAmi Runbook。

  • 為 Automation 設定 IAM 角色。Systems Manager 需要執行個體描述檔角色和服務角色 ARN 以處理自動化。如需更多詳細資訊,請參閱 設定自動化

  • 設定自動化的 IAM 角色後,請使用以下程序為您的 Jenkins 伺服器建立 IAM 使用者帳戶。自動化使用 IAM 使用者帳戶的存取金鑰和私密金鑰在自動化期間驗證 Jenkins 伺服器。

建立 Jenkins 伺服器的使用者帳戶

  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

  2. 在導覽窗格中,選擇 Policies (政策),然後選擇 Create policy (建立政策)

  3. 請選擇 JSON 索引標籤。

  4. 將預設內容取代為以下內容。確定將 us-west-2123456789012 取代為您要使用的區域和帳戶。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:StartAutomationExecution", "Resource": [ "arn:aws:ssm:us-west-2:123456789012:document/UpdateMyLatestWindowsAmi", "arn:aws:ssm:us-west-2:123456789012:automation-definition/UpdateMyLatestWindowsAmi:$DEFAULT" ] } ] }
  5. 選擇 Review policy (檢閱政策)

  6. Review Policy (檢閱政策) 頁面上 Name (名稱)中,輸入該內嵌政策的名稱,例如 JenkinsPolicy

  7. 選擇 Create policy (建立政策)

  8. 在導覽窗格中,選擇 Users (使用者)

  9. 選擇 Add user (新增使用者)

  10. Set user details (設定使用者詳細資訊) 部分,指定使用者名稱 (例如 Jenkins)。

  11. Select AWS access type (選取 AWS 存取類型) 部分,選擇 Programmatic Access (程式設計存取)。

  12. 選擇 Next: Permissions (下一步:許可)。

  13. Set permissions for (設定許可) 部分,選擇 Attach existing policies directly (直接連接現有政策)

  14. 在篩選條件欄位中,輸入您先前建立的政策名稱。

  15. 選取政策旁的核取方塊,然後選擇 Next: Tags (下一步:標籤)

  16. (選用) 新增一或多個標籤來組織鍵值組、追蹤或控制存取此使用者,然後選擇 Next: Review (下一步:檢視)

  17. 確認詳細資訊,接著選擇 Create (建立)

  18. 將存取和私密金鑰複製到文字檔案。您會在接下來的程序中指定這些登入資料。

使用以下程序在您的 Jenkins 伺服器上設定 AWS CLI。

為自動化設定 Jenkins 伺服器

  1. 使用您偏好的瀏覽器存取管理界面,連線至連接埠 8080 的 Jenkins 伺服器。

  2. 輸入在 /var/lib/jenkins/secrets/initialAdminPassword 中找到的密碼。若要顯示您的密碼,請執行下列命令。

    sudo cat /var/lib/jenkins/secrets/initialAdminPassword
  3. Jenkins 安裝指令碼會將您引導到 Customize Jenkins (自訂 Jenkins) 頁面。選取 Install suggested plugins (安裝建議的外掛程式)。

  4. 完成安裝之後,請選擇 Administrator Credentials (管理員憑證)中,選取 Save Credentials (儲存憑證),然後選取 Start Using Jenkins (開始使用 Jenkins)。

  5. 在左側導覽窗格中,選擇 Manage Jenkins (管理 Jenkins),然後選擇 Manage Plugins (外掛程式)。

  6. 選擇 Available (可用) 索引標籤,然後輸入 Amazon EC2 plugin

  7. 選取 Amazon EC2 plugin 的核取方塊,然後選取 Install without restart (安裝無需重新啟動)。

  8. 當完成安裝時,請選取 Go back to the top page (回到首頁)。

  9. 選擇 Manage Jenkins (管理 Jenkins),然後選擇 Configure System (設定系統)。

  10. Cloud (雲端) 區段中,選取 Add a new cloud (新增雲端),然後選擇 Amazon EC2 (Amazon EC2)。

  11. 在剩餘欄位中輸入您的資訊。您必須在 Add Credentials (新增憑證) 欄位中輸入您的 AWS 憑證。

使用以下程序設定您的 Jenkins 專案以呼叫自動化。

設定您的 Jenkins 伺服器以呼叫自動化

  1. 在 Web 瀏覽器中開啟 Jenkins 主控台。

  2. 選擇您想要以自動化設定的專案,接著選擇 Configure (設定)

  3. Build (建置) 索引標籤,選擇 Add Build Step (新增建置步驟)

  4. 選擇 Execute shell (執行 shell)Execute Windows batch command (執行 Windows 批次命令) (取決於您的作業系統)。

  5. Command (命令) 方塊中,執行如下的 AWS CLI 命令。

    aws --region the AWS 區域 of your source AMI ssm start-automation-execution --document-name your runbook name --parameters parameters for the runbook

    下列範例命令使用 UpdateMyLatestWindowsAmi Runbook 和 演練:使用自動化、AWS Lambda 和 Parameter Store 簡化 AMI 修補 中建立的 Systems Manager 參數 latestAmi

    aws --region region-id ssm start-automation-execution \ --document-name UpdateMyLatestWindowsAmi \ --parameters \ "sourceAMIid='{{ssm:latestAmi}}'"

    在 Jenkins 中,命令類似以下螢幕擷取畫面中的範例。

    
                            Jenkins 資訊
  6. 在 Jenkins 專案中,選擇 Build Now (立刻建置)。Jenkins 會傳回類似以下範例的輸出。

    
                            Jenkins 資訊