terraform をバージョンアップしてみる(0.4.2 -> 0.5.3)
以前の記事で手元の mac に brew でインストールした terraform ですが、
brew upgrade
でなかなか降ってこないので手動でバージョンアップしてみます。
手動バージョンアップと言ってもシンボリックリンクの書き換えしただけなので、メモとして残します。
さて、私の環境では terraform は以下の様にインストールされています。
$ ls -l /usr/local/bin/terraform* lrwxr-xr-x 1 hoge hage 39 Apr 27 14:21 /usr/local/bin/terraform -> ../Cellar/terraform/0.4.2/bin/terraform lrwxr-xr-x 1 hoge hage 54 Apr 27 14:21 /usr/local/bin/terraform-provider-atlas -> ../Cellar/terraform/0.4.2/bin/terraform-provider-atlas lrwxr-xr-x 1 hoge hage 52 Apr 27 14:21 /usr/local/bin/terraform-provider-aws -> ../Cellar/terraform/0.4.2/bin/terraform-provider-aws lrwxr-xr-x 1 hoge hage 59 Apr 27 14:21 /usr/local/bin/terraform-provider-cloudflare -> ../Cellar/terraform/0.4.2/bin/terraform-provider-cloudflare lrwxr-xr-x 1 hoge hage 59 Apr 27 14:21 /usr/local/bin/terraform-provider-cloudstack -> ../Cellar/terraform/0.4.2/bin/terraform-provider-cloudstack lrwxr-xr-x 1 hoge hage 55 Apr 27 14:21 /usr/local/bin/terraform-provider-consul -> ../Cellar/terraform/0.4.2/bin/terraform-provider-consul lrwxr-xr-x 1 hoge hage 61 Apr 27 14:21 /usr/local/bin/terraform-provider-digitalocean -> ../Cellar/terraform/0.4.2/bin/terraform-provider-digitalocean lrwxr-xr-x 1 hoge hage 52 Apr 27 14:21 /usr/local/bin/terraform-provider-dme -> ../Cellar/terraform/0.4.2/bin/terraform-provider-dme lrwxr-xr-x 1 hoge hage 57 Apr 27 14:21 /usr/local/bin/terraform-provider-dnsimple -> ../Cellar/terraform/0.4.2/bin/terraform-provider-dnsimple lrwxr-xr-x 1 hoge hage 55 Apr 27 14:21 /usr/local/bin/terraform-provider-docker -> ../Cellar/terraform/0.4.2/bin/terraform-provider-docker lrwxr-xr-x 1 hoge hage 55 Jun 29 16:30 /usr/local/bin/terraform-provider-google -> ../Cellar/terraform/0.5.3/bin/terraform-provider-google lrwxr-xr-x 1 hoge hage 55 Apr 27 14:21 /usr/local/bin/terraform-provider-heroku -> ../Cellar/terraform/0.4.2/bin/terraform-provider-heroku lrwxr-xr-x 1 hoge hage 56 Apr 27 14:21 /usr/local/bin/terraform-provider-mailgun -> ../Cellar/terraform/0.4.2/bin/terraform-provider-mailgun lrwxr-xr-x 1 hoge hage 53 Apr 27 14:21 /usr/local/bin/terraform-provider-null -> ../Cellar/terraform/0.4.2/bin/terraform-provider-null lrwxr-xr-x 1 hoge hage 58 Apr 27 14:21 /usr/local/bin/terraform-provider-openstack -> ../Cellar/terraform/0.4.2/bin/terraform-provider-openstack lrwxr-xr-x 1 hoge hage 58 Apr 27 14:21 /usr/local/bin/terraform-provider-terraform -> ../Cellar/terraform/0.4.2/bin/terraform-provider-terraform lrwxr-xr-x 1 hoge hage 56 Apr 27 14:21 /usr/local/bin/terraform-provisioner-file -> ../Cellar/terraform/0.4.2/bin/terraform-provisioner-file lrwxr-xr-x 1 hoge hage 62 Apr 27 14:21 /usr/local/bin/terraform-provisioner-local-exec -> ../Cellar/terraform/0.4.2/bin/terraform-provisioner-local-exec lrwxr-xr-x 1 hoge hage 63 Apr 27 14:21 /usr/local/bin/terraform-provisioner-remote-exec -> ../Cellar/terraform/0.4.2/bin/terraform-provisioner-remote-exec
あまり詳しくないのですが、/usr/local/bin
配下はシンボリックリンクが多いのですね。
最新版の terraform を公式からダウンロードします。今回は 0.5.3 です。
https://dl.bintray.com/mitchellh/terraform/terraform_0.5.3_darwin_amd64.zip
zip を解凍するとバイナリが詰まっています。
~/Downloads$ ll terraform* -rwxr-xr-x@ 1 hoge hage 15202736 Jun 2 03:36 terraform -rwxr-xr-x@ 1 hoge hage 10354576 Jun 2 03:36 terraform-provider-atlas -rwxr-xr-x@ 1 hoge hage 19750112 Jun 2 03:36 terraform-provider-aws -rwxr-xr-x@ 1 hoge hage 10258784 Jun 2 03:36 terraform-provider-cloudflare -rwxr-xr-x@ 1 hoge hage 20105264 Jun 2 03:36 terraform-provider-cloudstack -rwxr-xr-x@ 1 hoge hage 10543600 Jun 2 03:36 terraform-provider-consul -rwxr-xr-x@ 1 hoge hage 10634496 Jun 2 03:36 terraform-provider-digitalocean -rwxr-xr-x@ 1 hoge hage 10275520 Jun 2 03:36 terraform-provider-dme -rwxr-xr-x@ 1 hoge hage 10267264 Jun 2 03:36 terraform-provider-dnsimple -rwxr-xr-x@ 1 hoge hage 11398336 Jun 2 03:36 terraform-provider-docker -rwxr-xr-x@ 1 hoge hage 13571952 Jun 2 03:36 terraform-provider-google -rwxr-xr-x@ 1 hoge hage 10825968 Jun 2 03:36 terraform-provider-heroku -rwxr-xr-x@ 1 hoge hage 10237248 Jun 2 03:36 terraform-provider-mailgun -rwxr-xr-x@ 1 hoge hage 10181808 Jun 2 03:36 terraform-provider-null -rwxr-xr-x@ 1 hoge hage 12746256 Jun 2 03:37 terraform-provider-openstack -rwxr-xr-x@ 1 hoge hage 10211632 Jun 2 03:37 terraform-provider-template -rwxr-xr-x@ 1 hoge hage 12143264 Jun 2 03:37 terraform-provider-terraform -rwxr-xr-x@ 1 hoge hage 11443376 Jun 2 03:37 terraform-provisioner-chef -rwxr-xr-x@ 1 hoge hage 11425600 Jun 2 03:37 terraform-provisioner-file -rwxr-xr-x@ 1 hoge hage 9806128 Jun 2 03:37 terraform-provisioner-local-exec -rwxr-xr-x@ 1 hoge hage 11408416 Jun 2 03:37 terraform-provisioner-remote-exec
これらを移動します。
~/Downloads$ mkdir -p /usr/local/Celler/terraform/0.5.3/bin ~/Downloads$ cp terraform* /usr/local/Celler/terraform/0.5.3/bin
シンボリックリンクを張り替えます。
#!/bin/bash ls -l /usr/local/bin/terraform* | while read i do bin=`echo $i | awk {'print $9'}` new_link=`echo $i | awk {'print $11'} | sed 's/0.4.2/0.5.3/'` ln -sf ${new_link} ${bin} done
$ ls -l /usr/local/bin/terraform* lrwxr-xr-x 1 hoge hage 39 Jun 29 16:45 terraform -> ../Cellar/terraform/0.5.3/bin/terraform lrwxr-xr-x 1 hoge hage 54 Jun 29 16:45 terraform-provider-atlas -> ../Cellar/terraform/0.5.3/bin/terraform-provider-atlas lrwxr-xr-x 1 hoge hage 52 Jun 29 16:45 terraform-provider-aws -> ../Cellar/terraform/0.5.3/bin/terraform-provider-aws lrwxr-xr-x 1 hoge hage 59 Jun 29 16:45 terraform-provider-cloudflare -> ../Cellar/terraform/0.5.3/bin/terraform-provider-cloudflare lrwxr-xr-x 1 hoge hage 59 Jun 29 16:45 terraform-provider-cloudstack -> ../Cellar/terraform/0.5.3/bin/terraform-provider-cloudstack lrwxr-xr-x 1 hoge hage 55 Jun 29 16:45 terraform-provider-consul -> ../Cellar/terraform/0.5.3/bin/terraform-provider-consul lrwxr-xr-x 1 hoge hage 61 Jun 29 16:45 terraform-provider-digitalocean -> ../Cellar/terraform/0.5.3/bin/terraform-provider-digitalocean lrwxr-xr-x 1 hoge hage 52 Jun 29 16:45 terraform-provider-dme -> ../Cellar/terraform/0.5.3/bin/terraform-provider-dme lrwxr-xr-x 1 hoge hage 57 Jun 29 16:45 terraform-provider-dnsimple -> ../Cellar/terraform/0.5.3/bin/terraform-provider-dnsimple lrwxr-xr-x 1 hoge hage 55 Jun 29 16:45 terraform-provider-docker -> ../Cellar/terraform/0.5.3/bin/terraform-provider-docker lrwxr-xr-x 1 hoge hage 55 Jun 29 16:45 terraform-provider-google -> ../Cellar/terraform/0.5.3/bin/terraform-provider-google lrwxr-xr-x 1 hoge hage 55 Jun 29 16:45 terraform-provider-heroku -> ../Cellar/terraform/0.5.3/bin/terraform-provider-heroku lrwxr-xr-x 1 hoge hage 56 Jun 29 16:45 terraform-provider-mailgun -> ../Cellar/terraform/0.5.3/bin/terraform-provider-mailgun lrwxr-xr-x 1 hoge hage 53 Jun 29 16:45 terraform-provider-null -> ../Cellar/terraform/0.5.3/bin/terraform-provider-null lrwxr-xr-x 1 hoge hage 58 Jun 29 16:45 terraform-provider-openstack -> ../Cellar/terraform/0.5.3/bin/terraform-provider-openstack lrwxr-xr-x 1 hoge hage 58 Jun 29 16:45 terraform-provider-terraform -> ../Cellar/terraform/0.5.3/bin/terraform-provider-terraform lrwxr-xr-x 1 hoge hage 56 Jun 29 16:45 terraform-provisioner-file -> ../Cellar/terraform/0.5.3/bin/terraform-provisioner-file lrwxr-xr-x 1 hoge hage 62 Jun 29 16:45 terraform-provisioner-local-exec -> ../Cellar/terraform/0.5.3/bin/terraform-provisioner-local-exec lrwxr-xr-x 1 hoge hage 63 Jun 29 16:45 terraform-provisioner-remote-exec -> ../Cellar/terraform/0.5.3/bin/terraform-provisioner-remote-exec
以上でバージョンアップ完了です。
その後 plan
apply
destroy
は問題なく動作しています。
というか、そもそも実行環境を vagrant とか docker とかを使えばいいのではと思いますが、手が回らず。。
最後に、今回バージョンアップしたくなったのは route53 の private hosted zone と、
elb の connection draining がサポートされた(嬉し涙)からなのですが、CHANGELOG を見ると他にもかなりたくさんの機能追加がされていて開発の早さを感じます。
terraform は今後も勉強していきたいと思います。