Terraform 常用语法(二)

网友投稿 262 2022-09-28

Terraform 常用语法(二)

Module 模块

Terraform 可以更轻松的扩展基础架构并保持其配置整洁,但是,随着基础架构的增长,单个目录变得难以管理。我们假设一种场景: 创建多台服务器?我们在当前是不是需要一遍又一遍的重复相同的配置代码? 这种场景下,我们便可以配置多个模块,一次执行便可以生成我们的需要的配置。Terraform 模块是一种可重用现有代码的方法,减少基础设施组件开发的代码量。Terraform 模块是一个或多个 ​​.tf​​ 文件的集合

实际上任何 Terraform 配置本身已经是一个模块。如果在此目录中运行 Terraform,则这些配置文件将被视为根模块。

.|├── main.tf├── variables.tf├── outputs.tf└── README.md

Module 语法

name:模块的名称,在 Terraform 中可以使用模块名称进行引用;source:模块代码的路径,本地或者远程仓库的路径;version:版本信息;

参数信息:

module "name" { source = "./terraform_test_module" version = "1.0.0" argument_1 = var.test1 argument_2 = var.test2}

Module 工作原理

远程模块:存储到跟模块下的 ​​.terraform​​ 目录中(修改后,必须 ​​get​​ 或者 ​​init​​)。

本地模块:将通过软连接的方式引用本地的源目录(修改后,无需操作)。使用 ​​terraform get​​ 下载模块;

使用 ​​terraform graph​​ 查看模块; -module-depth 汇总对象;

本地文件:"./module_name"TF注册表: "hashicorp/consul/aws"Github:

"github.com/hashicorp/example"ssh "git@github.com:hashicorp/example"

bucket:"bitbucket.org/hashicorp/terraform-consul-aws"通用git:

"git::"git::ssh://username@example.com/storage.git"

Module-输入、输出变量值

模块的输出值,便于其他模块引用;引用方式:​​module.MODULE_NAME.OUTPUT_NAME​​

一个模块可以多次实例化;每个示例定义唯一的名称,指定相同 source来源;

module "dev_ecs" { source = "./module/ecs" instance_name = "ecs_01"}module "prod_ecs" { source = "./module/ecs" instance_name = "ecs_02"}

演示环境的配置

.├── env│ └── dev│ ├── main.tf│ ├── outputs.json│ ├── variables.tf│ └── versions.tf├── modules│ ├── dns│ │ ├── main.tf│ │ ├── outputs.tf│ │ └── variables.tf│ ├── ecs│ │ ├── main.tf│ │ ├── outputs.tf│ │ └── variables.tf│ ├── secgroup│ │ ├── main.tf│ │ ├── outputs.tf│ │ └── variables.tf│ └── vpc│ ├── main.tf│ ├── outputs.tf│ └── variables.tf└── test_demo.zip7 directories, 17 files

解决代码重复的问题;加强代码可读性,代码整洁性;资源标准化;减少人为错误发生频率;

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Terraform 常用语法(三)
下一篇:Java 多线程并发LockSupport
相关文章

 发表评论

暂时没有评论,来抢沙发吧~