如果不存在则创建目录的最佳方法,但如果存在则不要修改

Best way to create directory if not exists, but do not modify if exists

我想用指定的 mode/owner 创建一个新目录,但 如果它尚不存在。

我可以通过首先检查统计数据来做到这一点:

- name: Determine if exists
  stat:
    path: "{{ my_path }}"
  register: path

- name: Create path
  file:
    path: "{{ my_path }}"
    owner: someuser
    group: somegroup
    mode: 0775
    state: directory
  when: not path.stat.exists

是否可以在没有额外步骤的情况下执行此操作?

如果没有,有没有更好的方法来完成这个?

Ansible 可用于管理 有问题的目录,始终确保它具有定义的所有权和权限,无论它是否存在。

如果您想避免出于某种原因修改现有目录的任何机会,您使用 Ansible 模块(需要两个任务)完成它的方式是正确的。

但是,如果您确实需要一步完成此操作 - 您可以使用 command module 到 运行 install 命令来创建目录。

示例:

- name: Create path
  command:
    cmd: "install -o someuser -g somegroup -m 0775 -d {{ my_path }}"
    creates: "{{ my_path }}"

这里我们使用 creates 属性 来防止命令在路径已经存在时 运行ning。