Answers:
您需要文件模块。要创建目录,需要指定以下选项state=directory
:
- name: Creates directory
file:
path: /src/www
state: directory
all immediate subdirectories
令人困惑,您能定义一个例子吗?
您甚至可以扩展文件模块,甚至可以通过它设置所有者,组和权限。(参考:Ansible文件文档)
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
甚至,您也可以递归创建目录:
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
recurse: yes
这样,它将创建两个目录(如果它们不存在)。
recursive
参数使它非常像使用mkdir -p
(对于使用谷歌搜索的Ansible mkdir -p)。
recurse
参数不喜欢mkdir -p
。它递归设置指定的文件属性(仅适用于state = directory)。如果为state=directory
,则将创建所有直接子目录(如果不存在),因为从1.7开始,它们将使用提供的权限进行创建。
=
它将使用带chars 的旧语法,将其与:
新
您可以使用以下方法创建:
- name: Create Folder
file:
path: /srv/www/
owner: user
group: user
mode: 0755
state: directory
- name: Create Folder
file:
path=/srv/www/
owner=user
group=user
mode=0755
state=directory
您可以创建一个目录。使用
# create a directory if it doesn't exist
- file: path=/src/www state=directory mode=0755
您也可以访问 http://docs.ansible.com/ansible/file_module.html, 以获取有关重新构建目录和文件系统的更多详细信息。
除此处所有答案外,在很多情况下您需要创建多个目录,因此最好使用循环而不是为每个目录创建单独的任务。
- name: Creates directory
file:
path: "{{ item }}"
state: directory
with_items:
- /srv/www
- /dir/foo
- /dir/bar
只需要设置条件来执行特定分配的任务
- name: Creates directory
file: path=/src/www state=directory
when: ansible_distribution == 'Debian'
如果要在Windows中创建目录:
- 名称:创建目录结构
win_file:
路径:C:\ Temp \ folder \ subfolder>
状态:目录
使用文件模块创建目录,并使用命令“ ansible-doc file”获取有关文件模块的详细信息
这是一个说明状态的选项:
如果为
directory
,则将创建所有直接子目录(如果不存在),因为从1.7开始,它们将使用提供的权限进行创建。
如果为file
,则如果文件不存在则不会创建该文件,如果需要该行为,请参见[copy]或[template]模块。
如果为link
,则将创建或更改符号链接。使用hard
的硬链接。
如果为absent
,则将递归删除目录,并且将取消链接文件或符号链接。请注意,
file
如果路径不存在(状态不变),则不会失败。如果
touch
(1.4中的新增功能),则在路径不存在的情况下将创建一个空文件,而现有文件或目录将获得更新的文件访问和修改时间(类似于touch
命令行中的工作方式)。
在这种情况下,您可以使用“文件”模块,您可以为新创建的目录传递太多的参数,例如所有者,组,位置,模式等..
请参阅此文档以获取有关文件模块的详细说明...
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
请记住,此模块不仅用于创建目录!
在Ansible中建立目录的最简单方法。
要么
您想为该目录赋予sudo特权。
要检查目录是否存在,然后运行某些任务(例如,创建目录),请使用以下命令
- 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
您需要file
模块。要创建目录,需要指定以下选项state: directory
:
- name: Creates directory
file:
path: /src/www
state: directory
state=directory
,则将创建所有直接子目录(如果不存在),因为从1.7开始,它们将使用提供的权限进行创建。