🌸

さくらのクラウドを使いこなしてWindows Serverの構築を自動化したい

2023/12/09に公開

この記事は 検索エンジンプロダクトを一緒に開発してた同窓会 Advent Calendar 2023 の8日目の記事です。
昨日は mado さんの Datadogで複合条件を用いたモニターを作成する でした。

はじめに

デジタル庁が2023/11/28に、日本政府の共通クラウド基盤「ガバメントクラウド」として、国産パプリッククラウドである「さくらのクラウド」を新たに選定したと発表がありました。

今まではGoogle Cloud, AWS, Microsoft Azure, Oracle Cloudのアメリカのメガクラウドのみだったので、日本のIT業界において大きな出来事といえるでしょう。
ここではさくらのクラウドを実際に用いてWindows Serverの構築を自動化する方法と、構築の際に学んだ情報などをまとめてみます。

さくらのクラウドとは

さくらのクラウド は大阪に本社を置くさくらインターネット株式会社が運営するIaaS型パブリッククラウドです。
さくらインターネットというとさくらのVPSが有名ですが、 公式ブログ によると以下のような違いがあります。

さくらのVPS さくらのクラウド
利用方法 ・物理サーバーのCPU/メモリ/ディスクを複数のユーザーで共有
・プランによって利用できるリソース量は決まっている
・サーバーの構築~運用を行うには、OS、アプリケーションに対する知識やスキルが必要
・物理サーバーのCPU/メモリ/ディスクを複数のユーザーで共有
・仮想サーバー作成時に必要なリソースをユーザーが任意で選択できる
・ユーザーの管理責任範囲は仮想サーバーのOS領域内の全データ
・構築、運用規模に比例して、求められる知識やスキルも必要
料金形態 ・最安は585円/月
・初期費用はなし
・年間一括払いの場合、利用料金が1ヶ月分安くなる
・リソースの利用時間で課金される時間課金制
・最安は1980円/月
・利用可能なクーポンが多い
管理責任範囲 仮想サーバーのOS領域内の全データ 仮想サーバーのOS領域内の全データ
構築したネットワーク環境
作成した仮想サーバーの構成
用途 ・個人学習、研究用途。テスト検証など
・個人ブログ~EC系Webサイト
・個人~小中規模配信用メールサーバー
・個人用VPNサーバー
・小規模~中規模向け用途がメイン(プランによっては大規模向けに調整可能)
・オンラインゲーム用サーバー
・企業動画配信系サイト
・医療/公共基幹系サーバー
・耐障害性、柔軟なスケーリングを求める中~大規模向け用途がメイン

コストメリットなどの利点からサブ的なクラウドとして利用される機会は多そうです。
また、APIが充実しているため各種ツールと組み合わせて柔軟なリソース管理ができます。

Windows Serverの構築自動化

そもそもGUIサーバーであるWindows Serverの構築を自動化する方針はあっているのかという疑問がありましたが、 公式ドキュメント においてPowerShellでの構築自動化が推奨されているようでした。

ここではAnsibleを用いてサーバーを作成し、Usacloudを用いてサーバーからアーカイブを作成し、アーカイブからサーバーをデプロイするのにTerraformを用いてみます。

Ansible

Using Ansible on Windows and BSD を参考に公式アーカイブからサーバーを作成します。

Usacloud

Usacloud は公式のcliツールです。
Usacloud導入ガイド を参考にインストールします。

usacloudコマンドの基本構文は以下の通りです。

usacloud <操作対象のリソース> <コマンド> [コマンドオプション] [引数]

usacloudで 立ち上げたサーバーのディスクからアーカイブを作成する には以下のようにコマンドを実行します。

usacloud archive create --name ${アーカイブ名} --source-disk-id ${元となるサーバーのディスクID}

25分程度かかりマイアーカイブ作成されました。

Terraform for さくらのクラウド

Terraform for さくらのクラウド は公式のTerraform用プラグインです。
Usacloudでサーバーをデプロイすることもできますが、Terraformを用いることサーバーの状態をコード化することができ管理が容易になります。
プロバイダ設定 を参考にセットアップします。

作成したマイアーカイブからサーバーをデプロイしてみます。

terraform {
 required_providers {
   sakuracloud = {
     source  = "sacloud/sakuracloud"
   }
 }
}

provider "sakuracloud" {
 profile = "default"
}

resource "sakuracloud_disk" "sample" {
 name              = "sample"
 plan              = "ssd"
 connector         = "virtio"
 size              = 100
 source_archive_id = ${var.source_archive_id}
}

resource "sakuracloud_server" "sample" {
 name  = "sample"
 disks = [ sakuracloud_disk.sample.id ]
 count = 2
}

構築時の注意点

さくらのクラウドアカウント間でマイアーカイブが使いませない

環境ごとにアカウント(Google Cloudでいうプロジェクトのような分割単位)を分けようと考えたのですが、 Windows Serverのマイアーカイブは アーカイブ共有機能 に対応してないようでした。

Windows Serverをデプロイする際に環境変数を設定できない

共通のアーカイブを1つ作っ、デプロイの際に環境ごとに変数を設定したかったのですが、サポートに問い合わせてみたものの機能がないとの返答でした。
デプロイ後に追加のプロビジョニングなど一手間が必要になりそうです。

リソースの利用時間以外にも料金が発生する

サーバーリソースなどは確かに利用時間課金のようでしたが、Windowsに付随するライセンス料は立ち上げた瞬間に1ヶ月分課金されます。
構築時に何度も破棄して立ち上げなどしていると都度料金が加算されるため、計画的な運用が必要そうです。

その他のツール

さくらのクラウドAPI

さくらのクラウドAPI はさくらのクラウドをコントロールパネルとは別に操作するためのAPIです。
APIをラップしたUsacloudの方が扱いやすいため、プログラムから直接リソース操作をしたい場合に有効そうです。

Packer forさくらのクラウド

Packer for さくらのクラウド はマシンイメージを自動化してくれる公式のPackerプラグインです。
Windows Serverの構築自動化に使えそうと思って調べてみたのですが、 どうも 2022/05にWindows系OSのサポートを廃止 したようです。
廃止した理由としては「sacloudプロダクトを用いた自動化との相性が微妙」「Windows系OSの派生が多く、ostypeの管理が煩雑」とのことです。

さくらのクラウド リソースマネージャー

リソースマネージャー はさくらのクラウド上の様々なリソースをテンプレートで管理し、一括して作成・更新・削除する機能です。
さくらのクラウドコンソール上でリソースをコード管理できますが、内部的にはTerraformを用いているようなので、TerraformのコードをGitHub管理しているような場合はあえてこちらを使うメリットは薄そうに感じました。

最後に

さくらのクラウドでWindows Serverのマイアーカイブを作成し、マイアーカイブから各種環境にサーバーを立ち上げることができました。
IaaS特有の縛りだったりWindow Server特有の縛りだったりがあり、コンテナ化されたアプリケーションのデプロイを自動化するのに比べると手間や時間はどうしてもかかります。
ただ、国産クラウドとしてさくらのクラウドは応援したいので、今後も動向はウォッチして機会があれば積極的に活用していきたいなと考えています。

Discussion