【问题标题】:CloudFormation how to export a variableCloudFormation 如何导出变量
【发布时间】:2017-03-14 19:41:51
【问题描述】:

以下是我们模板的一部分。我们在那里导出一个路径变量。但是,从模板运行,这不起作用。如果我 SSH 到服务器并运行同一行,它可以工作,我可以使用 gradle。但仅从模板中,它就不会被执行。其他chmod 命令有效,因此该块显然已执行。非常感谢任何帮助。

...
        "LaunchConfiguration": {
            "Type": "AWS::AutoScaling::LaunchConfiguration",
            "Metadata": {
                "AWS::CloudFormation::Init": {
                  "config": {
                    "packages": {
                      "yum": {
                        "java-1.8.0-openjdk-devel": []
                      }
                    },
                    "sources": {
                      "/opt": "https://services.gradle.org/distributions/gradle-3.4.1-bin.zip",
                      "/home/ec2-user": "https://github.com/ABC/XYZ/archive/master.zip"
                    },
                    "files": {
                      "/tmp/gradle_config": {
                        "content": {
                          "Fn::Join": ["",
                            [
                              "#!/bin/bash -ex\n",
                              "chmod -R 755 gradle-3.4.1/\n",
                              "export PATH=$PATH:/opt/gradle-3.4.1/bin\n" //<<<< This does not work
                            ]
                          ]
                        },
                        "mode": "000500",
                        "owner": "root",
                        "group": "root"
                      },
                      "/tmp/app_config": {
                        "content": {
                          "Fn::Join": ["",
                            [
                              "#!/bin/bash -ex\n",
                              "chmod -R 777 XYZ-master/\n"
                            ]
                          ]
                        },
                        "mode": "000500",
                        "owner": "root",
                        "group": "root"
                      }
                    },
                    "commands": {
                      "01_config": {
                          "command": "/tmp/gradle_config",
                           "cwd" : "/opt"
                      },
                      "02_config": {
                          "command": "/tmp/app_config",
                           "cwd" : "/home/ec2-user"
                      }
                    }
                  }
                }
            }, ...

【问题讨论】:

    标签: linux amazon-web-services amazon-cloudformation amazon-linux


    【解决方案1】:

    我找到了解决方案。所有这些行都以 root 用户身份执行。因此export PATH... 不适合我的ec2-user。我处理的方式是将路径变量(全局)放入/etc/environment 文件中。

    在我的代码 sn-p 中,只需替换

    "export PATH=$PATH:/opt/gradle-3.4.1/bin\n",

    "echo \"PATH=$PATH:/opt/gradle-3.4.1/bin\" &gt;&gt; /etc/environment"",

    【讨论】:

      猜你喜欢
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 2021-06-05
      • 2017-07-27
      • 2017-07-21
      • 1970-01-01
      相关资源
      最近更新 更多