さくらのクラウドでもTerraformが使えるらしく、
とりあえず、VMを1台構築してみたメモです。
操作を間違えてクラウド破産すると怖いので、
テスト用ゾーン Sandbox
で試していきます。
https://manual.sakura.ad.jp/cloud/server/sandbox.html
Terraform コンテナの作成
docker run -it --rm --name tmp alpine /bin/sh
mkdir -p ~/terraform
cd ~/terraform/
wget -O terraform.zip \
https://releases.hashicorp.com/terraform/1.1.0/terraform_1.1.0_linux_amd64.zip
unzip terraform.zip
export PATH=$PATH:~/terraform
terraform --version
rm -f terraform.zip
Terraform for さくらのクラウドのセットアップ
mkdir -p ~/.terraform.d/plugins
cd ~/.terraform.d/plugins/
wget -O terraform-provider-sakuracloud.zip \
https://github.com/sacloud/terraform-provider-sakuracloud/releases/download/v2.15.0/terraform-provider-sakuracloud_2.15.0_linux_amd64.zip
unzip -l terraform-provider-sakuracloud.zip
unzip terraform-provider-sakuracloud.zip terraform-provider-sakuracloud_*
rm -f terraform-provider-sakuracloud.zip
さくらのクラウドAPIキーの作成
https://secure.sakura.ad.jp/cloud/#!/apikey/top/
にて、APIキーを作成し、
アクセストークン, アクセストークンシークレットをコピっておく
キーペア生成
apk add openssh
ssh-keygen -t rsa -b 4096 -N '' -f ~/.ssh/id_rsa
server.tf ファイルの作成
項目 | 値 |
---|---|
provider | sakuracloud |
sakuracloud_server | server01 |
sakuracloud_disk | disk01 |
sakuracloud_archive | archive01 |
sakuracloud_ssh_key | sshkey01 |
さくらのクラウドで公開されてるOSイメージを指定したり、
ディスクは既存のディスクのIDを指定したりできる
https://manual.sakura.ad.jp/cloud/storage/archive.html
mkdir -p /usr/src/codes/sample1
cd /usr/src/codes/sample1/
cat << 'EOF' > server.tf
terraform {
required_providers {
sakuracloud = {
source = "sacloud/sakuracloud"
version = "2.15.0"
}
}
}
provider "sakuracloud" {
token = "11111111-2222-3333-4444-555555555555"
secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
zone = "tk1v"
}
resource "sakuracloud_server" "server01" {
name = "server01"
core = "2"
memory = "4"
disks = ["${sakuracloud_disk.disk01.id}"]
tags = ["@virtio-net-pci"]
description = "by Terraform"
disk_edit_parameter {
ssh_key_ids = ["${sakuracloud_ssh_key.sshkey01.id}"]
disable_pw_auth = true
}
}
resource "sakuracloud_disk" "disk01" {
name = "disk01"
plan = "hdd"
size = "40"
source_archive_id = "${data.sakuracloud_archive.archive01.id}"
description = "by Terraform"
}
data "sakuracloud_archive" "archive01" {
os_type = "centos8stream"
}
resource "sakuracloud_ssh_key" "sshkey01" {
name = "sshkey01"
public_key = "${file("~/.ssh/id_rsa.pub")}"
description = "by Terraform"
}
EOF
リソースの作成
terraform init
terraform validate
terraform plan
terraform apply
コメント