Terraform数据源

数据源允许查询或计算一些数据以供其他地方使用。
使用数据源可以使得Terraform代码使用在Terraform管理范围之外的一些信息,或者是读取其他Terraform代码保存的状态。
每一种Provider都可以在定义一些资源类型的同时定义一些数据源。

通常来讲,在同一个云服务产品下有不同的资源和对应的数据源,资源(resource)用于对远程基础设施进行增删改,数据源(data)用于对远程基础设施进行查询。
如下图所示为AWS中EBS产品下对应的资源和数据源:

声明数据源

数据源通过data块声明:

data "aws_ami" "example" {most_recent = trueowners = ["self"]tags = {Name   = "app-server"Tested = "true"}
}

一个data块请求Terraform从一个指定类型的数据源aws_ami读取指定数据并且把结果输出到Local Name为example的实例中。
可以在同一模块内的代码中通过数据源名称来引用数据源,但无法从模块外部直接访问数据源。

同资源类似,一个数据源类型以及它的名称一同构成了该数据源的标识符,所以数据源类型加名称的组合在同一模块内必须是唯一的。

在data块体中是传给数据源的查询条件,查询条件参数的种类取决于数据源的类型,在上述例子中,most_recentownerstags都是定义查询aws_ami数据源时使用的查询条件,详见ami#argument-reference

数据源参数

每一种数据源资源都关联到一种外部数据源,数据源类型决定了它接收的查询参数以及输出的数据,每一种数据源类型都属于一个Provider。
大部分data块内的数据源参数都是由对应的数据源类型定义的,这些参数的赋值可以使用完整的Terraform表达式能力或其他Terraform语言的功能。
与资源(resource)类似,Terraform也为所有类型的数据源定义了一些元参数。

数据源行为

如果数据源的查询参数涉及到的表达式只引用了字面量或是在执行terraform plan时就已知的数据(比如输入变量),那么数据源会在执行Terraform的”refresh”阶段时被读取,然后Terraform会构建变更计划,这保证了在制定变更计划时Terraform可以使用这些数据源的返回数据。

如果查询参数的表达式引用了那些只有执行部分执行变更计划以后才能知晓的数据,比如另一个还未被创建的托管资源的输出,那么数据源的读取操作会被推迟到”apply”阶段,任何引用该数据源输出的表达式的值在执行到数据源被读取完之前都是未知的。

本地数据源

虽然绝大多数数据源都对应了一个通过远程基础设施API访问的外部数据源,但是也有一些特殊的数据源仅存在于Terraform进程内部,计算并对外输出一些数据。

比如说,本地数据源有template_filelocal_fileaws_iam_policy_document等。

本地数据源的行为与其他数据源完全一致,但他们输出的结果数据只是临时存在于Terraform运行时,每次计算一个新的变更计划时这些值都会被重新计算。

数据源的依赖关系

数据源有着与资源(resource)一样的依赖机制,也可以在data块内设置depends_on元参数来显式声明依赖关系。

多数据源实例

与资源(resource)一样,数据源也可以通过设置countfor_each元参数来创建一组多个数据源实例,并且Terraform也会把每个数据源实例单独创建并读取相应的外部数据,对count.indexeach的使用也是一样的,在countfor_each之间选择的原则也是一样的。

指定Provider实例

同资源(resource)一样,数据源也可以通过provider元参数指定使用特定Provider实例。

数据源的生命周期

同资源不一样,数据源目前不可以通过设置lifecycle块来定制化生命周期,但数据源内部lifecycle被设置为保留关键字以备将来可以支持该功能。

引用数据源

引用数据源数据的语法是data.<TYPE>.<NAME>.<ATTRIBUTE>

