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では、
・ITの上流から下流まで一気通貫のワンストップソリューションをご提供。
・AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミット。
・少ないエンジニアで事業が成長する仕組みづくりの実現。
・エンジニアが喜ぶ、採用しやすい環境づくりの実現。
・高速なアジャイル開発環境の実現。
・自社プロダクトとしてPrismScalerを展開。
上記事業内容を進行しております。
※「開発者ブログ」では、エンジニアの入門編として有益な情報を無料公開しています。
ご相談やお問い合わせは「株式会社Definer」へ。

9. Definerに関して。

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