kubekey/docs/zh/201-variable.md
liujian e3f2372ee0
feat: docs for modules (#2623)
Signed-off-by: joyceliu <joyceliu@yunify.com>
2025-06-17 09:40:31 +00:00

74 lines
2.1 KiB
Markdown

# 变量
变量分为静态变量(运行前定义的变量)和动态变量(运行时生成的变量)
参数优先级为: 动态变量 > 静态变量
## 静态变量
静态变量包含节点清单, 全局配置, 模板中定义的参数.
参数优先级为: 全局配置 > 节点清单 > 模版中定义的参数.
### 节点清单
yaml格式文件, 不包含模板语法, 通过`-i`参数传入(`kk -i inventory.yaml ...`), 在每个host上生效
**定义规范**:
```yaml
apiVersion: kubekey.kubesphere.io/v1
kind: Inventory
metadata:
name: default
spec:
hosts:
hostname1:
k1: v1
#...
hostname2:
k2: v2
#...
hostname3:
#...
groups:
groupname1:
groups:
- groupname2
# ...
hosts:
- hostname1
#...
vars:
k1: v1
#...
groupname2:
#...
vars:
k1: v1
#...
```
**hosts**: key为host名称, value为给该host设置的变量.
**groups**: 给host进行分组. key为组名称, value有groups, hosts和vars
- groups: 该组包含哪些其他组.
- hosts: 该组包含哪些hosts.
- vars: 组级别的变量, 针对组中所有host生效.
groups包含的总hosts为`groups`包含的host + `hosts`中包含的host.
**vars**: 全局变量, 针对所有host生效.
变量优先级为: $(host_variable) > $(group_variable) > $(global_variable)
### 全局配置
yaml格式文件, 不包含模板语法, 通过`-c`参数传入(`kk -c config.yaml ...`), 在每个host上生效
```yaml
apiVersion: kubekey.kubesphere.io/v1
kind: Config
metadata:
name: default
spec:
k: v
#...
```
任意类型的参数
### 模板中定义的参数
模板中定义的var参数包含:
- playbook中`vars`字段和`vars_files`字段定义的参数
- role中的defaults/main.yaml定义的参数
- role中`vars`字段定义的参数
- task中`vars`字段定义的参数
## 动态变量
动态变量是节点执行是生成的变量数据, 包含:
- `gather_facts`定义的参数
- `register`定义的参数
- `set_fact`定义的参数
优先级为参数定义的顺序, 后定义参数高于先定义的参数.