第4章 Terraformのモジュールとプロバイダ Terraformモジュールとプロバイダ
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
モジュール Terraformにおけるモジュールは、グループとして管理されるTerraformコンフィギュレーションの自己完結型パッケージである。コードを再利用可能なコンポーネントにカプセル化し、チームワークとコラボレーションを促進するコードの組織化に使われる。各モジュールには、連携するように設定された複数のリソースを含めることができる。
モジュールは、従来のプログラミング言語における関数と比較することができる。関数のように、モジュールは特定の目的を持ったコードブロックをカプセル化し、異なるコンテキストで再利用することができる。しかし、関数とは異なり、モジュールはコンピューティングを実行するのではなく、リソースのコレクションを管理する。
Terraformモジュールは、ルートレベルのTerraform構成ファイル(.tfファイル)と同じ言語構文で作成される。モジュール設定ブロックを使うことで、他のモジュールやルートモジュールから呼び出すことができる。
モジュールはリソースの整理やコードの再利用に役立つが、Terraformプロバイダは外部APIとやりとりして、それらのリソースを作成、読み取り、更新、削除する。各プロバイダはAPIインタラクションを理解し、リソースを公開する責任がある。
Terraformは、AWS、GCP、Microsoft Azure、その他GitHub、Datadogなど多くのサービスプロバイダと互換性がある。
4.1 パブリックモジュールを使用してEKSクラスタを作成する
問題
AWS内にVPCをセットアップし、今度はKubernetes上でアプリケーションのホスティングを始めたいと考えている。あなたはElastic Kubernetes Service (EKS)クラスタをセットアップし、最初の設定を行いたい。
解決策
Terraform Registryの public AWS EKS moduleを使えば、AWS上でKubernetesクラスタを稼働させるために必要な、コード設定によるインフラのセットアップを効率的に行うことができる。まず、AWSアカウントとEKSクラスタの作成に必要な権限があることを確認する。次に、Terraformレジストリを参照し、"terraform-aws-modules eks "を検索して今回使用するモジュールを見つける。
Terraformレジストリには、モジュールのドキュメント(図4-1を参照)、どのような入力が必要で、どのような出力が提供されるのか、モジュールを使うときに利用できるその他の依存関係やリソースが示されている。
図 4-1. Terraform レジストリ AWS EKS Terraform モジュールリスト
章のVPCモジュールで使用した前回のレシピを基に作成しているので、AWSプロバイダーの再指定やVPCモジュールの再作成は必要ない。
variables.tfファイルは主にセットアップされているが、使用するKubernetesのバージョンや、アプリケーションをEKSクラスタに追加する際にホストするワーカーノードプールをどのように構成するかなど、追加しなければならない変数がまだある。 ...