Rino Bino
Rino Bino

Reputation: 447

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

I would like to create a new directory with a specified mode/owner but only if it does not yet exist.

I can do it by first checking stat:

- 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

Is it possible to do this without the extra step?

If not, is there a better way to accomplish this?

Upvotes: 1

Views: 3540

Answers (1)

seshadri_c
seshadri_c

Reputation: 7340

Ansible can be used to manage the directory in question, always ensuring that it will have the defined ownership and permissions irrespective of whether it exists or not.

If you want to avoid any chances of modifying an existing directory for some reason, the way you accomplished it using Ansible modules (requiring two tasks) is correct.

However, if you do need to accomplish this in 1 step - you can use the command module to run the install command to create directory.

Example:

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

Here we are using the creates property to prevent the command from running when the path already exists.

Upvotes: 2

Related Questions