活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 12.12年度钜惠 NEW 爆款云主机2核2G仅需28.8元/年,X实例35.1元/半年起! 8代机+XSSD新客专享2.5折!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云AI产品特惠 NEW 人脸识别+文字识别焕新,新用户免费试用
  • 中小企业服务商合作专区 国家云助力中小企业腾飞,高额上云补贴重磅上线
  • 出海产品促销专区 NEW 爆款云主机低至2折,高性价比,不限新老速来抢购!
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

息壤智算

领先开放的智算服务平台,提供算力、平台、数据、模型、应用“五位一体”智算服务体系,构建全流程的AI基础设施能力
智算云(DeepSeek专区)
AI Store
  • 算力市场
  • 模型市场
  • 应用市场
  • MCP市场
算力互联调度平台
  • 裸金属
  • 定制裸金属
训推服务
  • 模型开发
  • 训练任务
  • 服务部署
模型推理服务
  • 模型广场
  • 体验中心
  • 服务接入
应用托管
  • 应用实例
科研助手
  • 科研智能体
  • 科研服务
  • 开发机
  • 并行计算
大模型
  • DeepSeek-V3.1
  • DeepSeek-R1-0528
  • DeepSeek-V3-0324
  • Qwen3-235B-A22B
  • Qwen3-32B
智算一体机
  • 智算一体机
模型适配专家服务
  • 模型适配专家服务
算力服务商
  • 入驻算力服务商

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场进入AI Store创新解决方案智云上海应用生态专区
AI应用
  • 泛微合同管理解决方案
  • 泛微数智大脑Xiaoe.AI解决方案
  • MaxKB知识库解决方案
  • 天翼AI文创
AI服务
  • 昆仑AI训推服务解决方案
  • 国信模型服务解决方案
企业应用
  • 翼电子签约解决方案
  • 翼协同解决方案
  • 翼电签-契约锁解决方案
  • 翼视频云归档解决方案
教育应用
  • 翼电子教室
  • 潜在AI教育解决方案
建站工具
  • SSL证书
  • 翼定制建站解决方案
  • 翼多端小程序解决方案
办公协同
  • 天翼云企业云盘
  • 安全邮箱
灾备迁移
  • 云管家2.0
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)

定价

协助您快速了解云产品计费模式、价格详情,轻松预估上云成本
价格计算器
  • 动态测算产品价格
定价策略
  • 快速了解计费模式

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼信创云专区
  • 信创云专区
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 服务保障
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家
我要反馈
  • 建议与反馈
  • 用户体验官
