Найти и использовать первое совпадение во время цикла с условиями когда в Ansible - PullRequest
0 голосов
/ 12 февраля 2019

Итак, я пытаюсь настроить интерфейс на Juniper ex2300, но я хочу настроить только первый бесплатный интерфейс.Я знаю, что когда вы регистрируете значения, все значения регистрируются, что разочаровывает, поскольку мне не нужны пропущенные значения.

Но я хочу использовать только первый интерфейс, который соответствует условию в задаче Print results, но я хотел сделать это:

- name: Configure Interface
  juniper_junos_command
    commands:
       set interface {{item}} unit 0 family inet address 192.168.1.1/24
  loop: "{{ready.results}}"
  when: 
    #item not skipped
    #end loop

Файл Yaml

  tasks:
    - name: Get interfaces
      juniper_junos_command:
        formats: xml
        commands:
          - show interfaces
      register: inter

    - name: Print results
      debug:
        msg: "{{item.name}}"
      loop: "{{ inter.parsed_output['interface-information']['physical-interface'] }}"
      loop_control:
        label: "{{ item.name }}"
      when:
        - item['oper-status'] == "down"
        - item['admin-status'] == "down"
        - item.name | regex_search('(^[xg]e.*)')
        - item.description == "** SPARE **"
      ignore_errors: yes
      register: ready

Здесь часть ready вывода
Первый элемент, который я не хочу использовать, и второй элемент, который я делаю.Однако это не всегда будет согласованно, если это может быть ge-0/0/0 или ge-0/0/1

