IaCとは
Infrastructure as Code (IaC) とは、手動のプロセスや設定の代わりにコードを使用してコンピューティングインフラストラクチャをプロビジョニングおよびサポートできることをいいます。どのようなアプリケーション環境であっても、オペレーティングシステム、データベース接続、ストレージなどの多くのインフラストラクチャコンポーネントが必要です。デベロッパーは、アプリケーションを開発、テスト、デプロイするためのインフラストラクチャを定期的に設定、更新、メンテナンスする必要があります。
まとめると
- 今までやっていたポチポチが、コマンド実行するだけで済む
-
環境をコードで管理できる
- バージョン管理できる
- 同じ環境を再現できる
- CI/CDで自動デプロイもできる
IaCの種類も色々
参照: https://tech-blog.jtp.co.jp/entry/2023/08/23/200750
- Terraform
- AWS CloudFormation
- AWS CDK
- Azure Resource Manager
- Google Cloud Deployment Manager
- Puppet
- Ansible
- Pulumi
かなり種類があり、ここで紹介しきれていないものもあります。
今回は最もメジャーで分かりやすいTerraformを使っていきます。
IaCを学ぶことの良さ
私自身ニフティに入ってから初めてAWSを触ったのですが、本当になにもわからない状態でした。
最初の配属先でIaCを使ってAWSリソースを構築する業務を行なったことで、AWSへの理解が一気に深まりました。
なんもわからんな人こそ、IaCで学ぶのが最適だと個人的には思います。
Terraformの書き方
TerraformはHCL(hashicorp language)という言語で記述します。jsonとかyamlみたいな見た目に近い。
実際のコードを見てみます。
# ----------------------------
# Provider
# ----------------------------
provider "aws" {f
profile = "terraform_sample"
region = "ap-northeast-1"
}
# ----------------------------
# Variables
# ----------------------------
variable "project" {
type = string
}
variable "environment" {
type = string
}
# ----------------------------
# EC2 instance
# ----------------------------
resource "aws_instance" "test_ec2" {
ami = "ami-xx"
instance_type = "t3.micro"
tags = {
Name = "${var.project}-${var.environment}-ec2"
}
}
Terraformコマンドを使ってみる
では早速、TerraformでHelloWorldしてみます。
以下のhello_world.tfを準備して、コマンドを使ってみます。
resource "local_file" "helloworld" {
content = "hello world!\n"
filename = "hello.txt"
}
# 初期化処理
terraform init
# 実行結果を事前に確認
terraform plan
# 実行
terraform apply
# 確認が入るので、内容を確認して
yes
cat hello.txt
このような感じで、定義した情報をもとに処理を実行してくれます。今回はローカルにファイルを作成しただけでしたが、次のハンズオンでは実際にAWS上にリソースを作成するハンズオンを実施しました。