2017-12-06 6 views
1

既存のAWS VPCで、Terraformを使用していくつかの新しいEC2、RDSなどを作成する必要があります。既存のサブネット、セキュリティグループ、iamなどはTerraformによって作成されません。手動で作成されます。Terraformを使用して既存のVPCでECを起動する方法

正しい方法は、terraformのインポートを使用することです(それは正しいですか?)。 terraformのインポートの仕組みをテストするために、既存のVPCの代わりに既存のEC2をインポートする方法を最初にテストしました。

実行する前に

私のような、私のec2.tfファイルに非常に詳細なEC2のリソースを作成する必要があるように見えます
terraform import aws_instance.example i-XXXXXXXXXX 

:私はちょうど書いた場合

resource "aws_instance" "example" { 
    iam_instance_profile = XXXXXXXXXX 
    instance_type = XXXXXXX 
    ami = XXXXXXX 
    tags { 
    Name = XXXXX 
    Department = XXXX 
    .... 
    } 
} 

resource "aws_instance" "example" { 
} 

私はamiとインスタンスのタイプを見逃していることを示しました。

私が書く場合:

resource "aws_instance" "example" { 
    instance_type = XXXXXXX 
    ami = XXXXXXX 
} 

は、 は何にもIAMプロファイルを変更、何も私の既存のEC2のタグを変更します「を適用テラフォーム」を実行。

私は既存のvpc、サブネット、セキュリティグループをまだインポートする方法を試していません。私が試してみると恐れて、私は既存のvpc、サブネット、セキュリティグループなどの多くの情報を入れなければならない私のシステムは複雑です。

私のテラフォームコードに非常に多くの詳細を示す必要がありますか?私は単にvpcのIDのような既存のもののIDを指定するだけで、既存のIDに基づいて新しいものを作成する方法はありませんか? sth。以下のような:

data "aws_subnet" "public" { 
    id = XXXXXXX 
} 

resource "aws_instance" "example" { 
    instance_type = "t2.micro" 
    ami = "${var.master_ami}" 
    ...... 
    subnet_id = "${aws_subnet.public.id}" 
} 

答えて

2

あなたがインポート時にリソースブランクの体を残すことができますが、それがインポートされていたら、後ろに行くと具体的な詳細を記入する必要があります。インポートしたリソースをterraform showコマンドで確認し、すべてのリソースの詳細を入力することができます。したがって、terraformプランを実行しようとすると、変更は必要ありません。

あなたの質問に答えるには、はい、既存のリソースをインポートせずに使用できます。新しいリソースに必要な既存のリソースIDを保持する変数ファイルを作成し、必要なリソースIDを参照するだけです。リソースを作成するためにあなたのmain.tfで次に

variable "ami_id" { 
    description = "AMI ID" 
    default = "ami-xxxxxxxx" 
} 

variable "subnet_prv1" { 
    description = "Private Subnet 1" 
    default = "subnet-xxxxxx" 
} 

だからあなたのようなもので.varsファイルを持っている可能性があり、それについて移動する

resource "aws_instance" "example" { 
    instance_type = "t2.micro" 
    ami = "${var.ami_id}" 
    ...... 
    subnet_id = "${var.subnet_prv1}" 
} 

ただ一つの方法を。他にも読んでいただけるものがあります。the terraform docs for variables

+0

ありがとうございました。できます。要約すると、terraformを使用して既存のvpc(手動で作成された)を変更する必要がある場合、まずインポートする必要がありますが、既存のvpcから新しいコンポーネントを作成する場合は、投稿した2番目のソリューションを使用します。どうも。 – user389955

関連する問題