首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将Terraform provisioner的" local -exec“输出存储在本地变量中,并在"remote-exec”中使用变量值

在Terraform中,可以使用provisioner来在资源创建过程中执行一些额外的操作。其中,local-exec和remote-exec是两种常用的provisioner类型。local-exec用于在Terraform执行端本地执行命令,而remote-exec用于在创建的资源上远程执行命令。

要将local-exec的输出存储在本地变量中,并在remote-exec中使用该变量的值,可以通过以下步骤完成:

  1. 在Terraform配置文件中定义一个本地变量:
代码语言:txt
复制
variable "command_output" {
  type = string
}
  1. 在资源的provisioner部分使用local-exec,并在命令中将输出值存储到本地变量:
代码语言:txt
复制
provisioner "local-exec" {
  command = "your_command"
  interpreter = ["bash", "-c"]

  environment = {
    TF_VAR_command_output = "${var.command_output}"
  }

  on_failure = continue
}
  1. 在资源的provisioner部分使用remote-exec,并使用存储在本地变量中的值:
代码语言:txt
复制
provisioner "remote-exec" {
  inline = [
    "your_command ${var.command_output}"
  ]
}

通过上述配置,local-exec会执行"your_command"命令,并将输出值存储在本地变量TF_VAR_command_output中。然后,remote-exec会使用存储在TF_VAR_command_output中的值来执行"your_command ${var.command_output}"。

需要注意的是,为了保证变量在local-exec和remote-exec之间的传递,使用了environment参数,并设置了TF_VAR_command_output的值为var.command_output。这样可以确保本地变量的值在不同provisioner中的正确传递。

对于这个问题,腾讯云的产品和服务可以提供以下方面的支持:

  • 腾讯云服务器(CVM):提供云服务器实例,可用于运行Terraform和执行相应的provisioner命令。
  • 腾讯云对象存储(COS):提供数据存储和处理服务,可以存储和管理Terraform执行过程中产生的文件和输出结果。

更多关于腾讯云产品和服务的信息,请参考腾讯云官方文档:

  • 腾讯云服务器(CVM):https://cloud.tencent.com/document/product/213
  • 腾讯云对象存储(COS):https://cloud.tencent.com/document/product/436
