Не удается установить 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/есть только один файл
а в 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.
Также убедился, что все обновления на месте, перезагрузил компьютер, но это тоже не сработало.
Ответы
Я могу предоставить подробную информацию о моей настройке экземпляров 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