"ready": {
        "changed": false,
        "msg": "All items completed",
        "results": [
            {
                "_ansible_ignore_errors": null,
                "_ansible_item_label": "ge-0/0/0",
                "_ansible_item_result": true,
                "_ansible_no_log": false,
                "_ansible_verbose_always": true,
                "changed": false,
                "failed": false,
                "item": {
                    "active-alarms": {
                        "interface-alarms": {
                            "ethernet-alarm-link-down": ""
                        }
                    },
                    "active-defects": {
                        "interface-alarms": {
                            "ethernet-alarm-link-down": ""
                        }
                    },
                    "admin-status": "up",
                    "bpdu-error": "none",
                    "current-physical-address": "f0:4b:3a:72:48:63",
                    "description": "Link to CLIENTS",
                    "duplex": "Auto",
                    "hardware-physical-address": "f0:4b:3a:72:48:63",
                    "ieee-802-3az-eee": "disabled",
                    "if-auto-negotiation": "enabled",
                    "if-config-flags": {
                        "iff-hardware-down": "",
                        "iff-snmp-traps": "",
                        "internal-flags": "0x4000"
                    },
                    "if-device-flags": {
                        "ifdf-down": "",
                        "ifdf-present": "",
                        "ifdf-running": ""
                    },
                    "if-flow-control": "disabled",
                    "if-media-flags": {
                        "ifmf-none": ""
                    },
                    "if-media-type": "Copper",
                    "if-remote-fault": "online",
                    "interface-flapped": "2000-01-02 11:50:01 NZDT (02:48:34 ago)",
                    "interface-transmit-statistics": "Disabled",
                    "l2pt-error": "none",
                    "ld-pdu-error": "none",
                    "link-level-type": "Ethernet",
                    "link-mode": "Full-duplex",
                    "local-index": "648",
                    "logical-interface": {
                        "address-family": {
                            "address-family-flags": {
                                "ifff-is-primary": "",
                                "ifff-port-mode-trunk": "",
                                "internal-flags": "0x4400000"
                            },
                            "address-family-name": "eth-switch",
                            "mtu": "1514"
                        },
                        "encapsulation": "Ethernet-Bridge",
                        "filter-information": "",
                        "if-config-flags": {
                            "iff-device-down": "",
                            "iff-snmp-traps": "",
                            "internal-flags": "0x24024000"
                        },
                        "local-index": "561",
                        "logical-interface-bandwidth": "0",
                        "name": "ge-0/0/0.0",
                        "policer-overhead": "",
                        "snmp-index": "526",
                        "traffic-statistics": {
                            "input-packets": "1448",
                            "output-packets": "20"
                        }
                    },
                    "loopback": "disabled",
                    "mtu": "1514",
                    "name": "ge-0/0/0",
                    "oper-status": "down",
                    "physical-interface-cos-information": {
                        "physical-interface-cos-hw-max-queues": "8",
                        "physical-interface-cos-use-max-queues": "8"
                    },
                    "snmp-index": "513",
                    "sonet-mode": "LAN-PHY",
                    "source-filtering": "disabled",
                    "speed": "Auto",
                    "traffic-statistics": {
                        "input-bps": "0",
                        "input-pps": "0",
                        "output-bps": "0",
                        "output-pps": "0"
                    }
                },
                "msg": "ge-0/0/0"
            },{
                "_ansible_ignore_errors": null,
                "_ansible_item_label": "ge-0/0/1",
                "_ansible_item_result": true,
                "_ansible_no_log": false,
                "_ansible_verbose_always": true,
                "changed": false,
                "failed": false,
                "item": {
                    "active-alarms": {
                        "interface-alarms": {
                            "ethernet-alarm-link-down": ""
                        }
                    },
                    "active-defects": {
                        "interface-alarms": {
                            "ethernet-alarm-link-down": ""
                        }
                    },
                    "admin-status": "up",
                    "bpdu-error": "none",
                    "current-physical-address": "f0:4b:3a:72:48:64",
                    "description": "Link to CLIENTS",
                    "duplex": "Auto",
                    "hardware-physical-address": "f0:4b:3a:72:48:64",
                    "ieee-802-3az-eee": "disabled",
                    "if-auto-negotiation": "enabled",
                    "if-config-flags": {
                        "iff-hardware-down": "",
                        "iff-snmp-traps": "",
                        "internal-flags": "0x4000"
                    },
                    "if-device-flags": {
                        "ifdf-down": "",
                        "ifdf-present": "",
                        "ifdf-running": ""
                    },
                    "if-flow-control": "disabled",
                    "if-media-flags": {
                        "ifmf-none": ""
                    },
                    "if-media-type": "Copper",
                    "if-remote-fault": "online",
                    "interface-flapped": "2000-01-02 11:41:10 NZDT (02:57:26 ago)",
                    "interface-transmit-statistics": "Disabled",
                    "l2pt-error": "none",
                    "ld-pdu-error": "none",
                    "link-level-type": "Ethernet",
                    "link-mode": "Half-duplex",
                    "local-index": "649",
                    "logical-interface": {
                        "address-family": {
                            "address-family-flags": {
                                "ifff-port-mode-trunk": "",
                                "internal-flags": "0x4400000"
                            },
                            "address-family-name": "eth-switch",
                            "mtu": "1514"
                        },
                        "encapsulation": "Ethernet-Bridge",
                        "filter-information": "",
                        "if-config-flags": {
                            "iff-device-down": "",
                            "iff-snmp-traps": "",
                            "internal-flags": "0x24024000"
                        },
                        "local-index": "562",
                        "name": "ge-0/0/1.0",
                        "policer-overhead": "",
                        "snmp-index": "531",
                        "traffic-statistics": {
                            "input-packets": "0",
                            "output-packets": "0"
                        }
                    },
                    "loopback": "disabled",
                    "mtu": "1514",
                    "name": "ge-0/0/1",
                    "oper-status": "down",
                    "physical-interface-cos-information": {
                        "physical-interface-cos-hw-max-queues": "8",
                        "physical-interface-cos-use-max-queues": "8"
                    },
                    "snmp-index": "514",
                    "sonet-mode": "LAN-PHY",
                    "source-filtering": "disabled",
                    "speed": "Auto",
                    "traffic-statistics": {
                        "input-bps": "0",
                        "input-pps": "0",
                        "output-bps": "0",
                        "output-pps": "0"
                    }
                },
                "msg": "ge-0/0/1"
            }        
        ]
    }
}

Как использовать первый элемент, с которым я столкнулся в командеа затем остановить цикл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...