Назад | Перейти на главную страницу

Ansible: используйте group_vars напрямую без with_items

Я определил group_vars для монтирования общих ресурсов nfs на множестве хостов в зависимости от их среды:

---
mounts:
- path: /home/user1
  src: 10.0.0.1:/home/user1
  fstype: nfs
  state: present
- path: /home/user2
  src: 10.0.0.1:/home/user2
  fstype: nfs
  state: present

В моем сборнике игр у меня есть следующая задача по добавлению этих средств передвижения:

---
- hosts: clients
  tasks:
  - name: mounts
    mount:
      path: "{{ item.path }}"
      src: "{{ item.src }}"
      fstype: "{{ item.fstype }}"
      opts: "{{ item.opts }}"
      state: "{{ item.state }}"
    with_items: "{{ mounts }}"

Теперь мне было интересно, есть ли сокращение для достижения того же? Например.

---
- hosts: clients
  tasks:
  - name: mounts
    mount: "{{ mounts }}"

Модуль не может выполнить несколько подключений за один вызов, поэтому вам все равно придется проходить каждое отдельное определение монтирования с циклом. Но вы можете установить все параметры за один раз из ваших индивидуальных диктовок.

Прежде чем я напишу (простое) решение, вас все же следует предупредить, что установка аргументов задачи, подобных этому, разочарован в недоступном документе потому что при некоторых обстоятельствах это может быть небезопасно. Вот почему вы получите предупреждение при использовании приведенного ниже кода:

- hosts: clients
  tasks:
    - name: mounts
      mount: "{{ item }}"
      with_items: "{{ mounts }}"