我想列出没有特定文件的服务器列表。
我制作了以下 Ansible 剧本:
- name: "If file not in /apps"
hosts: all
tasks:
- name: Find apps
find:
paths: /apps/
patterns: "*"
file_type: directory
register: apps
- name: Show file paths
with_items: "{{ apps.files }}"
debug:
msg: "{{ item.path }}"
这将返回一条包含应用程序目录的消息。我想检查某个文件是否存在于子文件夹中,以及该文件是否不是现在,我想运行一个脚本。
我想要的伪代码示例:
for folder in "/apps/*":
if file not in folder:
print(item.path)
我该怎么做?我什么也找不到,而且我已经尝试了好几个小时了。
答案1
关于你的问题
我想检查某个文件是否存在于子文件夹中,如果该文件不存在
您可以使用以下方法。
---
- hosts: test
become: false
gather_facts: false
vars:
SEARCH_PATH: "/home/user"
SEARCH_FILE: "test.txt"
tasks:
- name: Check if file exists
stat:
path: "{{ SEARCH_PATH }}/{{ SEARCH_FILE }}"
register: result
- name: Show result
debug:
msg: "The file does not exist!"
when: not result.stat.exists
- name: Show result
debug:
msg: "The file does exist!"
when: result.stat.exists
输出结果为
TASK [Show result] ************
ok: [test.example.com] =>
msg: The file does not exist!
或者
TASK [Show result] ********
ok: [test.example.com] =>
msg: The file does exist!
取决于文件/home/user
或路径是否存在。
感谢进一步的问答
文档