如何对Shell Scrip进行MIME编码以将其部署在EC2实体上



我正在AWS上创建一个自动缩放组,需要我的EC2实例上已经部署了我的应用程序映像,所以我创建了一个用户数据脚本来执行它

#!/bin/bash
before_reboot(){
sudo amazon-linux-extras install docker -y
sudo service docker start
sudo usermod -a -G docker ec2-user
sudo chkconfig docker on
sudo yum install -y git
sudo reboot
}
after_reboot(){
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose version
git clone https://github.com/augustoaccorsi/microservices.git
cd microservices
docker-compose -f docker-compose-front.yml up --build --detach
}
if [ -f /var/run/rebooting-for-updates ]; then
after_reboot
rm /var/run/rebooting-for-updates
update-rc.d myupdate remove
else
before_reboot
touch /var/run/rebooting-for-updates
update-rc.d myupdate defaults
sudo reboot
fi

但是,当自动缩放创建一个实例时,我的映像没有部署,如果我shh该实例并检查/var/log/cloud-init-output.log,我会得到以下

__init__.py[WARNING]: Unhandled non-multipart (text/x-not-multipart) userdata: 'before_reboot(){...'

我有研究表明,我需要对我的shell脚本进行MIME编码,以便使其可执行,但我不知道如何在我的windows机器上这样做,有人能帮我吗?

在仔细阅读AWS文档后,我注意到我的用户数据文件中缺少了一些配置,比如云配置,所以我添加了这些缺少的配置,我可以用所需的代码启动我的EC2实例。像这样:

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
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
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash
sudo amazon-linux-extras install docker -y
sudo service docker start
sudo usermod -a -G docker ec2-user
sudo chkconfig docker on
sudo yum install -y git
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose version
git clone https://github.com/augustoaccorsi/microservices.git
cd microservices
docker-compose -f docker-compose-front.yml up --build --detach
--//

我的错误是我错过了配置一些头信息,文件MIME版本等等

最新更新