我正在使用 ansible 使用“junos_install_config”模块将配置“.set”文件发送到 Junos OS 设备。我想根据名称将特定文件发送到特定主机。
例如。我想将文件“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