gpt4 book ai didi

ansible - 将对象添加到变量中的字典中

转载 作者:行者123 更新时间:2023-12-02 00:22:45 25 4
gpt4 key购买 nike

我想将对象添加到像这样的变量列表中

system_user:
- user1
system_users: "{{ system_users | union(system_user) }}"

由于递归错误而失败:

AnsibleError: recursive loop detected in template string

有什么办法可以解决这个问题吗?我想为 group_vars/all/ 中的每个用户创建一个定义文件,然后在剧本中循环遍历它们。我不想为每个新用户重新定义列表。

PS:有一个解决方法:使用用户名创建变量,例如 system_user_otto20 但它一点也不优雅。

最佳答案

有一个类似的未解决问题:https://github.com/ansible/ansible/issues/17906

我建议您不要在模板字符串中使用 undefined variable 来定义它们。

作为另一种解决方法,您可以使用 hash_behaviour=merge 和以下定义:
group_vars/all.yml

system_users:
user1:
user2:

book1.yml

- hosts: localhost
gather_facts: false
vars:
system_users:
user3:
user4:

tasks:
- debug: msg="{{ system_users | unique }}"

运行剧本:

$ ansible-playbook book1.yml 
[WARNING]: Host file not found: /etc/ansible/hosts

[WARNING]: provided hosts list is empty, only localhost is available


PLAY [localhost] ***************************************************************

TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": [
"user4",
"user2",
"user3",
"user1"
]
}

PLAY RECAP *********************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0

unique 用于将字典转换为未排序列表。

关于ansible - 将对象添加到变量中的字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28490224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com