Ansible-создание нескольких папок, если они не существуют

цель:

  • создать несколько каталогов, если они не существуют.
  • не изменяйте разрешения существующей папки

Текущие Правила съема:

- name: stat directories if they exist
  stat:
    path: "{{ item }}"
  with_items:
    - /data/directory
    - /data/another
  register: myvar

- debug: var=myvar.results

- name: create directory if they don't exist
  file:
    path: "{{ item.invocation.module_args.path }}"
    state: directory
    owner: root
    group: root
    mode: 0775
  with_items: "{{ stat.results }}"
  # when: myvar.results.stat.exists == false

на when утверждение ошибочно.

Я посмотрел на приведенный пример;http://docs.ansible.com/ansible/stat_module.html. Но это работает только для одной папки.

2 ответов


Ansible-создание нескольких папок без изменения разрешений ранее существовавших.

отлично работает для меня. Надеюсь, это сработает и для вас, просто попробуйте.

---
- name: "Creating multiple by checking folders"
  hosts: your_host_name
  tasks:
  - block:
    - name: "Checking folders"
      stat:
       path: "{{item}}"
      register: folder_stats
      with_items:
      - ["/var/www/f1","/var/www/f2","/var/www/f3","/var/www/f4"]
    - name: "Creating multiple folders without disturbing previous permissions"
      file:
       path: "{{item.item}}"
       state: directory
       mode: 0755
       group: root
       owner: root
      when: item.stat.exists == false
      with_items:
      - "{{folder_stats.results}}"
...

используя модули Ansible, вам не нужно проверять, существует ли что-то или нет, вы просто описываете желаемое состояние, поэтому:

- name: create directory if they don't exist
  file:
    path: "{{ item }}"
    state: directory
    owner: root
    group: root
    mode: 0775
  with_items:
    - /data/directory
    - /data/another