我有一个不同名称的字典,例如
vars:
images:
- foo
- bar
不,我想签出存储库,然后仅在源发生更改时才构建docker映像。由于获取源代码和构建图像对于所有项目都是相同的,除了我创建任务的名称,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: git@foobar.com/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
慕尼黑5688855