云应用 使用安装参数、变量和输出

这篇说说腾讯云云应用安装参数的声明与使用方法,涵盖在package.yaml中配置参数、在tf文件中引用变量,以及通过output输出安装结果,帮助客户定制网络、机型、安全组等部署选项。 安装参数声明:通过package.yaml的args字段定义参数,支持子网选择、机型选择等组件。 变量使用:所有变量需在tf文件中声明,包括系统变量、应用变量和普通变量。 输出结果:通过output声明安装结果,如访问URL和管理密。

相关产品
云应用 产品页,含版本规格、价格与购买入口。

一、安装参数

安装参数可以让客户将软件以合适的方式来安装,常见的场景有:

·选择安装在指定的私有网络(VPC)和子网(Subnet)内,从而实施网络规划。

·选择客户的安全组(Security Group),从而实施网络访问策略。

·选择使用的机型,从而更好贴合用户的实际容量。

·选择最终部署的域名和证书,从而让证书可以自动化部署。

二、在 package.yaml 声明安装参数

安装包可以在 package.yaml 中声明安装参数,云应用将为这些声明的安装参数生成相应的安装界面。以下示例来自云应用模板 CT_001_cvm-ip。

# <package.yaml># 自定义安装参数,通过 widget 来声明安装表单获取args: – name: app_target label: 目标网络 widget: subnet-select – name: cvm_type label: 云服务器类型 widget: cvm-instance-type-select region: ${app_target.region} zone: ${app_target.subnet.zone} – name: sg label: 安全组 widget: security-group-select regions: – ${app_target.region}

声明安装参数时,package.yaml 中使用到的字段,解释如下:

字段 说明
args 用 args 声明参数列表,每一项是一个参数。安装界面会按照声明的顺序渲染安装组件。
args[i].name 参数标识,这个也是后续在 Terraform 中要声明使用的变量名。
args[i].label 参数名,安装界面会展示参数名。
args[i].widget 参数使用的安装组件,支持的组件详见 安装参数手册。
args[i].regionargs[i].zone… 参数的安装组件配置,不同的组件类型有不同的配置字段,详见 安装参数手册。组件的配置,一般为用户输入时提供更为精细的选择范围。例如,用户已经选择了目标网络之后,则服务器类型,可以限定到目标子网支持的示例类型范围,避免无效选择。
args[i].when (高级用法)参数的出现条件。参数默认不会在安装界面出现,只有满足 when 的条件时出现。可用于做安装组件的表单联动。
args[i].hidden (高级用法)参数的隐藏条件。参数默认件会在安装界面出现,当满足 when 的条件时隐藏。可用于做安装组件的表单联动。
args[i].validator (高级用法)参数的校验规则,可帮助用户减少配置失误。

三、在 tf 文件中使用安装参数

在 package.yaml 文件中定义好安装参数后,就可以在 tf 文件中声明使用。以下示例来自 CT_001_cvm-ip。

# <variable.tf># CVM 机型选择变量variable "cvm_type" { type = object({ region = string region_id = string zone = string instance_type = string })}

不同类型的安装参数,变量值的 type 是不同的,详见 安装参数手册。

声明后,就可以当做普通的 Terraform 变量使用了。

# <deployment.tf>resource "tencentcloud_instance" "demo_cvm" { # CVM 机型 instance_type = var.cvm_type.instance_type}

四、声明变量

安装包中,所有用到的变量,都需要进行声明才能使用:

# <variable.tf># CVM 机型选择变量variable "cvm_type" { type = object({ region = string region_id = string zone = string instance_type = string })}

跟资源块类似,使用变量块 variable 声明一个变量,上面的声明中 cvm_type为变量名,在资源块中用 var.cvm_type 即可引用。

五、变量分离实践

使用变量可以有效管理资源的编排参数。例如,服务商有两个编排架构基本一致的组件,只是服务器镜像不一样,就可以将镜像 ID 抽取成变量。

在实践中,推荐安装包的 infrastructure 目录按照 variable.tf 和 deployment.tf 来分离变量和编排的部分。可以参考云应用的模板库,获取更多实践思路。

六、变量类型

在安装包中,可使用的变量分为两种:系统变量和应用变量。

·系统变量:用于提供部署所需信息,如镜像仓库地址与凭据、CAM 角色信息等,以 cloudapp_ 为前缀,所有安装包均可使用。

·参数变量:在 package.yaml 定义的应用参数会生成对应的应用变量,变量名就是参数名。

·普通变量:应用自己声明自己使用的变量,例如云服务器镜像 ID、数据库基本设置等。

关于系统变量的清单和信息,请参见 系统变量手册。关于应用参数的配置方法,请参见 应用安装参数手册。

注意:使用变量必须声明

注意:即使系统变量和应用变量的值都是自动注入,在 TF 文件使用时却必须声明。不声明而直接使用的变量,会导致安装包打包失败。

七、输出

应用安装后的结果,需要提供给客户。例如应用的访问地址、管理系统的地址或者管理系统的初始密码等。可以通过在 tf 文件中声明 output 实现。

output "main" { value = "https://my.${var.selected_domain}" # value = "http://${tencentcloud_instance.cloudapp_cvm.public_ip}:8080" description = "访问入口"}output "a_admin_url" { value = "https://admin.${var.selected_domain}" description = "运营系统系统"}output "b_admin_default_user" { value = "admin" description = "默认管理员用户"}output "c_admin_default_password" { value = random_password.default_admin.result description = "默认管理员密码" sensitive = true}

声明的输出,客户可以在看板应用详情中,看到对应的安装结果。

赞 (0)
上一篇 4天前
下一篇 4天前