gpt4 book ai didi

bash - 通过用户数据在 EC2 实例上安装 CodeDeploy 代理

转载 作者:行者123 更新时间:2023-12-03 07:40:32 25 4
gpt4 key购买 nike

我希望在 EC2 实例上安装 CodeDeploy 代理,并通过 CloudFormation 部署用户数据。 Here is the script I'm using from AWS

但是,当我将脚本放置在 CloudFormation 中 EC2 实例的 UserData 属性中时,我从 linter 中收到此错误:

E1019 Parameter PLAT for Fn::Sub not found at Resources/Server/Properties/UserData/Fn::Base64/Fn::Sub

这是片段:

UserData:
'Fn::Base64': !Sub |
#!/bin/bash -xe

## Code Deploy Agent Bootstrap Script##


exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
AUTOUPDATE=false

function installdep(){

if [ ${PLAT} = "ubuntu" ]; then

apt-get -y update
# Satisfying even ubuntu older versions.
apt-get -y install jq awscli ruby2.0 || apt-get -y install jq awscli ruby



elif [ ${PLAT} = "amz" ]; then
yum -y update
yum install -y aws-cli ruby jq

fi

}

function platformize(){

#Linux OS detection#
if hash lsb_release; then
echo "Ubuntu server OS detected"
export PLAT="ubuntu"


elif hash yum; then
echo "Amazon Linux detected"
export PLAT="amz"

else
echo "Unsupported release"
exit 1

fi
}


function execute(){

if [ ${PLAT} = "ubuntu" ]; then

cd /tmp/
wget https://aws-codedeploy-${REGION}.s3.amazonaws.com/latest/install
chmod +x ./install

if ./install auto; then
echo "Instalation completed"
if ! ${AUTOUPDATE}; then
echo "Disabling Auto Update"
sed -i '/@reboot/d' /etc/cron.d/codedeploy-agent-update
chattr +i /etc/cron.d/codedeploy-agent-update
rm -f /tmp/install
fi
exit 0
else
echo "Instalation script failed, please investigate"
rm -f /tmp/install
exit 1
fi

elif [ ${PLAT} = "amz" ]; then

cd /tmp/
wget https://aws-codedeploy-${REGION}.s3.amazonaws.com/latest/install
chmod +x ./install

if ./install auto; then
echo "Instalation completed"
if ! ${AUTOUPDATE}; then
echo "Disabling auto update"
sed -i '/@reboot/d' /etc/cron.d/codedeploy-agent-update
chattr +i /etc/cron.d/codedeploy-agent-update
rm -f /tmp/install
fi
exit 0
else
echo "Instalation script failed, please investigate"
rm -f /tmp/install
exit 1
fi

else
echo "Unsupported platform ''${PLAT}''"
fi

}

platformize
installdep
REGION=$(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r ".region")
execute

我在这里缺少什么?当使用通过控制台创建实例时,此脚本在用户数据中运行良好。提前致谢!

最佳答案

向@jordanm 的评论致敬。这解决了我的问题。

关于bash - 通过用户数据在 EC2 实例上安装 CodeDeploy 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69931111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com