How do you create a directory www
at /srv
on a Debian-based system using an Ansible playbook?
问题:
回答1:
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 http://docs.ansible.com/file_module.html
回答2:
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 the both directories, if they didn't exist.
回答3:
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 - http://docs.ansible.com/ansible/file_module.html
回答4:
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
回答5:
- 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.
回答6:
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 http://docs.ansible.com/ansible/file_module.html for further details regaridng directory and file system.
回答7:
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
回答8:
You can use the statement
- name: webfolder - Creates web folder
file: path=/srv/www state=directory owner=www-data group=www-data mode=0775`
回答9:
Just need to put condition to execute task for specific distribution
- name: Creates directory
file: path=/src/www state=directory
when: ansible_distribution == 'Debian'
回答10:
We have modules available to create directory , file in ansible
Example
- name: Creates directory
file:
path: /src/www
state: directory
回答11:
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
回答12:
---
- 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.
回答13:
to create directory
ansible host_name -m file -a "dest=/home/ansible/vndir state=directory"
回答14:
If you want to create directory in windows:
- name: Create directory structure
win_file:
path: C:\Temp\folder\subfolder>
state: directory
回答15:
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.
Iffile
, the file will NOT be created if it does not exist, see the [copy] or [template] module if you want that behavior.
Iflink
, the symbolic link will be created or changed. Usehard
for hardlinks.
Ifabsent
, 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 waytouch
works from the command line).
回答16:
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...
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
remember this module is not just for creating the directory !!!
回答17:
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'
回答18:
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)
回答19:
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
回答20:
here is easier way.
- name: create dir
command: mkdir -p dir dir/a dir/b