如何使用Ansible创建目录

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

555629 次浏览

您需要文件模块。要创建一个目录,你需要指定选项state=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

这样,如果这两个目录不存在,它将创建它们。

您可以创建目录。使用

# create a directory if it doesn't exist
- file: path=/src/www state=directory mode=0755

你也可以咨询 http://docs.ansible.com/ansible/file_module.html

.

.

.

您可以使用以下方法创建:

最新版本2<

- 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

引用- http://docs.ansible.com/ansible/file_module.html

你可以使用陈述句

- name: webfolder - Creates web folder
file: path=/srv/www state=directory owner=www-data group=www-data mode=0775`

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

- name: create dir mkdir -p dir dir/a dir/b

.执行如下命令

只需要为特定的分配设置执行任务的条件

- name: Creates directory
file: path=/src/www state=directory
when: ansible_distribution == 'Debian'
- file:
path: /etc/some_directory
state: directory
mode: 0755
owner: someone
group: somegroup

这也是设置权限,所有者和组的方法。最后三个参数不是必须的。

---
- hosts: all
connection: local
tasks:
- name: Creates directory
file: path=/src/www state=directory

上面的playbook将在/src路径下创建www目录。

在运行上面的剧本之前。请确保您的ansible主机连接应该设置,

“localhost ansible_connection =当地”

应该出现在/etc/ansible/hosts中

如需更多信息,请与我联系。

可以直接执行该命令,使用ansible直接创建

ansible -v targethostname -m shell -a "mkdir /srv/www" -u targetuser

ansible -v targethostname -m file -a "path=/srv/www state=directory" -u targetuser

目录只能使用文件模块创建,因为目录只是一个文件。

# create a directory if it doesn't exist
- file:
path: /etc/some_directory
state: directory
mode: 0755
owner: foo
group: foo

创建目录

ansible host_name -m file -a "dest=/home/ansible/vndir state=directory"

我们有模块可以在ansible中创建目录,文件

例子

- name: Creates directory
file:
path: /src/www
state: directory

如果您想在windows下创建目录:
. txt

  • name:创建目录结构
    win_file: < br > 路径:C: \ Temp \文件夹\文件夹> < br > 李状态:目录< / >

< / i >

另外,在很多情况下,您需要创建多个目录,因此使用循环而不是为每个目录创建单独的任务是一个好主意。

- name: Creates directory
file:
path: "\{\{ item }}"
state: directory
with_items:
- /srv/www
- /dir/foo
- /dir/bar

使用文件模块创建一个目录,并使用命令“ansible-doc file”获取文件模块的详细信息

这里有一个选项“state”解释:

如果directory,所有直接子目录都将被创建,如果它们不存在,从1.7开始,它们将使用提供的权限创建 如果file,如果文件不存在,文件将不会被创建,如果你想要这种行为,请参阅[copy]或[template]模块 如果link,将创建或更改符号链接。对于硬链接使用hard 如果absent,目录将被递归删除,文件或符号链接将被解除链接。< / p >

注意,如果路径不存在,file将不会失败,因为状态没有改变。

如果touch(1.4新增),如果路径不存在,则会创建一个空文件 存在,而现有文件或目录将接收更新的文件 访问和修改时间(类似于touch的工作方式

.命令行)

在本例中,您可以使用"file"模块,其中有许多参数可以传递给新创建的目录,如所有者、组、位置、模式等.....

关于文件模块的详细说明请参考本文档…

https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module

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

在Ansible中制作目录最简单的方法。

  • name:如果your_directory不存在,创建该目录。 文件: 路径:/etc/your_directory李< / >

你想给那个目录sudo特权

  • name:如果your_directory不存在,创建该目录。 文件: 路径:/etc/your_directory 李模式:“777”< / >

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

$ansible -i inventory -m file -a "path=/tmp/ directory state=directory(我们可以用touch代替directory来创建文件)

在这种情况下,您需要使用文件模块。下面的剧本,你可以使用你的参考。

    ---
- 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

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

- 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: Validar Directorio
stat:
path: /tmp/Sabana
register: sabana_directorio
   

- debug:
msg: "Existe"
when: sabana_directorio.stat.isdir == sabana_directorio.stat.isdir


- name: Crear el directorio si no existe.
file:
path: /tmp/Sabana
state: directory
when: sabana_directorio.stat.exists == false

使用它可以在创建目录之前验证该目录是否存在

enter code here
- name: creating directory in ansible
file:
path: /src/www
state: directory
owner: foo

你可以参考ansible文档

- name: Create a directory
ansible.builtin.file:
path: /etc/some_directory
state: directory
mode: '0755'

你可以用以下方法之一来做这件事:

例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的进一步信息,可以查看官方文档