Конкретный таргетинг хостов на основе имени файла - PullRequest
1 голос
/ 30 сентября 2019

Я использую ansible для отправки файлов конфигурации .set на устройства с ОС Junos с помощью модуля junos_install_config. Я хочу отправлять определенные файлы конкретным хостам на основе имен.

например. Я хочу отправить файл "vMX1.set" на хост vMX1, файл "vMX2.set" на хост vMX2 и т. Д.

В данный момент я делаю это так:

---
name: Configure Junos Devices
hosts: all
roles:
    - Juniper.junos
connection: local
gather_facts: no
tasks:
   - name: Send to Device 1
     when: ansible_hostname == vMX1
     junos_install_config:
         host={{ inventory_hostname }}
         file=/home/usr/resources/vMX1.set
         overwrite=false
- name: Send to Device 2
     when: ansible_hostname == vMX2
     junos_install_config:
         host={{ inventory_hostname }}
         file=/home/usr/resources/vMX2.set
         overwrite=false

Это работает, однако, очень много времени и не очень логично. Например, если у меня 50 файлов конфигурации и 50 устройств, мне нужно написать 50 разных задач. Есть ли способ автоматизировать это так, чтобы книга воспроизведения проверила имя задачи и присвоила файлу соответствующее имя?

Файл хоста выглядит так

[vMXrouters]
vMX1 ansible_ssh_host=10.249.89.22
vMX2 ansible_ssh_host=10.249.89.190

1 Ответ

0 голосов
/ 30 сентября 2019

Q: "Есть ли способ автоматизировать это, чтобы книга воспроизведения проверила название задачи и присвоила файлу соответствующее имя? "

A: Книга воспроизведения ниже должна выполнять эту работу

- name: Configure Junos Devices
  hosts: all
  vars:
    list_of_devices: ['vMX1', 'vMX2']
  tasks:
    - name: "Send to {{ inventory_hostname }}"
      junos_install_config:
        host="{{ inventory_hostname }}"
        file="/home/usr/resources/{{ inventory_hostname }}.set"
        overwrite=false
      when: inventory_hostname in list_of_devices
      delegate_to: localhost

Книга воспроизведения проще, если определена группа хостов

- name: Configure Junos Devices
  hosts: vMX_devices
  tasks:
    - name: "Send to {{ inventory_hostname }}"
      junos_install_config:
        host="{{ inventory_hostname }}"
        file="/home/usr/resources/{{ inventory_hostname }}.set"
        overwrite=false
      delegate_to: localhost

(не проверено)

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