2017-09-25 5 views
0

2つの異なるサーバーを作成する2つの計画があります(それ以外の場合は実際は複雑です)。 1つの計画では、私はこのようなセキュリティグループの値outputingています:1つのプランから別のプランへのリソース出力値

output "security_group_id" { 
    value = "${aws_security_group.security_group.id}" 
} 

私は、第二の計画を持っている私は、その値を使用したいが、私はそれを達成することができますどのように、私が試してみました物事のカップルが、何も私のために働く。

私はmoduleによってoutput値のリターンを使用する方法を知っているが、どのように私は別のoutput 1の計画を使用することができることを知りません。

答えて

1

構成の最上位モジュール(実行するディレクトリterraform plan)で出力が使用される場合、その値はTerraform状態で記録されます。

この値を別の構成から使用するには、その状態を他の構成で読み取ることができる場所に発行する必要があります。これを達成する通常の方法はRemote Stateを使用することです。 最初構成に対応リモート状態に

、それはthe terraform_remote_state data sourceを用い構成に起因する値を読み取ることが可能となります。

例えば、それは次のようなバックエンドの設定を使用してAmazon S3の最初の設定のために状態を維持することが可能です:

terraform { 
    backend "s3" { 
    bucket = "example-s3-bucket" 
    key = "example-bucket-key" 
    region = "us-east-1" 
    } 
} 

第一の構成にこれを追加した後、テラフォームを実行するように求められますterraform init新しいバックエンドの初期化には、S3に格納される既存の状態の移行が含まれます。第二の構成は、第1の状態を読み取っているので、それが必要であること

data "terraform_remote_state" "example" { 
    backend = "s3" 
    config { 
    bucket = "example-s3-bucket" 
    key = "example-bucket-key" 
    region = "us-east-1" 
    } 
} 

resource "aws_instance" "foo" { 
    # ... 
    vpc_security_group_ids = "${data.terraform_remote_state.example.security_group_id}" 
} 

注:次に構成において、これはterraform_remote_stateデータソースに同じ構成を提供することによって取得することができる

terraform applyこの値が実際に状態に記録されるように最初の構成。第2の設定は、出力が最初に変更されたときはいつでも再適用する必要があります。

+0

私はローカルの 'state'ファイルを持っていますか? –

関連する問題