我有如下游戏
iterator=1;
subpaths=$(git config --file .gitmodules --get-regexp path | awk '{ print $2}');
subrepos=$(git config --file .gitmodules --get-regexp url | awk '{ print $2}');
for path in $subpaths; do
repo=$(echo "$subrepos"| sed $iterator'q;d');
git submodule add $repo $path;
let iterator++;
done
default.prf.j2文件的内容如下
- name: create the unison preference file
template:
src: default.prf.j2
dest: /root/.unison/{{ item }}.prf
with_items: groups['ndeployslaves']
项目变量在模板中不起作用,我收到错误
任务[unison_master:创建协调prefrence文件] ************************ 致命:[127.0.0.1]:失败! => {"失败":是的," msg":"' item'未定义"}
如何引用播放中使用的模板中的项目?
答案 0 :(得分:1)
由于它不允许您在模板中使用{{item}},因此您可以这样做:
- 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的内容应为:
root = /home
root = ssh://
ignore = Path virtfs
ignore = Path */mail
但是我在模板中使用了{{item}}。你确定你的空白是正确的吗? src和dest需要缩进比模板更深的一个级别,但with_items需要与模板处于同一级别。
- name: create the unison preference file
template:
src: default.prf.j2
dest: "/root/.unison/{{ item }}.prf"
with_items: "{{ groups['ndeployslaves'] }}"
答案 1 :(得分:0)
错误是由缩进错误引起的
with_items: groups['ndeployslaves']
缩进了一个比它应该更深的水平。