Не удается установить CodeDeploy в инстанс Lightsail с Amazon Linux 2

Oct 02 2020

Поскольку не был особенно удовлетворен возможностью использовать только 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/есть только один файл

а в 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

а затем перезагрузили машину. Тем не менее, это не устранило проблему, так как при запуске

sudo service codedeploy-agent status

все равно получит

Перенаправление на / bin / systemctl status codedeploy-agent.service Не удалось найти модуль codedeploy-agent.service.

Также убедился, что все обновления на месте, перезагрузил компьютер, но это тоже не сработало.

Ответы

2 Marcin Oct 02 2020 at 11:42

Я могу предоставить подробную информацию о моей настройке экземпляров 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