如何在基于debian的系统上使用Ansible剧本创建一个目录www ?
www
您需要文件模块。要创建一个目录,你需要指定选项state=directory:
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
您可以使用以下方法创建:
- 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中创建目录,文件
例子
如果您想在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的工作方式 .命令行)
如果directory,所有直接子目录都将被创建,如果它们不存在,从1.7开始,它们将使用提供的权限创建 如果file,如果文件不存在,文件将不会被创建,如果你想要这种行为,请参阅[copy]或[template]模块 如果link,将创建或更改符号链接。对于硬链接使用hard 如果absent,目录将被递归删除,文件或符号链接将被解除链接。< / p >
directory
file
link
hard
absent
注意,如果路径不存在,file将不会失败,因为状态没有改变。
如果touch(1.4新增),如果路径不存在,则会创建一个空文件 存在,而现有文件或目录将接收更新的文件 访问和修改时间(类似于touch的工作方式
touch
在本例中,您可以使用"file"模块,其中有许多参数可以传递给新创建的目录,如所有者、组、位置、模式等.....
关于文件模块的详细说明请参考本文档…
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
记住这个模块不仅仅是用来创建目录的!!
在Ansible中制作目录最简单的方法。
你想给那个目录sudo特权。
我看到很多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的进一步信息,可以查看官方文档
file_module