This is my current setup in my cloudformation stack arch yaml
UserData: !Base64
Fn::Join:
- ''
- ["#!/bin/bash -xe",
" n echo "export ENV_PROFILE=",{ "Fn::Sub": "${Environment}" },"" >> /etc/profile.d/app-profile-vars.sh",
" n source /etc/profile.d/app-profile-vars.sh",
" n sudo su",
" n sudo yum install -y chrony",
" n sudo service chronyd restart",
" n sudo timedatectl set-timezone America/Chicago",
" n sudo chkconfig chronyd on",
" n sudo yum install -y perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA.x86_64",
" n cd /home/ec2-user",
" n curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O",
" n unzip CloudWatchMonitoringScripts-1.2.2.zip",
" n aws s3 cp s3://scorecardprodcodedeploybucket/cloudwatch/config.json /opt/aws/amazon-cloudwatch-agent/bin/config.json",
" n /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s",
#"n /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a statusn",
" n chown root:root aws-scripts-mon",
" n echo "*/5 * * * * root /home/ec2-user/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-used --disk-space-avail --disk-space-util --disk-path=/ --auto-scaling=only --from-cron" >> /etc/crontab",
" n aws s3 cp s3://appdynamicscorecardadbp/AppServerAgent-1.8-22.1.0.33445.zip /opt/appdynamics/java-agent/java-AppServerAgent-1.8-22.1.0.33445.zip --sse AES256 --region us-east-1",
" n cd /opt/appdynamics/java-agent",
" n unzip java-AppServerAgent-1.8-22.1.0.33445.zip",
" n aws s3 cp s3://appdynamicscorecardadbp/scorecard/controller-info.xml /opt/appdynamics/java-agent/conf/controller-info.xml --sse AES256 --region us-east-1"
]
I have the var file for the parameter in JSON format
Can I take the whole userdata in the parameter like this
{
"ParameterKey": "UserData",
"ParameterValue": "#!/bin/bash -xe",
" n echo "export ENV_PROFILE=",{ "Fn::Sub": "${Environment}" },"" >> /etc/profile.d/app-profile-vars.sh",
" n source /etc/profile.d/app-profile-vars.sh",
" n sudo su",
" n sudo yum install -y chrony",
" n sudo service chronyd restart",
" n sudo timedatectl set-timezone America/Chicago",
" n sudo chkconfig chronyd on",
" n sudo yum install -y perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA.x86_64",
" n cd /home/ec2-user",
" n curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O",
" n unzip CloudWatchMonitoringScripts-1.2.2.zip",
" n aws s3 cp s3://scorecardprodcodedeploybucket/cloudwatch/config.json /opt/aws/amazon-cloudwatch-agent/bin/config.json",
" n /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s",
"n #/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a statusn",
" n chown root:root aws-scripts-mon",
" n echo "*/5 * * * * root /home/ec2-user/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-used --disk-space-avail --disk-space-util --disk-path=/ --auto-scaling=only --from-cron" >> /etc/crontab",
" n aws s3 cp s3://appdynamicscorecardadbp/AppServerAgent-1.8-22.1.0.33445.zip /opt/appdynamics/java-agent/java-AppServerAgent-1.8-22.1.0.33445.zip --sse AES256 --region us-east-1",
" n cd /opt/appdynamics/java-agent",
" n unzip java-AppServerAgent-1.8-22.1.0.33445.zip",
" n aws s3 cp s3://appdynamicscorecardadbp/scorecard/controller-info.xml /opt/appdynamics/java-agent/conf/controller-info.xml --sse AES256 --region us-east-1",
}
And refer the parameter something like this
UserData: !Base64
Fn::Join:
- ''
- ["$UserData"]
As I am taking for other parameters
ImageId: !Sub "${AmiId}"