2016-09-22 100 views
0

我試圖通過cfn-init中的命令模塊設置環境變量。在cfn-init中使用命令模塊設置cloudformation中的環境變量

"commands": { 
       "set-env": { 
       "env": { 
        "HOSTNAME": "fb-iaas.elevatebilling.com" 
       }, 
       "cwd": "~", 
       "command": "echo \"$HOSTNAME\" > test.txt" 
       } 
      }, 

這是輸出我CFN-init.log

2016-09-22 10:26:53,638 DEBUG Running command set-env 
2016-09-22 10:26:53,639 DEBUG No test for command set-env 
2016-09-22 10:26:53,655 INFO Command set-env succeeded 
2016-09-22 10:26:53,655 DEBUG Command set-env output: 

但是環境變量HOSTNAME看到沒有更新。有人可以解釋我做錯了什麼嗎?

謝謝

回答

0

當你說該變量沒有得到更新,你是如何發現這一點的?你打開「test.txt」並閱讀管道,或者你是否進入實例並運行「echo $ HOSTNAME」?爲什麼我想問的原因是因爲上運行時CFN-的init(http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-init.html)命令AWS文檔說這對「ENV」選項:

ENV - 可選。爲命令設置環境變量。此屬性 會覆蓋而不是附加現有環境。

根據我對此的解釋和我的經驗,使用「env」設置的環境變量僅存在於其所在的命令中。如果你在「test.txt」文件中讀到變量設置爲你想要的,但是當你運行「echo $ HOSTNAME」時,這是因爲變量只存在於命令中。我建議如果你想讓你的環境變量保持不變,你可以在Cloudformation模板的UserData部分使用「export」來設置它們。