信息公告
  • 客户公告

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 息壤智算
  • 产品
  • 解决方案
  • 应用商城
  • 定价
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      文档中心

      资源编排ROS

      资源编排ROS

      • 资源编排ROS

      无数据

        • 产品动态
        • 产品介绍
        • 产品定义
        • 功能特性
        • 产品优势
        • 应用场景
        • 基本概念
        • 与其它服务关系
        • 使用限制
        • 计费说明
        • 计费说明
        • 快速入门
        • 创建一台包年包月云主机
        • 用户指南
        • 创建模板
        • 更新模板
        • 查询模板
        • 模板对比
        • 资源栈状态说明
        • 创建资源栈
        • 更新资源栈
        • 查询资源栈
        • 删除资源栈
        • 查询执行计划
        • 部署资源栈/执行计划
        • 模板参考
        • 概述
        • 版本与支持资源
        • 语法指南
        • 基本语法
        • 常见函数
        • 样式约定
        • 表达式
        • 配置指南
        • Provider
        • Resource
        • Data Source
        • Variable
        • Meta-arguments
        • 模板约束与限制
        • 核心约束与限制
        • 重要警告
        • 模板示例
        • 创建一台包年包月云主机
        • 配置弹性负载均衡
        • 创建MySOL数据库
        • 常见问题
        • 基础概念类
        • 使用问题类
        • 最佳实践
        • 创建一个高可用架构
        • API参考
        • API使用说明
        • 视频专区
        • 文档下载
        • 相关协议
        • 资源编排ROS产品服务协议
          无相关产品

          本页目录

          帮助中心资源编排ROS模板参考配置指南Variable
          Variable
          更新时间 2025-12-18 13:57:17
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          最近更新时间: 2025-12-18 13:57:17
          分享文章
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接

          本地变量

          本地变量可以理解为模块中的临时变量,其作用范围在所声明的模块内,通过关键字 locals 进行声明。本地变量适用于配置中有重复定义相同值或表达式的场景,可以减少代码冗余,并且易于修改。同时过度使用本地变量会导致变量的实际值被隐藏,代码晦涩,不利于维护,因此建议合理使用本地变量。

          • 输入变量就像函数参数。

          • 输出变量就像函数返回值。

          • 本地变量就像函数的临时局部变量。

          本地变量声明

          一组相关的局部变量可以在一个locals 块中一起声明:

          locals {
            service_name = "forum"
            owner        = "Community Team"
          }

          本地变量的赋值不仅限于文本常量,它们还可以引用模块中的其他值以进行转换或组合,包括变量、资源属性或其他本地值:

          locals {
            security_group_ids = concat(ctyun_security_group.sg1.id, ctyun_security_group.sg2.id)
          }
          
          locals {
            common_tags = {
              Service = local.service_name
              Owner   = local.owner
            }
          }

          本地变量的引用

          声明了局部值,您就可以在表达式中引用它 local.<NAME>。

          resource "ctyun_ecs" "ecs_test" {
            instance_name = local.service_name
            ...
          }

          输入变量

          输入变量声明

          输入变量是一种无需更改模块自身的源代码,可以自定义名称和输入值。输入变量允许您在不同的 Terraform 配置之间共享模块,从而使您的模块可组合且可重用。

          在配置的根模块中声明变量时,可以使用 Terraform CLI 输入或者通过环境变量设置它们的值。在子模块中声明变量时,调用模块应该在module代码块中传递值。

          variable "image_id" {
            type = string
          }
          
          variable "password" {
            type        = string
            sensitive   = true
            nullable    = false
            description = "手动输入密码"
          }
          
          variable "dns" {
            type    = list(string)
            default = [
              "114.114.114.114",
              "8.8.8.8",
              "8.8.4.4"
            ]
          }
          
          
          variable "az_info" {
            type = list(object({
              availability_zone_name  = string
              availability_zone_count = number
              node_type               = string
            }))
            default = [
              {
                availability_zone_name  = "cn-gs-qyi2-1a-public-ctcloud"
                availability_zone_count = 1
                node_type               = "master"
              }
            ]
          }

          上述是 variable 的定义,关键字 variable 后的标签是变量名称,该名称在同一模块的所有变量中必须是唯一的。变量名称由用户自定义,但用户需要注意一下字段不可作为变量名称:source, version, providers, count, for_each, lifecycle, depends_on 和 locals。关于 {} 中定义的属性可参考输入变量参数的内容。

          输入变量参数

          Terraform CLI 为变量声明定义了以下可选参数

          • default:配置 variable 的默认值,当配置默认值后,CLI交互时可不为变量赋值

          • type:声明 variable 的值类型,如果未明确指定变量类型,则默认为 string。取值分为以下几种:string

            • number

            • bool

            • list(<TYPE>)

            • set(<TYPE>)

            • map(<TYPE>)

            • object(<ATTR NAME> = <TYPE>, ...)

            • tuple([<TYPE>,...])

          • description:变量的备注

          • validation:输入值约束,可定义一个验证规则用于限制变量取值范围

          • sensitive:将变量定义为敏感变量,定义后,Terraform UI不会将其打印出来。取值范围为true或false

          • nullable:控制是否可以将值分配null给该变量,默认值为true,当 nullable 为时true,null 是变量的有效值,并且模块配置必须始终考虑变量值为 null 的可能性

          输入变量的引用

          输入变量可以通过 var.<变量名称> 的形式访问,且只能在声明该变量的模块内访问:

          variable "vpc_cidr" {
            type        = string
            description = "the CIDR of VPC"
          }
          
          resource "huaweicloud_vpc" "vpc_example" {
            name        = "tf-vpc"
            cidr        = var.vpc_cidr
            description = "terraform测试使用"
            enable_ipv6 = true
          }

          设置变量方式

          • 通过命令行中 -var 选项指定

          • 通过变量定义文件 (.tfvars),在命令行中指定或自动加载

          • 设置环境变量

          命令行变量定义

          要在命令行上指定单个变量,请 -var 在运行 terraform plan 和 terraform apply 命令时使用该选项:

          terraform apply -var="image_id=ami-abc123"
          terraform apply -var='image_id_list=["ami-abc123","ami-def456"]' -var="instance_type=t2.micro"
          terraform apply -var='image_id_map={"us-east-1":"ami-abc123","us-east-2":"ami-def456"}'

          您可以多次使用 -var 在单个命令中设置几个不同的变量。

          变量定义 (.tfvars) 文件

          如果配置中使用了很多变量,建议使用变量定义文件来设置这些变量,然后通过 -var-file 选项指定该文件:

          terraform apply -var-file="examples.tfvars" 变量定义文件使用与 Terraform 语言文件相同的基本语法,但仅包含变量名称分配:

          image_id = "ami-abc123"
          dns      = [
            "114.114.114.114",
              "8.8.8.8",
              "8.8.4.4"
          ]

          Terraform 还会自动加载一些变量定义文件:

          • 文件名为 terraform.tfvars 或 terraform.tfvars.json 的文件

          • 文件名称以 .auto.tfvars 或 .auto.tfvars.json 结尾的文件

          对于以 .json 结尾的文件,需要使用 JSON对象表示:

          {     
              "vpc_name": "my_vpc"
              "az_info": [         
                   {           
                       availability_zone_name  = "cn-gs-qyi2-1a-public-ctcloud"           
                       availability_zone_count = 1           
                       node_type                  = "master"         
                   }     
               ] 
           }

          环境变量定义变量

          作为定义变量的备用方案,Terraform 在其自身进程的环境中搜索以 TF_VAR_  声明变量的名称命名的环境变量。

          在自动化运行 Terraform 时,或者使用相同变量连续运行一系列 Terraform 命令时非常有用。例如,在bashUnix 系统的提示符下:

          $ export TF_VAR_image_id=ami-abc123
          $ terraform plan
          ...

          变量定义优先级

          您可以自由组合使用上述设置变量的方式。对于复合类型的变量,为了提高可读性并避免转义带来的问题,建议使用变量定义文件来设置。如果为同一个变量分配了多个值,Terraform 将使用最后一个值进行覆盖。Terraform 根据以下顺序加载变量 (根据顺序,后面的源优于前面的源):

          1. 环境变量

          2. terraform.tfvars 或 terraform.tfvars.json 文件

          3. *.auto.tfvars 或 *.auto.tfvars.json 文件

          4. 命令行中的 -var 和 -var-file 选项

          输出变量

          输出变量声明

          输出变量可在命令行上提供用户需要的信息,并可公开其他 Terraform 配置使用的信息。输出变量类似于编程语言中的返回值,是一种对外公开部分信息的方式。

          输出变量有多种用途:

          • 子模块可以使用输出将其资源属性的子集公开给父模块。

          • 根模块可以在运行 terraform apply/output 后 在CLI上打印特定值。

          按照约定,输出变量通过“output”关键字进行声明:

          output "az_name" {
            value = data.ctyun_zones.az.zones[0]
          }

          关键字 output 后面紧跟的标签是 output 名称,它必须是有效的标识符。在根模块中,此名称显示给用户;在子模块中,它可用于访问输出的值。

          参数 value 采用一个赋值表达式,将结果返回给用户。在本例中,该表达式指的是将data source ctyun_zones中变量*az.zones[0]*输出。任何有效的表达式都可以作为输出值。

          输出变量参数

          output 块可以选择性地包含 description、sensitive 和 depends_on 参数,这些内容将在以下章节中进行描述。

          • description:输出变量注释

          • sensitive:限制是否在CLI 上输出

          • depends_on:明确输出依赖关系

          output "eip_addr" {
            value       = ctyun_eip.eip_example.address
            description = "EIP实例的公网地址"
          }
          
          output "db_password" {
            value       = ctyun_mysql_instance.mysql_examples.password
            description = "mysql实例的root密码"
            sensitive   = true
          }
          
          
          output "instance_ip_addr" {
            value       = ctyun_eip.eip_example.address
            description = "EIP实例的公网地址"
            depends_on = [
              ctyun_security_group_rule.sg_rule_example,
            ]
          }

          注意:标记为敏感项的输出变量在输出时会自动被隐藏,但其输出值仍然可以通过以下方式可见:

          • 输出变量的值记录在 state 文件中,其值对所有能够访问state 文件的用户均可见.

          • 子模块中敏感输出变量值被父模块调用,通过父模块的相关输出和资源引用后可以在CLI中显示。

          文档反馈

          建议您登录后反馈,可在建议与反馈里查看问题处理进度

          鼠标选中文档,精准反馈问题

          选中存在疑惑的内容,即可快速反馈问题,我们会跟进处理

          知道了

          上一篇 :  Data Source
          下一篇 :  Meta-arguments
          搜索 关闭
          ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
          公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
          备案 京公网安备11010802043424号 京ICP备 2021034386号
          ©2025天翼云科技有限公司版权所有
          京ICP备 2021034386号
          备案 京公网安备11010802043424号
          增值电信业务经营许可证A2.B1.B2-20090001
          用户协议 隐私政策 法律声明