Требуется помощь, чтобы исправить ошибку и разрешить экземпляру запускать скрипт данных пользователя без проблем.
Проблема: cloud-init не может выполнить команду awscli. Я упомянул настраиваемый сценарий (который будет присутствовать в экземпляре, созданном моим AMI) для запуска как часть пользовательских данных. Пользовательский сценарий не работает в разделе, где упоминается команда awscli.
Описание: Я пытаюсь добиться автоматического развертывания содержимого приложения, как только создается экземпляр из определенного AMI. Для этого я разместил настраиваемый сценарий в экземпляре и создал AMI, который будет служить шаблоном для будущих экземпляров. Пользовательский скрипт имеет очень простую логику развертывания и управления жизненным циклом службы приложения (app || web || start || stop || status). Проблема возникает, когда сценарий выполняет команду aswcli для извлечения военного или статического содержимого из корзины S3. Это дает ошибку ниже:
Фрагмент из cloud-init-output.log:
Mar 12 04:06:06 ip-XXX cloud-init: Deploying Static Content XXX.zip at location /var/www/html
Mar 12 04:06:06 ip-XXX cloud-init: /opt/deploy/deployment_V4.sh: line 94: aws: command not found
===================
Mar 12 04:06:06 ip-XXX cloud-init: Deploying WAR XXX.war at location /opt/tomcat/webapps
Mar 12 04:06:06 ip-XXX cloud-init: /opt/deploy/deployment_V4.sh: line 80: aws: command not found
Принимая во внимание, что если я вручную запускаю тот же настраиваемый сценарий развертывания из экземпляра, он развертывает контент без ошибок. Также, если я запускаю сценарий «Пользовательские данные» вручную на экземпляре, развертывание завершается без ошибок.
Фрагмент:
[root@ip-XXX]# cd /var/lib/cloud/instance/scripts/
[root@ip-XXX scripts]# ./part-001
HTTPD Service is Stopped
TOMCAT Service is Stopped
VERSION is V4
Deploying Static Content XXX.zip at location /var/www/html
download: s3://<PATH>/XXX.zip to ../../../../../www/html/XXX.zip
Web Deployment Successful
VERSION is V4
Deploying WAR XXX.war at location /opt/tomcat/webapps
download: s3://<PATH>/XXX.war to ../../../../../../opt/tomcat/webapps/XXX.war
App Deployment Successful
HTTPD Service is Started
TOMCAT Service is Started
Данные пользователя:
#!/bin/sh
VERSION=V4
AD=/opt/deploy
#Run auto-deployment script
sh /opt/deploy/deployment_${VERSION}.sh stop
sh /opt/deploy/deployment_${VERSION}.sh web
sh /opt/deploy/deployment_${VERSION}.sh app
sh /opt/deploy/deployment_${VERSION}.sh start
НОТА:
1) ОС - CentOS7_64Bit
2) Экземпляр регистрируется в роли s3 enable при запуске.
3) AWSCLI установлен на инстансе и является частью AMI.
aws --version
aws-cli/1.11.56 Python/2.7.5 Linux/3.10.0-514.6.2.el7.x86_64 botocore/1.5.19
Благодаря @Робо вопрос решен.
Согласно его указанию, я добавил «export PATH = ~ / .local / bin: \ $ PATH» как часть «User Data», что помогло.
Где бинарный файл aws?
which aws
Я предполагаю, что каталог, в котором aws находится, не находится в пути.