terraformを半年ほど使った感想

前回はconsulの感想について書いたけど、今回はterraformについて書いておく。 terraformはインフラ環境を構築するためのツールで、terraformを使うことでインフラ環境の構築を、設定ファイルとしてバージョン管理できるようになる。 自分はAWSで使ってたが、GCPやHerokuなどさまざまなインフラ環境の構築に使える。 AWSならCloudFormationを使うと、似たようなことができるのかな?使ったことないのでよく分からないが、後輩はCloudFormationの方がいいかもと言っていた。 terraformを使ってよかったところ terraformを使うと、たとえばAWSでSecurityGroupを作って、RDSを立ち上げて、EC2を立ち上げるときに、前に設定したSecurityGroupを割り当てて、EC2内の環境変数にRDSのアドレスを設定して・・・みたいなことが比較的カンタンにできる。 設定方法は、日本語の記事だと以下が分かりやすいかな。 AWSでTerraformに入門 | Developers.IO あとは、terraform applyというコマンドで実際に構築するまえに、terraform planというコマンドで何が変わるか確認できるので、安心して実行できる。 依存関係も見てくれるので、EC2の設定の中でRDSのアドレスを参照していれば、その依存関係を考慮して実行してくれる。 terraformの設定ファイルをgitで管理していたので、インフラの構成の変化がバージョン管理できる点が一番よかったと思う。設定を変えたらプルリク出してレビューしたり、terraform planを見てレビューしたり、といったことができた点がよかった。 terraformを使うときに気をつけるところ terraformも万能ではないので、いろいろ気をつけるべきことがある。自分がハマったところを書いておく。 terraformでconfigurationをやらない方がいい terraformでインフラを作るまでは良いのだが、その後EC2サーバ内の、たとえばnginxのconfを設定したり、いろいろサービスを動かすための設定をサーバ内ですることになると思う。terraformにはProvisionerという仕組みがあり、remote-execを使えばいろいろ設定することができるので、…