Ansible read after write file operations in 剧本
Ansible read after write file operations in playbooks
我正在使用 Ansible 开发一个项目,这需要我使用一个 playbook 将一些数据写入文件,然后使用另一个 playbook 从同一文件读取数据。
剧本将是这样的
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
中写入的数据,它们都是不同的。有没有办法实现剧本调用结果之间的一致性????
那两个剧本是分开调用的吗?如果它们包含在主剧本中,那么这将解释它。主剧本中的所有内容都在执行前解析,因此 Ansible 在执行任何剧本之前已经阅读了剧本和 vars_file
。您应该能够通过在使用 include_vars
模块时动态包含 vars 文件来解决这个问题。
如果我的假设有误并且您没有将这些剧本包括在父剧本中:您所说的 "different" 到底是什么意思?它是完全不同的数据还是格式问题?我很困惑一般情况下数据在调用之间是如何不一致的。写入和读取文件没有什么神奇之处。这在理论上应该可行。
我正在使用 Ansible 开发一个项目,这需要我使用一个 playbook 将一些数据写入文件,然后使用另一个 playbook 从同一文件读取数据。
剧本将是这样的 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
中写入的数据,它们都是不同的。有没有办法实现剧本调用结果之间的一致性????
那两个剧本是分开调用的吗?如果它们包含在主剧本中,那么这将解释它。主剧本中的所有内容都在执行前解析,因此 Ansible 在执行任何剧本之前已经阅读了剧本和 vars_file
。您应该能够通过在使用 include_vars
模块时动态包含 vars 文件来解决这个问题。
如果我的假设有误并且您没有将这些剧本包括在父剧本中:您所说的 "different" 到底是什么意思?它是完全不同的数据还是格式问题?我很困惑一般情况下数据在调用之间是如何不一致的。写入和读取文件没有什么神奇之处。这在理论上应该可行。