如何使用非根設定檔的使用者設定檔執行 CodeDeploy 代理程式?

3 分的閱讀內容
0

我想要使用非根設定檔的使用者設定檔來執行 AWS CodeDeploy 代理程式。

簡短描述

若要使用非根設定檔的使用者設定檔來執行 CodeDeploy 代理程式,請執行下列動作:

1.    (先決條件) 確認 CodeDeploy 代理程式已安裝在您的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上。

2.    變更 CodeDeploy 代理程式組態檔中的使用者,並授予使用者必要的權限。

3.    建立 Amazon EC2 啟動組態範本和 Auto Scaling 群組,以自動化使用者變更程序。

4.    透過確認 Amazon EC2 執行個體上已安裝 CodeDeploy 代理程式並使用正確的使用者執行來測試設定。

**注意:**這些步驟適用於使用 Amazon Linux 1 或 Amazon Linux 2 Amazon Machine Image (AMI) 的執行個體。但是,Amazon Linux 1 AMI 目前處於維護支援狀態。在此狀態下,AMI 只會接收部份套件集的關鍵和重要安全性更新。此 AMI 也不再保證支援新的 EC2 平台功能或新的 AWS 功能。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請確定您使用的是最新的 AWS CLI 版本

(先決條件) 確認 CodeDeploy 代理程式已安裝在您的 Amazon EC2 執行個體上

遵循 CodeDeploy 使用者指南中,確認 CodeDeploy 代理程式正在執行的說明。

如需安裝 CodeDeploy 代理程式的說明,請參閱安裝 CodeDeploy 代理程式

變更 CodeDeploy 代理程式組態檔中的使用者,並授予使用者必要的權限

1.    使用 SSH 連線至您的 Amazon EC2 執行個體

2.    執行下列命令,停止執行個體上安裝的 CodeDeploy 主機代理程式:

sudo service codedeploy-agent stop

3.    執行下列 sed 串流編輯器命令,以變更 CodeDeploy 代理程式組態檔中的使用者:

**重要事項:**以您希望 CodeDeploy 主機代理程式在其上執行的使用者名稱取代 ec2-user

sudo sed -i 's/""/"ec2-user"/g' /etc/init.d/codedeploy-agent

**重要事項:**對於 Amazon Linux 2 AMI,您也必須執行下列兩個命令:

sudo sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service
sudo systemctl daemon-reload

4.    執行下列兩個命令,將必要目錄的權限授予新使用者:

**重要事項:**以您希望 CodeDeploy 主機代理程式在其上執行的使用者名稱取代 ec2-user

sudo chown ec2-user:ec2-user -R /opt/codedeploy-agent/
sudo chown ec2-user:ec2-user -R /var/log/aws/

5.    重新啟動 CodeDeploy 代理程式,並執行下列兩個命令,確認組態檔的更新是否成功:

sudo service codedeploy-agent start
sudo service codedeploy-agent status

成功的命令輸出範例

The AWS CodeDeploy agent is running as PID ####

6.    執行下列命令,確認哪些程序正在執行,以及執行這些程序的使用者為何:

ps aux | grep codedeploy-agent

建立 Amazon EC2 啟動組態範本和 Auto Scaling 群組,以自動化使用者變更程序

若要確認啟動新執行個體時,CodeDeploy 代理程式已安裝並以正確的使用者執行,請執行下列動作:

1.    開啟 Amazon EC2 主控台

2.    在導覽窗格中,選擇啟動組態

3.    選擇建立啟動組態

4.    選取 Amazon Linux AMI。

5.    選擇下一步: 設定詳細資訊

6.    對於 IAM 角色,請選擇預先設定的 AWS Identity and Access Management (IAM) 角色。該角色必須授予您的 EC2 執行個體存取 Amazon Simple Storage Service (Amazon S3) 資源的權限。

7.    選擇進階詳細資訊

8.    在代理程式組態檔的使用者資料區段中,輸入安裝 CodeDeploy 代理程式的命令。然後,更新檔案以使用特定使用者。

代理程式組態檔範例

**重要事項:**以您希望 CodeDeploy 主機代理程式在其上執行的使用者名稱取代 ec2-user。下列範例程式碼會在使用已定義啟動組態的新執行個體啟動時自動執行。

#!/bin/bash
REGION=$(curl 169.254.169.254/latest/meta-data/placement/availability-zone/ | sed 's/[a-z]$//')
yum -y update
yum install ruby wget -y
cd /home/ec2-user
wget https://aws-codedeploy-$REGION.s3.amazonaws.com/latest/install
chmod +x ./install
./install auto
service codedeploy-agent stop
#adduser username <--- this is only required if you use a username that does not already exist
sed -i 's/""/"ec2-user"/g' /etc/init.d/codedeploy-agent
#sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service  <--- Uncomment this line for Amazon Linux 2
systemctl daemon-reload
chown ec2-user:ec2-user -R /opt/codedeploy-agent/
chown ec2-user:ec2-user -R /var/log/aws/
service codedeploy-agent start

9.    視需要完成 AWS 實驗室的其餘步驟。然後,選擇建立啟動組態

10.    選擇使用此啟動組態建立 Auto Scaling 群組

11.    對於群組名稱,輸入 Auto Scaling 群組的名稱。

12.    對於子網路,輸入允許執行個體存取網際網路的子網路。

13.    選擇下一步: 設定擴展政策。然後,根據您的需求選擇政策。

14.    完成實驗室中的其餘步驟。然後,選擇建立 Auto Scaling 群組

透過確認新 Amazon EC2 執行個體上已安裝 CodeDeploy 代理程式並使用正確的使用者執行來測試設定

確認您的 Amazon EC2 執行個體正在執行。然後,執行以下動作:

1.    使用 SSH 連線至您的 Amazon EC2 執行個體。

2.    執行下列命令,確認 CodeDeploy 代理程式是否在 Amazon EC2 執行個體上執行:

sudo service codedeploy-agent status

3.    執行下列命令,確認 CodeDeploy 代理程式是否以正確的使用者名稱執行:

ps aux | grep codedeploy-agent

成功的命令輸出範例

The AWS CodeDeploy agent is running as PID ####

AWS 官方
AWS 官方已更新 2 年前