У меня есть словарь с разными названиями, например
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
Тебе это не нужно. Переменные, зарегистрированные для задачи с
with_items
, имеют другой формат, они содержат результаты для всех элементов.Как вы ссылаетесь на названия изображений в результатах? — person soupdiver; 18.09.2017
@KenJ последние две задачи показывают это. Если вы имели в виду что-то еще, пожалуйста, уточнить. Запустите его и посмотрите результат. — person soupdiver; 18.09.2017