- クラウド技術
Terraformとは?IaCのメリット、仕組みやステート管理などを解説
- #TerraForm
はじめに
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
クラウド環境によるサービスの提供が当たり前になってきた現在、多種多様なクラウドインフラをいかに管理し、構築していくかという点はインフラ担当者の悩みの種となっています。
その悩みの解決の補助となるTerrformというツールについて複数回に分けて、仕組から設計、構築、使用時のヒントをご紹介いたします。
Terraformが実現するIaC
Terraformについて
TerraformはHashiCorp社がGo言語で開発した、IaC(Infrastructure as Code:インフラストラクチャのコード化)を実現するツールです。
各種Providerと呼ばれるクラウドサービスへのインターフェイスを通じ、従来はWebブラウザによるWebコンソール(管理画面)から構築していたクラウドインフラストラクチャをプログラムコードのようなテキストファイルによって記述することができます。
ProviderにはAWSやGCP,Azureなど主要クラウドサービス事業者向けのものからOracle CloudやAlibabaCloud、Salesforce等主立ったクラウドインフラ向けのものが事前にHashiCorp社より提供されています。
IaCのメリット
IaCによってインフラを構築するとどのようなメリットがあるでしょうか。
プログラムソースと同じで、コードはテキストファイルとして記載されますので、GitやSubversion, MercurialなどVCS(Version Control System)によってコードのバージョン管理ができます。バージョン管理により過去の修正履歴や差分の確認など、管理画面だけではわかりにくい世代間の差異や過去の状態に戻すことができるのも大きなメリットとなります。
Terraformの仕組み
Terraformの流れ
Terraformは以下の流れで実施します
1. Terraformコードの記述 Terraformでは各インフラリソースをHCLという専用の言語で記述します。 専用の言語ではありますが、一般的なプログラム言語に似た表記のため覚えやすく記述しやすい言語となります。
2. Terraform のイニシャライズ initというコマンドを使用し、Terraformを実行するのに必要となる、モジュールの取込、バックエンドの初期化を行います。
3. Terraformコードの確認 planというコマンドを使用し、Terraformコードが正常に記述されているか確認し、適用する環境への変更差分(追加・変更・削除等)を事前検証します。
4. Terraformの適用 applyというコマンドを使用し、Terraformコードを用いてインフラ環境に適用します。
Terraformのステート管理について
TerrafoirmはStateファイルと呼ばれるファイルによってTerraformによって管理されるクラウド環境の設定状況を管理します。
stateファイルはテキストファイルとして記録され、ローカル環境をはじめクラウド環境による管理(例えばAWSのS3 Bucket)可能です。クラウド環境で管理することでチーム内でのインフラ環境の構築状況を共有することができます。
まとめ
今回は、Terraformについて、概要及び優位性、主な流れについてまとめてみました。Terraformの考え方、主な流れが把握できたかと思います。
次回はTerraformでクラウドインフラを構築する際の考え方や、設計方針についてご説明いたします。
また、過去のSmallitの記事で実際にEC2をTerraformを使用して構築する記事もありますので、ご参考いただくとTerraformについての理解が深まるかと思いますので、ご紹介とさせていただきます。
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>