变量组

Semaphore 的变量组(Variable Groups)部分用于为清单(Inventory)存放额外的变量,这些变量必须以 JSON 格式存储。
所有任务模板(Task Templates)都要求定义一个变量组,即使它是空的。
Ansible 从一个临时文件中以额外变量的形式接收变量组中的变量,该文件中每个包含 Jinja2 分隔符({{ … }}、{% … %} 或 {# … #})的值都带有 !unsafe 标记:存储在变量组中的 Jinja2 表达式会按字面原样到达 playbook,不会被求值。值会保留其 JSON 类型:字符串 "2026.08" 到达 playbook 时仍是字符串,数字 3 仍是数字。作为变量传递的变量组机密(secrets)放在另一个用 Ansible Vault 加密的文件中传递。
创建变量组
- 点击 Variable Group 选项卡。
- 点击 New Variable Group 按钮。
- 为变量组命名,然后输入或粘贴有效的 JSON 变量。如果只需要一个空的变量组,请输入
{}。
更新变量组
- 点击 Variable Groups 选项卡。
- 点击铅笔图标。
- 进行修改并点击保存。
删除变量组
在删除变量组之前,必须先删除与其关联的所有资源。 如果不确定某个变量组正被哪些资源使用,请按照下面的步骤 1 和 2 操作。它会显示正在使用的资源,并附带指向这些资源的链接。
- 点击该变量组。
- 点击变量组旁边的垃圾桶图标。
- 如果确定要删除该变量组,请点击 Yes。
使用变量组 - Terraform/OpenTofu
当你想在 Terraform 模板中使用已存储的变量组变量或密钥时,必须为名称添加 TF_VAR_ 前缀,Terraform 脚本才能使用它。
示例 将 Hetzner Cloud API 密钥传递给 OpenTofu/Terraform 剧本。
- 点击 Variable Group
- 点击
New Group - 点击
Secrets选项卡 - 添加
TF_VAR_hcloud_token,并在隐藏字段中填入你的secret - 点击 Save
我们将在 hetzner.tf 中以 var.hcloud_token 的形式引用密钥
TF_VAR_hcloud_token
terraform {
required_providers {
hcloud = {
source = "hetznercloud/hcloud"
version = "~> 1.45"
}
}
}
# Declare the variable
variable "hcloud_token" {
type = string
description = "Hetzner Cloud API token"
sensitive = true # This prevents the token from being displayed in logs
}
provider "hcloud" {
token = var.hcloud_token
}
# Create a new server running debian
resource "hcloud_server" "webserver" {
name = "webserver"
image = "ubuntu-24.04"
server_type = "cpx11"
location = "ash"
ssh_keys = [ "mysshkey" ]
public_net {
ipv4_enabled = true
ipv6_enabled = true
}
}