もっと詳しく

ネットワークインフラストラクチャは、多くの組織にとって重要なものです。 クラウドサービスを使用する利点により、多くの組織がワークロードをクラウドに転送しています。 これらのクラウドインフラストラクチャ内のリソースを効率的に管理するには、高度なスキル(ツール)と優れた経験が必要です。 クラウドベースのインフラストラクチャを自動化するために、今日利用できるツールはたくさんあります。 Terraformは、最近DevOpsの世界で絶大な人気を得ているそのようなツールの1つです。

テラフォームとは何ですか?

Terraformは、HashiCorpによって開発および保守されているオープンソースツールです。 独自のHashicorp構成言語-HCLを使用して、複数のクラウドサービスプロバイダーをプロビジョニングします。 基本的に、Terraformは、現在のインフラストラクチャ構成を目的の状態と比較し、目的の状態に到達するために必要なインフラストラクチャの部分のみを変更します。

Terraformは、AWS、Azure、vSphereなどのさまざまなクラウドおよびエンタープライズサービスプロバイダーに対応するプロバイダーと呼ばれるプラグインを使用します。Terraformプロジェクトは、さまざまなプロジェクト関連ファイルを含む独自のディレクトリ内に含まれています。 Terraformは、クラウドアカウントのすべてのリソースに影響を与えるわけではありません。 計画を通じて管理されるコンポーネントのみを扱います。 (JSON形式の)状態ファイルを使用して、インフラストラクチャの現在の状態を保存します。

テラフォームを際立たせるものは何ですか?

他のツールからTerraformを際立たせる興味深い点の1つは、必要なものを伝えることができ、それを実行するためのすべての基本レベルのコマンドを気にすることなく、それを取得する方法を解決することです。 もう1つのあまり知られていない事実(またはすでに知っているかもしれません)は、クラウドサービスプロバイダーのAPIとバインドするプラグインが、現在クラウドサービスプロバイダー自身によって設計されていることです。 これは、AWS自体がTerraformのAWSプロバイダーを維持していることを意味します。 プロバイダーはAWSAPIスペースで更新されたままになるため、これは良いことです。

ここで何を学びますか?

このチュートリアルでは、Terraformでループ構造を使用する方法を示します。 いくつかのループ構造を使用するいくつかの例を見ていきます。 この投稿を続けましょう。

始めましょう…

テラフォームにはさまざまなタイプのループ構造があり、それぞれに特定の使用例があります。

1. count’パラメータ:これにより、リソースまたはモジュールの複数のコピーが作成されます。 count引数は、そのリソースまたはモジュールのcount値と同じ数のオブジェクトになります。 count引数は整数を取ります。

count引数で機能するcount-typeオブジェクトもあります。 このオブジェクトを使用して、インスタンスごとに構成を変更します。 ‘index’を唯一の属性として使用します。 インデックス番号はゼロから始まります。 それぞれのケースの使用法については後で説明します。

‘count’パラメーターの使用例:

次の例は、複数の同一のEC2インスタンスを作成する手順を示しています。

resource "aws_instance" "web-ec2" {
  count         = 5
  ami           = “ami-xxxx”
  instance_type = “t2.micro”
}

サンプル出力:

Plan: 5 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.
Enter a value:

上記のコードは、5つの同一のEC2インスタンスを作成します。 異なる名前の複数のEC2インスタンスを作成する必要がある場合、上記のコードは次のように変更されます。

resource "aws_instance" "web-ec2" {
  count         = 5
  ami           = ami-xxxx
  instance_type = t2.micro
tags {
Name = “my-server-${count.index}”
}
}

上記の設定では、my-server-0からmy-server-4という名前の5つのEC2インスタンスが作成されます。

同一でないEC2インスタンスを使用したパラメーターの例をカウントします。

2.’for’式:Terraformの’for’式は、リスト、マップ、オブジェクトなどの項目をループします。構文は次のとおりです。

[for <item or element> in <Name_of_List> : <OUTPUT>]

ここで、「Name_of_List」は反復するリストの名前です。 ‘Item’または’element’は、上記のLISTのすべての要素に付加された変数の名前です。

‘for’式の使用例:次のコードは、リスト内の項目の大文字バージョンを出力します。

variable "demo" {
 description = "A list of items"
 type        = list(string)
 default     = ["one", "two", "three"]
}
output "upper_case" {
 value = [for name in var.demo : upper(name)]
}

3.「for_each」式:Terraformは、バージョン0.12から「for_each」式を導入しました。 この式を使用して、リスト内のアイテムを繰り返し、設定し、マップすることができます。 この式を使用して、完全なリソースの多数のレプリカ、またはリソース内のインラインブロックのレプリカを作成できます。 'for_each'式の基本的な形式は次のとおりです。

resource "<Name_of_the_Provider>_<Type_of_resource>" "<identifier>" {
 for_each = <COLLECTION(set or map)>  
[Code ...]
}

ここでは、代わりにプロバイダーを指定します 'Name_of_the_Provider'。 'Type_of_resource ' 生成するリソースのタイプを指定します。

'for_each'式の使用例:以下の例は、'for_each'式を使用してIAMユーザーを作成する方法を示しています。

resource "aws_iam_user" "iam-accounts" {
  for_each = toset( ["tecofers", "HowToForge", "Demo"] )
  name     = each.key
}

'toset'関数は、セットへの変換に使用されます。 'each.key'は、インスタンスに関連するマップキーです。 同様に、「each.value」はインスタンスに関連するマップ値です。 上記のコードは、リスト内に記載されている3人のIAMユーザーを作成します。

注:count構文とfor_each構文の両方を同時に存在させることはできません。

まとめ

このガイドでは、Terraformのさまざまなループ構造とその使用方法について説明しました。 今後の投稿では、Terraformモジュールの調査を試みますので、HowToForgeにご注目ください。

参照:https://mediaspace.wisc.edu/media/Introduction+to+and+Managing+Infrastructure+with+Terraform+-+Brian+Hill/1_qhr9c1os

The post Terraformでループを使用する方法 appeared first on Gamingsym Japan.