Terraform と GitHub Actions による IaC
Terraform を GitHub Actions のワークフローに統合し、インフラストラクチャをプロビジョニング・管理する方法を理解します。
「Terraform と GitHub Actions による IaC」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
Infrastructure as Code(IaC)
ようこそ!このレッスンでは、Infrastructure as Code(IaC)について詳しく学びます。これは、手作業ではなくコードを使って、サーバー、データベース、ネットワークなどのインフラストラクチャを管理・プロビジョニングする方法です。
インフラストラクチャ向けのソフトウェアを書くようなものだと考えてください。環境全体に一貫性、再現性、バージョン管理をもたらすなど、多くのメリットがあります。
IaCのためのTerraform
IaCで最も広く使われているツールの1つが、HashiCorpが開発したオープンソースツールのTerraformです。
Terraformでは、人間が読みやすい構成ファイルでインフラストラクチャのリソースを定義できます。その後、これらのファイルを使って、さまざまなクラウドプロバイダー(AWS、Azure、GCPなど)やその他のサービスにわたるリソースをプロビジョニングおよび管理します。
TerraformのHCL構文
Terraformは、HashiCorp Configuration Language(HCL)という独自の宣言型言語を使用します。HCLは人間が読み書きしやすいように設計されているため、インフラストラクチャの定義を明確に記述できます。
AWS VPC(Virtual Private Cloud)をHCLで定義する簡単な例を見てみましょう。
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "my-vpc"
}
}Terraformの基本ワークフロー
Terraformでは、インフラストラクチャを管理するために、一貫した3段階のワークフローに従います。
terraform init:作業ディレクトリを初期化し、必要なプロバイダープラグインをダウンロードします。terraform plan:実行プランを生成し、Terraformがインフラストラクチャに加える変更を表示します。terraform apply:プランに記載された変更を実行し、リソースをプロビジョニングまたは変更します。
GitHub Actionsによる自動化
TerraformをGitHub Actionsと統合すると、IaC戦略を大幅に強化できます。インフラストラクチャのデプロイパイプラインにおける重要な手順を自動化できます。
GitHub Actionsを使うと、次のことが可能です。
- プルリクエストごとに
terraform planを自動的に実行する。 - インフラストラクチャの変更がレビュー・承認されるようにする。
- 管理されたデプロイのために
terraform applyを自動化する。
Terraformのワークフローファイル
Terraform用のGitHub Actionsワークフローは、リポジトリの.github/workflows/ディレクトリ内にあるYAMLファイルで定義します。このファイルで、ワークフローを実行するタイミングと実行するステップを指定します。
変更のプランニングを行うワークフローの基本構成を見てみましょう。
name: 'Terraform CI'
on:
pull_request:
branches:
- main
jobs:
terraform:
name: 'Terraform'
runs-on: ubuntu-latest
steps:
# Your workflow steps will go here
TerraformのセットアップとInitステップ
Terraformのコマンドを実行する前に、ワークフローでコードをチェックアウトし、Terraform CLIをセットアップして、作業ディレクトリを初期化する必要があります。
hashicorp/setup-terraformアクションを使うと、これらを簡単に実行できます。
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v2
with:
terraform_version: 1.5.x
- name: Terraform Init
run: terraform initTerraform Planステップ
terraform planコマンドは、IaCワークフローにおける重要なステップです。構成ファイルで定義された望ましい状態を実現するために必要な操作を確認する「ドライラン」を実行します。
このステップにより、クラウド環境が実際に変更される前に、提案された変更を確認できます。
- name: Terraform Plan
run: terraform plan
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}簡単な確認:Terraform Plan
自動化されたワークフローでTerraformを効果的に使用するには、基本的なコマンドを理解することが重要です。
Terraform Applyに関する注意点
terraform applyコマンドは、インフラストラクチャに実際の変更を加える重要な処理です。
自動化されたパイプラインでは、planの出力を人間がレビューした後にのみterraform applyを実行するか、特定のブランチ(例:mainやproduction)へのマージ時にのみ実行するのが一般的です。これにより、誤った変更や承認されていないインフラストラクチャの変更を防げます。
TerraformとActionsによるIaCの復習
このレッスンでは、Infrastructure as Code(IaC)によってコードでインフラストラクチャを管理する方法を学びました。IaCの代表的なツールであるTerraformを中心に、そのHCL構文と、基本となるinit、plan、applyのワークフローについて確認しました。
また、GitHub Actionsでterraform initとterraform planのステップを自動化し、インフラストラクチャのデプロイをより安全で一貫性のあるものにしながら、CI/CDパイプラインに完全に統合する方法も見ました。
よくある質問
「Terraform と GitHub Actions による IaC」レッスンは無料ですか?
はい。「Terraform と GitHub Actions による IaC」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「Terraform と GitHub Actions による IaC」で何を学びますか?
Terraform を GitHub Actions のワークフローに統合し、インフラストラクチャをプロビジョニング・管理する方法を理解します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Terraform と GitHub Actions による IaC」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Terraform と GitHub Actions による IaC
- クラウドリソースの管理
- インフラストラクチャ更新の自動化
- Terraform Stateとリモートバックエンドの管理