DEVELOPER BLOG

開発者ブログ

HOME > 開発者ブログ > 【Terraform入門】AWSの構築をIaCでサクッと行う - PrismScaler

【Terraform入門】AWSの構築をIaCでサクッと行う - PrismScaler

1. はじめに

こんにちは!株式会社Definerの阪本です!
今回は、タイトルの通り「AWSの構築をやってみる」をご紹介したいと思います。

2. 目的・ユースケース

この記事では、「AWSを使って基本的なリソースを構築する」という目的に向けて、VPCなどの基本的なAWSサービスを活用します。
ITの現場で、「AWSを活用したベーシックな開発を始めたい」ときに、参考になる情報やプラクティスをまとめています。

3. Terraformとは

Terraformとは、HashiCorp社が提供するInfrastructure as Code(IaC)サービスです。
IaCとは、インフラの構築をコード化して管理する手法です。
Terraformは、GO言語で書かれているAWS SDKを使用しています。
Terraformの特徴として、AWS、Azure、GCPなど、マルチクラウドに対応していることが挙げられます。
 

4. TerraformでVPCとEC2を作ってみる

早速Terraformでリソースを作成していきます。
Terraformファイルは以下を使用します。
①クレデンシャルの指定
providerブロックで、クレデンシャルを指定します
IAMユーザのキーを入力します
また、ここでリージョンなども指定します
 
②リソースの指定
ここがAWSリソースを定義している部分です。
# Tokyoリージョンの場合は、AWSの対応評価からap-northeast-1を指定
provider "aws" {
  access_key = "${access_key_here}"
  secret_key = "${secret_access_key_here}"
  region     = "ap-northeast-1"
}

# VPCの構築情報を定義
resource "aws_vpc" "my_vpc" {
  cidr_block = "10.0.0.0/16"

  tags = {
    Name = "vpc-example"
  }
}

# Subnet情報を定義
resource "aws_subnet" "my_subnet" {
  vpc_id            = aws_vpc.my_vpc.id
  cidr_block        = "10.0.1.0/24"
  availability_zone = "ap-northeast-1"

  tags = {
    Name = "subnet-example"
  }
}

# network_interfaceを定義
resource "aws_network_interface" "foo" {
  subnet_id   = aws_subnet.my_subnet.id
  private_ips = ["172.16.10.100"]

  tags = {
    Name = "primary_network_interface"
  }
}

# AWS Amiの検索ロジックを定義
data "aws_ami" "ubuntu" {
  most_recent = true

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }

  owners = ["099720109477"] # Canonical
}

# Ec2を定義
resource "aws_instance" "foo" {
  ami           = data.aws_ami.ubuntu.id
  instance_type = "t2.micro"

  network_interface {
    network_interface_id = aws_network_interface.foo.id
    device_index         = 0
  }

  credit_specification {
    cpu_credits = "unlimited"
  }
}                
③Terraform実行

まずは「terraform init」コマンドを実行します。
次に、「terraform plan」コマンドで実行計画を策定します。
続いて「terraform apply」コマンドでリソースを作成します。
terraform init
terraform plan
terraform apply                  

5. AWS Consoleで作成したリソースを確認

①AWSConsole画面に、ログインします。
②VPCを検索し、VPC画面を開きます。

③Ec2を検索し、Ec2画面を開きます。

リソースが作成されていることを確認できました!

6. 引用・参考記事

7. 独自ソリューション「PrismScaler」について

・ PrismScalerは、開発・運用を要さずにたった3ステップで、AWSやAzure、GCPなどのマルチクラウド基盤構築を実現するWebサービスです。
・ クラウド基盤にまつわる「自動構築」「自動監視」「問題検知」「構成可視化」などの効率化を実現し、クラウドエンジニア、SRE/DevOpsエンジニアが行う泥臭く大変な作業を肩代わりするソリューションです。
・ クラウド基盤構築/クラウド移行や、クラウドの保守運用・コスト最適化など幅広い利用シーンを想定しており、IaaSやPaaSを適切に組み合わせた数百を超える高品質な汎用クラウド基盤を容易に実現できます。
 

8. お問合せ

本記事では、入門編として有益な情報を無料公開しています。ご相談やお問い合わせは「株式会社Definer」へ。

9. Definerに関して。

・ Definer Incは、ITの上流から下流まで一気通貫のワンストップソリューションをご提供しております。
・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。
・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。
・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。