このリポジトリはGoogleCloudPlatform/terraformerのフォークです。
オリジナルのTerraformerにさくらのクラウドプロバイダー(sacloud/terraform-provider-sakuracloud)に対応する機能を追加したものです。
基本的な利用方法などについてはオリジナルのREADME.mdを参照してください。
Dockerを利用する方法と実行ファイルをローカルにダウンロードする方法があります。
Dockerを利用することでTerraform/Terraformer/さくらのクラウドプロバイダーが一式入った環境を手軽に利用できます。
$ docker run -it --rm -v $PWD:/work sacloud/terraformer
Dockerイメージを自分でビルドする場合は以下のようにします。
git clone <terraformer repo>docker build -t terraformer .docker run -it --rm -v $PWD:/work terraformerterraformコマンドをパスの通った場所に配置します。
From source:
git clone <terraformer repo>GO111MODULE=on go mod vendorgo build -v for all providers OR build with one provider go run build/main.go {google,aws,azure,kubernetes and etc}terraform init against an init.tf file to install the plugins required for your platform. For example, if you need plugins for the google provider, init.tf should contain:provider "google" {}
Or alternatively
~/.terraform.d/plugins/{darwin,linux}_amd64/, as appropriate.From Releases:
curl -LO https://github.com/sacloud/terraformer/releases/download/$(curl -s https://api.github.com/repos/sacloud/terraformer/releases/latest | grep tag_name | cut -d '"' -f 4)/terraformer-linux-amd64.zip
unzip terraformer-linux-amd64.zip
chmod +x terraformer
sudo mv terraformer-linux-amd64 /usr/local/bin/terraformer
curl -LO https://github.com/sacloud/terraformer/releases/download/$(curl -s https://api.github.com/repos/sacloud/terraformer/releases/latest | grep tag_name | cut -d '"' -f 4)/terraformer-darwin-amd64.zip
unzip terraformer-darwin-amd64.zip
chmod +x terraformer
sudo mv terraformer-darwin-amd64 /usr/local/bin/terraformer
リリースページから適切なファイルをダウンロードしてください。
以下のフォルダ内にプロバイダーの実行ファイルをコピーしておいてください。
~/.terraform.d/plugins/{darwin,linux}_amd64/Note: さくらのクラウドプロバイダーはv1.16.4以降のバージョンが推奨です。
コマンドラインオプション、または環境変数でAPIトークン/シークレットを指定する必要があります。
$ terraformer import sakuracloud --token=APIトークン --secret=APIシークレット --resource=server,disk,icon
$ export SAKURACLOUD_ACCESS_TOKEN=APIトークン
$ export SAKURACLOUD_ACCESS_TOKEN_SECRET=APIシークレット
$ terraformer import sakuracloud --resource=server,disk,icon
利用例:
# サーバのみ、IDを指定
./terraformer import sakuracloud --resources=server --filter=sakuracloud_server=id1:id2:id4
# 対応している全リソースを指定
./terraformer import sakuracloud --resources=archive,autoBackup,bridge,cdrom,database,disk,dns,gslb,icon,internet,loadBalancer,mobileGateway,nfs,note,packetFilter,privateHost,proxyLB,server,sim,simpleMonitor,sshKey,switch,vpcRouter
以下のリソースをサポートしています。
(この一覧は terraformer import sakuracloud listコマンドでも確認できます)
archive : sakuracloud_archiveautoBackup : sakuracloud_auto_backupbridge : sakuracloud_bridgecontainerRegistry: sakuracloud_container_registrycdrom : sakuracloud_cdromdatabase : sakuracloud_databasedisk : sakuracloud_diskdns : sakuracloud_dnsgslb : sakuracloud_gslbicon : sakuracloud_iconinternet : sakuracloud_internetloadBalancer : sakuracloud_load_balancerlocalRouter : sakuracloud_local_routermobileGateway : sakuracloud_mobile_gatewaynfs : sakuracloud_nfsnote : sakuracloud_notepacketFilter : sakuracloud_packet_filterprivateHost : sakuracloud_private_hostproxyLB : sakuracloud_proxylbserver : sakuracloud_serversim : sakuracloud_simsimpleMonitor : sakuracloud_simple_monitorsshKey : sakuracloud_ssh_keyswitch : sakuracloud_switchvpcRouter : sakuracloud_vpc_routerTerraform v0.12+が必要です。
Terraform v0.11を利用したい場合はv0.7.9をご利用ください。
サーバリソース(sakuracloud_server)のディスクの修正関連パラメータなどの入力専用項目はtfファイル/tfstateファイルに出力されませんのでご注意ください。
出力されない項目は以下のようなものがあります。
これらは必要に応じてtfファイルの書き換えを行ってください。
sakuracloud_archive)archive_file: アップロードするアーカイブファイルhash: アーカイブファイルのハッシュ値sakuracloud_cdrom)iso_image_file: ISOイメージファイルcontent: ISOイメージファイルのコンテンツcontent_file_name: ISOイメージファイルのファイルパスhash: ハッシュ値sakuracloud_icon)source: アイコンのファイルパスbase64content: アイコンファイルのコンテンツsakuracloud_server)disk_edit_parameter: ディスクの修正関連パラメータパブリックリソース(Scope=Shared)はtfファイルにIDのみ出力され、${data.terraform_remote_state.xxx}という参照は出力されません。
対象となるパブリックリソース:
これらは必要に応じて以下のようにtfファイルの書き換えを行ってください。
# 書き換え前: パブリックアーカイブの場合アーカイブのIDがtfファイルに出力される
resource "sakuracloud_disk" "disk-001-example" {
name = "example"
source_archive_id = "123456789012" // パブリックアーカイブの場合、${}での参照とならない
}
# 書き換え後: IDをデータソース経由などでの参照に書き換える
data "sakuracloud_archive" "ubuntu" {
os_type = "ubuntu"
}
resource "sakuracloud_disk" "disk-001-example" {
name = "example"
source_archive_id = "${data.sakuracloud_archive.ubuntu.id}" // データソースを参照するように書き換え
}
terraformer import実行時の対象リソースの設定で参照元/参照先両方のリソースを指定する必要があります。
例えばサーバリソース(sakuracloud_server)のicon_idを参照にしたい場合は以下のようにサーバとアイコンの両方をオプションで指定してください。
terraformer import sakuracloud -r server,icon
オリジナルのTerraformerのリリースタグごとに対応したsacloud/terraformerをリリースします。
sacloud/terraformでのリリースタグは以下のようなルールで付与します。
sacloud/<オリジナルのタグ>
もし同一のオリジナルタグに対して複数のバージョンのsacloud/terraformerをリリースする場合は以下のようなルールでタグを付与します。
(連番は0開始)
sacloud/<オリジナルのタグ>/patch-<リリースごとの連番>
例えば、オリジナルのリリースタグが 0.7.9の場合、対応するリリースタグは sacloud/0.7.9、以降は sacloud/0.7.9/patch-0となります。
sacloud/terraformer Copyright 2019 Kazumichi Yamamoto.
This project is published under Apache 2.0 License.
Content type
Image
Digest
Size
76 MB
Last updated
over 6 years ago
docker pull sacloud/terraformer