ansible - 在 Ansible 的变量中使用 with_items
问题描述
在下面的代码中,我使用 Ansible 模板,将其复制到多个位置。模板中还有一个变量:{{user}}。这应该分别替换为 - imail1,imail2,imail3,imail4。item.user 由于某种原因没有被替换,但没有抛出任何错误。我查看了多个选项,例如将其定义为 dict ,但没有一个适合这里。谁能帮我理解我做错了什么?
- 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 }
添加使用 {{user}} 变量的模板 logback.xml.j2 片段。
<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 }
推荐阅读
- azure - Azure 应用程序 ID 和对象 ID 有什么区别
- python - 用于将 csv 数据写入 Amazon DynamoDB 表的 AWS lambda 函数
- macros - SPSS中用于排序和线性插值数据的循环
- php - 如何在命令外壳中创建一个虚拟控制器传递给组件 CakePHP 2.4.3
- jquery - 视差滚动仅适用于顶部元素
- c# - 有没有办法可以简化这个正则表达式?
- django - 通过简单字段和/或多字段过滤对详细视图的访问
- c - 我的代码有什么问题。我没有得到所需的输出。当在其中一个在线编译器中执行此代码时,它没有提供所需的输出
- python - [Python][Adobe Acrobat]将PDF另存为Excel问题
- huawei-mobile-services - HUAWEI Push-获取访问令牌的API不起作用