Terraform中DataSource的深度分析

简介: DataSource是Terraform官方提供的插件功能,各个Provider可以实现自己的DataSource能力,目的是通过DataSource中的定义过滤需要的数据,一是简化模板编写时数据过滤的复杂性,二是各个资源对Data源的引用保持一致,比如想要知道“华北2”的Region下都有哪些可用区,就可以用DataSource,如果想指定第一个可用区,就可以这样使用“${data.alicloud_zones.0.id}”。

一、DataSource功能介绍

DataSource是Terraform官方提供的插件功能,各个Provider可以实现自己的DataSource能力,目的是通过DataSource中的定义过滤需要的数据,一是简化模板编写时数据过滤的复杂性,二是各个资源对Data源的引用保持一致,比如想要知道“华北2”下CPU为1核,内存为1G的ECS实例类型是什么,就可以用DataSource,如果想引用这个数据源,就可以这样使用"${data.alicloud_instance_types.1c1g.instance_types.0.id}"。

二、阿里云DataSource的功能增强

阿里云的DataSource在Terraform原生的功能上做了增强:

  • 不仅可以作为资源引用过滤使用,还支持导出过滤结果;
  • 并且在"plan"时就可以看到文件(原生的功能只能在实"apply"时才可使用,很不方便);
  • 更强大的是在过滤ECS实例类型时如果入参没有可选的资源,会提示支持的类型都有哪些;

DataSource目前支持Region、可用区、镜像、ECS实例类型、VPC、keyPair,如果有用户想知道都有哪些镜像ID,就可以通过DataSource执行后查看导出的文件获取数据,即便是不用于Terraform中也可以做为一个小工具使用。源码详见 https://github.com/alibaba/terraform-provider/tree/master/alicloud 中以data_source开头的文件。

三、例子

下面以ECS实例类型为例,深度讲解如何使用:

需求场景:想要创建一台ECS,条件:Region是华北2,CPU为1核,内存1G,想要知道有哪些实例类型可用。

datasource的代码如下:

data "alicloud_instance_types" "1c1g" {
    cpu_core_count = 1
    memory_size = 1
    "output_file" = "instance_type.json"  //重点是这句,指明导出的文件名
}

执行“terraform plan”,即可看到输出的文件 instance_type.json的文件,我们查看文件内容如下:
image

返回字段说明如下:

  • 除了入参"cpu_core_count"和"memory_size"外,我们看到还有两个返回参数,一个是family,一个是id,family即是ECS实例类型家族,id即是具体的实例类型。

在创建ECS时可以如下引用
image

怎么样,是不是很简单?
如果你曾经被阿里云的ECS复杂约束而困扰,如果你不知道去哪里找实例类型、镜像、可用区,如果你输入的实例类型不符合要求,但又不知道怎么写是正确的,快快用起DataSource功能吧。

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
Linux Perl
Centos8 yum源配置方法
本文介绍了Centos8 版本中yum的配置
12094 30
Centos8 yum源配置方法
|
Linux Windows
17.7 Linux freetype安装
FreeType 库是一个完全免费(开源)的、高质量的、可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括 TrueType、OpenType、Type1、CID、CFF、Windows FON/FNT、X11 PCF 等,支持单色位图、反走样位图的渲染。
1337 0
17.7 Linux freetype安装
|
9月前
|
人工智能 分布式计算 DataWorks
大数据AI产品月刊-2025年7月
大数据& AI 产品技术月刊【2025年7月】,涵盖7月技术速递、产品和功能发布、市场和客户应用实践等内容,帮助您快速了解阿里云大数据& AI 方面最新动态。
|
消息中间件 前端开发 JavaScript
第七篇 提升网页性能:深入解析HTTP请求优化策略(二)
第七篇 提升网页性能:深入解析HTTP请求优化策略(二)
819 1
|
数据中心
Terraform使用本地编译(In-house)的Providers
## Terraform Provider的全网标识符 Terraform的Provider在全网的的标识符由三部分组成,分别为`hostname`,`namespace`和`type`组成,即`//`。`hostname`是指分发、下载Provider的域名,默认为`registry.terraform.io`。`namespace`是指提供、开发Provider的组织的命名空间,默认为`has
1829 0
|
存储 机器学习/深度学习 人工智能
获评最高等级!阿里云首批通过信通院企业用云治理能力成熟度评测
获评最高等级!阿里云首批通过信通院企业用云治理能力成熟度评测
705 11
|
弹性计算 监控 安全
云上IT“新”治理:体系化助力企业上好云、用好云、管好云
随着云计算的普及,企业上云已不再是难题,如何用好和管好云成为新的挑战。阿里云通过Landing Zone和Well-Architected Framework(WAF)帮助企业搭建安全合规、可扩展的多账号环境,并提供涵盖安全、稳定性、效率、成本和性能五大支柱的最佳实践。其中,Landing Zone助企业构建隔离环境,内置财务管理、资源规划等模块;WAF则提供详细指导原则,确保企业在云上的应用环境安全、稳定、高效。此外,阿里云还推出了一系列工具和服务,如身份权限管理、配置审计、成本分析等,助力企业提升云治理成熟度。
|
存储 Linux 持续交付
史上最全 Terraform 入门教程,助你无坑入门!
【10月更文挑战第26天】这是一个全面的 Terraform 入门教程,涵盖了 Terraform 的基本概念、安装步骤、基础配置、变量和输出变量的使用、模块的定义与使用,以及状态管理。通过实例讲解如何创建本地文件资源和 AWS S3 桶,帮助初学者快速上手并掌握 Terraform 的核心功能。
4155 8
|
云安全 存储 运维
首次全面解析云原生成熟度模型:解决企业「诊断难、规划难、选型难」问题
从“上云”到“云上”原生,云原生提供了最优用云路径,云原生的技术价值已被广泛认可。当前行业用户全面转型云原生已是大势所趋,用户侧云原生平台建设和应用云原生化改造进程正在加速。
3663 112
首次全面解析云原生成熟度模型:解决企业「诊断难、规划难、选型难」问题
|
监控 网络安全
zookeeper的日志报will be dropped if server is in r-o mode如何解决
【6月更文挑战第26天】zookeeper的日志报will be dropped if server is in r-o mode如何解决
656 2