У меня есть словарь с разными названиями, например
vars: images: — foo — bar
Теперь я хочу проверять репозитории и впоследствии создавать образы докеров только после изменения источника. Поскольку получение источника и создание изображения одинаковы для всех элементов, кроме имени, я создал задачи с помощью with_items: images и попытался зарегистрировать результат с помощью:
register: «{{ item }}»
а также пробовал
register: «src_{{ item }}»
Затем я попробовал следующее условие
when: «{{ item }}|changed»
а также
when: «{{ src_item }}|changed»
Это всегда приводит к fatal: [piggy] => |changed expects a dictionary
Итак, как я могу правильно сохранить результаты операций в именах переменных на основе списка, который я перебираю?
Обновление: хотелось бы иметь что-то вроде этого:
— hosts: all vars: images: — foo — bar tasks: — name: get src git: repo: [email protected]/repo.git dest: /tmp/repo register: «{{ item }}_src» with_items: images — name: build image shell: «docker build -t repo .» args: chdir: /tmp/repo when: «{{ item }}_src»|changed register: «{{ item }}_image» with_items: images — name: push image shell: «docker push repo» when: «{{ item }}_image»|changed with_items: images
Источник: