Запускайте команду с разными аргументами каждый раз в Ansible playbook - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь запустить команду в Ansible, чтобы найти соседей в моей сети:

- name: Get neighbors
  junos_rpc:
    rpc: "get-lldp-interface-neighbors"
    output: 'xml'
    args:
      interface_device: A
  register: net_topology

Так что моя проблема возникает, когда в этой задаче мне нужно l oop над перечислите и дайте еще один аргумент для interface_device и каждый раз регистрируйте результат также в другой переменной net_topology.

Ответы [ 2 ]

2 голосов
/ 27 апреля 2020
- name: Get neighbors
  junos_rpc:
    rpc: "get-lldp-interface-neighbors"
    output: 'xml'
    args:
      interface_device: "{{ item }}"
  loop:
    - A
    - B
    - C
  register: net_topology

Как только вы измените свою задачу следующим образом, она будет проигрываться три раза: один раз для каждого элемента в моем примере l oop. Переменная item получит значение текущего элемента в списке.

Вам не нужно изменять переменную register: она будет автоматически изменена, как описано в ansible документация :

Когда вы используете register с al oop, структура данных, помещенная в переменную, будет содержать атрибут results, который представляет собой список всех ответов от модуля , Это отличается от структуры данных, возвращаемой при использовании register без всех oop

Таким образом, вы можете проверить все свои результаты в последующей задаче, выполнив цикл по net_topology.results, который содержит список отдельных результатов. .

0 голосов
/ 27 апреля 2020

На самом деле я сделал что-то похожее с описанным выше, но я просто передал свой список другим способом:

- name: building network topology
  junos_rpc:
    rpc: "get-lldp-interface-neighbors"
    output: 'xml'
    args:
      interface_device: "{{item}}"
  loop:
    "{{my_list}}"
  register: net_topology

И это фактически то же самое, что и это:

- name: building network topology
  junos_rpc:
    rpc: "get-lldp-interface-neighbors"
    output: 'xml'
    args:
      interface_device: "{{item}}"
  with_items:
    "{{my_list}}"
  register: net_topology

Я должен сказать, что моей первоначальной ошибкой была идентификация l oop, потому что она была размещена внутри junos_rp c, и, делая это, я не мог получить никакого результата !!!

...