I am using Terraform script to create aws elastic beanstalk environment, I need to launch a shell script on instance launch
I have already tried the following
resource "aws_elastic_beanstalk_environment" "Environment" {
name = "${var.ebs_env_name}"
application = "${var.ebs_app_name}"
---
---
---
setting = {
namespace = "aws:autoscaling:launchconfiguration"
name = "user_data"
value = "${file("user-data.sh")}"
}
}
This is throwing error
Error applying plan:
1 error(s) occurred:
aws_elastic_beanstalk_environment.Environment: ConfigurationValidationException: Configuration validation exception: Invalid option specification (Namespace: 'aws:autoscaling:launchconfiguration', OptionName: 'user_data'): Unknown configuration setting. status code: 400, request id: xxxxx-xxxxxx
Please Help
Thanks for the Answer, I found a solution
I have created a folder .ebextensions and created a file inside the folder called 99delayed_job.config (you can give any name)
commands:
create_post_dir:
command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/pre"
ignoreErrors: true
files:
/opt/elasticbeanstalk/hooks/appdeploy/pre/99_restart_delayed_job.sh:
group: root
mode: "000755"
owner: root
content: |-
#!/usr/bin/env bash
<My shell script here>
A and zipped with 'Dockerrun.aws.json' this zip I am sending to s3 and used to deploy
Working fine :)
I couldn't find any information on the AWS Elastic Beanstalk service exposing a means to modify the user_data
on the instances. You can however adjust the AMI used, so you could use a tool like Packer to build yourself a custom AMI that includes the user_data
in it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With