読者です 読者をやめる 読者になる 読者になる

set setting reset

インフラ関連の小ネタと備忘録

terraform をバージョンアップしてみる(0.4.2 -> 0.5.3)

terraform

以前の記事で手元の macbrew でインストールした 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 は今後も勉強していきたいと思います。