我正在使用Ansible开发一个项目,该项目要求我使用一个剧本将一些数据写入文件,然后使用另一个剧本从同一个文件中读取数据。
剧本将是这样的 test1.yml
---
- hosts: localhost
connection: local
gather_facts: no
tasks:
- name: Writing data to test file
local_action: shell echo "data:" {{ 100 |random(step=10) }} > test.txt
- include: test2.yml
并且需要使用test2.yml
来阅读它---
- hosts: localhost
connection: local
gather_facts: no
vars_files:
- test.txt
tasks:
- name: Writing data to test file
local_action: shell echo "{{ data }}" > result.txt
然而,
第二部剧本无法阅读第一部剧本发布的latest
数据。
如果我查看用test.txt
和result.txt
写的数据,则两者都不同。有没有办法实现剧本调用结果之间的一致性????
答案 0 :(得分:1)
这两个剧本是分开调用的吗?如果它们被包含在主剧本中,那么这将解释它。主游戏手册中的所有包含都在执行前被解析,因此Ansible在任何执行之前已经阅读了剧本和vars_file
。您应该能够通过在使用include_vars
模块播放期间动态包含vars文件来解决此问题。
如果我的假设错了,而你没有将剧本包括在父级剧本中:你究竟是什么意思“不同”?它是完全不同的数据还是格式化问题?我很困惑,一般来说,数据之间的数据不一致。写入和读取文件没有魔力。那应该在理论上有效。