首页 > 解决方案 > 从变量向模板添加值

问题描述

我有一个变量测试

test:
 - 10.0.0.1
 - 10.0.0.2
 - 10.0.0.3
 - 10.0.0.4

并且有一个配置文件,您需要从该变量中插入一个值。输出中应该有 4 个配置文件,每个文件包含来自该测试变量的一行。我想出了如何使用列表中的 ip 名称创建 4 个文件,但我不明白如何将 ip 替换到模板中。

从模板:

auto br_omgt
iface br_omgt inet static
bridge_ports bond0.2210
 address {{ db }}
  netmask 255.255.255.192
  gateway 10.15.35.62

标签: ansibleansible-template

解决方案


您必须使用模块模板
你的文件必须是 jinja2。

角色/MY_Role/templates/my_file.txt.j2

my_file.txt.j2
auto br_omgt iface br_omgt inet static bridge_ports bond0.2210 address {{ db }} netmask 255.255.255.192 gateway 10.15.35.62


my_file.txt  
auto br_omgt iface br_omgt inet static bridge_ports bond0.2210 address 10.0.0.1 netmask 255.255.255.192 gateway 10.15.35.62

剧本:

  vars:
    db: 10.0.0.1

  tasks:
  - name: Use Template
    template:
      src: my_file.txt.j2
      dest: home/My_User/my_file.txt

使用循环,您有 4 个文件。(扩展

  vars:
    db: 10.0.0.1
        10.0.0.2

  tasks:
  - name: Use Template looped
    template:
      src: my_file.txt.j2
      dest: home/My_User/my_file_{{index}}.txt
    loop_control:
      extended: yes
    loop: "{{ db }}"

推荐阅读