はじめに
AWS上にWindows Serverを構築し、Active Directory(AD)ドメインコントローラーとして昇格させるまでの手順をまとめました。
インフラ構築の自動化(IaC)としてTerraformを使用し、コストを抑えるためにすべてAWSの無料枠対象(t2.micro / SSD 30GB)の範囲内で実装しています。
1. TerraformによるWindows Serverのコード化(IaC)
まずはベースとなるWindows Serverの構築コードです。最新のWindows Server 2022のAMIを自動取得し、キーペアの生成とローカルへのダウンロードまでを自動化しています。
main.tf
provider "aws" {
region = "ap-northeast-1" # 東京リージョン
}
# 無料対象の最新のWindows Server AMIを自動取得
data "aws_ami" "windows_latest" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["Windows_Server-2022-English-Full-Base-*"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
}
# 1台目:ADサーバーの定義
resource "aws_instance" "windows_free" {
ami = data.aws_ami.windows_latest.id
instance_type = "t2.micro" # 無料枠対象
key_name = aws_key_pair.windows_keypair.key_name
root_block_device {
volume_size = 30 # 無料枠の上限
volume_type = "gp3"
delete_on_termination = true
}
tags = {
Name = "Windows-Free-Tier"
}
}
# 2台目:ドメイン参加テスト用クライアントの定義
resource "aws_instance" "windows_client" {
ami = data.aws_ami.windows_latest.id
instance_type = "t2.micro" # 無料枠対象
key_name = aws_key_pair.windows_keypair.key_name
root_block_device {
volume_size = 30 # 無料枠の上限
volume_type = "gp3"
delete_on_termination = true
}
tags = {
Name = "Windows-Client-PC"
}
}
# --- キーペアの自動生成 ---
resource "tls_private_key" "windows_key" {
algorithm = "RSA"
rsa_bits = 4096
}
resource "aws_key_pair" "windows_keypair" {
key_name = "windows-terraform-key"
public_key = tls_private_key.windows_key.public_key_openssh
}
resource "local_file" "private_key_pem" {
filename = "${path.module}/windows-terraform-key.pem"
content = tls_private_key.windows_key.private_key_pem
file_permission = "0600"
}
⚠️ 注意(Git管理の落とし穴)
このコードを実行すると、ローカルに本物の秘密鍵(.pem)や、Windowsの初期パスワードが生テキストで記録されたterraform.tfstateが生成されます。これらは絶対にGitHub等にプッシュしないよう、事前に.gitignoreへ登録しておく必要があります。
2. Active Directory 役割のインストール
terraform apply 完了後、1台目のサーバーにリモートデスクトップ(RDP)で接続し、AD機能のインストールを進めます。
- サーバーマネージャー を開き、右上から Manage > Add Roles and Features を選択。
- Server Roles の画面までデフォルトのまま進み、Active Directory Domain Services にチェックを入れる。
- ポップアップが表示されるので、必ず Add Features をクリックして必要な関連機能を追加する。
- その後の Features 画面などは、そのまま何も弄らずに Next で進めて Install をクリック。
3. ドメインコントローラーへの昇格
インストール完了後、サーバーを正式にドメインコントローラーとして機能させるためのセットアップを行います。
- サーバーマネージャー右上の「通知(旗マーク)」をクリックし、Promote this server to a domain controller を選択。
-
Deployment Configuration で Add a new forest(新しいフォレストを追加)を選択し、任意のルートドメイン名(例:
test.local)を入力。 - Domain Controller Options でディレクトリサービス復元モード(DSRM)のパスワードを設定。
- その他の画面はデフォルトのまま進み、最後の Prerequisites Check(前提条件チェック) が完了するまで1〜2分待つ。
- チェックがパスしたら Install をクリック。
- インストール完了後、サーバーが自動的に再起動します。
再起動後、ログインアカウントが ドメイン名\Administrator に切り替わっていれば昇格成功です(管理ツールの「Active Directory Users and Computers」からも確認可能)。
4. クライアントマシンのドメイン参加に向けて(次のステップ)
手元の実機PCからインターネット経由で直接このADドメインにログインすることは、DNSの名前解決やセキュリティ(大量のポート開放をパブリックに行う危険性)の観点から推奨されません(AWS Client VPN等の導入が必要になります)。
今回は、同じVPC内にもう1台のWindows Server(Windows-Client-PC)をTerraformで同時にプロビジョニングしました。この2台を同一ネットワーク内で通信させ、ドメイン参加の挙動を検証していく予定です。
お疲れ様でした!この構成であれば、無料枠を維持しながら安全にADの検証環境を構築できます。