2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

terraformでec2を作成するときに常に最新のAMIを利用するようにしてみる

Posted at

概要

terraformでAL2を作成しようとするとAMI-IDを指定する必要があるが、
いちいち最新を調べて修正するのが面倒なので、常に最新版を持ってくるようにしたい。
(どこかを参考にしたような気がするが資材が残っていたので資材を削除する前に文章化しました。多分以下とやってることは同じだったと思います)

この記事はそのメモやまとめです。
すでに設定済みの項目がいくつかある。
試行錯誤しながらやったので、手順として不要かもしれない。あくまでメモ用。

AMI-IDを調べる

公式の記事にあるような手順でどのようなAMIがあるか取得します。

ただ、このままだとRegionを指定しろとエラーがでるのでとりあえず東京Regionを入れています。
またamazonlinux2のhvmだけでいいのでValues=amzn2-ami-hvmにしています。

aws ec2 describe-images --region ap-northeast-1 --owners amazon --filters "Name=name,Values=amzn2-ami-hvm*" --query 'sort_by(Images, &CreationDate)[].Name'

そうすると以下のようにAMIを取得できます。

    "amzn2-ami-hvm-2.0.20211001.1-arm64-gp2",
    "amzn2-ami-hvm-2.0.20211001.1-x86_64-ebs",
    "amzn2-ami-hvm-2.0.20211001.1-x86_64-gp2",
    "amzn2-ami-hvm-2.0.20211005.0-arm64-gp2",
    "amzn2-ami-hvm-2.0.20211005.0-x86_64-ebs",
    "amzn2-ami-hvm-2.0.20211005.0-x86_64-gp2",
    "amzn2-ami-hvm-2.0.20211103.0-arm64-gp2",
    "amzn2-ami-hvm-2.0.20211103.0-x86_64-ebs",
    "amzn2-ami-hvm-2.0.20211103.0-x86_64-gp2",
    "amzn2-ami-hvm-2.0.20211201.0-arm64-gp2",
    "amzn2-ami-hvm-2.0.20211201.0-x86_64-ebs",
    "amzn2-ami-hvm-2.0.20211201.0-x86_64-gp2",
    "amzn2-ami-hvm-2.0.20211223.0-arm64-gp2",
    "amzn2-ami-hvm-2.0.20211223.0-x86_64-ebs",
    "amzn2-ami-hvm-2.0.20211223.0-x86_64-gp2",
    "amzn2-ami-hvm-2.0.20220121.0-arm64-gp2",
    "amzn2-ami-hvm-2.0.20220121.0-x86_64-ebs",
    "amzn2-ami-hvm-2.0.20220121.0-x86_64-gp2",
    "amzn2-ami-hvm-2.0.20220207.1-arm64-gp2",
    "amzn2-ami-hvm-2.0.20220207.1-x86_64-ebs",
    "amzn2-ami-hvm-2.0.20220207.1-x86_64-gp2",
    "amzn2-ami-hvm-2.0.20220218.1-arm64-gp2",
    "amzn2-ami-hvm-2.0.20220218.1-x86_64-ebs",
    "amzn2-ami-hvm-2.0.20220218.1-x86_64-gp2",
………
    "amzn2-ami-hvm-2.0.20230822.0-arm64-gp2",
    "amzn2-ami-hvm-2.0.20230822.0-x86_64-ebs",
    "amzn2-ami-hvm-2.0.20230822.0-x86_64-gp2",
    "amzn2-ami-hvm-2.0.20230906.0-arm64-gp2",
    "amzn2-ami-hvm-2.0.20230906.0-x86_64-ebs",
    "amzn2-ami-hvm-2.0.20230906.0-x86_64-gp2"

この記事作成時点の最新AMIはamzn2-ami-hvm-2.0.20230906のようですね。

terraformを作成

自分のローカルにあった部分から参考記事でいいなと思った以下を追記しました。
また、EIPを付与するようにしています。

  • lifecycleオプションを付けることでAMI IDの変更による再作成を避けたる
# ec2 with Publick address
resource "aws_instance" "sample_web_server" {
  ami                    = data.aws_ami.amazon-linux-2.id # Amazon Linux 2
  instance_type          = "t3.nano"
  subnet_id              = "subnet-xxxx" # public subnet
  vpc_security_group_ids = ["xxxx"]
  key_name               = "ec2_key_pair"

  lifecycle {
    ignore_changes = [
      ami,
    ]
  }
}

resource "aws_eip" "ec2" {
  instance = aws_instance.sample_web_server.id
  vpc      = true
}

// Amazon Linuxの最新AMI
data "aws_ami" "amazon-linux-2" {
  most_recent = true #最新版を指定
  owners      = ["amazon"]
  filter {
    name   = "owner-alias"
    values = ["amazon"]
  }
  filter {
    name   = "name"
    values = ["amzn2-ami-hvm-*-x86_64-gp2"]
  }
}

appyします。
ちゃんと最新のAMIで作成されてますね!
image.png

ハマったところとか

  • 特になし
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?