CodeDeploy kann in der Lightsail-Instanz mit Amazon Linux 2 nicht installiert werden
Da es nicht besonders zufrieden war, nur Amazon Linux verwenden zu können (wollte auch Amazon Linux 2 verwenden), wurden zwei Instanzen mit beiden Betriebssystemversionen erstellt und dasselbe Skript hinzugefügt
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
Der Unterschied, den ich zwischen den beiden festgestellt habe, besteht darin, dass in der Instanz mit Linux 2 der Ordner /etc/codedeploy-agent/conf/nur eine Datei enthält
und unter Linux hat zwei Dateien
In diesem Wissen habe ich eine neue Datei in der Linux 2-Instanz mit demselben Namen erstellt
touch codedeployagent.yml
, änderte seine Berechtigungen von
-rw-r--r-- 1 root root 261 Oct 2 10:43 codedeployagent.yml
zu
-rwxr-xr-x 1 root root 261 Oct 2 10:43 codedeployagent.yml
und fügte den gleichen Inhalt hinzu
: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
und dann den Computer neu gestartet. Trotzdem konnte das Problem dadurch nicht behoben werden, als ich es ausführte
sudo service codedeploy-agent status
wird noch bekommen
Umleitung zum Status / bin / systemctl codedeploy-agent.service Die Einheit codedeploy-agent.service wurde nicht gefunden.
Außerdem wurde sichergestellt, dass alle Updates vorhanden waren, der Computer neu gestartet wurde, aber das funktionierte auch nicht.
Antworten
Ich kann Details zu meinem Setup für Amazon Linux 2-Instanzen bereitstellen, um CodeDeployGitHubDemo bereitzustellen (basierend auf der vorherigen Frage ).
1. CodeDeploy-Agent
Verwendet Folgendes als UserData(Sie müssen möglicherweise die Region anpassen, wenn nicht 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
Es waren keine fest codierten Anmeldeinformationen erforderlich. Das Folgende funktioniert einwandfrei für Amazon Linux 2Instanzen, die ich verwendet habe.
2. Instanzrolle
Ihre Instanz benötigt eine für CodeDeploy geeignete Rolle. Ich habe eine EC2-Instanzrolle mit der hier aufgeführten Richtlinie verwendet :
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:Get*",
"s3:List*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
3. Bereitstellungsgruppe
Ich hatte drei Instanzen für Tests in einer AutoScaling-Gruppe mit dem Namen myasg:
4. Bereitstellung
Ich habe von S3 ohne Load Balancer bereitgestellt:
5. Ergebnisse
Es wurden keine Probleme gefunden und die Bereitstellung war erfolgreich:
Und die Website läuft (Port 80 muss in Sicherheitsgruppen geöffnet werden):
Aktualisieren
Für die manuelle Installation unter Amazon Linux 2. Sie können sudo su -nach der Anmeldung root werden.
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
So überprüfen Sie den Status:
systemctl status codedeploy-agent
Damit sollten Sie so etwas bekommen
● 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.
Wenn du läufst
sudo service codedeploy-agent status
Sie erhalten (was bedeutet, dass es wie erwartet funktioniert)
The AWS CodeDeploy agent is running as PID 3623
So starten Sie, wenn Sie nicht ausgeführt werden:
systemctl start codedeploy-agent