如果不存在则创建目录的最佳方法,但如果存在则不要修改
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。
我想用指定的 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。