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

2.1 KiB

变量

变量分为静态变量(运行前定义的变量)和动态变量(运行时生成的变量)
参数优先级为: 动态变量 > 静态变量

静态变量

静态变量包含节点清单, 全局配置, 模板中定义的参数. 参数优先级为: 全局配置 > 节点清单 > 模版中定义的参数.

节点清单

yaml格式文件, 不包含模板语法, 通过-i参数传入(kk -i inventory.yaml ...), 在每个host上生效
定义规范:

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上生效

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定义的参数
    优先级为参数定义的顺序, 后定义参数高于先定义的参数.