Обход списка заданное количество раз в Ansible - PullRequest
1 голос
/ 09 мая 2020
• 1000 *

Ниже мой пример сценария.

  ---
    - name: GETTING INTERFACES
      connection: network_cli
      cli_command:
        command: show  interfaces terse | match ge-
      register: A

    - name: LISTING CONTENTS of LIST
      debug:
        var: A.stdout_lines


    - name: COUNTING ELEMENTS
      set_fact:
        COUNT: "{{ (A.stdout_lines|length)-1 }}"


    - name: DISPLAY
      debug:
        var: COUNT


    - name: ITERATING OVER LIST 
      debug: var=item
      loop: MUST LOOP OVER THE LIST "COUNT" TIMES How can I achieve this?

Thanks and have a good weekend!!

1 Ответ

0 голосов
/ 09 мая 2020

Q: "Итерировать по массиву COUNT раз, где COUNT - это общее количество элементов в массиве минус один."

A: Можно использовать вложенные . Приведенный ниже сценарий

shell> cat pb.yml
- hosts: localhost

  vars:

    A:
      stdout_lines:
        - line1
        - line2
        - line3

  tasks:

    - debug:
        msg: "{{ item.0 }} {{ item.1 }}"
      with_nested:
        - "{{ query('sequence', params) }}"
        - "{{ A.stdout_lines }}"
      vars:
        count: "{{ A.stdout_lines|length - 2 }}"
        params: "{{ 'start=0 end=' ~ count }}"

дает

shell> ansible-playbook pb.yml | grep msg\":
    "msg": "0 line1"
    "msg": "0 line2"
    "msg": "0 line3"
    "msg": "1 line1"
    "msg": "1 line2"
    "msg": "1 line3"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...