Terraform for さくらのクラウド🌸
Go HTML Perl Shell Makefile Dockerfile
Pull request Compare This branch is 18 commits behind sacloud:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
build_docs
docs
releases
sakuracloud
scripts
tools
vendor
website
.dockerignore
.gitignore
.travis.yml
AUTHORS
CHANGELOG.md
Dockerfile
LICENSE
Makefile
README.md
README_ENG.md
appveyor.yml
main.go

README.md

Terraform for さくらのクラウド

Build Status Build status Slack

Terraformからさくらのクラウドを操作するためのプラグインです。
このプラグインはさくらインターネット公認ツールとしてさくらのクラウドユーザコミュニティによって開発されています。

(English version)

クイックスタート

さくらのクラウドに以下の環境を構築します。

  • 最新安定版のCentOSを利用
  • ディスク: SSD/20GB, サーバー: 1core/1GBメモリ(デフォルト値のため定義ファイル上では省略)
  • SSH接続時のパスワード/チャレンジレスポンス認証を無効化(公開鍵認証のみに)
  • SSH用の公開鍵はさくらのクラウド上で生成(作成された秘密鍵はローカルマシンへ保存する)

Installation / インストールを参考に TerraformとTerraform for さくらのクラウドを手元のマシンにインストールしてください。

インストール後、以下のコマンドを実行することでインフラ構築が行われます。

#################################################
# さくらのクラウドAPIキーを環境変数に設定
#################################################
export SAKURACLOUD_ACCESS_TOKEN=[さくらのクラウド APIトークン]
export SAKURACLOUD_ACCESS_TOKEN_SECRET=[さくらのクラウド APIシークレット]

#################################################
# Terraform定義ファイル作成
#################################################
mkdir work; cd work
tee sakura.tf <<-'EOF'
# サーバーの管理者パスワードの定義
variable "password" {
  default = "PUT_YOUR_PASSWORD_HERE"
}

# 対象ゾーンを指定
provider sakuracloud {
  zone = "tk1a" # 東京第1ゾーン 
}

# 公開鍵(さくらのクラウド上で生成)
resource "sakuracloud_ssh_key_gen" "key" {
  name = "foobar"

  provisioner "local-exec" {
    command = "echo \"${self.private_key}\" > id_rsa; chmod 0600 id_rsa"
  }

  provisioner "local-exec" {
    when    = "destroy"
    command = "rm -f id_rsa"
  }
}

# パブリックアーカイブ(OS)のID参照用のデータリソース定義
data sakuracloud_archive "centos" {
  os_type = "centos"
}

# ディスク定義
resource "sakuracloud_disk" "disk01" {
  name              = "disk01"
  source_archive_id = "${data.sakuracloud_archive.centos.id}"
  ssh_key_ids       = ["${sakuracloud_ssh_key_gen.key.id}"]
  password          = "${var.password}"
  disable_pw_auth   = true
}

# サーバー定義
resource "sakuracloud_server" "server01" {
  name  = "server01"
  disks = ["${sakuracloud_disk.disk01.id}"]
}

# サーバへのSSH接続を表示するアウトプット定義
output "ssh_to_server" {
  value = "ssh -i id_rsa root@${sakuracloud_server.server01.ipaddress}"
}
EOF

#################################################
# インフラ構築(init & apply)
#################################################
terraform init
terraform apply

ドキュメント

サポートしているリソース/データリソース

リソース

データリソース

サポートしていないリソース

以下のリソースはさくらのクラウド側でAPIが提供されていないため未サポートです。

  • ローカルルータ
  • リソースマネージャ
  • ウェブアクセラレータ
  • オブジェクトストレージ(バケット作成)
  • ライセンス
  • 割引パスポート
  • クーポン

Building/Developing

ビルド

make build

ビルド(クロスコンパイル)

make build-x

ビルド(Docker上でのビルド)

make docker-build

テスト

make test

受入テスト(実際のさくらのクラウドAPI呼び出しを伴うテスト)

make testacc

依存ライブラリ

# 一覧表示
govendor list

# vendor配下のライブラリを一括更新
govendor fetch +v

# vendor配下のライブラリをGOPATH上から更新
govendor update +v

ドキュメント

ドキュメントはGithub Pagesを利用しています。(masterブランチのdocsディレクトリ配下)
静的ファイルの生成はmkdocsコマンドで行なっています。

ドキュメントのPRの際はbuild_docsディレクトリ配下のみ修正を行い、docsディレクトリ配下は変更しないでください。
docsディレクトリはリリース時に一括更新されます。

# ドキュメントのプレビュー用サーバー起動(http://localhost/でプレビュー可能)
make serve-docs

# ドキュメントの検証(textlint)
make lint-docs

License

This project is published under Apache 2.0 License.

Author