Không thể cài đặt CodeDeploy trong phiên bản Lightsail với Amazon Linux 2

Oct 02 2020

Vì không đặc biệt hài lòng với việc chỉ có thể sử dụng Amazon Linux (cũng muốn sử dụng Amazon Linux 2), đã tạo hai phiên bản sử dụng cả hai phiên bản hệ điều hành và thêm cùng một tập lệnh

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

Sự khác biệt mà tôi lưu ý giữa cả hai là trong trường hợp có Linux 2, thư mục /etc/codedeploy-agent/conf/chỉ có một tệp

và trong Linux có hai tệp

Biết được điều này, tôi đã tạo một tệp mới trong phiên bản Linux 2 có cùng tên

touch codedeployagent.yml

, đã thay đổi quyền của nó từ

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

đến

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

và đã thêm cùng một nội dung

: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

và sau đó khởi động lại máy. Tuy nhiên, điều này không khắc phục được sự cố như khi tôi chạy

sudo service codedeploy-agent status

vẫn sẽ nhận được

Không thể tìm thấy chuyển hướng đến / bin / systemctl trạng thái codedeploy-agent.service Đơn vị codedeploy-agent.service.

Cũng đảm bảo rằng tất cả các bản cập nhật đã được thực hiện, khởi động lại máy nhưng điều đó cũng không hoạt động.

Trả lời

2 Marcin Oct 02 2020 at 11:42

Tôi có thể cung cấp thông tin chi tiết về thiết lập của tôi cho phiên bản Amazon Linux 2 để triển khai CodeDeployGitHubDemo (dựa trên câu hỏi trước đây ).

1. Tác nhân CodeDeploy

Được sử dụng như sau UserData(bạn có thể cần điều chỉnh vùng nếu không 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

Nó không yêu cầu thông tin xác thực mã hóa cứng. Những điều sau đây hoạt động hoàn toàn tốt trên các Amazon Linux 2trường hợp mà tôi đã sử dụng.

2. Vai trò phiên bản

Phiên bản của bạn cần một vai trò phù hợp với CodeDeploy. Tôi đã sử dụng vai trò phiên bản EC2 với chính sách được liệt kê ở đây :

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

3. Nhóm triển khai

Tôi đã có ba trường hợp cho các thử nghiệm trong nhóm Tự động chia tỷ lệ, được gọi là myasg:

4. Triển khai

Tôi đã triển khai từ S3 mà không có Load Balancer:

5. Kết quả

Không tìm thấy sự cố nào và triển khai thành công:

Và trang web đang chạy (cần mở cổng 80 trong các nhóm bảo mật):

Cập nhật

Để cài đặt thủ công trên Amazon Linux 2. Bạn có thể sudo su -trở thành root sau khi đăng nhập.

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

Để kiểm tra trạng thái của nó:

systemctl status codedeploy-agent

Với cái này bạn sẽ nhận được một cái gì đó như thế này

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

Nếu bạn chạy

sudo service codedeploy-agent status

bạn sẽ nhận được (nghĩa là nó hoạt động như mong đợi)

The AWS CodeDeploy agent is running as PID 3623

Để bắt đầu nếu không chạy:

systemctl start codedeploy-agent