2013-12-16 24 views
0

我有我的模板的这一部分:服务器EC2 JSON模板bash脚本

  "UserData"  : { "Fn::Base64" : { "Fn::Join" : ["", [ 
       "sudo yum update -y\n", 
       "sleep 30\n", 
       "sudo mkdir /data \n", 
       "cd /data/\n" 
        ]]}} 

。它似乎执行第一行(因为我可以使用wget),但不执行第3或第4行。有什么想法吗?谢谢!

回答

2

的用户数据没有被运行作为脚本,除非前两个字符是#!

尝试加入以下作为所述用户数据的第一行,以便CloudInit知道运行它作为一个外壳脚本:

#!/bin/sh 

正如波多黎各指出的那样,你可以删除sudo因为user-data scripts are run as root on the first boot of the instance

此外,sleep 30cd /data/不提供任何好处,如果这是用户数据脚本的全部。

这将导致这样的代码:

"UserData"  : { "Fn::Base64" : { "Fn::Join" : ["", [ 
    "#!/bin/sh\n", 
    "yum update -y\n", 
    "mkdir /data \n", 
]]}} 

您可以添加cd回来,如果有要添加到用户数据的脚本进一步的陈述。

0

你可以检查你的/var/log/cloud-init.log看看发生了什么。我不认为你需要sudo,因为cloudinit的东西是以root身份运行的。

而且你尝试:

"mkdir /data\n" 

随着 '/数据' 和 '\ n' 之间没有空间?

希望这会有所帮助。