このリソースを使用して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コマンドを実行すると、正常に機能します。
テラフォームで環境変数を定義する方法はありますか?
Exportコマンドを使用すると、現在のシェルとそのシェルから開始するすべてのプロセスの変数のみが設定されます。永続的な設定ではありません。永続化したいものはすべて/etc/environment
に設定する必要があります。
たとえば、userdataの場合:
echo "Java_HOME=/jdk1.8.0_172" >> /etc/environment
これにより、そのファイルにJava_HOME=/jdk1.8.0_172
行が追加されます。そのファイル内でexport
を使用しないでください。
PATH
変数は/etc/environment
ファイルですでに定義されている可能性があり、追加のパスを追加する場合は、それを適切に上書きする必要があります。
これで利用可能な環境変数の設定に関する非常に詳細な情報があります answer 。