Sionの技術ブログ

SREとして日々の学習を書いて行きます。twitterは@sion_cojp

terraform-provider-awsの開発からPRを出すまでの手順

github.com

些細ではありますが、出したPRがmergeされました。

開発方法よくわからないなぁ。と思う人が多いと思うので、私が実際に行ったことを書いて見ます。

開発方法

# go get。今回は本家で修正して試して、その差分をあとでfork先に適用する感じ。
# この二度手間めんどくさいときは、$GOPATH/src/github.com/terraform-providersにforkしたやつをgit cloneしたほうが良い
$ go get -u github.com/terraform-providers/terraform-provider-aws

# よしなに修正

# buildする
$ cd $GOPATH/src/github.com/terraform-providers/terraform-provider-aws
$ make build
# このときgofmtしろってエラーが出たらgoのバージョンが低い可能性があります
# 最新にしてまたやってみましょう

# buildしたものを利用する
# 既存のproviderを削除して自前のbuildをcopy。copyしたらinitを打つ
$ cd terraform-repository/xxxxx.tfファイルがあるところ
$ rm -f .terraform/plugins/darwin_amd64/*
$ cp $GOPATH/terraform-provider-aws .terraform/plugins/darwin_amd64
$ terraform init

# planとapply。global.tfvarsを設定してるバージョンです
$ terraform plan
$ terraform apply -var-file=global.tfvars

# debugログの出力。めっちゃ便利
# TF_LOGでloglevelが設定できます
# TF_LOG_PATHでファイルに出力できます(追加保存)
$ TF_LOG=1 TF_LOG_PATH='/tmp/terraform.log' terraform apply -var-file=global.tfvars

test

PR出す際に貼らないといけません。 結構な権限を持ったaccess_key, secret_keyが必要です。

# 移動してtest。TESTARGSに設定するのはmethod名。*で正規表現マッチが使えます
$ cd $GOPATH/src/github.com/terraform-providers/terraform-provider-aws
$ AWS_ACCESS_KEY_ID=xxxx AWS_SECRET_ACCESS_KEY=xxxx make testacc TEST=./aws TESTARGS='-run=TestFetchRootDevice*'
# このときgofmtしろってエラーが出たらgoのバージョンが低い可能性があります
# 最新にしてまたやってみましょう