2017-12-03 5 views
-3

私の要件は、terraformを使用して3つのawsインスタンスを作成し、そこに3つの異なるbashスクリプトを実行する必要があります。すべてのファイルは同じサーバー上にあります。Linuxのbashスクリプトファイルをterraformコードに追加するにはどうすればよいですか?

インフラストラクチャを作成するためのterraformコードと、すぐに使用できる3つのbashスクリプトがあります。

resource "aws_instance" "master" { 
    instance_type = "t2.xlarge" 
    ami = "${data.aws_ami.ubuntu.id}" 
    key_name = "${aws_key_pair.auth.id}" 
    vpc_security_group_ids = ["${aws_security_group.public.id}"] 
    subnet_id = "${aws_subnet.public1.id}" 
} 

これはAWSインスタンス

を作成するために私のテラフォームのコードである。しかし、私は両方を統合する方法を確認していません。

また、Linuxのbashスクリプトで変数値としてAwsインスタンスのIP値を使用できますか?はいの場合、私はどのように私のLinuxのbashスクリプト変数の1つにそのIP値を渡すことができますか? ありがとう

+0

?あなたのコードを含めることができますか? – Vandal

+0

terraformのローカルexecが動作しませんでした。 –

+1

複数のアカウントを使用して同じ投稿を編集していますか?いいアイデアではなく、あなたの編集はレビューを経なければなりません。 –

答えて

1

スクリプトを1回だけ実行する必要がある場合は、 AWSのuser-data scriptsとのペアリングはこれに最適です。

templates/user_data.tplにスクリプトをスローし、template providerを使用してテンプレートを作成します。レンダリングされたスクリプトをaws_instanceリソースのuser_data引数に渡したいだけです。

必要に応じて変更してください。あなたがこれまでに試してみました何

テンプレート/ user_data.tpl

#!/bin/bash 
echo ${master_ip} 

terraform_file.tf

resource "aws_instance" "master" { 
    instance_type   = "t2.xlarge" 
    ami     = "${data.aws_ami.ubuntu.id}" 
    key_name    = "${aws_key_pair.auth.id}" 
    vpc_security_group_ids = ["${aws_security_group.public.id}"] 
    subnet_id    = "${aws_subnet.public1.id}" 
} 

resource "aws_instance" "slave" { 
    instance_type   = "t2.xlarge" 
    ami     = "${data.aws_ami.ubuntu.id}" 
    key_name    = "${aws_key_pair.auth.id}" 
    vpc_security_group_ids = ["${aws_security_group.public.id}"] 
    subnet_id    = "${aws_subnet.public1.id}" 

    user_data = "${data.template.user_data.rendered}" 
} 

data "template" "user_data" { 
    template = "${file("templates/user_data.tpl")}" 

    vars { 
    master_ip = "${aws_instance.master.private_ip}" 
    } 
} 
+0

正確に何が必要なのですか。ありがとう –

関連する問題