你如何创建一个目录www在/srv上基于debian的系统使用Ansible剧本?
当前回答
---
- hosts: all
connection: local
tasks:
- name: Creates directory
file: path=/src/www state=directory
上面的playbook将在/src路径下创建www目录。
在运行上面的剧本之前。请确保您的ansible主机连接应该设置,
“本地主机ansible_connection=本地”
应该出现在/etc/ansible/hosts中
如需更多信息,请与我联系。
其他回答
在本例中,您可以使用"file"模块,其中有许多参数可以传递给新创建的目录,如所有者、组、位置、模式等.....
关于文件模块的详细说明请参考本文档…
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
记住这个模块不仅仅是用来创建目录的!!
我看到很多Playbooks的例子,我想提到Adhoc命令的例子。
$ansible -i inventory -m file -a "path=/tmp/ directory state=directory(我们可以用touch代替directory来创建文件)
你可以用以下方法之一来做这件事:
例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的更多信息,您可以查看官方文档
这里有一个更简单的方法。
—name:创建dir mkdir -p dir dir/a dir/b
在这种情况下,您需要使用文件模块。下面的剧本,你可以使用你的参考。
---
- 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