Ansible在playbooks中写入文件操作后读取

时间:2015-03-16 17:13:40

标签: file shell ansible ansible-playbook

我正在使用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.txtresult.txt写的数据,则两者都不同。有没有办法实现剧本调用结果之间的一致性????

1 个答案:

答案 0 :(得分:1)

这两个剧本是分开调用的吗?如果它们被包含在主剧本中,那么这将解释它。主游戏手册中的所有包含都在执行前被解析,因此Ansible在任何执行之前已经阅读了剧本和vars_file。您应该能够通过在使用include_vars模块播放期间动态包含vars文件来解决此问题。

如果我的假设错了,而你没有将剧本包括在父级剧本中:你究竟是什么意思“不同”?它是完全不同的数据还是格式化问题?我很困惑,一般来说,数据之间的数据不一致。写入和读取文件没有魔力。那应该在理论上有效。