11-30-2021 07:48 AM - edited 12-01-2021 05:25 AM
I ran into an issue using NSO to update ACL's.
I can change any line that is referenced in the template, however if there are additional lines in that ACL on the device, they won't be removed.
Here is the template:
devices template SERVER_ACCESS
ned-id cisco-iosxr-cli-7.33
config
! Tags: replace
ipv4 access-list named-acl ALLOW_HOSTS
rule 10
line "remark permit specific servers"
!
rule 20
line "permit ipv4 host {$SERVER_1} any"
!
rule 30
line "permit ipv4 host {$SERVER_2} any"
!
!
That work's fine for changing Sequence numbers 10, 20 and 30, however, if the device config has additional lines configured in that ACL, they won't be removed as I would expect.
Thanks
Solved! Go to Solution.
12-08-2021 12:47 PM
Found the issue, it was unrelated to the template. It was a typo in the device group, the original template works as expected.
For future reference, I wouldn't use a for loop in a device template as I don't think it's supported but I don't think there is an issue using the delete tag in a device template, if needed.
12-01-2021 06:41 AM - edited 12-01-2021 06:43 AM
I have found something that seems to achieve my goal but I have questions.
If I create an xml template using foreach like this:
<config xmlns="http://tail-f.com/ns/config/1.0">
<devices xmlns="http://tail-f.com/ns/ncs">
<template>
<name>SERVER_ACCESS</name>
<ned-id>
<id xmlns:cisco-iosxr-cli-7.33="http://tail-f.com/ns/ned-id/cisco-iosxr-cli-7.33">cisco-iosxr-cli-7.33:cisco-iosxr-cli-7.33</id>
<config>
<ipv4 xmlns="http://tail-f.com/ned/cisco-ios-xr">
<access-list>
<named-acl tags="replace">
<name>ALLOW_HOSTS</name>
<rule>
<id>10</id>
<line>remark permit specific servers</line>
</rule>
<rule>
<id>20</id>
<line>permit ipv4 host 1.1.1.1 any</line>
</rule>
<rule>
<id>30</id>
<line>permit ipv4 host 2.2.2.2 any</line>
</rule>
<?foreach {rule}?>
<rule tags="delete">
<id>{id}</id>
</rule>
<?end?>
</named-acl>
</access-list>
</ipv4>
</config>
</ned-id>
</template>
</devices>
</config>From the NSO CLI, I then imported that template and it looks like the template does what I need:
eng_acct@ncs(config)# load merge test.xml
Loading.
1.83 KiB parsed in 0.05 sec (36.17 KiB/sec)
eng_acct@ncs(config)# commit
Commit complete.
eng_acct@ncs(config)# devices device CE1 apply-template template-name SERVER_ACCESS
apply-template-result {
device CE1
result ok
}
eng_acct@ncs(config)# show configuration
devices device CE1
config
ipv4 access-list ALLOW_HOSTS
no 40 permit ipv4 host 3.3.3.3 any
no 50 permit ipv4 host 4.4.4.4 any
exit
!
!Here is my main concern. Looking at the template from the CLI, I don't see the foreach..... I don't understand how that is supposed to be readable:
eng_acct@ncs# show running-config devices template SERVER_ACCESS
devices template SERVER_ACCESS
ned-id cisco-iosxr-cli-7.33
config
! Tags: replace
ipv4 access-list named-acl ALLOW_HOSTS
rule 10
line "remark NTP master servers"
!
rule 20
line "permit ipv4 host 1.1.1.1 any"
!
rule 30
line "permit ipv4 host 2.2.2.2 any"
!
! Tags: delete
rule {id}
!
!
!
!
!Looks like the foreach section got boiled down to the delete tag and rule {id}?
12-06-2021 07:22 AM
Any reason why you are using a device template and not writing your service? some of these tags are only meant to be used on service templates.
12-06-2021 08:01 AM
Hi, thanks for your response.
I had considered whether a service might be called for and it seems like creating a service would add a lot of additional steps.
When I was testing with the delete tag and for loops, it seemed like it was probably more intended for a service.
The replace tag is commonly used in config templates but I was surprised to see a config template wasn't working correctly for an ACL.
So is there no way to manage an ACL with a config template?
Thanks again
12-08-2021 12:47 PM
Found the issue, it was unrelated to the template. It was a typo in the device group, the original template works as expected.
For future reference, I wouldn't use a for loop in a device template as I don't think it's supported but I don't think there is an issue using the delete tag in a device template, if needed.
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide