我正在尝试检测特定文件系统是否在 Linux(Ubuntu 16.04)上以只读或读写方式挂载。使用stat模块将不起作用,因为它总是返回 posix 权限,而不管实际写入目录的能力如何。我可以使用下面相当侵入性和繁琐的代码来完成此操作,它试图创建一个点文件。我希望有一个更干净、更优雅的替代方案,它还可以检测目录是否不是挂载点(这将是一个错误)。
- name: Determine whether we have write access to the shared dir
command: touch /mnt/shared-data/.WriteTest
register: shared_dir_write_test
failed_when: "shared_dir_write_test.rc != 0 and 'read-only' not in (shared_dir_write_test.stderr | lower)"
changed_when: shared_dir_write_test.rc == 0
Ansible 建议我改用带有state=touch的file模块,但是下面的代码失败了,因为似乎没有办法检查file的中间结果。
- name: Determine whether we have write access to the shared dir
file: path=/mnt/shared-data/.WriteTest state=touch
register: shared_dir_write_test
failed_when: "shared_dir_write_test.failed and 'read-only' not in (shared_dir_write_test.msg | lower)"
条件检查 'shared_dir_write_test.failed 和 'read-only' not in (shared_dir_write_test.stderr | lower)' 失败。错误是:评估条件时出错(shared_dir_write_test.failed 和“只读”不在(shared_dir_write_test.stderr | lower)):“dict object”没有属性“failed”