首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jinja2模板中引用项

如何在jinja2模板中引用项
EN

Stack Overflow用户
提问于 2016-05-25 12:12:58
回答 2查看 3.1K关注 0票数 1

我有一出戏如下

代码语言:javascript
复制
    - name: create the unison preference file
      template:
      src: default.prf.j2
      dest: /root/.unison/{{ item }}.prf
      with_items: groups['ndeployslaves']

default.prf.j2文件的内容如下

代码语言:javascript
复制
    root = /home
    root = ssh://root@{{ item }}//home
    ignore = Path virtfs
    ignore = Path */mail

项目变量在模板中不起作用,因此我得到了错误。

任务unison_master :创建unison_master文件*致命: 127.0.0.1: FAILED!=> {"failed":true,"msg":"'item‘是未定义的“}

如何引用在戏剧中使用的模板中的项目?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-25 15:30:44

由于它不允许在模板中使用{{item},所以可以这样做:

代码语言:javascript
复制
- name: create the unison preference file
  copy:
    src: default.prf
    dest: "/root/.unison/{{ item }}.prf"
    force: no
  with_items: "{{ groups['ndeployslaves'] }}"

- name: edit preference file
  lineinfile:
    dest: "/root/.unison/{{ item }}.prf"
    line: "root = ssh://root@{{item}}//home"
    regexp: '^root = ssh://'
  with_items: "{{ groups['ndeployslaves'] }}"

本地主机上的default.prf内容应该是:

代码语言:javascript
复制
root = /home
root = ssh://
ignore = Path virtfs
ignore = Path */mail

但是,我有{{item}在模板中工作。你确定你的空格是正确的吗?src和dest需要比模板更深一层缩进,但with_items需要与模板在同一级别上。

代码语言:javascript
复制
- name: create the unison preference file
  template:
    src: default.prf.j2
    dest: "/root/.unison/{{ item }}.prf"
  with_items: "{{ groups['ndeployslaves'] }}"
票数 1
EN

Stack Overflow用户

发布于 2016-05-26 01:11:09

此错误是由缩进错误引起的。

with_items: groups['ndeployslaves']被缩进了一个比它应有的更深的层次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37436768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档