Skip to content

Instantly share code, notes, and snippets.

@yamamoto-febc
Last active May 17, 2017 14:06
Show Gist options
  • Select an option

  • Save yamamoto-febc/3595fcf5fa13e0bb7768786524de8e4f to your computer and use it in GitHub Desktop.

Select an option

Save yamamoto-febc/3595fcf5fa13e0bb7768786524de8e4f to your computer and use it in GitHub Desktop.
Terraform for さくらのクラウド スタートガイド(第3回) ref: http://qiita.com/yamamoto-febc/items/fe954e2d4a92b864cfef
$ dig web.fe-bc.net.
resource "sakuracloud_dns" "dns" {
zone = "fe-bc.net"
records = {
name = "web"
type = "A"
value = "${sakuracloud_server.server.0.base_nw_ipaddress}"
}
records = {
name = "web"
type = "A"
value = "${sakuracloud_server.server.1.base_nw_ipaddress}"
}
}
# 今はこの書き方はできない!!
resource "sakuracloud_dns" "dns" {
zone = "fe-bc.net"
records = {
count = 2
name = "web"
type = "A"
value = "${element(sakuracloud_server.server.*.base_nw_ipaddress , count.index)}"
}
}
resource sakuracloud_server "server"{
name = "${format("server%02d" , count.index+1)}"
disks = ["${element(sakuracloud_disk.disk.*.id,count.index)}"]
count = 2
# 1: サーバーにはSSHで接続
connection {
user = "root"
host = "${self.base_nw_ipaddress}"
private_key = "${file("./id_rsa")}"
}
# 2: yumでapache+PHPのインストール
        provisioner "remote-exec" {
inline = [
"yum install -y httpd httpd-devel php php-mbstring",
"systemctl restart httpd.service",
"systemctl enable httpd.service",
"systemctl stop firewalld.service",
"systemctl disable firewalld.service"
]
}
# 3: Webコンテンツをアップロード
provisioner "file" {
source = "webapps/"
destination = "/var/www/html"
}
}
provider "sakuracloud" {
token = "[ACCESS_TOKEN]"
secret = "[ACCESS_TOKEN_SECRET]"
}
resource "sakuracloud_disk" "disk" {
name = "${format("disk%02d" , count.index+1)}"
source_archive_name = "CentOS 7.2 64bit"
ssh_key_ids = ["${sakuracloud_ssh_key.mykey.id}"]
disable_pw_auth = true
count = 2
}
resource "sakuracloud_server" "server" {
name = "${format("server%02d" , count.index+1)}"
disks = ["${element(sakuracloud_disk.disk.*.id,count.index)}"]
count = 2
# 1: サーバーにはSSHで接続
connection {
user = "root"
host = "${self.base_nw_ipaddress}"
private_key = "${file("./id_rsa")}"
}
# 2: yumでapache+PHPのインストール
        provisioner "remote-exec" {
inline = [
"yum install -y httpd httpd-devel php php-mbstring",
"systemctl restart httpd.service",
"systemctl enable httpd.service",
"systemctl stop firewalld.service",
"systemctl disable firewalld.service"
]
}
# 3: Webコンテンツをアップロード
provisioner "file" {
source = "webapps/"
destination = "/var/www/html"
}
}
resource "sakuracloud_ssh_key" "mykey" {
name = "mykey"
public_key = "${file("./id_rsa.pub")}"
}
resource "sakuracloud_dns" "dns" {
zone = "fe-bc.net"
records = {
name = "web"
type = "A"
value = "${sakuracloud_server.server.0.base_nw_ipaddress}"
}
records = {
name = "web"
type = "A"
value = "${sakuracloud_server.server.1.base_nw_ipaddress}"
}
}
output "global_ip" {
value = "${join("\n" , formatlist("%s : %s" , sakuracloud_server.server.*.name , sakuracloud_server.server.*.base_nw_ipaddress))}"
}
provider "sakuracloud" {
token = "[ACCESS_TOKEN]"
secret = "[ACCESS_TOKEN_SECRET]"
}
resource "sakuracloud_disk" "disk" {
name = "${format("disk%02d" , count.index+1)}"
source_archive_name = "CentOS 7.2 64bit"
ssh_key_ids = ["${sakuracloud_ssh_key.mykey.id}"]
disable_pw_auth = true
count = 2
}
resource "sakuracloud_server" "server" {
name = "${format("server%02d" , count.index+1)}"
disks = ["${element(sakuracloud_disk.disk.*.id,count.index)}"]
count = 2
}
resource "sakuracloud_ssh_key" "mykey" {
name = "mykey"
public_key = "${file("./id_rsa.pub")}"
}
output "global_ip" {
value = "${join("\n" , formatlist("%s : %s" , sakuracloud_server.server.*.name , sakuracloud_server.server.*.base_nw_ipaddress))}"
}
$ terraform destroy
Do you really want to destroy?
Terraform will delete all your managed infrastructure.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes #削除する場合はyesを入力してenter
sakuracloud_ssh_key.mykey: Refreshing state... (ID: 112800522836)
sakuracloud_disk.disk.0: Refreshing state... (ID: 112800522837)
sakuracloud_disk.disk.1: Refreshing state... (ID: 112800522838)
sakuracloud_server.server.0: Refreshing state... (ID: 112800522843)
sakuracloud_server.server.1: Refreshing state... (ID: 112800522842)
sakuracloud_server.server.0: Destroying...
sakuracloud_server.server.1: Destroying...
sakuracloud_server.server.0: Still destroying... (10s elapsed)
sakuracloud_server.server.1: Still destroying... (10s elapsed)
sakuracloud_server.server.0: Destruction complete
sakuracloud_server.server.1: Destruction complete
sakuracloud_disk.disk.0: Destroying...
sakuracloud_disk.disk.1: Destroying...
sakuracloud_disk.disk.0: Destruction complete
sakuracloud_disk.disk.1: Destruction complete
sakuracloud_ssh_key.mykey: Destroying...
sakuracloud_ssh_key.mykey: Destruction complete
Apply complete! Resources: 0 added, 0 changed, 5 destroyed.
$ mkdir webapps
$ vi webapps/index.php
#以下内容を記載
<?php
date_default_timezone_set('Asia/Tokyo');
echo "Terraform for さくらのクラウド スタートガイド用デモ". "<br /><br />";
echo "IPアドレス:" . $_SERVER[ 'SERVER_ADDR' ] . "<br />";
echo "時刻:" . date("Y/m/d H:i:s"). "<br />";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment