gpt4 book ai didi

jinja2 - 循环 jinj2a 模板中的主机,遵守 --limit

转载 作者:行者123 更新时间:2023-12-02 11:36:31 27 4
gpt4 key购买 nike

我知道 ansible 支持这种形式的模板中的循环:

{% for host in groups['all'] %}
"{{ host }}"{% if not loop.last %},{% endif %}
{% endfor %}

当我运行 ansible 时,这会循环遍历主机文件中的所有内容,正如人们所期望的那样。

当我使用 --limit 命令行参数运行 ansible 时,我想仅循环匹配限制的主机。有没有办法在 jinja2 模板中表达该循环?

最佳答案

您可以使用 vars 中的 play_hosts 变量,例如:

{% for host in vars['play_hosts'] %}
"{{ host }}"{% if not loop.last %},{% endif %}
{% endfor %}

想象一下这个设置:

# hosts
[all-hosts]
ansible ansible_ssh_host=192.168.42.2
webapp ansible_ssh_host=192.168.42.10
postgresql ansible_ssh_host=192.168.42.20

#playbook.yml
---

- hosts: all
gather_facts: no
tasks:
- name: Hosts
template: src=myhosts.j2 dest=./myhosts.json
delegate_to: 127.0.0.1
run_once: yes

然后,在没有限制的情况下运行它会得到与您相同的结果,但是当您指定限制时,它只会生成“有限”的主机名:

ansible-playbook -i hosts playbook.yml --limit postgresql,ansible

输出:

"ansible",  "postgresql"

关于jinja2 - 循环 jinj2a 模板中的主机,遵守 --limit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31282167/

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