# 定义aws_ami数据源
data "aws_ami" "web" {filter {name   = "state"values = ["available"]}filter {name   = "tag:Component"values = ["web"]}most_recent = true
}# 引用数据源
resource "aws_instance" "web" {ami           = data.aws_ami.web.idinstance_type = "t1.micro"
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/8119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企微SCRM私域工具:深度解析与全面应用

随着数字化时代的来临&#xff0c;企业微信已成为众多企业进行内部沟通与外部营销的重要平台。而在这个大背景下&#xff0c;企微SCRM私域工具应运而生&#xff0c;为企业提供了一种全新的、高效的客户关系管理方式。本文将详细介绍企微SCRM私域工具的功能、特点、优势、适用场…

目标检测CNN 目标检测发展历程 应用场景 智慧交通 自动驾驶 工业生产 智慧医疗

目标检测 目标检测是计算机视觉领域中的一个重要任务,其主要目的是让计算机能够自动识别图像或视频帧中所有目标的类别,并在目标周围绘制边界框以标示出每个目标的位置。 目标检测的过程通常包括两个主要步骤:目标定位和目标分类。目标定位是确定图像中是否存在感兴趣的目…

标准引领 | 竹云参编《面向云计算的零信任体系》行业标准正式发布!

近日&#xff0c;中华人民共和国工业和信息化部公告2024年第4号文件正式发布行业标准&#xff1a;YD/T 4598.1-2024《面向云计算的零信任体系 第1部分&#xff1a;总体架构》&#xff08;后简称“总体架构”&#xff09;&#xff0c;并于2024年7月1日起正式实施。 该标准汇集大…

【噪声学习】噪声标签的鲁棒点云分割

Robust Point Cloud Segmentation with Noisy Annotations 事实上,与二维图像标注[1]、[2]相比,三维数据的干净标签更难获得。这主要是因为1)需要标注的点数通常非常庞大,例如在 ScanNetV2 [3] 中标注一个典型的室内场景时,需要标注百万量级的点数;2)标注过程本身更加复…

测评工作室的养号成本,效率,纯净度,便捷性等问题怎么解决?

大家好&#xff0c;我是南哥聊跨境&#xff0c;最近有很多做测评工作室的朋友找到南哥&#xff0c;问我有什么新的测评养号系统可以解决成本&#xff0c;效率&#xff0c;纯净度&#xff0c;便捷性等问题 测评养号系统从最早的模拟器、虚拟机到911、VPS、手机设备等&#xff0…

【代码随想录——字符串】

1. KMP算法 最长相等前后缀 1.1 如何计算前缀表 前缀&#xff1a;是包含首字母&#xff0c;不包含尾字母的所有子串后缀&#xff1a;是包含尾字母&#xff0c;不包含首字母的所有子串 求最长相等前后缀的长度 假设我们有一个模式串&#xff1a;aabaaf 模式最长相等前后缀最…

海外盲盒系统APP:加速开拓海外盲盒市场

近年来&#xff0c;潮玩逐渐受到大众的关注&#xff0c;尤其在盲盒的爆火下&#xff0c;人们对潮玩市场的需求不断增长。 在盲盒的增长下&#xff0c;我国盲盒开始向海外市场发展。海外消费者对盲盒同样有强烈的购买和收藏欲望&#xff0c;海外庞大的消费群体也为我国盲盒出海…

矩阵的对称正定性判决(复习)

文章目录 本科学的数学知识忘的太快了 如何判断一个实矩阵是否是对称正定 在线性代数中&#xff0c;一个实对称矩阵是否为正定可以通过以下方法判断&#xff1a; 对称性&#xff1a; 首先&#xff0c;确认矩阵是否对称&#xff0c;即矩阵的转置是否等于其本身。 特征值检查&…

typescript 模块化

模块的概念&#xff1a; 把一些公共的功能单独抽离成一个文件作为一个模块。 模块里面的变量、函数、类等默认是私有的&#xff0c;如果我们要在外部访问模块里面的数据&#xff08;变量、函数、类&#xff09;&#xff0c;需要通过export暴露模块里面的数据&#xff08;&#…

ShardingSphere5.3.0配置单数据源分表

本篇文章只适用于已知表数量的,不适合动态创建表。 1、配置文件 spring:datasource:type: com.alibaba.druid.pool.DruidDataSourceusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/db?useUnicode=true&use…

