通过 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(',') }}"