はじめに
こんにちは。Tsukasaです!
皆さんIaCは触ったことはありますか?
今回私は、研修で初めてIaCを触ったので、その時のことを記事にしていこうと思います。
今回はIaCの中でもTerraformを触ったので、早速見ていきたいと思います!
IaCとは
IaCとはそもそも何でしょうか?
IaCとは、「Infrastructure as Code」の略で、サーバーやネットワークなどのインフラを、プログラミングコードを使って管理・自動化する手法です。手動での作業をコードに置き換えることで、構築作業の自動化、設定ミスや環境の不一致の削減、一貫性の確保、変更履歴の追跡が可能になります。 普段、AWSの構築はAWSのコンソールから使いたいサービスを探して、一つ一つ構築していきますよね?IaCはそういった手作業をプログラミングコード等を用いて自動化するものになります。
そもそも何でIaCが必要なの?
この時の私は何故IaCが必要なのか理解がいまいちできていませんでした。
絶対コンソール使った方が楽だし、わざわざコードを書くと時間もかかるし、何故必要なのだろうか?と思っていました。
しかしこの疑問はベテランエンジニアの方が一瞬で解決してくださいました!
当時の私は研修ということだったので、環境は私のアカウントのみしかありませんでした。
しかし、実際の現場に出ると、開発環境、検証環境、本番環境と環境が多数ある場合があります。
その際に一つ一つの環境をコンソールで構築していくと、時間もかかるし、何よりも人的ミスが起きる場合があります。そういった問題を防ぐ為にIaCを用いて自動化することで、複数ある環境を一括で作成することが必要になってくるのです。
この説明は自分の中でも凄く腑に落ちる説明でした。
Terraformとは
今回私はTerraformを用いて構築しました。
Terraformとは何でしょうか?
Terraformとはインフラをコードとして管理する「Infrastructure as Code(IaC)」ツールです。HashiCorp社が開発したオープンソースのソフトウェアで、クラウドインフラ(AWS、Azure、GCPなど)やオンプレミス環境のサーバー、ネットワーク、データベースなどを、設定ファイル(コード)を記述するだけで、自動的に構築、管理、変更できます。これにより、手作業による設定ミスを減らし、インフラ管理の効率化と再現性の向上を実現します。
Terraform以外にもCloudFormationやCDKなどがあります。
実際に使ってみた
今回は研修で3層ウェブアーキテクチャをTerraformで作成してみました。
全てを紹介すると物凄く長くなってしまうので、VPCを作成したところだけ紹介しようと思います。
下記の記事を参考に作成しました。
ソースコード
まずはソースコードを準備します。Terraformは初めて使ったので、自分でコードを書くことはできないので、生成AIを使って作成しました。
まずはメインのソースコードです。
このコードでVPCを作成します。
main.tf
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
enable_dns_support = true
enable_dns_hostnames = true
tags = {
Name = "Ohkawado-VPC"
}
}
次はTerraform がどのクラウドを使うのかを指定します。
今回は勿論AWSです。
provider.tf
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "ap-northeast-3" # 大阪リージョン
}
最後に設定値を外出しして再利用するための場所を作ってあげます。
variables.tf
variable "vpc_cidr" {
description = "VPCのCIDRブロック"
default = "10.0.0.0/16"
}
CloudShell
次はCloudShellです。
ソースコードを考えても、そもそもTerraformをインストールしていないと使えません。
その後、ソースコードの作成や、編集、実行もこちらで行います。
下記にメインで使うコマンドを載せておきます。
Terraformインストールコマンド
sudo dnf install -y terraform
もしAmazon Linux 2023を使っている場合下記のコマンドでインストール
HashiCorp のリポジトリを追加
sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo
Terraform をインストール
sudo dnf install -y terraform
バージョン確認
terraform -version
インストール確認コマンド
terraform -version
ファイル作成コマンド
このコマンドでファイルを作成して先程紹介したソースコードを打ち込みます。
vim main.tf
vim provider.tf
vim variables.tf
Terraform実行コマンド
実行する際には下記の3つのコマンドを実行していきます。
terraform init
terraform plan
terraform apply
それぞれ下記のような意味を持っています。
terraform init → プラグインやプロバイダをダウンロード
terraform plan → 変更内容の確認
terraform apply → 実際にAWSにリソースを作成
できてるか確認してみた
上記のコマンドを全て実行して、AWSのコンソールを確認してみました。
そうするとVPCができていました!
終わりに
いかがでしたでしょうか?
初心者でも調べながらやって、Terraformで構築することができました!
簡単なことから始めて、成功体験を積み重ねていくことが、より大きな成長に繋がるなと感じました!
これからもどんどん挑戦していきたいと思います!
