gpt4 book ai didi

python - 如何辨别一个目录是否是从 Ansible 挂载的 NFS?

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:39 25 4
gpt4 key购买 nike

我需要为一个“毛茸茸”的应用程序设置一个应用程序目录。根据情况,该目录可能是每个参与服务器的本地目录,或者通过 NFS 在多个服务器之间共享。

因此,我需要能够检测给定路径是本地路径还是 NFS 访问路径,并在后一种情况下跳过一些任务。

在 Ansible 角色中检测此问题的最佳方法是什么?

我尝试使用 stat module ,但 device_type所有 情况下似乎设置为 0,NFS 或本地 (XFS)。

在 Linux 上,我可以调用 stat -f/path——这将输出详细信息,包括类型(该实用程序使用 statfs 系统调用)。但这是一种仅限 Linux 的方法,我宁愿避免这种小的操作系统依赖性(同样适用于 mountpoint 实用程序)。

我会写一个自定义库函数,但是 Python 中没有 os.statfs...

还剩下什么?

最佳答案

另一种方法是使用 Ansible facts。您可以为您的 mount=您的挂载点 过滤 ansible_mounts 数组并提取文件系统类型字段。例如,请看我在这里得到的答案: https://stackoverflow.com/a/49662135/1268949 .

我的生产代码中的另一个示例:

- name: Determine shared-dir mount point
command: "/usr/bin/env stat -c '%m' {{ shared_dir_real_path }}"
register: shared_dir_mount_point
changed_when: False

- name: Determine the mount point's filesystem type and mount options
set_fact:
"shared_dir_mount_{{ item }}": "{{ ansible_mounts | selectattr('mount', 'equalto', shared_dir_mount_point.stdout) | map(attribute = item) | join(',') }}"
with_items:
- fstype
- options

关于python - 如何辨别一个目录是否是从 Ansible 挂载的 NFS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49581325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com