Terraformを社内の人に使ってもらえるように準備している話
社内でInfrastructure as Codeの推進活動をしており、TerraformなどのOSSを社内に浸透させたいと思っている。
それにあたって課題になっているのがProxyの問題だ。
Terraformを社内の開発環境にインストールして利用することを考えていたが、途中で問題にぶち当たった。
ProxyやFWである。
Terraformは便利なツールだがそれ単体ではクラウドのリソースを構築することはできない。providerというpluginを入れる必要があるのだ。
よくある話だが、弊社ではProxyによってアクセスできるサイトは制限されているし、FWでSSHはできないようになっている。
特に今回問題になったのが、SSH!
Terraformはリソースを作成するときにどうやら自動的にproviderをダウンロードしてくれるらしい。が、社内NWの都合によって通信が遮断される。
ダウンロードが失敗するのだ。
これはまずい。非常にまずい。
社内ツールを提供するにあたって、気にしなければいけないことは使いやすさである。使いにくいツールは即座に使われなくなり、意味をなさなくなる。
最初はどうにか突破をしようとしたが、解決方法がなく断念。。。
代わりに採用したのが、CI環境での実行である。
CI環境だと使い捨てだから、環境情報を共有できないのでは?とおもったが、実は問題ない。TerraformにはBackendという機能がある。
Terraformはtfstateというファイルで、作成しようとしているリソースの状況を管理している。
複数人でTerraformを利用する場合に問題となるのは、tfstateファイルの管理だ。
というのもtfstateファイルは、変化するスピードが早いものだ。これをGitなどのVCSなどで管理すれば目も当てられない悲劇が多発するのは想像にかたくない。
話をもどすが、Terraformの実行環境をSaaSのCI環境に移した。
この場合は特に社内NWを意識する必要もないし、実行環境を統一することができる。
つまり、社内の人が環境準備をせずにいきなりTerraformにふれることができるようになったのだ。
もし、Terraformを利用しようとしたときに同じような悩みを抱えている人がいれば、CI環境での実行を考えてみてほしい。
多分うまくいく。
あ、ちなみにお金のある人はTerraform Enterpriseを契約してください。