web-dev-qa-db-ja.com

AWSインスタンスで環境変数を設定する

このリソースを使用してEC2のAMI with terraformを作成します:

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コマンドを実行すると、正常に機能します。

テラフォームで環境変数を定義する方法はありますか?

5
gtx911

Exportコマンドを使用すると、現在のシェルとそのシェルから開始するすべてのプロセスの変数のみが設定されます。永続的な設定ではありません。永続化したいものはすべて/etc/environmentに設定する必要があります。

たとえば、userdataの場合:

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

これにより、そのファイルにJava_HOME=/jdk1.8.0_172行が追加されます。そのファイル内でexportを使用しないでください。

PATH変数は/etc/environmentファイルですでに定義されている可能性があり、追加のパスを追加する場合は、それを適切に上書きする必要があります。

これで利用可能な環境変数の設定に関する非常に詳細な情報があります answer

12
Brandon Miller