gpt4 book ai didi

centos - Ansible:我需要使用一个循环中的变量,并独立使用每个变量

转载 作者:行者123 更新时间:2023-12-04 19:42:42 25 4
gpt4 key购买 nike

如果可能的话需要一些帮助...

我从变量文件创建了用户:

"Users": 
- user1
- user2
- user3

我需要将文件移动到每个用户的主目录。我不希望这样做,因为这意味着为每个用户写一行:
- name: Copy Playbooks
copy:
src: /etc/ansible/playbooks/file.yml
dest: /home/user1/playbooks

像下面这样做意味着 ansible 正在尝试添加到 {{ "user1""user2""user3"}} 的主目录
- name: Copy Playbooks
copy:
src: /etc/ansible/playbooks/hands_on_ansible/hands_on_files/mount_nfs.yml
dest: /home/{{ variable.get('Users') }}/playbooks

所以我需要做的是使用变量文件将每个单独的变量添加到不同的主目录,这是一个循环。

谷歌搜索(显然)但无济于事。非常感谢所有帮助! :)

最佳答案

类型Users是列表,它包含 3 个项目,您可以在 related Ansible documentation 中找到有关 YAML 数据结构的信息.

基本上你会想要遍历列表中的项目并应用你的游戏 Copy Playbooks每一个人。这是一个循环,你可以这样做:

- name: Copy Playbooks
copy:
src: /etc/ansible/playbooks/hands_on_ansible/hands_on_files/mount_nfs.yml
dest: "/home/{{item}}/playbooks"
loop: "{{ variable.get('Users') }}"

可以找到更准确的 ansible 循环描述 in the documentation .

编辑:上述解决方案适用于 Ansible >= 2.5。如文档中所述:

Before 2.5 Ansible mainly used the with_<lookup> keywords to create loops, the loop keyword is basically analogous to with_list.



对于 Ansible 版本 < 2.5,通常的做法是:
- name: Copy Playbooks
copy:
src: /etc/ansible/playbooks/hands_on_ansible/hands_on_files/mount_nfs.yml
dest: "/home/{{item}}/playbooks"
with_items: "{{ variable.get('Users') }}"

关于centos - Ansible:我需要使用一个循环中的变量,并独立使用每个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50249787/

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