多くの初心者は、カスタマイズプロセスを容易にするためにTerraformモジュールの構成をスキップします。少なくとも彼らはそう思います、彼らは彼ら自身のためにそれをより簡単にしました。Terraformモジュールとは何か、そしてそれらがどのように機能するかを見てみましょう。
あなたはすでにTerraformの基本のいくつかを知っていて、以前にそれを使ってみたことがあると思います。そうでない場合は、続行する前に、このTerraformの概要とこのビデオチュートリアルを確認してください。
理解を容易にするために、AWSやGoogleなどの特定のベンダーで実際のコード例を意図的に使用していないことに注意してください。
Terraformモジュール
あなたはすでにモジュールを書いています
意図的にモジュールを作成していなくても、Terraformを使用している場合は、すでにモジュール、いわゆる「ルート」モジュールを作成しています。
.tf
ディレクトリ内のTerraform()構成ファイルは、1つでも、モジュールを形成します。
モジュールは何をしますか?
Terraformモジュールを使用すると、一連のリソースの上に論理的な抽象化を作成できます。つまり、モジュールを使用すると、リソースをグループ化して、後で、場合によっては何度もそのグループを再利用できます。
クラウドでホストされているいくつかの機能を備えた仮想サーバーがあるとしましょう。このサーバーはどのようなリソースのセットを記述できますか?例えば:
,
IP-,
,
, , . .
, . . , ?
, , «» .
« » .
5 «», ( ):
module "server" { count = 5 source = "./module_server" some_variable = some_value }
Terraform "" , 0.13.
:
, , , . :
, (VPC)
(.. bucket)
- ,
, : «» «» . «» :
module "server" { source = "./module_server" some_variable = some_value } module "network" { source = "./module_network" some_other_variable = some_other_value }
,
, «» . , , .
:
Terraform — , Docker,
Git ( GitHub/BitBucket)
HTTP URL- .zip
?
. , «» , «»?
.
Terraform : .
Scope ( )
, , , . , «A» «B».
, , , . , 5 «»:
module.server[0].resource_type.resource_name module.server[1].resource_type.resource_name module.server[2].resource_type.resource_name ...
, - count
, :
module "server-alpha" { source = "./module_server" some_variable = some_value } module "server-beta" { source = "./module_server" some_variable = some_value }
— ,
:
module.server-alpha.resource_type.resource_name module.server-beta.resource_type.resource_name
, .
«» , «».
output
«» , .
«» variable
, :
output
variable
, .
— ( ) — «» , .
, «» , «» «»:
network_id = module.network.network_id
'network_id
' — ,
:
module "server" { count = 5 source = "./module_server" some_variable = some_value network_id = module.network.network_id } module "network" { source = "./module_network" some_other_variable = some_other_value }
5 , .
, .
Terraform, .
HashiCorp, Terraform, : "Organize Configuration".
さらに、初心者から高度なTerraformの概念まで、すべてをカバーする優れた包括的なチュートリアルがあります。学習ガイド-TerraformAssociate認定。
コードのモジュラー構造により、構成がより柔軟になり、他の人が理解しやすくなります。後者はチームにとって特に便利です。
この記事が気に入った場合は、Twitter(@ vasylenko)でフォローしてください。ここでは、Terraform、AWS、Ansible、およびその他のDevOps関連テクノロジーに関するポイントとヒントを時折共有しています。