CodeDeploy kann in der Lightsail-Instanz mit Amazon Linux 2 nicht installiert werden

Oct 02 2020

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

2 Marcin Oct 02 2020 at 11:42

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