剧本中的 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
.
访问原始项目
我们需要遍历这个结构
区域规范 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
.