はじめに
この記事は Terraform は使えない、ということを言おうとする意図は全くありません。むしろ、私自身は今まで鬼のように大変だった gcloud を呼び出す shell 作りがなくなるので、積極的に使っています。
Terraformによるインフラストラクチャの革新(by ChatGPT)
Terraformは、HashiCorpによって開発されたオープンソースのインフラストラクチャアズコード(IAC)ツールであり、その便利さと効率性から世界中のエンジニアに広く採用されています。本作文では、Terraformの便利さに焦点を当てて詳細に解説します。
- 一貫性と再現性:
Terraformを使用する最大の利点の一つは、インフラストラクチャをコードとして管理できる点です。これにより、環境の一貫性が保たれ、エラーのリスクが低減します。また、コードとして保存されているため、必要に応じて簡単に再現やロールバックが可能です。
- クロスプラットフォーム対応:
Terraformは複数のクラウドプロバイダをサポートしており、AWS、Google Cloud、Azureといった主要なクラウドプラットフォームに対応しています。これにより、異なるクラウドプロバイダ間での移行やマルチクラウド環境の管理が容易になります。
- コラボレーションの向上:
Terraformのコードはバージョン管理システムと連携することができるため、チームメンバー間でのコラボレーションがスムーズに行えます。コードレビューや変更履歴の追跡が可能となり、より品質の高いインフラストラクチャを構築できます。
- 自動化と効率化:
Terraformを使用すると、手動でインフラストラクチャを構築する手間が省け、大幅な時間の節約が可能です。また、エラーのリスクを低減しながら一貫性を保つことができるため、運用の効率化に繋がります。
- コストの最適化:
Terraformはリソースの利用状況を可視化し、過剰なリソースの削減を容易にするため、コストの最適化に寄与します。不要なリソースの削減はコスト削減だけでなく、環境に対する負荷の軽減にも繋がります。
- まとめ:
Terraformはその一貫性、クロスプラットフォーム対応、コラボレーションの向上、自動化、コスト最適化といった様々なメリットを提供しており、インフラストラクチャの管理を効率的かつ効果的に行うための強力なツールとなっています。これにより、エンジニアはよりクリエイティブで革新的な作業に集中することができ、企業全体の競争力を高めることが可能です。
できそうでできないこと
GCP に新規にプロジェクトを作ってそこで Cloud Run を建てたい、と考えて次のような .tf を作ってみた
provider "google" {
}
resource "google_project" "new_project" {
name = "JD"
project_id = "John Doe..."
}
resource "google_project_service" "cloud_run" {
project = google_project.new_project.project_id
service = "run.googleapis.com"
}
以下略
動かすと以下のエラーになる
Error: Request `Enable Project Service "run.googleapis.com" for project "John Doe..."` returned error: failed to enable services: failed on request preconditions: googleapi: Error 400: Billing account for project 'XXXXXXXX' is not found. Billing must be enabled for activation of service(s) 'run.googleapis.com,artifactregistry.googleapis.com,containerregistry.googleapis.com' to proceed.
要するに「請求アカウントがプロジェクトに結びついていないので、Cloud Run API を有効化できない。」とのこと。
請求アカウントをプロジェクトに結びつける terraform はなさそう。ChatGPT に聞いてみると
- プロジェクトに請求アカウントを紐付ける操作は直接Terraformでは実行できません。これはセキュリティと認証の観点からGoogle Cloudが制限を設けているためです。
そりゃそうだ。
というわけで残念ながらプロジェクトの作成からデプロイまで一気通貫とはいきませんでした。