Terraform 常用语法(二)
  TEZNKK3IfmPf 2023年11月14日 17 0

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 汇总对象;

Terraform 常用语法(二)Module 调用方式

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

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

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

  • http: "git::https://example.com/vpc.git"
  • ssh: "git::ssh://username@example.com/storage.git"

Module-输入、输出变量值

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

Terraform 常用语法(二)Module 实例化

一个模块可以多次实例化;
每个示例定义唯一的名称,指定相同 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.zip

7 directories, 17 files
  • 解决代码重复的问题;
  • 加强代码可读性,代码整洁性;
  • 资源标准化;
  • 减少人为错误发生频率;
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

TEZNKK3IfmPf