代码之家  ›  专栏  ›  技术社区  ›  gtx911

在aws实例中设置环境变量

  •  3
  • gtx911  · 技术社区  · 6 年前

    我创造了一个 ec2地形下的ami 使用此资源:

    resource "aws_instance" "devops-demo" {
      ami           = "jnkdjsndjsnfsdj"
      instance_type = "t2.micro"
      key_name      = "demo-devops"
      user_data     = "${file("ops_setup.sh")}"
    }
    

    用户数据执行 外壳脚本 安装Java JRE:

      sudo yum remove java-1.7.0-openjdk -y
      sudo wget -O /opt/server-jre-8u172-linux-x64.tar.gz --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u172-b11/a58eab1ec242421181065cdc37240b08/server-jre-8u172-linux-x64.tar.gz"
      sudo tar xzf /opt/server-jre-8u172-linux-x64.tar.gz
      export JAVA_HOME=/jdk1.8.0_172
      export JRE_HOME=/jdk1.8.0_171/jre
      export PATH=$JAVA_HOME/bin:$PATH
    

    但这些环境变量都不起作用。但是,如果我通过ssh连接到实例并执行export命令,那么它可以正常工作。

    有没有办法用terraform定义环境变量?

    1 回复  |  直到 6 年前
        1
  •  9
  •   Brandon Miller    6 年前

    使用export命令只为当前shell和从该shell开始的所有进程设置这些变量。这不是一个持久的设置。任何你想永久的东西都应该放进去 /etc/environment .

    例如在userdata中:

    echo "JAVA_HOME=/jdk1.8.0_172" >> /etc/environment
    

    这将添加 JAVA_HOME=/jdk1.8.0_172 到那个文件的行。注意,你不应该使用 export 在那个文件里。

    这个 PATH 变量可能已经在 /etc/环境 如果要将其他路径附加到文件,则需要适当覆盖该文件。

    这里有关于设置环境变量的非常详细的信息 answer .