Terraformはどこで実行すれば良いのか教えてほしい
Terraformとは、多くのクラウドやその他のサービスを対象にInfrastructure as Codeを簡単に実現できる、便利なツールです。
その使い方は様々なところで紹介されているので良いとして、実際に実務として利用しようとした場合にTerraformをどこで実行するべきなのかということに悩みました。
ベストプラクティスがあるのか気になったのですがよくわからなかったので現状をまとめただけです。
どこで実行するべきか論は、Terraformに限らずAnsible等でも起こりえますが、今回はTerraformの話です。
また、Terraformを使って構築するのはAWS上の環境を想定しています。
Terraformを実行する環境の候補としては色々ありますが、今回は以下について考えました。
- ローカルPC
- Docker on ローカルPC
- EC2インスタンス
ローカルPCであれば、macなら brew install
等で環境を構築し、GitHub等で管理されている定義ファイルを使って、開発・実行することになります。
brew
さえ使えれば良いのでイチ開発者のTerraform自体の環境構築は簡単です。
問題としては、ローカルに構築することになるのでどうしても環境を汚染してしまうことと、開発者間でTerraformのバージョンを揃えないといけないということがあります。*1
Docker on ローカルPCであれば、Dockerの環境とDockerfileを最初に用意できれば、以降は開発者間の差異を気にせずTerraformを実行できます。
普段からDockerを活用していて環境も用意されているなら、Terraform環境構築用のDockerfileがあれば良いので、特に手間もなく簡単です。
問題としては、メインであるTerraformの定義ファイルだけでなくDockerfile自体のメンテも必要になってしまうことと、当たり前ですがDockerに依存してしまうことがあります。
EC2インスタンスであれば、AWSのEC2上に共有のTerraform環境を用意して、開発者はそこにログインして実行します。
共有の環境なので開発者間の環境差異を気にする必要がなく、EC2へログインする方法され共有できれば個人で環境を構築する必要は基本的にありません。
問題としては、Terraformを使ってAWS上にInfrastructure as Codeで環境を構築しようとしているのに、Terraformを実行するための環境を手動で用意する必要があるということがあります。
それぞれのメリデメを考慮した上でより良い方法を選択するのが良いとは思うのですが、ベストプラクティスなりがあれば知りたいところです。
Terraformに関してはそこまで自動化する必要ないのではと思っていたのですが、このような方法もあるようなので紹介します。
medium.com
「Terraformをどこで実行するべきか」に関する情報もっとほしい...