你如何创建一个目录www在/srv上基于debian的系统使用Ansible剧本?
当前回答
enter code here
- name: creating directory in ansible
file:
path: /src/www
state: directory
owner: foo
你可以参考可靠的文档
其他回答
您需要文件模块。要创建目录,您需要指定选项状态:directory:
- name: Creates directory
file:
path: /src/www
state: directory
你可以在https://docs.ansible.com/ansible/latest/collections/ansible/builtin/file_module.html上看到其他选项
您甚至可以扩展文件模块,甚至可以通过它设置所有者、组和权限。(参考: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
这样,如果这两个目录不存在,它将创建它们。
可以直接执行该命令,使用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
在本例中,您可以使用"file"模块,其中有许多参数可以传递给新创建的目录,如所有者、组、位置、模式等.....
关于文件模块的详细说明请参考本文档…
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
记住这个模块不仅仅是用来创建目录的!!
你可以用以下方法之一来做这件事:
例1:如果父目录已经存在:
- name: Create a new directory www at given path
ansible.builtin.file:
path: /srv/www/
state: directory
mode: '0755'
例2:父目录不存在:
- name: Create a new directory www at given path recursively
ansible.builtin.file:
path: /srv/www/
state: directory
mode: '0755'
recurse: yes
在示例2中,如果两个目录都不存在,它将递归地创建它们。
有关file_module的更多信息,您可以查看官方文档