title: AWS Advent Calendar 2014 date: 2014-12-15 07:06:35 tags:

AWS Advent Calendar 2014

今回の投稿内容は、AWS Advent Calendar 2014 になります。

AWS Advent Calendar 2014


今回はEIPを取り上げます。EIPを付ける際はどうされてますか? 私は先ほど仕事で10個EC2インスタンスにEIPをつけようとしました。 yumによるインストールするによりリポジトリと通信を行うためです。 Managment Consoleでの選択してEIPを設定するのは正直手間がかかりました。

Managment Consoleでの作業


発行されたEIPで接続するために、sshのconfigを作成したり EC2へのインストール作業後にEIPを外す作業もなかなか手間がかかるものです。


最近Terraformを覚えたので、もしかしたらそちらでできるのではないかと思いつきました。 すると調べたところ、作業が簡単になる見込みがありました。 HashicoprのTerraformにより、一斉設定を行います。


[01:41:52][f_prg@mba:eip]# cat eip.tf
provider "aws" {
    region = "ap-northeast-1"

resource "aws_eip" "hoge" {
    instance = "i-AAAAAAAAA"
    vpc = true

resource “aws_eip” の4行を複数記述すれば、複数のインスタンスに実行ができるようになります。


[01:41:53][f_prg@mba:eip]# terraform plan
Refreshing Terraform state prior to plan...

The Terraform execution plan has been generated and is shown below.
Resources are shown in alphabetical order for quick scanning. Green resources
will be created (or destroyed and then created if an existing resource
exists), yellow resources are being changed in-place, and red resources
will be destroyed.

Note: You didn't specify an "-out" parameter to save this plan, so when
"apply" is called, Terraform can't guarantee this is what will execute.

+ aws_eip.hoge
    allocation_id:  "" => "<computed>"
    association_id: "" => "<computed>"
    domain:         "" => "<computed>"
    instance:       "" => "i-AAAAAAAAA"
    private_ip:     "" => "<computed>"
    public_ip:      "" => "<computed>"
    vpc:            "" => "1"

[01:41:58][f_prg@mba:eip]# terraform apply
aws_eip.hoge: Creating...
  allocation_id:  "" => "<computed>"
  association_id: "" => "<computed>"
  domain:         "" => "<computed>"
  instance:       "" => "i-AAAAAAAAA"
  private_ip:     "" => "<computed>"
  public_ip:      "" => "<computed>"
  vpc:            "" => "1"
aws_eip.hoge: Creation complete

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

The state of your infrastructure has been saved to the path
below. This state is required to modify and destroy your
infrastructure, so keep it safe. To inspect the complete state
use the `terraform show` command.

State path: terraform.tfstate


今回は割愛します。 EIPが付いているので、packageやyumによる パッケージインストールができるようになります。

Terraform destroyの破棄


[01:48:18][f_prg@mba:eip]# terraform destroy
Do you really want to destroy?
  Terraform will delete all your managed infrastructure.
  There is no undo. Only 'yes' will be accepted to confirm.

  Enter a value: yes

aws_eip.hoge: Refreshing state... (ID: eipalloc-AAAAAAAAA)
aws_eip.hoge: Destroying...
aws_eip.hoge: Destruction complete

Apply complete! Resources: 0 added, 0 changed, 1 destroyed.


-public ipを付与できないEC2インスタンスには有効です。 -EC2インスタンスIDを入力するのはまだ手間がかかりました。 -プライベートサブネット配下のEC2インスタンスにインストール作業するときに大変便利だなぁと思いました。 -Terraformファイルを作成する工夫でもっと簡単になるのかとも思いました。