ansible - 在 Ansible 中使用通配符查找远程文件
问题描述
我使用 shell 模块运行 java 命令,该模块创建一个带有后缀的随机字符串的文件。
我需要随后使用 uri 模块发布此文件。
我正在尝试使用stat 模块和通配符查找文件,但没有找到。
- stat:
path: "{{ my_dir }}/info-*"
register: info
- debug:
msg: "info isn't defined (path doesn't exist)"
when: info.stat.exists == False
我还能如何找到文件名?
解决方案
stat 模块需要完整路径。
但是,可以通过使用 find模块来实现所需的效果,因为它允许使用通配符。
path要搜索的目录路径列表。
patterns一个或多个(shell 或 regex)模式,其类型由 use_regex 选项控制。这些模式将要返回的文件列表限制为那些基本名称至少与指定模式之一匹配的文件。可以使用列表指定多个模式。此参数需要一个列表,...
- find:
paths:
- "{{ my_dir }}"
patterns:
- "info-*"
register: info
- debug:
msg: "{{ info.files }}"
问题。" I run a java command using the shell module which creates a file with a random string suffixed to this. I need to subsequently POST this file using the uri module.
"
回答。可以使用找到的第一个文件
- debug:
var: info.files.0.path
,但可能有更多文件与模式匹配info-*
。一个强大的解决方案是使java command ... which creates a file with a random string suffixed
返回文件名。或者,也可以改用tempfile模块。
推荐阅读
- tensorflow - 使用 Deep Q 网络进行机器人路径规划
- c - 如果在 for 循环内(普通年和闰年的日差)不起作用
- java - 我们如何更新深度克隆的实体?
- c - 为什么我尝试打印字符时没有输出?
- reactjs - setState 一个 CSV 文件一旦返回 null
- swift - 无法在 Swift 中使用 filemaneger.default.copyItem 将文件复制到外部驱动器?
- r - 如何在 R 的 tidyversse 中使用 dplyr 根据时间(hh:mm:ss)过滤行?
- c++ - 如何在 Windows 中以编程方式添加“虚拟”音频输入设备/麦克风
- python - 如何在kivy中更新函数内的布局
- python - 我无法在 rasa 2.0 中使用小鸭提取名称