1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

さくらのクラウドでTerraformでサーバーを立ててみた

1
Posted at

さくらのクラウドでTerraformが使えるらしいということで試してみました。
なんと8年前?から使えてたっぽい・・・・・
気が付かなかった自分が情けない。

この記事で記載していないこと

Terraformのインストール方法
Terraformの書き方について

前提条件

Terraformが使用できる状態であること

APIキーの作成

まずさくらのクラウドにアクセスするためのAPIキーを作成します。
さくらのクラウドにログインして左側のメニューから「APIキー」をクリックして「APIキーの作成」をクリックします。

sakura00.png

「APIキー名」は任意の名称で問題ありません。
「アクセスレベル」は「作成・削除」を選択します。
内容を確認してから「作成」をクリックします。
sakura01.png

確認画面がでますので「作成」をクリックします。
sakura02.png

APIキーが作成されると以下のような画面が表示されます。
注意事項に書かれておりますが「アクセストークンシークレット」はここでしか表示されないので、コピーもしくはCSVをダウンロードしておきましょう。
コピーもしくはダウンロードしたら「閉じる」をクリックします。
sakura03.png

次に以下のような画面が表示されます。APIキー自体は既に作成されていますが、念のため「保存を」クリックします。
sakura04.png

保存の確認がでますので「保存」をクリックします。
sakura05.png

作成したAPIキーが表示されることを確認します。
sakura06.png

Terraform構成ファイルの作成

事前の準備ができましたのでTerraform構成ファイルを作成します。
今回は以下の2つのファイルを作成します。

  • provider.tf (さくらのクラウド情報)
  • server.tf (サーバーの情報)

最初にprovider.tfから作成します。
任意のフォルダに以下のように記載して保存します。

provider.tf

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

2025年の11月現在で最新版は2.31.2のようなので上記のように記載します。

保存したらterraformの初期化コマンドの「terraform init」を実行します。
Windows版のTerraformで実行しています。以下に実行した際の例を記載します。

PS C:\terraform\sakura> terraform init
Initializing the backend...
Initializing provider plugins...
- Finding sacloud/sakuracloud versions matching "2.31.2"...
- Installing sacloud/sakuracloud v2.31.2...
- Installed sacloud/sakuracloud v2.31.2 (self-signed, key ID XXXXXXXXXXXX)
Partner and community providers are signed by their developers.
If you'd like to know more about provider signing, you can read about it here:
https://developer.hashicorp.com/terraform/cli/plugins/signing
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

上記の様に表示されればOKです。
これで、さくらのクラウドを利用したTerraform実行環境が整いました。

次にserver.tfを作成します。
provider.tfと同じフォルダに格納します。

以下のようなサーバーを作成します。

  • almalinux9
  • CPU 1Core
  • メモリ 1GB
  • ハードディスク 20GB
  • 作成リージョン 石狩第3ゾーン

server.tf

provider "sakuracloud" {
  # profile = "default"
  # tokenやsecretはAPIキー作成したい際の値を記載します。
  # 以下は例です。実際に作成したものを記載してください。
  token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  zone = "is1c" 
}

# 設定するパスワードの変数を定義
# 以下のXXXX部分は12文字以上のパスワードを入力してください。OSにログインする際に必要になります。
variable "password" { default = "XXXXXXXXXXXX" }

# ディスクにインストールするイメージを指定。
# 設定できるos_typeの詳細: https://docs.usacloud.jp/terraform/d/archive/
data "sakuracloud_archive" "almalinux" {
  os_type = "almalinux9"
}

# 作成するディスクを定義
resource "sakuracloud_disk" "os_disk" {
  name              = "os_disk"
  size              = 20
  plan              = "ssd"
  connector         = "virtio"
  source_archive_id = data.sakuracloud_archive.almalinux.id
}

# 作成するサーバを定義
resource "sakuracloud_server" "web_server" {
  name        = "web_server"
  disks       = [sakuracloud_disk.os_disk.id]
  core        = 1
  memory      = 1
  description = "descriptionIshere"
  tags        = ["tag_tag", "tag_testme"]

# サーバのNICの接続先の定義。sharedだと共有セグメント(インターネット)に接続される。
  network_interface {
    upstream = "shared"
  }
  disk_edit_parameter {
    hostname = "example"
    password = var.password
    disable_pw_auth = true
  }
}

以上でTerraformの構成ファイルができました。
実行してみましょう。「terraform plan」でエラーがないことを確認して「terraform apply」します。

PS C:\terraform\sakura> terraform apply

<省略>

Plan: 2 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

sakuracloud_disk.os_disk: Creating...
sakuracloud_disk.os_disk: Still creating... [00m10s elapsed]
sakuracloud_disk.os_disk: Still creating... [00m20s elapsed]
sakuracloud_disk.os_disk: Still creating... [00m30s elapsed]
sakuracloud_disk.os_disk: Creation complete after 39s [id=113702756322]
sakuracloud_server.web_server: Creating...
sakuracloud_server.web_server: Still creating... [00m10s elapsed]
sakuracloud_server.web_server: Still creating... [00m20s elapsed]
sakuracloud_server.web_server: Still creating... [00m30s elapsed]
sakuracloud_server.web_server: Still creating... [00m40s elapsed]
sakuracloud_server.web_server: Still creating... [00m50s elapsed]
sakuracloud_server.web_server: Still creating... [01m00s elapsed]
sakuracloud_server.web_server: Still creating... [01m10s elapsed]
sakuracloud_server.web_server: Creation complete after 1m15s [id=113702756328]

Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
PS C:\terraform\sakura>

上記のように表示されれば問題ありません。
実際にサーバーが作成されたか確認してみます。

石狩第3ゾーンにサーバーができていることを確認できました。
sakura10.png

そして作ったばかりですが、削除してみましょうw
「terraform destroy」で削除してみます。

PS C:\terraform\sakura> terraform destroy

<省略>

Plan: 0 to add, 0 to change, 2 to destroy.

Do you really want to destroy all resources?
  Terraform will destroy all your managed infrastructure, as shown above.
  There is no undo. Only 'yes' will be accepted to confirm.

  Enter a value: yes

sakuracloud_server.web_server: Destroying... [id=113702756328]
sakuracloud_server.web_server: Still destroying... [id=113702756328, 00m10s elapsed]
sakuracloud_server.web_server: Still destroying... [id=113702756328, 00m20s elapsed]
sakuracloud_server.web_server: Still destroying... [id=113702756328, 00m31s elapsed]
sakuracloud_server.web_server: Destruction complete after 31s
sakuracloud_disk.os_disk: Destroying... [id=113702756322]
sakuracloud_disk.os_disk: Destruction complete after 5s

Destroy complete! Resources: 2 destroyed.

上記のように表示されれば問題ありません。
実際にサーバーが削除されたか確認してみます。

sakura11.png

Terraformで非常に簡単にサーバーの作成と削除ができました。
今回はシンプルな構成でしたが公式ページに仕様が細かく書かれているので、色々試した記事を書いていけたらと思ってます。

参考サイト

公式ドキュメント
https://registry.terraform.io/providers/sacloud/sakuracloud/latest/docs

Terraformのコード部分はほぼ以下を流用させていただきました。
https://knowledge.sakura.ad.jp/31560/

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?