1. Terraform driver 共通¶
1.1. はじめに¶
1.2. 概要¶
1.2.1. Terraformについて¶
1.2.2. Terrform driverについて¶
- Terraform Cloud/EP driverITAで登録した Terraform Cloud もしくは Terraform Enterprise に対し、Organizationの作成、Workspaceの作成、作業の実行(Plan/ PolicyCheck / Apply)および作業ログの取得を行うことができます。操作方法等については「Terraform Cloud/EP driver」を参照してください。
- Terraform CLI driverITAと同一の環境内にインストールしたTerraformに対し、作業の実行(Plan/ Apply)および作業ログの取得を行うことができます。操作方法等については「Terraform CLI driver」を参照してください。
1.3. 変数の取り扱い¶
1.3.1. 変数の種類¶
種類 |
内容 |
|
---|---|---|
通常変数 |
変数名に対して具体値を定義できる変数です。 Module内の変数は HCL(HashiCorp Configuration Language)のVariableブロックのルールに従い以下の形式で記述してください。 この場合「xxx」がModuleから変数として抜出されます。 また、typeとdefault値を設定することができます。 この場合、 「○○」がtypeとして、「△△」がdefaultとして抜出されます。 typeとdefaultの設定は必須ではありません。
|
1.3.2. 変数の抜出および具体値登録¶
1.3.3. 変数のタイプについて¶
type |
詳細 |
メンバー変数対象
※1
|
代入順序対象
※2
|
typeの記述例 |
defaultの記述例 |
---|---|---|---|---|---|
string |
文字列型。 |
× |
× |
string |
あいう |
number |
数字型。 |
× |
× |
number |
123 |
bool |
Boolean型(trueまたはfalse)。 |
× |
× |
bool |
true |
list |
配列型。 |
× |
〇 |
list(string) |
["あ", "い", "う"] |
set |
配列型。ユニークな値の設定が求められる。
ITA上では具体値がユニークか否かは判定されません。
|
× |
〇 |
set(number) |
[1, 2, 3] |
tuple |
配列型。予めn番目にどのtypeを設定するか決めておく必要があります。
値の入力数が決められているため、ITシステムA上ではメンバー変数としてプルダウンで選択します。
|
〇 |
× |
tuple([string, number]) |
["あいう", 2023] |
map |
key-value(連想配列)型。ITA上ではmap型が一つ以上含まれているtypeを設定した場合、type情報からkey値を特定できないため、代入値自動登録設定をする場合はHCL設定をONする必要があります。
HCL設定については「代入値自動登録設定」を参照してください。
|
× |
× |
map(string) |
{"test_key" = "test_value"} |
object |
key-value(連想配列)型。ITA上ではkey名をメンバー変数として扱います。key名に日本語は含まないでください。
|
〇 |
× |
object({test_key = string}) |
{"test_key" = "test_value"} |
any |
すべてに適合する型ですが、ITA上ではstring型と同じ扱いになります。 |
× |
× |
any |
あいう |
記載なし |
typeを記載しなかった場合、ITA上では string型と同じ扱いになります。 |
× |
× |
あいう |
- ※1 …メンバー変数対象変数がkey-value型である場合のkey名です。変数のタイプがobjectの場合、<KEY> = <TYPE> の <KEY> をメンバー変数とします。変数のタイプがtupleの場合、tuple内に定義した変数を先頭から[0],[1],[2]…と採番してメンバー変数となります。変数のタイプが変数ネスト管理メニューの登録対象の場合、最大繰返数をもとに[0],[1],[2]…と採番してメンバー変数となります。
- 例: 変数タイプがobjectの場合
- tfファイルと登録値
variable "VAR_hoge" { type = object({ NAME = string, IP = string }) default = { “NAME” = “machine_01”, “IP” = “127.0.0.1” } }
- 代入値例(代入値自動登録設定)
項番
変数名
メンバー変数
代入順序
パラメータシートの入力値
1
VAR_hoge
NAME
入力不可
my_machine
2
VAR_hoge
IP
入力不可
192.168.100.1
- Terraformに送信される値
{ NAME = "my_machine" IP = "192.168.100.1" }
- 例: 変数のタイプがtupleの場合
- tfファイルと登録値
variable "VAR_hoge" { type = tuple([string,number]) default = ["abc",2023] }
- 代入値例(代入値自動登録設定)
項番
変数名
メンバー変数
代入順序
パラメータシートの入力値
1
VAR_hoge
[0]
入力不可
def
2
VAR_hoge
[1]
入力不可
2024
- Terraformに送信される値
["def", 2024]
- 例: 変数のタイプがネスト管理対象の場合
- tfファイルと登録値
variable "VAR_hoge"{ type = list(set(string)) default = [ ["aaa","bbb"] ["ccc","ddd"] ] }
- 代入値例(代入値自動登録設定)
項番
変数名
メンバー変数
代入順序
パラメータシートの入力値
1
VAR_hoge
[0]
1
あああ
2
VAR_hoge
[0]
2
いいい
3
VAR_hoge
[1]
1
ううう
4
VAR_hoge
[1]
2
えええ
- Terraformに送信される値
[ ["あああ", "いいい"], ["ううう", "えええ"] ]
- ※2 …代入順序対象変数に複数具体値を設定する際の先頭から代入する順序です。変数または階層構造の変数の最下層の変数のタイプがlist,setの場合、「Terraform Cloud/EP driver -> 代入値自動登録設定」「Terraform CLI driver -> 代入値自動登録設定」にて設定可能です。
- 例: 変数タイプがlistの場合
- tfファイルと登録値
variable "VAR_hoge" { type = list(string) }
- 代入値例(代入値自動登録設定)
項番
変数名
メンバー変数
代入順序
パラメータシートの入力値
1
VAR_hoge
入力不要
1
あいう
2
VAR_hoge
入力不要
2
かきく
- Terraformに送信される値
["あいう","かきく"]
- 例: 階層構造の変数の最下層の変数タイプがsetの場合
- tfファイルと登録値
variable "VAR_hoge" { type = object({ key = set(number) }) }
- 代入値例(代入値自動登録設定)
項番
変数名
メンバー変数
代入順序
パラメータシートの入力値
1
VAR_hoge
key
1
1
2
VAR_hoge
key
2
2
- Terraformに送信される値
{ key = [1,2] }
1.4. 構築コード記述方法¶
1.4.1. Moduleの記述¶
1.4.2. Policyの記述¶
1.5. 付録¶
1.5.1. Module素材「Variableブロック」記入例・登録例¶
Module素材の「Variableブロック」の記入例と、代入値自動登録設定への登録例を、変数のタイプ毎に記載します。
- シンプルなパターン
- string型
- number型
- bool型
- list型
- set型
- tuple型
- map型
- object型
- any型
- typeの記載がない
- 複雑なパターン
- list型の中にlist型
- list型の中にobject型
- object型の中のlist型の中にobject型
- 特殊なパターン
- list型の中にmap型
1.5.2. 変数ネスト管理フロー例¶
変数ネスト管理の操作例を記載します。
- 最大繰返数を増加させる
- 最大繰返数を減少させる