tl;dr
EC2 を作るときに一緒に EIP を払い出すようなサンプルはよく見かけるんだけど, 既に払い出している EIP に EC2 をアタッチする場合, Terraform ではどう書くのか調べたのでメモしておきます.
尚, 検証に利用した環境は以下の通りです. 最新でなくてごめんなさい.
$ terraform version Terraform v0.11.11 + provider.random v2.1.0 Your version of Terraform is out of date! The latest version is 0.11.13. You can update by downloading from www.terraform.io/downloads.html
俺はこうした
その前に
EC2 と EIP を一緒のタイミングで作って, EC2 にアタッチする場合の tf ファイルは以下のような感じで書きました.
resource "aws_eip" "my-eip" { instance = "${aws_instance.your-instance.id}" vpc = true } resource "aws_instance" "your-instance" { ... subnet_id = "${random_shuffle.launch_subnet_id.result[0]}" vpc_security_group_ids = ["${aws_security_group.your-security-group.id}"] ... }
アロケーション済みの EIP を EC2 にアタッチする場合
aws_eip_association
リソースを使うと良かったです.
variable "eip-allocation-id" { default = "eipalloc-1234567890abcdefg" } resource "aws_eip_association" "eip-association" { instance_id = "${aws_instance.your-instance.id}" allocation_id = "${var.eip-allocation-id}" } resource "aws_instance" "your-instance" { ... subnet_id = "${random_shuffle.launch_subnet_id.result[0]}" vpc_security_group_ids = ["${aws_security_group.your-security-group.id}"] ... }
EIP と関係ないですが, 複数の Availability Zone に別れたサブネットのどちらかに EC2 を所属させたい時に random_shuffle
リソースを使うと良かったです. このネタは別の記事にて.
以上
- Terraform は奥深い