Skip to content

Instantly share code, notes, and snippets.

@yamamoto-febc
Last active May 24, 2016 09:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yamamoto-febc/0c4836e7ef8636924e59ea746a814b34 to your computer and use it in GitHub Desktop.
Save yamamoto-febc/0c4836e7ef8636924e59ea746a814b34 to your computer and use it in GitHub Desktop.
Terraform for さくらのクラウド ref: http://qiita.com/yamamoto-febc/items/0ce30e2dba32c60bbf66
#GSLBのFQDNをtest.example.comのCNAMEとして登録
value = "${sakuracloud_gslb.mygslb.FQDN}." #注:末尾にピリオドつける
}
これも`terraform apply`すれば環境構築できちゃいます。
自動化万歳!
## リソースの削除/お片付け
以下のコマンドでリソースの削除もできます。
`terraform destroy`
#まとめ
`Terraform for さくらのクラウド`を用いればterraformのパワーを存分に利用しつつ
さくらのクラウドが使えます。
今回は触れませんでしたが複数事業者をまたいでの構築なんかもできます。
AWS/Azure/Softlayerで作ったサーバをさくらのGSLBにぶら下げるなんてことも
できちゃいますね!
今後管理できるリソースは随時追加予定ですのでお楽しみに!
以上です。
provider "sakuracloud" {
token = "your APIKey(token)"
secret = "your APIKey(secret)"
zone = "is1a"
}
/************************
Server
************************/
resource "sakuracloud_server" "myserver" {
name = "myserver"
disks = ["${sakuracloud_disk.mydisk.id}"]
tags = ["@virtio-net-pci"]
}
/************************
Disk
************************/
resource "sakuracloud_disk" "mydisk" {
name = "mydisk"
source_archive_name = "Ubuntu Server 14.04.4 LTS 64bit"
ssh_key_ids = ["${sakuracloud_ssh_key.mykey.id}"]
disable_pw_auth = true
}
/************************
SSHKey
************************/
resource "sakuracloud_ssh_key" "mykey" {
name = "key"
public_key = "${file("./id_rsa.pub")}"
}
/************************
DNS
************************/
resource "sakuracloud_dns" "foobar" {
zone = "example.com"
records = {
#ホスト名
name = "terraform-sample"
#レコードタイプ(Aレコード)
type = "A"
#IPアドレス(他のリソースの値を参照)
value = "${sakuracloud_server.myserver.shared_nw_ipaddress}"
}
}
provider "sakuracloud" {
token = "your APIKey(token)"
secret = "your APIKey(secret)"
zone = "is1a"
}
/****************************************
Server(各ゾーンそれぞれに作成)
*****************************************/
resource "sakuracloud_server" "server1" {
name = "server1"
disks = ["${sakuracloud_disk.disk1.id}"]
tags = ["@virtio-net-pci"]
zone = "is1a" #石狩第1ゾーン
}
resource "sakuracloud_server" "server2" {
name = "server2"
disks = ["${sakuracloud_disk.disk2.id}"]
tags = ["@virtio-net-pci"]
zone = "is1b" #石狩第2ゾーン
}
resource "sakuracloud_server" "server3" {
name = "server3"
disks = ["${sakuracloud_disk.disk3.id}"]
tags = ["@virtio-net-pci"]
zone = "tk1a" #東京ゾーン
}
/****************************************
Disk(各ゾーンそれぞれに作成、SSH公開鍵は共通)
*****************************************/
resource "sakuracloud_disk" "disk1" {
name = "disk1"
source_archive_name = "Ubuntu Server 14.04.4 LTS 64bit"
ssh_key_ids = ["${sakuracloud_ssh_key.mykey.id}"]
disable_pw_auth = true
zone = "is1a" #石狩第1ゾーン
}
resource "sakuracloud_disk" "disk2" {
name = "disk2"
source_archive_name = "Ubuntu Server 14.04.4 LTS 64bit"
ssh_key_ids = ["${sakuracloud_ssh_key.mykey.id}"]
disable_pw_auth = true
zone = "is1b" #石狩第2ゾーン
}
resource "sakuracloud_disk" "disk3" {
name = "disk3"
source_archive_name = "Ubuntu Server 14.04.4 LTS 64bit"
ssh_key_ids = ["${sakuracloud_ssh_key.mykey.id}"]
disable_pw_auth = true
zone = "tk1a" #東京ゾーン
}
/****************************************
SSH公開鍵
*****************************************/
resource "sakuracloud_ssh_key" "mykey" {
name = "key"
public_key = "${file("./id_rsa.pub")}"
}
/****************************************
さくらのDNS
*****************************************/
resource "sakuracloud_dns" "mydns" {
zone = "example.com"
records = {
name = "test"
type = "CNAME"
#GSLBのFQDNをtest.example.comのCNAMEとして登録
value = "${sakuracloud_gslb.mygslb.FQDN}." #注:末尾にピリオドつける
}
}
/****************************************
GSLB(各ゾーン合計3台を配下に登録)
*****************************************/
resource "sakuracloud_gslb" "mygslb" {
name = "gslb_from_terraform"
health_check = {
protocol = "http"
delay_loop = 10
host_header = "test.example.com"
path = "/"
status = "200"
}
servers = {
ipaddress = "${sakuracloud_server.server1.shared_nw_ipaddress}"
}
servers = {
ipaddress = "${sakuracloud_server.server2.shared_nw_ipaddress}"
}
servers = {
ipaddress = "${sakuracloud_server.server3.shared_nw_ipaddress}"
}
}
/****************************************
シンプル監視
*****************************************/
resource "sakuracloud_simple_monitor" "mymonitor" {
target = "test.example.com"
health_check = {
protocol = "http"
delay_loop = 60
path = "/"
status = "200"
}
notify_email_enabled = true
notify_slack_enabled = true
notify_slack_webhook = "https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX"
}
/************************
Server
************************/
resource "sakuracloud_server" "myserver" {
name = "myserver"
disks = ["${sakuracloud_disk.mydisk.id}"]
tags = ["@virtio-net-pci"]
core = 4 # CPUコア数をデフォルトの1から4に変更
memory = 8 # メモリをデフォルトの1GBから8GBへ変更
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment