剧本中的 Ansible 递归检查

Ansible recursive checks in playbooks

我们需要遍历这个结构

区域规范 https://gist.github.com/git001/9230f041aaa34d22ec82eb17d444550c

我能够 运行 以下代码片段,但现在我被困在错误检查中。

剧本

--
- hosts: all
  gather_facts: no

  vars_files:
    - "../doc/application-zone-spec.yml"

  roles:
    - { role: ingress_add, customers: "{{ application_zone_spec }}" }

角色

- name: check if router exists
  shell: "oc get dc -n default {{ customers.zone_name }}-{{ item.type }}"
  with_items: "{{ customers.ingress }}"
  ignore_errors: True
  register: check_router

- name: Print ingress hostnames
  debug: var=check_router

- name: create new router
  shell: "echo 'I will create a router'"
  with_items: "{{ customers.ingress }}"
  when: check_router.rc == 1

ansible 的输出 运行

https://gist.github.com/git001/dab97d7d12a53edfcf2a69647ad543b7

问题是我需要检查入口项,我需要映射来自 "check_router" 寄存器的不同类型的错误。

如果能做出类似的东西就好了。

伪代码。

Iterate through the "customers.ingress"
  check in "check_router" if the rc is ! 0
    execute command.

我们用。

ansible-playbook --version
ansible-playbook 2.1.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides

您可以将第二个循环替换为:

- name: create new router
  shell: "echo 'I will create a router with type {{ item.item }}'"
  with_items: "{{ check_router.results }}"
  when: item.rc == 1

这将遍历 check_route 循环的每一步,您可以通过 item.item.

访问原始项目