1

由于对只能使用 Amazon Linux(也想使用 Amazon Linux 2)并不特别满意,因此使用两个操作系统版本创建了两个实例并添加了相同的脚本

mkdir /etc/codedeploy-agent/

mkdir /etc/codedeploy-agent/conf

cat <<EOT >> /etc/codedeploy-agent/conf/codedeploy.onpremises.yml

---

aws_access_key_id: ACCESS

aws_secret_access_key: SECRET

iam_user_arn: arn:aws:iam::525221857828:user/GeneralUser

region: eu-west-2

EOT

wget https://aws-codedeploy-us-west-2.s3.us-west-2.amazonaws.com/latest/install

chmod +x ./install

sudo ./install auto

我注意到两者之间的区别在于,在具有 Linux 2 的实例中,该文件夹/etc/codedeploy-agent/conf/只有一个文件

亚马逊 Lightsail Linux 2

在Linux中有两个文件

亚马逊 Lightsail Linux

知道了这一点,我在 Linux 2 实例中创建了一个同名的新文件

touch codedeployagent.yml

, 将其权限从

-rw-r--r-- 1 root root 261 Oct  2 10:43 codedeployagent.yml

-rwxr-xr-x 1 root root 261 Oct  2 10:43 codedeployagent.yml

文件权限

,并添加了相同的内容

:log_aws_wire: false
:log_dir: '/var/log/aws/codedeploy-agent/'
:pid_dir: '/opt/codedeploy-agent/state/.pid/'
:program_name: codedeploy-agent
:root_dir: '/opt/codedeploy-agent/deployment-root'
:verbose: false
:wait_between_runs: 1
:proxy_uri:
:max_revisions: 5

codedeployagent.yml 内容

然后重新启动机器。尽管如此,这并没有解决我跑步时的问题

sudo service codedeploy-agent status

仍然会得到

重定向到 /bin/systemctl status codedeploy-agent.service 找不到单元 codedeploy-agent.service。

错误仍然存​​在

还确保所有更新都到位,重新启动机器,但这也不起作用。

即使有更新,错误仍然存​​在

4

1 回答 1

3

我可以提供我的 Amazon Linux 2 实例设置的详细信息以部署 CodeDeployGitHubDemo(基于过去的问题)。

1. CodeDeploy 代理

使用以下内容UserData(如果不是,您可能需要调整区域us-east-1):

#!/bin/bash

yum update -y
yum install -y ruby wget

cd /home/ec2-user

wget https://aws-codedeploy-us-east-1.s3.us-east-1.amazonaws.com/latest/install

chmod +x ./install
./install auto

它不需要硬编码凭据。Amazon Linux 2以下在我使用过的实例上工作得很好。

2. 实例角色

您的实例需要适合 CodeDeploy 的角色。我使用了 EC2 实例角色和此处列出的策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

3.部署组

我在 AutoScaling 组中有三个测试实例,称为myasg

在此处输入图像描述

4. 部署

我从没有负载均衡器的 S3 部署:

在此处输入图像描述

5. 结果

没有发现问题,部署成功:

在此处输入图像描述

并且网站运行(需要在安全组中打开80端口):

在此处输入图像描述

更新

用于在 Amazon Linux 2 上手动安装。您可以sudo su -在登录后成为 root。

mkdir -p /etc/codedeploy-agent/conf

cat <<EOT >> /etc/codedeploy-agent/conf/codedeploy.onpremises.yml
---

aws_access_key_id: ACCESS

aws_secret_access_key: SECRET

iam_user_arn: arn:aws:iam::525221857828:user/GeneralUser

region: eu-west-2

EOT

yum install -y wget ruby

wget https://aws-codedeploy-us-west-2.s3.us-west-2.amazonaws.com/latest/install

chmod +x ./install

env AWS_REGION=eu-west-2 ./install rpm

要检查其状态:

systemctl status codedeploy-agent

有了这个,你应该得到这样的东西

● codedeploy-agent.service - AWS CodeDeploy Host Agent
   Loaded: loaded (/usr/lib/systemd/system/codedeploy-agent.service; enabled; vendor prese
t: disabled)
   Active: active (running) since Sat 2020-10-03 07:18:57 UTC; 3s ago
  Process: 3609 ExecStart=/bin/bash -a -c [ -f /etc/profile ] && source /etc/profile; /opt
/codedeploy-agent/bin/codedeploy-agent start (code=exited, status=0/SUCCESS)
 Main PID: 3623 (ruby)
   CGroup: /system.slice/codedeploy-agent.service
           ├─3623 codedeploy-agent: master 3623
           └─3627 codedeploy-agent: InstanceAgent::Plugins::CodeDeployPlugin::CommandPo...

Oct 03 07:18:57 ip-172-26-8-137.eu-west-2.compute.internal systemd[1]: Starting AWS Cod...
Oct 03 07:18:57 ip-172-26-8-137.eu-west-2.compute.internal systemd[1]: Started AWS Code...
Hint: Some lines were ellipsized, use -l to show in full.

如果你跑

sudo service codedeploy-agent status

你会得到(意味着它按预期工作)

The AWS CodeDeploy agent is running as PID 3623

有用!!

如果未运行,则启动:

systemctl start codedeploy-agent
于 2020-10-02T11:42:21.917 回答