手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 Terraform の基本設定 – IaC 実行環境を整える

Ubuntu 26.04 をサーバー管理やインフラ管理の作業端末として使う場合、Ansible だけでなく Terraform を使う場面があります。Ansible が主に OS 内部の状態や設定ファイルを扱うのに対し、Terraform は基盤リソースを宣言的に管理するための道具です。

この記事では、Ubuntu 26.04 に Terraform CLI を導入し、terraform version、provider、backend、state、Ansible との責務分離を整理します。サーバーそのものの設定手順ではなく、IaC を実行するための管理端末側の土台を作る記事です。

Terraform は何を管理する道具か

Terraform は、設定ファイルに書いた望ましい状態に基づいて、クラウド、DNS、ロードバランサ、ネットワーク、仮想マシン、SaaS などのリソースを作成・変更・削除するための CLI です。重要なのは、Terraform が「サーバー内の設定変更ツール」ではなく、外部リソースや基盤リソースの状態管理を得意とする点です。

領域向いているもの
Terraformクラウドリソース、DNS、ネットワーク、VM、ロードバランサ、SaaS 設定などの宣言的管理
AnsibleOS 内部のパッケージ、設定ファイル、systemd、ユーザー、証明書配置など
手動操作初回検証や緊急対応。ただし恒常化するならコード化する
shell script単純な手順の自動化。状態管理や差分把握は弱い

CPU architecture を確認する

Terraform の公式 release archive は OS と CPU architecture ごとに分かれています。Ubuntu 26.04 を x86_64 で動かしているのか、arm64 / aarch64 で動かしているのかを先に確認します。

コマンド
uname -m
dpkg --print-architecture

x86_64 / amd64 であれば amd64、aarch64 / arm64 であれば arm64 の archive を選びます。アーキテクチャを間違えると、展開できても実行できません。

Terraform を /usr/local/bin に導入する

ここでは Terraform の release archive を取得し、/usr/local/bin/terraform として配置します。apt repository を使う方法もありますが、特定バージョンを固定して管理したい場合は、公式 release archive を明示的に配置する方法が分かりやすいです。

コマンド
terraform_version=1.14.9
terraform_arch=arm64
sudo mkdir -p /usr/local/src/terraform /usr/local/bin
curl -fsSL -o /tmp/terraform.zip "https://releases.hashicorp.com/terraform/${terraform_version}/terraform_${terraform_version}_linux_${terraform_arch}.zip"
sudo install -o root -g root -m 0644 /tmp/terraform.zip /usr/local/src/terraform/terraform_${terraform_version}_linux_${terraform_arch}.zip
sudo unzip -o /usr/local/src/terraform/terraform_${terraform_version}_linux_${terraform_arch}.zip -d /usr/local/bin
sudo chown root:root /usr/local/bin/terraform
sudo chmod 0755 /usr/local/bin/terraform

terraform_arch は自分の環境に合わせます。x86_64 / amd64 環境なら amd64、arm64 / aarch64 環境なら arm64 を使います。

インストール結果を確認する

導入後は、実行できることと、期待したバージョンであることを確認します。Terraform は version -json で機械的に確認しやすい出力を返せます。

コマンド
terraform version
terraform version -json
which terraform

複数の Terraform を入れている場合、PATH の順序によって別の binary が使われることがあります。which terraformterraform version を合わせて確認します。

最小構成で terraform init を確認する

Terraform CLI が動くことを確認するには、最小構成の main.tf を作り、terraform init を実行します。provider を使う場合、init 時に provider plugin が取得されます。

設定ファイル例
terraform {
  required_version = ">= 1.14.0"
  required_providers {
    local = {
      source  = "hashicorp/local"
      version = "~> 2.5"
    }
  }
}
resource "local_file" "example" {
  filename = "example.txt"
  content  = "hello terraform"
}
コマンド
mkdir -p ~/terraform-test
cd ~/terraform-test
terraform init
terraform plan

この段階では、実際のクラウド認証情報や本番 backend は使わず、Terraform CLI、provider 取得、設定ファイルの読み込みができることだけを確認します。

state と backend を軽く理解する

Terraform で特に重要なのは state です。Terraform は、実際のリソースと設定ファイルの対応関係を state に記録します。state を雑に扱うと、何を Terraform が管理しているのか分からなくなります。

項目意味
stateTerraform が管理しているリソース状態の記録
backendstate をどこに保存するかの設定
local backendローカルファイルとして state を保存する。検証向き
remote backendS3、Terraform Cloud などに state を保存する。チーム運用向き
lock同時実行による state 破壊を防ぐ仕組み

検証では local state でも十分ですが、チーム運用や本番基盤では remote backend と locking を検討します。state には機密情報が含まれることもあるため、Git にそのまま入れる運用は避けるべきです。

Ansible との責務分離

Terraform と Ansible は、どちらも自動化や IaC の文脈で語られますが、得意な対象が違います。Terraform で VM やネットワークを作り、Ansible で OS 内部を設定する、という分担は分かりやすい構成です。

作業向いている道具
VM、Subnet、Security Group、DNS record の作成Terraform
OS パッケージ、設定ファイル、systemd の管理Ansible
証明書ファイルの配置、ユーザー作成、ログ設定Ansible
クラウド IAM、ロードバランサ、外部 DNS の宣言的管理Terraform
Kubernetes 上の manifest 適用kubectl、Helm、Terraform provider、Ansible collection など設計次第

境界が曖昧なまま両方から同じリソースを触ると、どちらが正なのか分からなくなります。Terraform が管理する範囲、Ansible が管理する範囲、手動で触ってよい範囲を分けておくことが重要です。

運用上の注意点

項目注意点
バージョン固定実行環境ごとの差を減らすため、Terraform のバージョンを明示する
provider必要な provider と version constraint を明示する
stateGit に雑に置かず、保存先とアクセス権を決める
backendチーム運用では remote backend と lock を検討する
認証情報環境変数、credential file、Secret 管理を分けて扱う
責務分離Terraform と Ansible で同じ対象を二重管理しない

まとめ

Ubuntu 26.04 に Terraform を導入する場合、単に CLI を置くだけでなく、バージョン、CPU architecture、PATH、provider、state、backend の扱いを整理しておく必要があります。

Terraform は、サーバー内部を細かく設定する道具というより、基盤リソースを宣言的に管理するための道具です。Ansible と役割を分け、Terraform が管理する範囲と state の責任を明確にしておくことで、IaC 実行環境として安定して使いやすくなります。

参考書籍
参考書籍
Advanced Ubuntu Administration and Management Best Practices

Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

次に読む記事

Ubuntu 26.04 サーバー管理ガイド
Ubuntu 26.04 Terraform の基本設定 – IaC 実行環境を整える

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る