vpp文档的生成

1 生成文档 系统为Ubuntu 18.04.6 LTSgit clone下载相关的vpp源码&#xff0c;比如V20.01执行如下命令&#xff0c;生成代码对应的文档到{$top}/build-root/docs/html目录 #在top目录执行命令&#xff0c;安装依赖 make bootstrap-doxygen#在top目录执行命令&#xff0c;生成…

qt5-入门-xml文件读写

本地环境&#xff1a; win10专业版&#xff0c;64位&#xff0c;Qt 5.12 代码已经测试通过。其他例子日后更新。 假设需要读写的xml文档结构如下图所示&#xff1a; 那么首先需要修改.pro文件&#xff0c;增加一句&#xff1a; 然后执行qmake。 代码 #include <QtXml/Q…

【XR806开发板试用】基于MQTT与Cjson库的花式点灯

一、项目介绍 久闻openharmony大名&#xff0c;一直没有机会接触&#xff0c;感谢极术社区和全志社区的这次活动&#xff0c;让我能够了解并上手这个系统。 openhamony 1.1的内核是基于liteos内核系统进行构建的&#xff0c;liteos作为物联网系统&#xff0c;结合xr806小型开…

【Git】Commit后进行事务回滚

起因 因为一直使用git add .&#xff0c;在学习pytorch中添加了一个较大的数据集后&#xff0c;导致git push失败&#xff0c;而这个大数据集并不是必须要上传到仓库的&#xff0c;但是因为自己在设置.gitignore前已经进行了git comit&#xff0c;所以&#xff0c;需要进行事务…

十九、分布式数据库MyCat

目录 一、概述 1、MyCat是什么&#xff1f; 2、原理&#xff1a; 3、能干什么 1、读写分离 2、数据分片 3、多数据源整合 4、Mycat监控 4、安装部署 1、环境准备 2、安装 3、Mycat配置详解 1、server.xml user 标签 2、schema.xml schema标签&#xff1a; table标签&…

Android:展锐T710平台DDR定频和降频

ddr定频的pac&#xff0c;或者fdl1和spl的bin&#xff0c;比如定频到384 降频&#xff1a;&#xff08;可选频点&#xff1a;256&#xff0c;384&#xff0c;667&#xff0c;768&#xff0c;1024&#xff0c;1333&#xff0c;1536&#xff0c;1866&#xff09; /bsp/bootloader…

js中super关键字的使用

super关键字可以使用于对象,也可在类中使用,下面分别来说 对象 let parent {name: lili,getName(){console.log(this.name)} } let son {name: mike,getName(){super.getName()} } Object.setPrototypeOf(son, parent) son.getName() // mike可以看到对象中“方法”通过supe…

宜选影票在线选座电影票小程序开发如何获取api接口?

要开发一个在线选座电影票小程序并获取API接口&#xff0c;你需要遵循几个关键步骤。以下是通常的流程&#xff1a; 明确需求和目标&#xff1a; 在开始之前&#xff0c;明确你的小程序需要哪些功能&#xff0c;例如电影查询、场次查询、在线选座、购票支付等。确定你需要从AP…

普通人适合做大模型吗?过程中会发生什么潜在的挑战?

对于普通人来说&#xff0c;直接进行大模型的研发和训练可能存在一定的挑战&#xff0c;因为这通常需要以下资源和知识&#xff1a; 专业知识&#xff1a; 大模型的开发需要深入理解机器学习、深度学习、神经网络等领域的知识。 计算资源&#xff1a; 大模型的训练需要高性能的…

Docker基本操作 挂载数据卷

在创建一个容器的时候让容器挂载到一个数据卷: 命令:docker run --name mn -p 80:80 -v html:/usr/share/nginx/html -d nginx 这里的数据卷如果没有提前创好会自动创建 下边是命令解析 将容器挂载到一个数据卷之后 可以在查看数据卷的目录 在数据卷的目录可以找到容器的内容…