如何使用Ansible创建目录

时间:2014-04-03 17:32:55

标签: directory filesystems ansible

如何使用Ansible playbook在基于Debian的系统上的www创建目录/srv

24 个答案:

答案 0 :(得分:545)

您想要文件模块。要创建目录,您需要指定选项state=directory

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

您可以在http://docs.ansible.com/file_module.html

查看其他选项

答案 1 :(得分:178)

您甚至可以扩展文件模块,甚至可以设置所有者,组和通过它的许可。 (参考:Ansible file documentation

- 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

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

答案 2 :(得分:13)

你可以使用:

创建

最新版本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

答案 3 :(得分:12)

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

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

答案 4 :(得分:7)

- file:
    path: /etc/some_directory
    state: directory
    mode: 0755
    owner: someone
    group: somegroup

这就是你实际上还可以设置权限,所有者和组的方式。最后三个参数不是强制性的。

答案 5 :(得分:6)

您可以创建目录。使用

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

你也可以咨询 http://docs.ansible.com/ansible/file_module.html  有关详细信息,请参阅regaridng目录和文件系统。

答案 6 :(得分:3)

您可以使用声明

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

答案 7 :(得分:2)

我们有可用的模块来创建目录,ansible文件

示例

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

答案 8 :(得分:2)

这里除了提供所有答案外,在很多情况下,您需要创建多个目录而不是一个目录,因此最好使用循环而不是为每个目录创建单独的任务。

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

答案 9 :(得分:2)

只需要为特定分发执行任务的条件

- name: Creates directory
  file: path=/src/www state=directory
  when: ansible_distribution == 'Debian'

答案 10 :(得分:1)

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

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

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

“localhost ansible_connection = local”

应该出现在/ etc / ansible / hosts

了解更多信息,请告知我们。

答案 11 :(得分:1)

创建目录

 gapLevel    count    # row number, column name of each gap
       11        2    # (1, InLevel_02 - 1, InLevel_01), (3, InLevel_02 - 3, InLevel_01)
     10.5        1    # (2, OutLevel_02 - 2, OutLevel_03)
       10        1    # (4, InLevel_02 - 4, InLevel_01)
      9.5        1    # (4, InLevel_02 - 4, InLevel_01)

答案 12 :(得分:0)

您可以直接运行命令并使用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

答案 13 :(得分:0)

如果要在Windows中创建目录:

  
      
  • 名称:创建目录结构
      win_file:
          路径:C:\ Temp \ folder \ subfolder>
          状态:目录
  •   

答案 14 :(得分:0)

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

这里是一个选项“状态”,它说明:

  

如果directory,将创建所有不存在的直接子目录,因为从1.7开始,将使用提供的权限来创建它们。
  如果为file,则如果文件不存在,则不会创建该文件,如果需要该行为,请参见[copy]或[template]模块。
  如果为link,则将创建或更改符号链接。将hard用于硬链接。
  如果为absent,则将递归删除目录,并且将取消链接文件或符号链接。

     

请注意,如果路径不存在(状态不变),file不会失败。

     

如果touch(1.4中的新功能),如果路径不存在,将创建一个空文件   存在,而现有文件或目录将接收更新的文件   访问和修改时间(类似于touch从   命令行)。

答案 15 :(得分:0)

在这种情况下,您可以使用“文件”模块,您可以为新创建的目录传递太多的参数,例如所有者,组,位置,模式等.....

有关文件模块的详细说明,请参阅此文档...

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

请记住,此模块不仅用于创建目录!!!

答案 16 :(得分:0)

在Ansible中建立目录的最简单方法。

  • 名称:创建your_directory(如果不存在)。 文件: 路径:/ etc / your_directory

OR

您要向该目录授予 sudo权限

  • 名称:创建your_directory(如果不存在)。 文件: 路径:/ etc / your_directory 模式:“ 777”

答案 17 :(得分:0)

我看到了很多Playbooks示例,我想提到Adhoc命令示例。

$ ansible -i库存-m文件-a“ path = / tmp / direcory state = directory(代替目录,我们可以提到用touch创建文件)

答案 18 :(得分:0)

在这种情况下,您需要使用文件模块。您可以在以下剧本中作为参考。

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

答案 19 :(得分:0)

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

- 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

答案 20 :(得分:0)

你好,下午好。

我与您分享以下内容。

# Plot 10 random points with the heptagon
set.seed(69)

tibble(x = rnorm(10), y = rnorm(10), shape = list(heptagon)) %>%
  ggplot() + 
  geom_grob(aes(x, y, label = shape))

通过它可以在创建目录之前验证目录是否存在

答案 21 :(得分:0)

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

你可以参考ansible documentation

答案 22 :(得分:0)

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

答案 23 :(得分:-7)

这是更简单的方法。

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