相关搜索:如何将exec的结果存储在变量中如何将DNS输出存储在nodejs中的变量中在我的Terraform存储桶策略中,如何将存储桶用作变量?如何将命令的输出作为变量存储在PowerShell中?如何将查询的输出存储在配置单元的变量中如何将sql语句的输出存储在C SHELL中的变量中?Terraform -有没有办法捕获shell脚本输出(从远程vm)并将其存储在Terraform输出(本地/领事上的状态文件)中?Laravel:如何将href id存储在新变量中,并在输入字段中显示或使用?将使用-print0查找的输出存储在变量中如何使用ajax将javascript变量值传递给php变量以存储在codeighter中的会话中如何在本地变量中存储http请求响应并在我的任何文件中使用它?将列名存储在变量中并在SQL Server的查询中使用它如何将fetch的JSON输出保存到一个变量中,并在Javascript中使用?如何将TextInput的值存储到本地存储中,并在应用程序在react native中启动时获取它们?如何将匹配条件存储在可以使用selenium单击的变量中如何将split与存储在变量中的regex一起使用?在WebGL或OpenGL中,使用输出片段变量作为临时存储是不好的吗?如何将查询结果存储在列表中并在以后的neo4j中使用如何使用Angular typescript中存储在本地机器上的csv文件的数据创建变量?如何将getText的结果存储在一个变量中,以便稍后在Nightwatch中使用?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Terraform命令行工具介绍、安装、使用

    文件载体 Provisioner机器上执行操作组件 ⭐Terraform安装与使用 Centos7安装Terraform 查看Terraform版本 常用命令 ⭐Terraform简介 Terraform...Backend:存储state文件载体 因terraform创建资源后,会将资源属性保存在state文件,而这个文件可以放本地,也可以存放在远端,实现state和模板代码分离,这个存放state文件载体就是...Backend分为本地和remote两类,默认为本地。目前已支持多达13远端存储方案,如console、etcd、oss等,可以降低多人协作对state维护成本,也可以保障数据安全性。...Provisioner机器上执行操作组件 用来本地机器或者登录远程主机执行相关操作,如local-exec本地执行命令,chef用来远程主机安装、配置、执行chef client,remote-exec...通常与provider搭配实现,provider创建资源后,使用provisioner创建资源上执行各种操作。

    2.7K40

    Terraform资源定义梳理

    , kubernetes集群叫tencentcloud_kubernetes_cluster 本地名字:资源实例本地存储名字,用于资源之间互相引用, 使用者来定义,这部分必须以字母或者下划线开头,...当我们执行完apply操作时, 新配置块会将云上创建新产品并保存在本地state文件,以便我们后序修改和删除....:只要此元参数资源块配置,terraform就会阻止此资源删除.如果要删除此资源,需要将资源块配置此字段去掉后即可. resource "tencentcloud_redis_instance"..."remote-exec" { inline = [ "sudo yum -y install nginx", "sudo systemctl start nginx"...] } } ignore_changes: 一般情况下,如果terraform发现云上资源字段和本地资源块不一致,会调用更新或者重建来进行同步.这种不一致一般是用户通过控制台操作或者自己调用

    6.6K101

    Terraform几个关键概念

    核心层 核心层其实就是terraform命令行工具,它是用go语言开发,它负责: 读取.tf代码,并对配置文件和代码进行变量取值替换 资源状态文件管理 依据图论,对代码创建资源依赖关系进行分析,...它负责: 初始化以及外界API通信 外界API认证 定义云资源与外界服务关系 Provisioner Provisioner,负责资源创建或者删除完成后,执行一些脚本。...命令式语言是按照步骤执行,先后顺序很重要,对固定输入执行命令式语言会得到固定输出。声明式和命令式并无高下之分,只是云资源编排这一领域,声明式会比较方便实现。...terraform缺省使用本地后台,也就是说,状态文件会存放在当前目录下,terraform代码执行也本地虚拟机运行。...模块由输入参数、输出参数以及主逻辑组成。这就跟传统编程语言里函数很像。Terraform提供了公开模块注册器,模块编写完成以后,只要符合规范,就可以发布到模块注册器让大家使用

    8.2K31

    Terraform实战

    运行terraform init命令可以初始化Terraform。运行该命令将看到如下输出。 资源状态信息存储一个名为terraform.tfstate文件。...这与local_file数据源不同,后者只实现了Read() 图2.3 本地提供程序两个资源分别是管理资源和非管理数据源。...配置块 用于配置Terraform本身,包括版本锁定、状态文件存储位置和提供程序下载 Terraform init 安装本地提供程序之前必须执行 资源块 声明具体资源,例如local_file资源,用于置备特定文件...根模块中有3个输入变量和两个输出值。...图7.9 Create()函数钩子退出之后,Terraform将资源标记为“已创建”之前,会调用local-exec置备程序 图7.10 调用Delete()之前调用local-exec置备程序 cowsay

    37510

    使用 Packer、Ansible 和 Terraform 构建不可变基础设施

    本文主要介绍使用 Terraform 构建通用解决方案。 负载均衡器配置平滑更新 LB + Web Server 这种业务场景下,为了尽量减少服务不可用时间,制定了蓝绿部署解决方案。...除了对该虚拟机组资源 lifecycle 指定 create_before_destroy = true, 还指定了一个 local-exec  provisioner 去优雅停掉旧虚拟机组里应用...lifecycle {    create_before_destroy = true  }   provisioner "local-exec" {    command = "bash ${path.module...provisioner "local-exec" {    command = "bash ${path.module}/scripts/health_check.sh ${self.ipv4_address...将配置和代码迁移至网络文件存储(NFS),虚拟机每次启动时挂载该网络文件存储去读取配置和代码。每次代码或者配置文件更新只需更新挂载文件系统内容。可以极大降低镜像打包频率。

    2.1K00

    Terraform 系列-使用Dynamic Blocks对Blocks进行迭代

    基本概念 Dynamic Blocks 资源(resource)等顶级块结构,表达式通常只能在使用 name = expression 形式为参数赋值时使用。...•iterator 参数(可选)设置了一个临时变量名称,该变量代表复数值的当前元素。如果省略,变量名默认为 dynamic 块(上例为 "setting")标签。...您可以必要时动态生成这些嵌套结构,方法是将 dynamic 模块嵌套在其他 dynamic 模块 content 部分。...如果一个特定资源类型定义了嵌套块,而这些嵌套块类型名称与其父类一个类型名称相同,则可以每个 dynamic 块中使用 iterator 参数来选择一个不同迭代器符号,使两者更容易区分。...过度使用 dynamic 块会使配置变得难以阅读和维护,因此我们建议仅在需要隐藏细节以便为可重用模块构建简洁用户界面时使用它们。可能情况下,一定要按字面意思写出嵌套模块。

    33420

    tke上如何使用local-volume

    kubernetes从1.10版本开始支持local volume(本地卷),workload(不仅是statefulsets类型)可以充分利用本地快速SSD,从而获取比remote volume(如cephfs...local volume出现之前,statefulsets也可以利用本地SSD,方法是配置hostPath,并通过nodeSelector或者nodeAffinity绑定到具体node上。...但hostPath问题是,管理员需要手动管理集群各个node目录,不太方便。 下面两种类型应用适合使用local volume。 数据缓存,应用可以就近访问数据,快速处理。...分布式存储系统,如分布式数据库Cassandra ,分布式文件系统ceph/gluster 下面会先以手动方式创建PV、PVC、Pod方式,介绍如何在tke使用local volume。...最后这里不建议大家使用local-volume来进行存储,因为现在需要手动创建pv才能正常挂载,这样会很麻烦,如果程序对cbs盘有性能要求,大家可以用tke默认cbs挂载,cbs组件支持不同类型云硬盘

    90040

    30 分钟玩转 Kubernetes 持久化存储之 NFS 实战入门

    #镜像拉取地址,默认可能拉取不下来,建议替换成本地或是其他可正常访问仓库,也可以使用我DockerHub上 unopsman/nfs-subdir-external-provisioner...0 7.8G 0% /proc/scsitmpfs 7.8G 0 7.8G 0% /sys/firmware注意: 输出结果我们可以看到挂载...nfsnobody 0 Nov 30 14:01 SUCCESS-rw-r--r-- 1 nfsnobody nfsnobody 2097152000 Nov 30 14:04 test.img输出结果...清理所有的 PVC(可以选择 KubeSphere 管理控制台页面清理,可视化看着更全面清晰)手工清理 NFS 存储残留以 archived- 命名所有数据目录(可选,谨慎操作)使用 Helm...总结本文实战演示了操作系统 CentOS 7.9 x64 上安装配置 NFS 详细过程,同时,也详细讲解了基于 KubeSphere 部署 Kubernetes 集群使用 helm 方式安装

    3.1K12

    Kubernetes运维-持久化存储卷实践与管理

    存储卷按照其类型可以简单地分为本地存储卷、网络存储卷、分布式存储和云存储。...这些不同类型存储提供了灵活选择,以满足各种应用程序持久化存储需求。 本地存储卷: emptyDir:可用于临时数据存储Pod删除时数据也会被清除。...hostPath:允许将宿主机目录映射到Pod,提供直接本地存储支持。 网络存储卷: NAS类:如NFS等,提供基于网络文件系统共享。 SAN类:包括iSCSI、FC等,提供块级存储访问。...本文将着重探讨Kubernetes本地存储卷和网络存储卷(特别是NFS),以及它们实际应用使用方法和最佳实践。...这个 StorageClass 名字,叫作 local-storage,也就是我们 PV 声明,需要注意是, provisioner 字段,我们指定是 no-provisioner

    36210

    vagrant学习笔记 - provision

    upload_path boolean 上传到vm路径,缺省是/tmp/vagrant-shell keep_color boolean 设置是否脚本自身控制颜色,缺省为false,表示使用绿色和红色来显示输出到...3.1.3 使用规则 3.1.3.1 单行脚本 helloword只是一个开始,对于inline模式,命令只能在写在一行。.../sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games Tips: 环境变量可以引用已经存在环境变量...Tips: env新增环境变量,是顺序执行赋值操作,实例JAVA_HOME,系统中原来是没有的,如果JAVA_HOME和PATH这两个参数顺序换一下,把JAVA_HOME放在后面,PATH拼接JAVA_HOME.../games:/usr/local/games Tips: provision里设置环境变量,只对provision自身操作有效,vagrant ssh 登录vm,里边变量值是不会变

    1.4K20

    如何在 Kubernetes 集群搭建一个复杂 MySQL 数据库?

    若要确保 MySQL 重启后数据仍然存在,我们需为其配置可持久化存储,我这里实验环境使用Local Persistent Volume,也就是说,我希望 Kubernetes 能够直接使用宿主机上本地磁盘目录...所以,一个 本地存储 Volume 对应存储介质,一定是一块额外挂载宿主机磁盘或者块设备(“额外”意思是,它不应该是宿主机根目录所使用主硬盘)。..." persistentVolumeReclaimPolicy: Retain #表示使用本地存储 local: path: /mnt/disks/vol1 #使用local pv...参数必需进行设置 #由于demo中使用本地存储,所以这里写kubernetes.io/no-provisioner. provisioner: kubernetes.io/no-provisioner...需要注意是, provisioner 字段,我们指定是 no-provisioner

    4.5K20

    Terraform:多云、混合云环境下实现基础设施即代码

    下面是如何将安全组资源from_port和to_port参数,设置为变量server_port示例。 在用户数据脚本设置端口时,最好使用相同输入变量。...Terraform还允许通过使用以下语法来定义输出变量 NAME是输出变量名字,VALUE是任何你希望输出Terraform表达式。CONFIG包含两个可选参数。...还有一种更好方法可以避免意外将机密信息以纯文本形式存储磁盘上,即使用命令行友好机密信息存储区,例如 pass(见参考资料第3章[10])使用子进程安全地将机密信息从pass读取到环境变量。...Terraform注册中心可以自动解析模块输入和输出,因此那些输入变量输出变量也将显示界面,包括type和description字段,如图6-5所示。...,并在该分支上执行terraform apply 实时存储主代码分支应该以1:1形式完全代表生产环境实际部署内容。

    70710

    Kubernetes 部署 MySQL 主从服务

    若采用本地存储,当服务漂移后数据并不会随着服务转移到新节点,重启服务就会出现数据丢失困境。...为了降低实验外部依赖,存储层面上,我采用本地存储,当然生产上不建议这样做,生产环境存储推荐官方介绍到 gce、nfs、ceph等存储方案,因为这些方案支持动态供给特性,允许开发人员通过 pvc...定义,快速实现数据有效存储,所以你绝不应该把一个宿主机上目录当作 PV 使用, 只是本文用于实验需要,采用 Local Persistent Volume 手段,目的只是为了验证 Statefulset...本地存储原理 为了快速搭建测试环境,我们这里使用本地存储,也就是说,用户希望 Kubernetes 能够直接使用宿主机上本地磁盘目录,而不依赖于远程存储服务,来提供持久化容器 Volume。...当然行,但是这变相破坏了开发人员对资源对象定义规范了,开发人员应该不需要时刻考虑调度细节。调度改动应该交给运维就行。所以我们为了实现本地存储,我们采用了 延迟绑定 方法。

    2.6K31

    Terraform 最佳实践:典型文件布局

    每个应用程序甚至都应该驻留在单独文件夹,与其他应用程序隔离 •data-storage:在此环境运行数据存储,例如 MySQL 或 Redis。...每个数据存储应该驻留在它自己文件夹,与其他数据存储隔离。...文件 每一个组件,都会有相应 Terraform 配置文件,其命名规则如下: •vars.tf: 输入变量 •outputs.tf: 输出变量 •main.tf: 资源定义 •user-data.sh...•terraform.tfvars(or *.auto.tfvars): (可选),terraform plan 及 apply 默认会传入该文件变量值 •main.tfvars:(可选),terraform...环境变量传值非常适合在自动化流水线中使用,尤其适合用来传递敏感数据,类似密码、访问密钥等 References [1] Terraform 系列文章: https://ewhisper.cn/tags/

    2.9K31

    KubeSphere 最佳实战:探索 Kubernetes 持久化存储之 NFS 终极实战指南

    Kubernetes 生态系统,持久化存储扮演着至关重要角色,它是支撑应用稳定运行基石。...7.6G 0% /proc/scsi tmpfs 7.6G 0 7.6G 0% /sys/firmware 注意: 输出结果我们可以看到挂载...测试存储空间是否能超限(分配1G,使用2G) # 写入 2G 数据 $ kubectl exec test-nfs-pod -- dd if=/dev/zero of=/mnt/test-nfs.img...nobody 0 Jul 11 21:45 SUCCESS -rw-r--r--. 1 nobody nobody 2097152000 Jul 11 21:47 test-nfs.img 输出结果...清理所有使用 PVC 资源 Pod(谨慎操作) 清理所有的 PVC(可以选择 KubeSphere 管理控制台页面清理,可视化更全面、更清晰) 手工清理 NFS 存储残留以 archived

    48810
    领券