Impossibile installare CodeDeploy nell'istanza Lightsail con Amazon Linux 2
Poiché non era particolarmente soddisfatto di poter utilizzare solo Amazon Linux (voleva utilizzare anche Amazon Linux 2), ha creato due istanze utilizzando entrambe le versioni del sistema operativo e aggiungendo lo stesso script
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
La differenza che ho notato tra i due è che nell'istanza che ha Linux 2, la cartella /etc/codedeploy-agent/conf/ha un solo file
e in Linux ha due file
Sapendo questo, ho creato un nuovo file nell'istanza di Linux 2 con lo stesso nome
touch codedeployagent.yml
, ha modificato le sue autorizzazioni da
-rw-r--r-- 1 root root 261 Oct 2 10:43 codedeployagent.yml
per
-rwxr-xr-x 1 root root 261 Oct 2 10:43 codedeployagent.yml
e ha aggiunto lo stesso contenuto
: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
e quindi riavviato la macchina. Tuttavia, questo non ha risolto il problema come quando corro
sudo service codedeploy-agent status
otterrà ancora
Reindirizzamento a / bin / systemctl status codedeploy-agent.service Impossibile trovare l'unità codedeploy-agent.service.
Inoltre, assicurati che tutti gli aggiornamenti fossero a posto, riavviato la macchina ma neanche quello funzionava.
Risposte
Posso fornire i dettagli della mia configurazione per le istanze di Amazon Linux 2 per distribuire CodeDeployGitHubDemo (in base alla domanda precedente ).
1. Agente CodeDeploy
Utilizzato quanto segue come UserData(potrebbe essere necessario regolare la regione in caso contrario 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
Non richiedeva credenziali hardcoding. Quanto segue funziona perfettamente sulle Amazon Linux 2istanze che ho usato.
2. Ruolo dell'istanza
La tua istanza necessita di un ruolo adatto per CodeDeploy. Ho utilizzato un ruolo di istanza EC2 con i criteri elencati qui :
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:Get*",
"s3:List*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
3. Gruppo di distribuzione
Ho avuto tre istanze per i test in un gruppo AutoScaling, chiamato myasg:
4. Distribuzione
Ho distribuito da S3 senza Load Balancer:
5. Risultati
Non sono stati trovati problemi e la distribuzione è stata eseguita correttamente:
E il sito Web in esecuzione (è necessario aprire la porta 80 nei gruppi di sicurezza):
Aggiornare
Per l'installazione manuale su Amazon Linux 2. È possibile sudo su -diventare root dopo il 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
Per verificarne lo stato:
systemctl status codedeploy-agent
Con questo dovresti ottenere qualcosa di simile
● 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.
Se corri
sudo service codedeploy-agent status
otterrai (il che significa che funziona come previsto)
The AWS CodeDeploy agent is running as PID 3623
Per iniziare se non in esecuzione:
systemctl start codedeploy-agent