Tidak dapat menginstal CodeDeploy dalam instance Lightsail dengan Amazon Linux 2

Oct 02 2020

Karena tidak terlalu puas dengan hanya dapat menggunakan Amazon Linux (ingin menggunakan Amazon Linux 2 juga), membuat dua contoh menggunakan kedua versi OS dan menambahkan skrip yang sama

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

Perbedaan yang saya catat antara keduanya adalah bahwa dalam contoh yang memiliki Linux 2, folder /etc/codedeploy-agent/conf/hanya memiliki satu file

dan di Linux memiliki dua file

Mengetahui hal ini, saya membuat file baru di instance Linux 2 dengan nama yang sama

touch codedeployagent.yml

, mengubah izinnya dari

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

untuk

-rwxr-xr-x 1 root root 261 Oct  2 10:43 codedeployagent.yml

, dan menambahkan konten yang sama

: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

lalu boot ulang mesin. Namun, ini tidak memperbaiki masalah seperti saat saya menjalankan

sudo service codedeploy-agent status

akan tetap mendapatkan

Mengalihkan ke / bin / systemctl status codedeploy-agent.service Unit codedeploy-agent.service tidak dapat ditemukan.

Juga memastikan semua pembaruan ada, me-reboot mesin tetapi itu juga tidak berhasil.

Jawaban

2 Marcin Oct 02 2020 at 11:42

Saya dapat memberikan detail penyiapan saya untuk instans Amazon Linux 2 untuk menerapkan CodeDeployGitHubDemo (berdasarkan pertanyaan sebelumnya ).

1. Agen CodeDeploy

Gunakan yang berikut ini sebagai UserData(Anda mungkin perlu menyesuaikan wilayah jika tidak 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

Itu tidak membutuhkan kredensial pengkodean keras. Berikut ini berfungsi dengan baik pada Amazon Linux 2contoh yang saya gunakan.

2. Peran instance

Instance Anda membutuhkan peran yang sesuai untuk CodeDeploy. Saya menggunakan peran instans EC2 dengan kebijakan yang tercantum di sini :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

3. Kelompok penyebaran

Saya memiliki tiga contoh untuk pengujian dalam grup AutoScaling, yang disebut myasg:

4. Penerapan

Saya menerapkan dari S3 tanpa Load Balancer:

5. Hasil

Tidak ada masalah yang ditemukan dan penerapan berhasil:

Dan situs web yang berjalan (perlu membuka port 80 di grup keamanan):

Memperbarui

Untuk instalasi manual di Amazon Linux 2. Anda bisa sudo su -menjadi root setelah login.

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

Untuk memeriksa statusnya:

systemctl status codedeploy-agent

Dengan ini Anda harus mendapatkan sesuatu seperti ini

● 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.

Jika Anda lari

sudo service codedeploy-agent status

Anda akan mendapatkan (artinya itu berfungsi seperti yang diharapkan)

The AWS CodeDeploy agent is running as PID 3623

Untuk memulai jika tidak berjalan:

systemctl start codedeploy-agent