Я взял пользовательские данные для ElasticBeanstalk AMI, чтобы попытаться добавить некоторые свои собственные вещи.Должно быть просто.
Тем более, что в пользовательских данных уже есть сеанс, где запускается какой-то скрипт оболочки.Поэтому я положил туда свои вещи, и они полностью игнорируются.Он не запускается, ничего не регистрирует, он выдает абсолютно нулевые результаты.
Кто-нибудь знает почему?
Это исходные данные пользователя:
Content-Type: multipart/mixed; boundary="===============5189065377222898407==" MIME-Version: 1.0 --===============5189065377222898407== Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config repo_upgrade: none repo_releasever: 2017.09 cloud_final_modules: - [scripts-user, always] --===============5189065377222898407== Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="user-data.txt" #!/bin/bash exec > >(tee -a /var/log/eb-cfn-init.log|logger -t [eb-cfn-init] -s 2>/dev/console) 2>&1 echo [`date -u +"%Y-%m-%dT%H:%M:%SZ"`] Started EB User Data set -x function sleep_delay { if (( $SLEEP_TIME < $SLEEP_TIME_MAX )); then echo Sleeping $SLEEP_TIME sleep $SLEEP_TIME SLEEP_TIME=$(($SLEEP_TIME * 2)) else echo Sleeping $SLEEP_TIME_MAX sleep $SLEEP_TIME_MAX fi } # Executing bootstrap script SLEEP_TIME=10 SLEEP_TIME_MAX=3600 while true; do curl https://s3.dualstack.us-west-2.amazonaws.com/elasticbeanstalk-env-resources-us-west-2/stalks/eb_node_js_4.0.1.143.7/lib/UserDataScript.sh > /tmp/ebbootstrap.sh RESULT=$? if [[ "$RESULT" -ne 0 ]]; then sleep_delay else /bin/bash /tmp/ebbootstrap.sh 'https://s3.dualstack.us-west-2.amazonaws.com/elasticbeanstalk-env-resources-us-west-2/stalks/eb_node_js_4.0.1.143.7/lib/aws-elasticbeanstalk-tools-1.20-1.noarch.rpm' 'https://s3.dualstack.us-west-2.amazonaws.com/elasticbeanstalk-env-resources-us-west-2/stalks/eb_node_js_4.0.1.143.7/lib/awseb-ruby-2.2.4-x86_64-20160503_1008.tar.gz https://s3.dualstack.us-west-2.amazonaws.com/elasticbeanstalk-env-resources-us-west-2/stalks/eb_node_js_4.0.1.143.7/lib/basehooks.tar.gz' 'https://s3.dualstack.us-west-2.amazonaws.com/elasticbeanstalk-env-resources-us-west-2/stalks/eb_node_js_4.0.1.143.7/lib/beanstalk-core-2.11.gem https://s3.dualstack.us-west-2.amazonaws.com/elasticbeanstalk-env-resources-us-west-2/stalks/eb_node_js_4.0.1.143.7/lib/beanstalk-core-healthd-1.1.gem https://s3.dualstack.us-west-2.amazonaws.com/elasticbeanstalk-env-resources-us-west-2/stalks/eb_node_js_4.0.1.143.7/lib/executor-1.2.gem' 'https://cloudformation-waitcondition-us-west-2.s3-us-west-2.amazonaws.com/arn%3Aaws%3Acloudformation%3Aus-west-2%3A731735707548%3Astack/awseb-e-qprmcmyjbp-stack/261dc900-e722-11e7-bcbb-503ac9ec2461/AWSEBInstanceLaunchWaitHandle?AWSAccessKeyId=AKIAIY5RM4DUXMU25KNA&Expires=1514038355&Signature=Nha6e4UQYJLWCOjxnj7nHXYzFDY%3D' 'arn:aws:cloudformation:us-west-2:731735707548:stack/awseb-e-qprmcmyjbp-stack/261dc900-e722-11e7-bcbb-503ac9ec2461' 'us-west-2' '30755f954950' 'e9af7960-20f2-46da-9353-a69cb7dedeff' '' 'nginx' '' && exit 0 fi done --===============5189065377222898407==-- ##Ec2InstanceReplacementRequest=7577e7d0-ebe5-11e7-bd10-6bec9097cbda
Я пытаюсь добавить к нему следующую серию команд:
aws s3 cp s3://oidevops/beanstalk/application-configs/chatbot-admin/dev/91_install_cloudwatchlogs_agent.sh . aws s3 cp s3://oidevops/beanstalk/application-configs/chatbot-admin/dev/91_awslogs_restart.sh . chmod 750 91install_cloudwatchlogs_agent.sh && chmod 750 91_awslogs_restart.sh cp 91_install_cloudwatchlogs_agent.sh /opt/elasticbeanstalk/hooks/appdeploy/post cp 91_awslogs_restart.sh /opt/elasticbeanstalk/hooks/restartappserver/post cp 91_awslogs_restart.sh /opt/elasticbeanstalk/hooks/configdeploy/post
Поэтому я поместил их в конец секции Content-Type: text/x-shellscript; этой составной части.Пробовал в начале тоже безрезультатно.
Content-Type: text/x-shellscript;
Есть идеи?
Данные пользователя на серверах Linux должны иметь #! в первой строке, в противном случае они не выполняются как сценарий.
#!
Если вы хотите добавить программное обеспечение в среду Elastic Beanstalk, вам следует использовать .ebextensions.
.ebextensions
См .: Расширенная настройка среды с файлами конфигурации (.ebextensions) - AWS Elastic Beanstalk