はじめましておれちゃんでござる。
ここで記事を書くのは初めてなのでどうか大目に見ていただいたら助かります。💦
早速ですがTerraformというツールを紹介したいと思います。「そもそもTerraformってなんだろう」という質問から始めたいと思います。
Terraformはインフラストラクチャ管理のためのオープンソースのツールです。HCLという宣言型言語を使用して、クラウドやオンプレミスのインフラストラクチャの構成を記述し、それを自動的に構築・管理することができます。IT業界で一番よく見られるパターンといえば、言語化になったインフラストラクチャーをGithubでコードを保管して、Terraformで実行してインフラを実現するとのことです。
※「そもそもGithubってなんだろう」を聞きたいのなら次の記事を楽しみにしてねw
Terraformはクラウドプロバイダーに依存しないため、AWS、Azure、Google Cloud Platformなど様々なクラウド環境で使用することができます。Terraformはインフラストラクチャのステートを管理し、変更を適用するために必要な最小限のステップを自動的に計算します。これにより、インフラストラクチャの一貫性を維持しながら、スケールアップや環境の変更を容易に行うことができます。
簡単に言うとこれです:毎回しないとあかん手作業 VS 1回だけ書いていいコードテンプレート
どっちが勝つのかな~
IT業界のコード化の取り込み様子を見るとインフラのコード化の良さを察することができますでしょうね。コード化の勝ちやんな。
でもTerraformはインフラストラクチャ管理のためのどれだけ優れたツールでも、特定のシチュエーションではデメリットもあります。
Terraformのメリット:
- クラウドに依存しない: Terraformは複数のクラウドプロバイダーに対応しておりますので、クラウドごとにリソースを対応することがところに違ってもコードは総合的に変わりません。
- 宣言型言語: Terraformは宣言型言語を使用して、インフラストラクチャの構成を記述することができ、目的の状態を明確に定義することができます。
- ステート管理: Terraformはインフラのステートを管理してます。インフラに変更を適用する必要だったらコードを変更するだけで自動的にその変更が実現される。
- オープンソース: Terraformはオープンソースのツールであり、誰でも使用や改善することができる上で、人気ですから問題やトラブルシューティングの際には様々な記事やリソースがネットで見つけられます。
Terraformのデメリット:
- スクリプティングスキルが必要: コード化ですからインフラはコードになります。コードを書く必要になります。
- 通信量が多い: TerraformはクラウドプロバイダーのAPIと通信して、インフラの状態を確認し変更を行うため、通信量が多いことがあります。
- トラブルシューティングが困難: Terraformは抽象化されたインフラストラクチャの構築過程を持っており、トラブルシューティングやデバッグには若干の困難が伴います。
Terraformは具体的にコードをインフラにするソフトなんです。一般的なインフラ自動化プロセスは以降となります。
ユーザーはコードを書いてPlanする。PlanはTerraform planコマンドで、こうするとTerraformは、コードを使ってるModuleがいるとそのModuleのバージョンチェックしたりして、コードがエラーがないというドライランをしています。
Terraform applyはコードを実行するとのことです。applyしたらTerraformは本格的にModuleが対応するクラウドプロバイダーやツールとのAPIコールします。
Terraformみたいな幅広い課題の単なる紹介だけですけどどうでしょう?
やっぱりインフラをコード化するやる気マンマンになってきたんやろ!