在 Ansible 的变量中使用 with_items

Using with_items in Variable in Ansible

在下面的代码中,我使用 Ansible 模板,将其复制到多个位置。该模板中还有一个变量:{{user}}。这应该分别替换为 - imail1、imail2、imail3、imail4。 item.user 由于某种原因没有被替换,但没有抛出任何错误。我已经查看了多个选项,例如将其定义为 dict ,但其中 none 适合此处。谁能帮我理解我做错了什么?

- name: Configure logback file for imail1
  template:
    src: /etc/ansible/roles/Buildout/files/logback.xml.j2
    dest: '/opt/"{{item.dest}}"/cassandra-meta/apache-cassandra-3.11.5/conf/logback.xml'
    owner: "{{item.owner}}"
    group: "{{item.group}}"
  vars:
    user: "{{item.user}}"
  with_items:
     - { dest: imail1, owner: imail1, group: imail1, user: imail1 }
     - { dest: imail2, owner: imail2, group: imail2, user: imail2 }
     - { dest: imail3, owner: imail3, group: imail3, user: imail3 }
     - { dest: imail4, owner: imail4, group: imail4, user: imail4 }

添加模板片段 - logback.xml.j2,其中使用了 {{user}} 变量。

<configuration scan="true">
  <jmxConfigurator />

  <!-- No shutdown hook; we run it ourselves in StorageService after shutdown -->

  <!-- SYSTEMLOG rolling file appender to system.log (INFO level) -->

  <appender name="SYSTEMLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>INFO</level>
    </filter>
    <file>/opt/{{user}}/cassandra-meta/log/system.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
      <fileNamePattern>/opt/{{user}}/cassandra-meta/log/system.log.%i.zip</fileNamePattern>
      <minIndex>1</minIndex>
      <maxIndex>20</maxIndex>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

问题出在我的语法上。我用“{{item.dest}}”引了引号。 正确的代码是:

- name: Configure logback file for imail1
  template:
    src: /etc/ansible/roles/Buildout/files/logback.xml.j2
    dest: '/opt/{{item.dest}}/cassandra-meta/apache-cassandra-3.11.5/conf/logback.xml'
    owner: "{{item.owner}}"
    group: "{{item.group}}"
  vars:
    user: "{{item.user}}"
  with_items:
     - { dest: imail1, owner: imail1, group: imail1, user: imail1 }
     - { dest: imail2, owner: imail2, group: imail2, user: imail2 }
     - { dest: imail3, owner: imail3, group: imail3, user: imail3 }
     - { dest: imail4, owner: imail4, group: imail4, user: imail4 }