llamakko / terraform-provider-sakuracloud

Terraform for さくらのクラウド:cherry_blossom:

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

Terraform for さくらのクラウド:cherry_blossom:

License:Apache License 2.0


Languages

Language:Go 95.1%Language:HTML 1.7%Language:Perl 1.6%Language:Shell 1.1%Language:Makefile 0.5%Language:Dockerfile 0.1%Language:CSS 0.0%