terraform -コード構造


前の地形は、私たちにterraformへの基本的な導入を与えました.また、最小のコードでAWS EC 2インスタンスを作成するために単純な地形形式コードを書くことについて議論しました.
つのmain.tfファイルのすべてのコードベースを維持することは初心者にとって良いです.しかし、このアプローチは、私たちの根底にあるインフラストラクチャが成長するにつれて、保全性の問題につながります.さらに、実際の状況では、複数の環境(例えばDTAP - dev/test/accept/production)に対処する必要があります.
符号モジュール化のための他の決定因子は以下の通りである
プロジェクトの複雑さ
に関係する地形形態プロバイダーのカウント
  • terraform
  • によって維持されるべき資源のカウント
  • 基盤変更のケイデンス-毎日/毎週/毎月
  • 展開戦略- CI/CDパイプライン、Gitopsなど
    ソースコードを論理的に分割することを推奨します.
  • provider.tf -ルートモジュール
  • のプロバイダー構成を含みます
  • main.tf -すべてのリソース
  • を作成するために、モジュール、locals、およびデータソースを呼び出します
  • variables.tf - main.tfで使用される変数宣言を含みます
  • outputs.tf - main.tfに作成されたリソースからの出力を含みます
  • terraform.tfvars -デフォルト変数値を提供する変数定義を含みます.Terraformは自動的にこれらのファイルから変数をロードします.
  • 最初のterraformコードを参照してください、そして、我々が論理的にそれをさらに壊すことができる方法を理解しましょう.
    上記のように、
  • レッドブロックは、provider.tfの一部です
  • 緑のブロックは、main.tfの一部です
  • 入力変数値の使用


    私たちがIRACとしてterraformを扱うので、我々はhardcodingsがないことを確実としなければなりません.これらはvariables.tfに設定しなければなりません.すべての変数に対して以下のブロックを定義する必要があります.
    variable "aws_region" {
        type = string
        description = "AWS Region"
    # default value is optional.
        default = "us-east-1"
    }
    
    

    コマンドライン上の変数


    既定値は、変数に対して(上記のように)設定できます.ただし、実行時にコードを実行しながらこの値をオーバーライドできます.
    terraform apply -var aws_region="eu-west-1"
    
    

    環境変数


    また、TorraformはTF_VAR_という名前の環境変数のための独自のプロセスの環境を検索し、続いて宣言された変数の名前を検索できます.これは自動化でterraformを実行するときに便利です.
    export TF_VAR_aws_region = eu-west-1
    
    

    変数定義(. tfvars )ファイル


    バルク値については、変数定義ファイルで値を指定するのが便利です(ファイル名を.tfvarsまたは.tfvars.jsonに終了します).
    terraformも自動的に変数定義ファイルの数をロードします.
    ファイルはterraform.tfvarsまたはterraform.tfvars.jsonという名前のファイルです.
  • 名のファイルは.auto.tfvarsまたは.auto.tfvars.jsonで終わる.
  • この変数を使用して、hardcodingsを置き換えることができます.
    region = var.aws_region
    
    
    次のようにしてコード投稿書式を設定します

    プロバイダ。TF


    terraform {
      required_providers {
        aws = {
          source = "hashicorp/aws"
          version = "~>3.0"
        }
      }
    }
    
    provider "aws" {
      region = var.aws_region
      default_tags {
        tags = {
          "Environment" = "dev"
          "Owner" = "g33kzone"
        }
      }
    }
    
    

    変数。TF


    variable "aws_region" {
        type = string
        description = "AWS Region"
    }
    
    variable "instance_type" {
        type = string
        description = "AWS EC2 Instance Type"
    }
    
    variable "aws_ec2_ami" {
        type = string
        description = "EC2 AMI for Amazon Linux 2"
    }
    
    

    メイン.TF


    resource "aws_instance" "web" {
      instance_type = var.instance_type
      ami = var.aws_ec2_ami
    
      tags = {
        "Name" = "aws-ec2-demo"
      }
    }
    
    

    地形TFVARS


    aws_region = "us-east-1"
    instance_type = "t2.micro"
    aws_ec2_ami = "ami-04d29b6f966df1537"
    
    
    我々はコーディングを行っています.このterraformコードを以下のコマンドで実行しましょう.
    # open your shell in the same project folder
    
    # download the terraform core components 
    # and initialize terraform in this directory
    terraform init
    
    
    # Validate changes to be made in AWS after the execution
    terraform plan
    
    
    # -auto-approve is used to skip manual approval prompt
    terraform apply -auto-approve
    
    

    非常に重要


    クリーンアップ


    任意のコストを避けるために作成されたインフラストラクチャを削除することを忘れないでください.
    # running this command will destroy all the resources
    terraform destroy -auto-approve
    
    
    ギタブレポ
    将来の投稿では、terraformモジュールを調べます.