通过 Ansible 查找包含程序的所有 CICS 区域
Finding all CICS regions containing a program through Ansible
我正在为 Ansible 使用 IBM z/OS CICS collection。我需要能够找到包含特定程序的所有 CICS 区域,并定期将其自动化。
我已经设置并测试了 CMCI。我也可以获得这样的所有程序:
tasks:
- name: 'Get all programs'
delegate_to: 'localhost'
ibm.ibm_zos_cics.cmci_get:
type: 'CICSProgram'
scope: [redacted]
我不太确定我应该如何过滤程序或我应该如何将结果映射到 CICS 区域名称,return 它作为一个逗号分隔的列表。
您可以尝试这样的剧本,它使用 filter 查找具有特定名称的 PROGRAM
资源的所有实例。
然后使用内置的 debug
模块结合 Jinja 过滤器来提取每个 PROGRAM
所在的区域的名称,最后将它们连接到一个逗号分隔的列表中:
---
- name: CICS CMCI Report
collections:
- ibm.ibm_zos_cics
hosts: 'localhost'
gather_facts: 'false'
vars:
program_name: MYPROG
context: CICSPLEX
cmci_host: 'example.com'
cmci_port: 12345
tasks:
- name: Make sure CMCI module dependencies are installed
pip:
name:
- requests
- xmltodict
- name: Find all instances of a particular program
cmci_get:
context: '{{ context }}'
cmci_host: '{{ cmci_host }}'
cmci_port: '{{ cmci_port }}'
type: 'CICSProgram'
resources:
filter:
program: '{{ program_name }}'
register: result
- name: Extract the CICS region names from the program records
debug:
msg: "{{ result.records | map(attribute='eyu_cicsname') | join(',') }}"
我正在为 Ansible 使用 IBM z/OS CICS collection。我需要能够找到包含特定程序的所有 CICS 区域,并定期将其自动化。
我已经设置并测试了 CMCI。我也可以获得这样的所有程序:
tasks:
- name: 'Get all programs'
delegate_to: 'localhost'
ibm.ibm_zos_cics.cmci_get:
type: 'CICSProgram'
scope: [redacted]
我不太确定我应该如何过滤程序或我应该如何将结果映射到 CICS 区域名称,return 它作为一个逗号分隔的列表。
您可以尝试这样的剧本,它使用 filter 查找具有特定名称的 PROGRAM
资源的所有实例。
然后使用内置的 debug
模块结合 Jinja 过滤器来提取每个 PROGRAM
所在的区域的名称,最后将它们连接到一个逗号分隔的列表中:
---
- name: CICS CMCI Report
collections:
- ibm.ibm_zos_cics
hosts: 'localhost'
gather_facts: 'false'
vars:
program_name: MYPROG
context: CICSPLEX
cmci_host: 'example.com'
cmci_port: 12345
tasks:
- name: Make sure CMCI module dependencies are installed
pip:
name:
- requests
- xmltodict
- name: Find all instances of a particular program
cmci_get:
context: '{{ context }}'
cmci_host: '{{ cmci_host }}'
cmci_port: '{{ cmci_port }}'
type: 'CICSProgram'
resources:
filter:
program: '{{ program_name }}'
register: result
- name: Extract the CICS region names from the program records
debug:
msg: "{{ result.records | map(attribute='eyu_cicsname') | join(',') }}"