У меня есть следующая переменная, загруженная через include_vars
:
access:
username-foo:
- path: /
permissions: rwX
recursive: true
username-bar:
- path: /
permissions: rX
- path: /css
permissions: rwX
recursive: true
- path: /data
permissions: rX
- path: /data/reviews.yml
permissions: rw
- path: /js
permissions: rX
- path: /js/*.js
permissions: rw
Я хочу передать эту информацию shell
команде, чтобы установить соответствующие разрешения.
Я попробовал некоторые методы здесь: http://docs.ansible.com/playbooks_loops.html, но не смог найти рабочее решение.
Можно ли повторить эту структуру? Если нет, то как мне его реструктурировать, чтобы он работал? Можно ли сделать это без нарушения правила СУХОГО (например, включить имя пользователя в каждую запись)?
shell
модуль, потому что мне нужно сделать рекурсивный ACL, и это не поддерживаетсяacl
модулем.shell
это ваша лучшая ставка с ACL и рекурсией.recursive
в моем примере? Когда я пытаюсь получить к нему доступ, а его нет, Ansible остановит выполнение playbook и выдаст исключение. Я предпочитаю не добавлятьrecursive: false
к каждой записи.{{ some_variable | default() }}
. Итак, в данном случае:{{ item.1.recursive | default(false) }}
Это хороший выходной пример, который вы можете попробовать сами. Создайте новую книгу под названием
iteration_loop.yml
:Затем запустите playbook следующим образом:
ansible-playbook -i '172.16.222.131,' iteration_loop.yml
и вывод должен дать вам способ доступа к элементам:
источник
Предполагая, что
dict={a:[1,2,3],b:[1,2]}
и так далее:Сейчас
flattened == [1,2,3,1,2]
источник
Я переформатирую ваши переменные в формат ниже:
а затем моя пьеса, как показано ниже:
источник