如何通过带for循环的Jinja2模板将CSV值导入Ansible生成配置文件
从CSV生成指定YAML配置的Jinja2模板方案
现有CSV文件(sample.csv)
ms-1,svc-1 ms-2,svc-2
目标生成的YAML配置格式
- names: - ms-1 - svc-1 - names: - ms-2 - svc-2
已编写的Ansible Playbook(test.yaml)
--- - name: Generate Conf file hosts: localhost gather_facts: false tasks: - name: Gather list shell: "cat sample.csv" register: sample_list - name: Template ansible.builtin.template: src: test.j2 dest: test.op
对应的Jinja2模板(test.j2)内容
{% for line in sample_list.stdout_lines %} {% set items = line.split(',') %} - names: - {{ items[0] }} - {{ items[1] }} {% endfor %}
模板逻辑说明
- 借助
sample_list.stdout_lines获取CSV文件的逐行内容,通过循环遍历每一行 - 用
split(',')将每行内容按逗号拆分为两个元素的列表 - 按照目标YAML结构,将拆分后的元素依次填入
names对应的列表项中
内容的提问来源于stack exchange,提问作者Pradeep Reddy
相关产品推荐
相关产品推荐

