你如何创建一个目录www在/srv上基于debian的系统使用Ansible剧本?


当前回答

要检查目录是否存在,然后运行一些任务(例如创建目录),请使用以下命令

- 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

其他回答

这里有一个更简单的方法。

—name:创建dir mkdir -p dir dir/a dir/b

可以直接执行该命令,使用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

记住这个模块不仅仅是用来创建目录的!!

我看到很多Playbooks的例子,我想提到Adhoc命令的例子。

$ansible -i inventory -m file -a "path=/tmp/ directory state=directory(我们可以用touch代替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 有关目录和文件系统的进一步详细信息。