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

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

Amazon Lightsail Linux 2

а в линуксе есть два файла

Amazon Lightsail Linux

Зная это, я создал новый файл в экземпляре Linux 2 с тем же именем.

touch codedeployagent.yml

, изменил свои разрешения с

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

to

-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 content

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

sudo service codedeploy-agent status

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

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

Ошибка остается

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

Ошибка остается, даже если есть обновления


person Tiago Martins Peres 李大仁    schedule 02.10.2020    source источник


Ответы (1)


Я могу предоставить подробную информацию о моей настройке для экземпляров 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
person Marcin    schedule 02.10.2020
comment
Просто очень быстро протестировал создание двух экземпляров Lightsail в Вирджинии: один с использованием сценария, который вы поделили в качестве запуска, а другой - нет (и я запускал его вручную). В обоих дошла одна и та же ошибка при запуске sudo service codedeploy-agent status. Не уверен, что это оказывает влияние - person Tiago Martins Peres 李大仁; 02.10.2020
comment
@TiagoMartinsPeres 李大仁 У меня нет световой распродажи, но если это Amazon Linux 2, я не понимаю, почему это должно быть по-другому. Вы использовали мой скрипт в UserData? - person Marcin; 02.10.2020
comment
в одном случае я добавил его как сценарий запуска (определяемый как «Вы можете добавить сценарий оболочки, который будет запускаться на вашем экземпляре при первом запуске»), а в другом я выполнил команды вручную, но оба попали в одну и ту же стену - person Tiago Martins Peres 李大仁; 02.10.2020
comment
На экземпляре с моим сценарием вы можете запустить cat /var/log/cloud-init-output.log. Если мой UserData выходит из строя, где-то должно быть сообщение об ошибке. - person Marcin; 02.10.2020
comment
Я пытаюсь обновить вопрос с помощью этой информации, но когда я выделяю весь текст, который он показывает Подключение к вашему экземпляру и блокирует копирование. Также установлен xclip, но он говорит Error: Can't open display: (null). Но я не вижу в этом никакой ошибки - person Tiago Martins Peres 李大仁; 02.10.2020
comment
просто проверил эти шаги еще раз и столкнулся с проблемой, слишком большой, чтобы описать здесь (поэтому создал новый вопрос). Мне все еще интересно, почему Amazon Linux 2 приводит к ошибке при первом запуске sudo service codedeploy-agent status, а в Amazon Linux сразу все работает нормально. Но спасибо за то, что вы настаивали на развертывании вручную без конвейера, теперь я мог лучше визуализировать ситуацию, открыв приложение и увидев не только группы, но и его развертывания. - person Tiago Martins Peres 李大仁; 02.10.2020
comment
@TiagoMartinsPeres 李大仁 Спасибо, что дали мне знать. Так этот вопрос еще открыт, или КД установили? Потому что без CD агента ваш новый вопрос тоже не будет работать? - person Marcin; 03.10.2020
comment
Он все еще открыт, да @Marcin - person Tiago Martins Peres 李大仁; 03.10.2020
comment
@TiagoMartinsPeres 李大仁 Я обновил ответ, добавив новую процедуру ручной установки для тестов. Вы можете проверить это? Лучше всего попробовать на новом экземпляре, так как в существующем уже могут быть повреждены некоторые настройки. - person Marcin; 03.10.2020
comment
Ты качаешься @Marcin! Этот новый обновленный сценарий был тем, чего не хватало. Разница заключалась в том, как был собран / etc / codedeploy-agent / conf, без указания имени корзины и включения env в конце. - person Tiago Martins Peres 李大仁; 03.10.2020