Фильтруйте значение регистра ansible, используя встроенные фильтры или код Python. ⇐ Python
-
Гость
Фильтруйте значение регистра ansible, используя встроенные фильтры или код Python.
Итак, у меня есть следующая задача:
- name: Синхронизировать sudoers синхронизировать: src: "{{ role_dir }}/templates/sudoers/{{ item.src }}" назначение: "/etc/sudoers.d/{{ item.src }}" удалить: да с_предметами: - { источник: "sudoers_common"} - { src: "sudoers_splunk", host_group: "splunk_servers" } - { src: "sudoers_jenkins", host_group: "jenkins_servers" } - { источник: "sudoers_linux" } когда: item.host_group не определен или Inventory_hostname в группах[item.host_group] зарегистрироваться:sync_result который дает объект json, который я хотел бы перебрать в скрипте Python. Я попробовал использовать модуль script:
- имя: Запустить скрипт py. скрипт: "sudoers_process.py {{sync_result | to_json }}" и следующий фрагмент Python:
synchronize_result = json.loads(sys.argv[1]) но возвращает следующую ошибку:
"Ошибка: ожидается имя свойства, заключенное в двойные кавычки: строка 1. столбец 3 (символ 2)"
Конечно, я прибегаю только к сценарию Python, так как не смог найти способ правильно обработать его с помощью встроенных фильтров Ansible, моя конечная цель — создать после него еще одну задачу, которая удаляет файлы, которые не будут получены. скопировано задачей синхронизировать.
Например, следующий фрагмент ansible печатает все элементы, которые могут быть скопированы.
"{{synchronize_result.results | карта(attribute='item.src') | список }}" но чтобы убедиться, что будут скопированы только файлы, мне также нужно настроить его и использовать другие переменные, чтобы проверить, например, был ли элемент пропущен или нет. очень ценю!
Итак, у меня есть следующая задача:
- name: Синхронизировать sudoers синхронизировать: src: "{{ role_dir }}/templates/sudoers/{{ item.src }}" назначение: "/etc/sudoers.d/{{ item.src }}" удалить: да с_предметами: - { источник: "sudoers_common"} - { src: "sudoers_splunk", host_group: "splunk_servers" } - { src: "sudoers_jenkins", host_group: "jenkins_servers" } - { источник: "sudoers_linux" } когда: item.host_group не определен или Inventory_hostname в группах[item.host_group] зарегистрироваться:sync_result который дает объект json, который я хотел бы перебрать в скрипте Python. Я попробовал использовать модуль script:
- имя: Запустить скрипт py. скрипт: "sudoers_process.py {{sync_result | to_json }}" и следующий фрагмент Python:
synchronize_result = json.loads(sys.argv[1]) но возвращает следующую ошибку:
"Ошибка: ожидается имя свойства, заключенное в двойные кавычки: строка 1. столбец 3 (символ 2)"
Конечно, я прибегаю только к сценарию Python, так как не смог найти способ правильно обработать его с помощью встроенных фильтров Ansible, моя конечная цель — создать после него еще одну задачу, которая удаляет файлы, которые не будут получены. скопировано задачей синхронизировать.
Например, следующий фрагмент ansible печатает все элементы, которые могут быть скопированы.
"{{synchronize_result.results | карта(attribute='item.src') | список }}" но чтобы убедиться, что будут скопированы только файлы, мне также нужно настроить его и использовать другие переменные, чтобы проверить, например, был ли элемент пропущен или нет. очень ценю!