我试图垂直连接两个文件
第一个文件是
roles/myrolename/files/requirements.dat
numpy
matplotlib
dask
第二个文件是
~/myprojects/myprojectname/requirements.txt
django
pywinrm
scipy
下面是我试图将这两个文件结合起来的尝试,基于
这是
task
我在用
- name: Play to combine 2 files
hosts: localhost
connection: local
vars:
myprojects_path: myprojects
my_proj_name: myprojectname
tasks:
- name: Concatenate 2 files
template:
src: "roles/myrolename/templates/requirements.dat.j2"
dest: "{{ myprojects_path }}/{{ my_proj_name }}/requirements.dat"
这是
roles/myrolename/templates/requirements.dat.j2
{% include 'roles/myrolename/files/requirements.dat' %}
{% include myprojects_path + "/" + my_proj_name + "/" + "requirements.txt" %}
此任务给出错误消息(与第二个
包括
报表来自
角色/myrolename/templates/requirements.dat.j2
)
fatal: [my_local_machine]: FAILED! => {"changed": false,
"msg": "TemplateNotFound: /home/wr/myprojects/myprojectname/requirements.txt"}
这似乎表明Ansible正在期待
/home/wr/myprojects/myprojectname/requirements.txt
是模板而不是文件。然而,第一个
包括
行不抛出错误。这让我很困惑。
我能用什么方法
包括
将这两个文件与
jinja2
模板,还是有其他方法连接这两个文件?
编辑1:
我补充说
{# a comment #}
到第1行
requirements.txt
. 这是新的
~/myprojects/myprojectname/requirements.txt文件
{# a comment #}
django
pywinrm
scipy
然后,我重新运行剧本
ansible-playbook test.yml -vvv
. 这是输出
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: wr
<127.0.0.1> EXEC /bin/sh -c 'echo ~wr && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /home/wr/.ansible/tmp/ansible-tmp-1532962816.77-184726406959930 `" && echo ansible-tmp-1532962816.77-184726406959930="` echo /home/wr/.ansible/tmp/ansible-tmp-1532962816.77-184726406959930 `" ) && sleep 0'
<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /home/wr/.ansible/tmp/ansible-tmp-1532962816.77-184726406959930/ > /dev/null 2>&1 && sleep 0'
fatal: [wr-box]: FAILED! => {
"changed": false,
"msg": "TemplateNotFound: /home/wr/myprojects/myprojectname/requirements.txt"
}
编辑2:
我试着让Ansible来处理上面的问题
需求.txt
(与
{评论}
在第1行)作为
金贾2
通过重新命名文件来创建模板。我重新命名了文件
需求.txt
到
requirements.txt.j2
重新运行剧本。它提供这个输出
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: wr
<127.0.0.1> EXEC /bin/sh -c 'echo ~wr && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /home/wr/.ansible/tmp/ansible-tmp-1532963056.03-76693523230507 `" && echo ansible-tmp-1532963056.03-76693523230507="` echo /home/wr/.ansible/tmp/ansible-tmp-1532963056.03-76693523230507 `" ) && sleep 0'
<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /home/wr/.ansible/tmp/ansible-tmp-1532963056.03-76693523230507/ > /dev/null 2>&1 && sleep 0'
fatal: [wr-box]: FAILED! => {
"changed": false,
"msg": "TemplateNotFound: /home/wr/myprojects/myprojectname/requirements.txt.j2"
}
它似乎仍然找不到模板文件,即使我检查了它是否确实存在于我指定的位置。