2013-12-16 27 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' 之間沒有空間?

希望這會有所幫助。