# 变量 变量分为静态变量(运行前定义的变量)和动态变量(运行时生成的变量) 参数优先级为: 动态变量 > 静态变量 ## 静态变量 静态变量包含节点清单, 全局配置, 模板中定义的参数. 参数优先级为: 全局配置 > 节点清单 > 模版中定义的参数. ### 节点清单 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`定义的参数 优先级为参数定义的顺序, 后定义参数高于先定义的参数.