Ansible:ios_config-仅在存在配置行时才希望删除它

时间:2019-02-26 15:59:01

标签: networking routing ansible yaml cisco

如果路由器当前通过“ no ip sla 46”运行,则需要删除路由器上的IP SLA配置,但是,如果路由器当前不存在IP SLA配置,则剧本会失败。想法?

    - name: Add IP SLA test
      ios_config:
        lines:
          - udp-jitter 10.x.x.x source-ip {{ loopback }} codec g711ulaw
          - tos 184
          - tag Network Operation Center - G711ulaw EF VoIP
          - frequency 180
        parents: ip sla 46
        before: no ip sla 46

2 个答案:

答案 0 :(得分:0)

最后使用ios_command检查当前IP SLA配置并删除(如果存在)。

- name: Find current SLA 46 config
      ios_command:
        commands: 'show run | inc sla 46'
      register: raw_sla_46

    - set_fact:
        sla_46: "{{ raw_sla_46.stdout[0] }}"

    - name: Delete IP SLA 46 if present
      ios_config:
        lines:
          - no ip sla 46
      when: sla_46 == 'ip sla 46'
      
    - name: Add IP SLA from Lo0 to DC
      ios_config:
        lines:
          - udp-jitter 10.20.0.25 17000 source-ip {{ loopback }} codec g711ulaw
          - tos 184
          - tag Network Operation Center - CHA - G711ulaw EF VoIP
          - frequency 180
        parents: ip sla 46

答案 1 :(得分:0)

我也遇到同样的问题-我想更改NTP服务器,但是出于幂等的考虑,当我添加所需的服务器时,我想删除所有旧的/错误的服务器。在ansible中,应该有一种方法可以替换行-我不想使用before子句删除所有ntp配置,因为它具有破坏性的副作用。

当前配置

ntp server 10.10.10.10

所需的配置

ntp server 10.10.10.20

如果我使用ios_config命令为新服务器运行一本剧本,则最终会获得2台NTP服务器-这不是我想要的!