Velvet Star Monitor

Standout celebrity highlights with iconic style.

news

How to create a directory using Ansible

Writer Sebastian Wright

How do you create a directory www at /srv on a Debian-based system using an Ansible playbook?

0

24 Answers

You want the file module. To create a directory, you need to specify the option state=directory :

- name: Creates directory file: path: /src/www state: directory

You can see other options at

5

You can even extend the file module and even set the owner,group & permission through it. (Ref: Ansible file documentation)

- name: Creates directory file: path: /src/www state: directory owner: www-data group: www-data mode: 0775

Even, you can create the directories recursively:

- name: Creates directory file: path: /src/www state: directory owner: www-data group: www-data mode: 0775 recurse: yes

This way, it will create both directories, if they didn't exist.

6

Additional for all answers here, there is lot of situations when you need to create more then one directory so it is a good idea to use loops instead creating separate task for each directory.

- name: Creates directory file: path: "{{ item }}" state: directory with_items: - /srv/www - /dir/foo - /dir/bar

you can create using:

Latest version 2<

- name: Create Folder file: path: /srv/www/ owner: user group: user mode: 0755 state: directory

Older version

- name: Create Folder file: path=/srv/www/ owner=user group=user mode=0755 state=directory

Refer -

0

Directory can be created using file module only, as directory is nothing but a file.

# create a directory if it doesn't exist
- file: path: /etc/some_directory state: directory mode: 0755 owner: foo group: foo
- file: path: /etc/some_directory state: directory mode: 0755 owner: someone group: somegroup

That's the way you can actually also set the permissions, the owner and the group. The last three parameters are not obligatory.

You can create a directory. using

# create a directory if it doesn't exist
- file: path=/src/www state=directory mode=0755

You can also consult for further details regaridng directory and file system.

- name: Create a directory ansible.builtin.file: path: /etc/some_directory state: directory mode: '0755'

Just need to put condition to execute task for specific distribution

- name: Creates directory file: path=/src/www state=directory when: ansible_distribution == 'Debian'

You can use the statement

- name: webfolder - Creates web folder file: path=/srv/www state=directory owner=www-data group=www-data mode=0775`
0

If you want to create directory in windows:

  • name: Create directory structure
    win_file:
    path: C:\Temp\folder\subfolder>
    state: directory
enter code here
- name: creating directory in ansible file: path: /src/www state: directory owner: foo

you can refer to ansible documentation

We have modules available to create directory , file in ansible

Example

- name: Creates directory file: path: /src/www state: directory

you can use the "file" module in this case, there are so many arguments that you can pass for a newly created directory like the owner, group, location, mode and so on.....

please refer to this document for the detailed explanation on the file module...

remember this module is not just for creating the directory !!!

You can directly run the command and create directly using ansible

ansible -v targethostname -m shell -a "mkdir /srv/www" -u targetuser

OR

ansible -v targethostname -m file -a "path=/srv/www state=directory" -u targetuser
---
- hosts: all connection: local tasks: - name: Creates directory file: path=/src/www state=directory

Above playbook will create www directory in /src path.

Before running above playbook. Please make sure your ansible host connection should be set,

"localhost ansible_connection=local"

should be present in /etc/ansible/hosts

for more information please let me know.

1

to create directory

ansible host_name -m file -a "dest=/home/ansible/vndir state=directory"

Use file module to create a directory and get the details about file module using command "ansible-doc file"

Here is an option "state" that explains:

If directory, all immediate subdirectories will be created if they do not exist, since 1.7 they will be created with the supplied permissions.
If file, the file will NOT be created if it does not exist, see the [copy] or [template] module if you want that behavior.
If link, the symbolic link will be created or changed. Use hard for hardlinks.
If absent, directories will be recursively deleted, and files or symlinks will be unlinked.

Note that file will not fail if the path does not exist as the state did not change.

If touch (new in 1.4), an empty file will be created if the path does not exist, while an existing file or directory will receive updated file access and modification times (similar to the way touch works from the command line).

Easiest way to make a directory in Ansible.

  • name: Create your_directory if it doesn't exist. file: path: /etc/your_directory

OR

You want to give sudo privileges to that directory.

  • name: Create your_directory if it doesn't exist. file: path: /etc/your_directory mode: '777'

To check if directory exists and then run some task (e.g. create directory) use the following

- name: Check if output directory exists stat: path: /path/to/output register: output_folder
- name: Create output directory if not exists file: path: /path/to/output state: directory owner: user group: user mode: 0775 when: output_folder.stat.exists == false
0

Hello good afternoon team.

I share the following with you.

 - name: Validar Directorio stat: path: /tmp/Sabana register: sabana_directorio - debug: msg: "Existe" when: sabana_directorio.stat.isdir == sabana_directorio.stat.isdir - name: Crear el directorio si no existe. file: path: /tmp/Sabana state: directory when: sabana_directorio.stat.exists == false

With which you can validate if the directory exists before creating it

1

I see lots of Playbooks examples and I would like to mention the Adhoc commands example.

$ansible -i inventory -m file -a "path=/tmp/direcory state=directory ( instead of directory we can mention touch to create files)

You need to use file module for this case. Below playbook you can use for your reference.

 --- - hosts: <Your target host group> name: play1 tasks: - name: Create Directory files: path=/srv/www/ owner=<Intended User> mode=<Intended permission, e.g.: 0750> state=directory 

here is easier way.

- name: create dir command: mkdir -p dir dir/a dir/b

3