AWS
EC2
Terraform

Terraformのassociate_public_ip_addressの差分をなくす


はじめに

terraform planとかterraform applyした時に出てくるassociate_public_ip_addressの差分をなくす方法

associate_public_ip_address.png

associate_public_ip_addressを設定している状態でインスタンスが停止してたりすると出てきます


結論



  1. associate_public_ip_addressの設定は削除

  2. サブネットの設定にmap_public_ip_on_launch=Trueを追加

これでパブリックIPアドレスを付与しつつ、Terraformでの変更がいかなる場合も出なくなります。

参考までに2.のサブネットの設定はコンソール画面だとこうです




サブネットの設定で自動割り当てIP設定の変更有効にする

自動割り当てIP設定の変更.png

自動割り当てIP設定の変更2.png



パブリックIPアドレスの付与

インスタンスにパブリックIPアドレスを付与する方法は大きく分けて以下の3つです。


  1. 自動割り当てIPの設定が有効になっているサブネットにインスタンスを立てる


    • Terraformのmap_public_ip_on_launchで設定



  2. インスタンスの起動時のパブリック IP アドレス割り当てを有効にする


    • Terraformのassociate_public_ip_addressで設定



  3. EIPをインスタンスに割り当てる

AWS公式:IPアドレス指定


設定の組み合わせによるパブリックIPアドレスの付与

上で説明した設定を有効にしたり、無効にしたりした時のIPアドレスの状態が以下の表です。

インスタンスの設定が優先されます

No.
サブネットの設定
インスタンスの設定
パブリックIPアドレス付与される?

1
有効
有効
付与される

2
有効
無効
付与されない

3
有効
設定なし(デフォルト)
付与される

4
無効
有効
付与される

5
無効
無効
付与されない

6
無効
設定なし(デフォルト)
付与されない


なぜ差分が出るのか?

タイトルのような差分が何故出てしまうのかというと、インスタンスを停止すると自動割り当てのパブリックIPアドレスが解放され、associate_public_ip_addressの設定状態と差分が出るからです

No.
サブネットの設定
インスタンスの設定
パブリックIPアドレス付与される?
インスタンス停止状態のTerraform差分

1
有効
有効
付与される
差分あり

2
有効
無効
付与されない
差分なし

3
有効
設定なし(デフォルト)
付与される
差分なし

4
無効
有効
付与される
差分あり

5
無効
無効
付与されない
差分なし

6
無効
設定なし(デフォルト)
付与されない
差分なし

パブリックIPアドレスが付与されるかつインスタンス停止状態でもTerraformの差分が出ない設定の組み合わせが3.の組み合わせです。


EIP付与状態時の差分について

associate_public_ip_addressの設定を無効(FALSE)にするとEIPを付与した時に差分となってしまいます。

No.
サブネットの設定
インスタンスの設定
EIP付与状態時のTerraform差分

1
有効
有効
差分なし

2
有効
無効
差分あり

3
有効
設定なし(デフォルト)
差分なし

4
無効
有効
差分なし

5
無効
無効
差分あり

6
無効
設定なし(デフォルト)
差分なし

そのため結論に書いたとおり


  1. インスタンスにassociate_public_ip_addressの設定はしない(デフォルト状態にする)

  2. サブネットの設定は有効にする(map_public_ip_on_launch=True

としておくのが一番平和です。