今天在整理ansible安装k3s时,遇到了个问题,想法是在安装过程中对node能打多个label,  如:

定义hosts.ini

 

其中k3s.service.j2模块中的定义如下:

 

而生成的k3s.service应是这个结果:

 

可以看到, 应该给node打两个label,

经反复尝试,终于生成了, 下面是我的k3s.yml:

 

定义了: k3s_node_labels: “{{ k3s_node_labels|default([]) + [{‘node.kubernetes.io/’+item: ”}] }}”

意思是定义一个列表k3s_node_labels,将with_items中的变量append到列表中, 结果是这样:

 

除了用+号, 也可以用union([item])

 

而如果这样定义的话:

k3s_node_labels: “{{ k3s_node_labels|default([]) | combine({‘node.kubernetes.io/’+item: ”}) }}” 或

k3s_node_labels: “{{ k3s_node_labels|default({}) | combine({‘node.kubernetes.io/’+item: ”}) }}”

都将会这种结果:

 

即将字典扩充, 此做法不符合我的要求

 

参考了:

https://ttl255.com/ansible-appending-to-lists-and-dictionaries/

 

Categories: 未分类

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *