技術ブログ
渡部です。これは、(全部俺) Oracle Cloud Infrastructure Advent Calendar 2018と Oracle Cloud Advent Calendar 2018 の21日目のエントリです。
クラウドインフラの利点の1つに、CLIなどを駆使するとプログラミングのような感覚でインフラを構成できる点があります。 しかし、技術的に可能であることと、適切であるかは別問題です。
Oracle Cloudやクラウドに限った話ではありませんが、インフラは多くの種類の要素(リソース)から構成され、それぞれが整合している必要があります。このような状況において、構成要素(リソース)を1つ1つCLIで作成し、それぞれを繋ぎ合わせてゆくことは非常に大変な作業です。
Terraformを使用すると、この問題を解決することができます。
Terraformは、定義ファイルに従い、インフラを構成する複数のリソースを一括で構築してくれるツールです。 リソースの相互関係の整合性も維持してくれます。ひらたく言うと、多数のリソースIDをうまい具合に管理してくれるため、あるリソースのリソースIDを取得して、そのリソースが依存する別のリソースにそのリソースIDを設定して・・・という作業から解放されます。
率直にいって、Terraformによるインフラ構築を経験すると、CLIによるインフラ構築には戻れません。もちろん、CLIが有効なケースもあるとは思いますが、複数種類のリソースを組み合わせてインフラを構築する場合(たいていの場合はそうでしょう)、Terraformが圧倒的に楽です。例えば、一般的な用途のVCNを構築することを考えると、最低でも以下のリソースを作成する必要があります。これらをCLIで1つ1つ作成してゆくのはかなり大変です・・・が、Terraformを使えば、"terraform apply"コマンド一発で作成できるのです 🙂
(作った後の話もありますが、とりあえずは作る話に限定してます・・・)
このような便利なTerraformなのですが、Terraformを用いてOracle Cloud Infrastructureインフラ構築を行うためには、Terraform Provider for Oracle Cloud Infrastructureを導入する必要があります。これはTerraformのプロバイダの1つで、OCI固有の処理をつかさどる役割を持っています。
インストール方法などは以下のURLなどを参考にしてください。
リソースの構成を定義するファイル(*.tf)のOCI向けサンプルは以下に用意されています。
かなり多くのサンプルファイルが用意されているので、初めて学ぶときの参考になるかと思います。
個人的には、TerraformはVCN構築から使い始めるのが良いと考えています。上記の通り、VCNの構成要素が多いため、整合性をもって構成するのが大変だからです。TerraformでVCNを構築するには、vcn_full.tfが参考になります。
(理想を言うなら、Terraformで定義した内容が自動的に↑のような図で出力される機能があると最高なのですけどねぇ;-p)
参考) 最近(2018年7月)にOCI用のAnsibleモジュールが提供されました。AnsibleもTerraformに似た位置づけのツールですが、渡部はまだこのAnsibleモジュールを試すことができていません。
#OCIではAnsibleとTerraformをどう使い分けるのがよいのだろうか??