amnesh.soodar.soodar_acls module – Manages ACLs on Soodar devices.
Note
This module is part of the amnesh.soodar collection (version 2.0.0).
It is not included in ansible-core.
To check whether it is installed, run ansible-galaxy collection list.
To install it, use: ansible-galaxy collection install https://soodar.ir/ansible/amnesh.soodar.tar.gz.
To use it in a playbook, specify: amnesh.soodar.soodar_acls.
Synopsis
This module configures and manages ACLs on Soodar platforms.
Note
This module has a corresponding action plugin.
Parameters
Parameter |
Comments |
|---|---|
A list of ACL configuration options. |
|
A list of Access Control Lists (ACL) attributes. |
|
The entries within the ACL. |
|
Specify the packet destination. |
|
Host address prefix to match. |
|
Match any source address. Choices:
|
|
Specify the destination port along with protocol. Note, Valid with TCP/UDP protocol_options |
|
Match only packets on a given port number. |
|
Match only packets with a greater port number. |
|
Match only packets with a lower port number. |
|
Port group. |
|
Specify the end of the port range. |
|
Specify the start of the port range. |
|
Specify the action. Choices:
|
|
Specify the protocol to match. Refer to vendor documentation for valid values. |
|
protocol type. |
|
Authentication Header Protocol. Choices:
|
|
Cisco’s EIGRP routing protocol. Choices:
|
|
Encapsulation Security Payload. Choices:
|
|
GRE tunneling. Choices:
|
|
Hop by Hop options header. Valid for IPV6 Choices:
|
|
Internet Control Message Protocol. |
|
Administratively prohibited Choices:
|
|
Alternate address Choices:
|
|
Datagram conversion Choices:
|
|
Host prohibited Choices:
|
|
Net prohibited Choices:
|
|
Echo (ping) Choices:
|
|
Echo reply Choices:
|
|
Parameter problem Choices:
|
|
Host isolated Choices:
|
|
Host unreachable for precedence Choices:
|
|
Host redirect Choices:
|
|
Host redirect for TOS Choices:
|
|
Host unreachable for TOS Choices:
|
|
Host unknown Choices:
|
|
Host unreachable Choices:
|
|
Information replies Choices:
|
|
Information requests Choices:
|
|
Mask replies Choices:
|
|
mask_request Choices:
|
|
Mobile host redirect Choices:
|
|
Network redirect Choices:
|
|
Net redirect for TOS Choices:
|
|
Network unreachable for TOS Choices:
|
|
Net unreachable Choices:
|
|
Network unknown Choices:
|
|
Parameter required but no room Choices:
|
|
Parameter required but not present Choices:
|
|
Fragmentation needed and DF set Choices:
|
|
All parameter problems Choices:
|
|
Port unreachable Choices:
|
|
Precedence cutoff Choices:
|
|
Protocol unreachable Choices:
|
|
Reassembly timeout Choices:
|
|
All redirects Choices:
|
|
Router discovery advertisements Choices:
|
|
Router discovery solicitations Choices:
|
|
Source quenches Choices:
|
|
Source route failed Choices:
|
|
All time exceededs Choices:
|
|
Timestamp replies Choices:
|
|
Timestamp requests Choices:
|
|
Traceroute Choices:
|
|
TTL exceeded Choices:
|
|
All unreachables Choices:
|
|
Internet Gateway Message Protocol. Choices:
|
|
Any Internet Protocol. Choices:
|
|
Payload Compression Protocol. Choices:
|
|
IP in IP tunneling. Choices:
|
|
Any IPv6. Choices:
|
|
OSPF routing protocol. Choices:
|
|
Protocol Independent Multicast. Choices:
|
|
An IP protocol number |
|
Stream Control Transmission Protocol. Choices:
|
|
Match TCP packet flags |
|
Match on the ACK bit Choices:
|
|
Match on the FIN bit Choices:
|
|
Match on the PSH bit Choices:
|
|
Match on the RST bit Choices:
|
|
Match on the SYN bit Choices:
|
|
Match on the URG bit Choices:
|
|
User Datagram Protocol. Choices:
|
|
Enable reflect option for this entry. Choices:
|
|
The remarks/description of the ACL. The remarks attribute used within an ace with or without a sequence number will produce remarks that are pushed before the ace entry. Remarks entry used as the only key in as the list option will produce non ace specific remarks, these remarks would be pushed at the end of all the aces for an acl. Remarks is treated a block, for every single remarks updated for an ace all the remarks are negated and added back to maintain the order of remarks mentioned. As the appliance deletes all the remarks once the ace is updated, the set of remarks would be re-applied that is an expected behavior. |
|
Sequence Number for the Access Control Entry(ACE). Refer to vendor documentation for valid values. |
|
Specify the packet source. |
|
Source network address. |
|
Match any source address. Choices:
|
|
Specify the source port along with protocol. Note, Valid with TCP/UDP protocol_options |
|
Match only packets on a given port number. |
|
Match only packets with a greater port number. |
|
Match only packets with a lower port number. |
|
Port group. |
|
Specify the end of the port range. |
|
Specify the start of the port range. |
|
The name or the number of the ACL. |
|
The Address Family Indicator (AFI) for the Access Control Lists (ACL). Choices:
|
|
This option is used only with state parsed. The value of this option should be the output received from the Soodar device by executing the command sh access-list. The state parsed reads the configuration from |
|
The state the configuration should be left in The state merged is the default state which merges the want and have config, but for ACL module as the Soodar platform doesn’t allow update of ACE over an pre-existing ACE sequence in ACL, same way ACLs resource module will error out for respective scenario and only addition of new ACE over new sequence will be allowed with merge state. The states rendered, gathered and parsed does not perform any change on the device. The state rendered will transform the configuration in The state gathered will fetch the running configuration from device and transform it into structured data in the format as per the resource module argspec and the value is returned in the gathered key within the result. The state parsed reads the configuration from The state overridden, modify/add the ACLs defined, deleted all other ACLs. The state replaced, modify/add only the ACEs of the ACLs defined only. It does not perform any other change on the device. The state deleted, deletes only the specified ACLs, or all if not specified. Choices:
|
Notes
Note
Tested against Soodar Version 23.11
This module works with connection
amnesh.soodar.network_cli.
Examples
# Using merged
# Before state:
# -------------
#
# Router# sh running-config | section access-list
# ip access-list 110
# 10 deny icmp 192.0.2.0/24 192.0.3.0/24 echo
- name: Merge provided configuration with device configuration
amnesh.soodar.soodar_acls:
config:
- afi: ipv4
acls:
- name: std_acl
aces:
- grant: deny
source:
address: 192.168.1.200/32
- grant: deny
source:
address: 192.168.2.0/24
- name: 110
aces:
- sequence: 10
protocol_options:
icmp:
traceroute: true
source:
address: 192.168.3.0/24
destination:
any: true
grant: permit
- grant: deny
protocol_options:
tcp:
ack: true
source:
address: 198.51.100.0/24
destination:
address: 198.51.110.0/24
port_protocol:
eq: telnet
- name: extended_acl_1
aces:
- grant: deny
protocol_options:
tcp:
fin: true
source:
address: 192.0.2.0/24
destination:
address: 192.0.3.0/24
port_protocol:
eq: www
- name: 123
aces:
- remarks:
- "remarks for extended ACL 1"
- grant: deny
protocol_options:
tcp:
ack: true
source:
address: 198.51.100.0/24
destination:
address: 198.51.101.0/24
port_protocol:
eq: telnet
- grant: deny
protocol_options:
tcp:
ack: true
source:
address: 192.0.3.0/24
destination:
address: 192.0.4.0/24
port_protocol:
eq: www
- afi: ipv6
acls:
- name: R1_TRAFFIC
aces:
- grant: deny
protocol_options:
tcp:
ack: true
source:
any: true
port_protocol:
eq: www
destination:
any: true
port_protocol:
eq: telnet
state: merged
# Task Output
# -----------
#
# before:
# - acls:
# - aces:
# - destination:
# address: 192.0.3.0/24
# grant: deny
# protocol: icmp
# protocol_options:
# icmp:
# echo: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# name: '100'
# afi: ipv4
# commands:
# - ip access-list 110
# - deny tcp 198.51.100.0/24 198.51.110.0/24 eq telnet ack
# - 30 permit icmp 192.168.3.0/24 any traceroute
# - ip access-list_acl_1
# - deny tcp 192.0.2.0/24 192.0.3.0/24 eq www fin
# - ip access-list std_acl
# - deny 192.168.1.20/32
# - deny 192.168.2.0/24
# - ip access-list 123
# - deny tcp 198.51.100.0/24 198.51.101.0/24 eq telnet ack
# - deny tcp 192.0.3.0/24 192.0.4.0/24 eq www ack
# - remark remarks for extended ACL 1
# - ipv6 access-list R1_TRAFFIC
# - deny tcp any eq www any eq telnet ack
# after:
# - acls:
# - aces:
# - destination:
# address: 192.0.3.0/24
# grant: deny
# protocol: icmp
# protocol_options:
# icmp:
# echo: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# - destination:
# address: 198.51.110.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# address: 198.51.100.0/24
# - destination:
# any: true
# grant: permit
# protocol: icmp
# protocol_options:
# icmp:
# traceroute: true
# sequence: 30
# source:
# address: 0.0.0.0/8
# name: '110'
# - aces:
# - destination:
# address: 198.51.101.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# address: 198.51.100.0/24
# - destination:
# address: 192.0.4.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# address: 192.0.3.0/24
# - remarks:
# - remarks for extended ACL 1
# name: '123'
# - aces:
# - destination:
# address: 192.0.3.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# fin: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# name: extended_acl_1
# - aces:
# - grant: deny
# sequence: 10
# source:
# address: 192.168.1.20/32
# - grant: deny
# sequence: 20
# source:
# address: 192.168.2.0/24
# name: std_acl
# afi: ipv4
# - acls:
# - aces:
# - destination:
# any: true
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# any: true
# port_protocol:
# eq: www
# name: R1_TRAFFIC
# afi: ipv6
# After state:
# ------------
#
# Router# sh running-config | section access-list
# ip access-list std_acl
# 10 deny 192.168.1.200/32
# 20 deny 192.168.2.0/24
# ip access-list 100
# 10 deny icmp 192.0.2.0/24 192.0.3.0/24 echo
# ip access-list 110
# 10 deny icmp 192.0.2.0/24 192.0.3.0/24 traceroute
# 20 deny tcp 198.51.100.0/24 198.51.110.0/24 eq telnet ack
# ip access-list 123
# 10 deny tcp 198.51.100.0/24 198.51.101.0/24 eq telnet ack
# 20 deny tcp 192.0.3.0/24 192.0.4.0/24 eq www ack
# ip access-list test
# 10 deny tcp 192.0.2.0/24 192.0.3.0/24 eq www fin
# ipv6 access-list R1_TRAFFIC
# sequence 10 deny tcp any eq www any eq telnet ack
# Router# show running-config | include ip(v6)* access-list|remark
# ip access-list std_acl
# ip access-list extended_acl_1
# ip access-list 110
# ip access-list 123
# remark remarks for extended ACL 1
# ipv6 access-list R1_TRAFFIC
# Using merged (update existing ACE - will fail)
# Before state:
# -------------
#
# Router# sh running-config | section access-list
# ip access-list 100
# 10 deny icmp 192.0.2.0/24 192.0.3.0/24 echo
- name: Merge provided configuration with device configuration
amnesh.soodar.soodar_acls:
config:
- afi: ipv4
acls:
- name: 100
aces:
- sequence: 10
protocol_options:
icmp:
traceroute: true
state: merged
# After state:
# ------------
#
# Play Execution fails, with error:
# Cannot update existing sequence 10 of ACLs 100 with state merged.
# Please use state replaced or overridden.
# Using replaced
# Before state:
# -------------
#
# Router# sh running-config | section access-list
# ip access-list std_acl
# 10 deny 192.168.1.200
# 20 deny 192.168.2.0 0.0.0.255
# ip access-list 110
# 10 deny icmp 192.0.2.0/24 192.0.3.0/24 traceroute
# 20 deny tcp 198.51.100.0/24 198.51.110.0/24 eq telnet ack
# ip access-list 123
# 10 deny tcp 198.51.100.0/24 198.51.101.0/24 eq telnet ack
# 20 deny tcp 192.0.3.0/24 192.0.4.0/24 eq www ack
# ipv6 access-list R1_TRAFFIC
# sequence 10 deny tcp any eq www any eq telnet ack
# ip access-list test
# 10 deny tcp 192.0.2.0/24 192.0.3.0/24 eq www fin
- name: Replaces device configuration of listed acls with provided configuration
amnesh.soodar.soodar_acls:
config:
- afi: ipv4
acls:
- name: 110
aces:
- grant: deny
protocol_options:
tcp:
syn: true
source:
address: 192.0.2.0/24
destination:
address: 192.0.3.0/24
port_protocol:
eq: www
- name: 150
aces:
- grant: deny
sequence: 20
protocol_options:
tcp:
syn: true
source:
address: 198.51.100.0/24
port_protocol:
eq: telnet
destination:
address: 198.51.110.0/24
port_protocol:
eq: telnet
state: replaced
# Task Output
# -----------
#
# before:
# - acls:
# - aces:
# - destination:
# address: 192.0.3.0/24
# grant: deny
# protocol: icmp
# protocol_options:
# icmp:
# traceroute: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# - destination:
# address: 198.51.110.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# address: 198.51.100.0/24
# name: '110'
# - aces:
# - destination:
# address: 198.51.101.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# address: 198.51.100.0/24
# - destination:
# address: 192.0.4.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# address: 192.0.3.0/24
# name: '123'
# - aces:
# - destination:
# any: true
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# any: true
# port_protocol:
# eq: www
# name: R1_TRAFFIC
# - aces:
# - grant: deny
# sequence: 10
# source:
# address: 192.168.1.200/32
# - grant: deny
# sequence: 20
# source:
# address: 192.168.2.0/24
# name: std_acl
# - aces:
# - destination:
# address: 192.0.3.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# fin: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# name: test
# afi: ipv4
# commands:
# - ip access-list 110
# - no 10 deny icmp 192.0.2.0/24 192.0.3.0/24 traceroute
# - no 20 deny tcp 198.51.100.0/24 198.51.110.0/24 eq telnet ack
# - deny tcp 192.0.2.0/24 192.0.3.0/24 eq www syn
# - ip access-list 150
# - 20 deny tcp 198.51.100.0/24 eq telnet 198.51.110.0/24 eq telnet syn
# after:
# - acls:
# - aces:
# - destination:
# address: 192.0.3.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# syn: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# name: '110'
# - aces:
# - destination:
# address: 198.51.101.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# address: 198.51.100.0/24
# - destination:
# address: 192.0.4.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# address: 192.0.3.0/24
# name: '123'
# - aces:
# - destination:
# address: 198.51.110.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# syn: true
# sequence: 20
# source:
# address: 198.51.100.0/24
# port_protocol:
# eq: telnet
# name: '150'
# - aces:
# - destination:
# any: true
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# any: true
# port_protocol:
# eq: www
# name: R1_TRAFFIC
# - aces:
# - grant: deny
# sequence: 10
# source:
# address: 192.168.1.200/32
# - grant: deny
# sequence: 20
# source:
# address: 192.168.2.0/24
# name: std_acl
# - aces:
# - destination:
# address: 192.0.3.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# fin: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# name: test
# afi: ipv4
# After state:
# -------------
#
# Router# sh access-lists
# ip access-list std_acl
# 10 deny 192.168.1.200/32
# 20 deny 192.168.2.0/24
# ip access-list 110
# 10 deny tcp 192.0.2.0/24 192.0.3.0/24 eq www syn
# ip access-list 123
# 10 deny tcp 198.51.100.0/24 198.51.101.0/24 eq telnet ack
# 20 deny tcp 192.0.3.0/24 192.0.4.0/24 eq www ack
# ip access-list 150
# 20 deny tcp 198.51.100.0/24 eq telnet 198.51.110.0/24 eq telnet syn
# ip access-list test
# 10 deny tcp 192.0.2.0/24 192.0.3.0/24 eq www fin
# ipv6 access-list R1_TRAFFIC
# sequence 10 deny tcp any eq www any eq telnet ack
# Using overridden
# Before state:
# -------------
#
# Router# sh access-lists
# ip access-list std_acl
# 10 deny 192.168.1.200/32
# 20 deny 192.168.2.0/24
# ip access-list 110
# 10 deny icmp 192.0.2.0/24 192.0.3.0/24 traceroute
# 20 deny tcp 198.51.100.0/24 198.51.110.0/24 eq telnet ack
# ip access-list 123
# 10 deny tcp 198.51.100.0/24 198.51.101.0/24 eq telnet ack
# 20 deny tcp 192.0.3.0/24 192.0.4.0/24 eq www ack
# ip access-list R1_TRAFFIC
# 10 deny tcp any eq www any eq telnet ack
# ip access-list test
# 10 deny tcp 192.0.2.0/24 192.0.3.0/24 eq www fin
- name: Override device configuration of all acls with provided configuration
amnesh.soodar.soodar_acls:
config:
- afi: ipv4
acls:
- name: 110
aces:
- grant: deny
sequence: 20
protocol_options:
tcp:
ack: true
source:
address: 198.51.100.0/24
port_protocol:
eq: telnet
destination:
address: 198.51.110.0/24
port_protocol:
eq: www
- name: 150
aces:
- grant: deny
sequence: 10
protocol_options:
tcp:
syn: true
source:
address: 198.51.100.0/24
port_protocol:
eq: telnet
destination:
address: 198.51.110.0/24
port_protocol:
eq: telnet
- name: implicit_deny
aces:
- grant: deny
sequence: 10
protocol_options:
tcp:
syn: true
source:
address: 198.51.100.0/24
port_protocol:
eq: telnet
destination:
address: 198.51.110.0/24
port_protocol:
eq: telnet
state: overridden
# Task Output
# -----------
#
# before:
# - acls:
# - aces:
# - destination:
# address: 192.0.3.0/24
# grant: deny
# protocol: icmp
# protocol_options:
# icmp:
# traceroute: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# - destination:
# host: 198.51.110.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# host: 198.51.100.0/24
# name: '110'
# - aces:
# - destination:
# address: 198.51.101.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# address: 198.51.100.0/24
# - destination:
# address: 192.0.4.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# address: 192.0.3.0/24
# name: '123'
# - aces:
# - destination:
# any: true
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# any: true
# port_protocol:
# eq: www
# name: R1_TRAFFIC
# - aces:
# - grant: deny
# sequence: 10
# source:
# address: 192.168.1.200/32
# - grant: deny
# sequence: 20
# source:
# address: 192.168.2.0/24
# name: std_acl
# - aces:
# - destination:
# address: 192.0.3.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# fin: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# name: test
# afi: ipv4
# commands:
# - ip access-list 110
# - no 20 deny tcp 198.51.100.0/24 198.51.110.0/24 eq telnet ack
# - no 10 deny icmp 192.0.2.0/24 192.0.3.0/24 traceroute
# - 20 deny tcp 198.51.100.0/24 eq telnet 198.51.110.0/24 eq www ack
# - ip access-list 150
# - 10 deny tcp 198.51.100.0/24 eq telnet 198.51.110.0/24 eq telnet syn
# - no ip access-list 123
# - no ip access-list R1_TRAFFIC
# - no ip access-list std_acl
# - no ip access-list test
# after:
# - acls:
# - aces:
# - destination:
# address: 198.51.110.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# address: 198.51.100.0/24
# port_protocol:
# eq: telnet
# name: '110'
# - aces:
# - destination:
# address: 198.51.110.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# syn: true
# sequence: 10
# source:
# address: 198.51.100.0/24
# port_protocol:
# eq: telnet
# name: '150'
# afi: ipv4
# After state:
# -------------
#
# Router# sh running-config | section access-list
# ip access-list 110
# 20 deny tcp 198.51.100.0/24 eq telnet 198.51.110.0/24 eq www ack
# ip access-list 150
# 10 deny tcp 198.51.100.0/24 eq telnet 198.51.110.0/24 eq telnet syn
# Using deleted - delete ACL(s)
# Before state:
# -------------
#
# Router# sh access-lists
# ip access-list std_acl
# 10 deny 192.168.1.200/32
# 20 deny 192.168.2.0/24
# ip access-list 110
# 10 deny icmp 192.0.2.0/24 192.0.3.0/24 traceroute
# 20 deny tcp 198.51.100.0/24 198.51.110.0/24 eq telnet ack
# ip access-list 123
# 10 deny tcp 198.51.100.0/24 198.51.101.0/24 eq telnet ack
# 20 deny tcp 192.0.3.0/24 192.0.4.0/24 eq www ack
# ip access-list extended_acl_1
# 10 deny tcp 192.0.2.0/24 192.0.3.0/24 eq www fin
- name: "Delete ACLs (Note: This won't delete the all configured ACLs)"
amnesh.soodar.soodar_acls:
config:
- afi: ipv4
acls:
- name: extended_acl_1
- name: 110
state: deleted
# Task Output
# -----------
#
# before:
# - acls:
# - aces:
# - destination:
# address: 192.0.3.0/24
# grant: deny
# protocol: icmp
# protocol_options:
# icmp:
# traceroute: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# - destination:
# address: 198.51.110.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# address: 198.51.100.0/24
# name: '110'
# - aces:
# - destination:
# address: 198.51.101.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# address: 198.51.100.0/24
# - destination:
# address: 192.0.4.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# address: 192.0.3.0/24
# name: '123'
# - aces:
# - grant: deny
# sequence: 10
# source:
# address: 192.168.1.200/24
# - grant: deny
# sequence: 20
# source:
# address: 192.168.2.0/24
# name: std_acl
# - aces:
# - destination:
# address: 192.0.3.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# fin: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# name: extended_acl_1
# afi: ipv4
# commands:
# - no ip access-list 110
# - no ip access-list extended_acl_1
# after:
# - acls:
# - aces:
# - destination:
# address: 198.51.101.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# address: 198.51.100.0/24
# - destination:
# address: 192.0.4.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# address: 192.0.3.0/24
# name: '123'
# - aces:
# - grant: deny
# sequence: 10
# source:
# address: 192.168.1.200/24
# - grant: deny
# sequence: 20
# source:
# address: 192.168.2.0/24
# name: std_acl
# afi: ipv4
# After state:
# -------------
#
# Router# sh running-config | section access-list
# ip access-list std_acl
# 10 deny 192.168.1.200/32
# 20 deny 192.168.2.0/24
# ip access-list 123
# 10 deny tcp 198.51.100.0/24 198.51.101.0/24 eq telnet ack
# 20 deny tcp 192.0.3.0/24 192.0.4.0/24 eq www ack
# Using deleted - delete ACLs based on AFI
# Before state:
# -------------
#
# Router# sh running-config | section access-list
# ip access-list std_acl
# 10 deny 192.168.1.200/32
# 20 deny 192.168.2.0/24
# ip access-list 110
# 10 deny icmp 192.0.2.0/24 192.0.3.0/24 traceroute
# 20 deny tcp 198.51.100.0/24 198.51.110.0/24 eq telnet ack
# ip access-list 123
# 10 deny tcp 198.51.100.0/24 198.51.101.0/24 eq telnet ack
# 20 deny tcp 192.0.3.0/24 192.0.4.0/24 eq www ack
# ip access-list test
# 10 deny tcp 192.0.2.0/24 192.0.3.0/24 eq www fin
# ipv6 access-list R1_TRAFFIC
# sequence 10 deny tcp any eq www any eq telnet ack
- name: "Delete ACLs based on AFI (Note: This won't delete the all configured ACLs)"
amnesh.soodar.soodar_acls:
config:
- afi: ipv4
state: deleted
# Task Output
# -----------
#
# before:
# - acls:
# - aces:
# - destination:
# address: 192.0.3.0/24
# grant: deny
# protocol: icmp
# protocol_options:
# icmp:
# traceroute: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# - destination:
# address: 198.51.110.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# address: 198.51.100.0/24
# name: '110'
# - aces:
# - destination:
# address: 198.51.101.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# address: 198.51.100.0/24
# - destination:
# address: 192.0.4.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# address: 192.0.3.0/24
# name: '123'
# - aces:
# - grant: deny
# sequence: 10
# source:
# address: 192.168.1.200/32
# - grant: deny
# sequence: 20
# source:
# address: 192.168.2.0/24
# name: std_acl
# - aces:
# - destination:
# address: 192.0.3.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# fin: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# name: test
# afi: ipv4
# - acls:
# - aces:
# - destination:
# any: true
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# any: true
# port_protocol:
# eq: www
# name: R1_TRAFFIC
# afi: ipv6
# commands:
# - no ip access-list 110
# - no ip access-list 123
# - no ip access-list std_acl
# - no ip access-list test
# after:
# - acls:
# - aces:
# - destination:
# any: true
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# any: true
# port_protocol:
# eq: www
# name: R1_TRAFFIC
# afi: ipv6
# After state:
# -------------
#
# Router# sh running-config | section access-list
# ipv6 access-list R1_TRAFFIC
# sequence 10 deny tcp any eq www any eq telnet ack
# Using deleted - delete all ACLs
# Before state:
# -------------
#
# Router# sh access-lists
# ip access-list std_acl
# 10 deny 192.168.1.200/32
# 20 deny 192.168.2.0/24
# ip access-list 110
# 10 deny icmp 192.0.2.0/24 192.0.3.0/24 traceroute
# 20 deny tcp 198.51.100.0/24 198.51.110.0/24 eq telnet ack
# ip access-list 123
# 10 deny tcp 198.51.100.0/24 198.51.101.0/24 eq telnet ack
# 20 deny tcp 192.0.3.0/24 192.0.4.0/24 eq www ack
# ip access-list test
# 10 deny tcp 192.0.2.0/24 192.0.3.0/24 eq www fin
# ipv6 access-list R1_TRAFFIC
# sequence 10 deny tcp any eq www any eq telnet ack
- name: Delete ALL of configured ACLs
amnesh.soodar.soodar_acls:
state: deleted
# Task Output
# -----------
#
# before:
# - acls:
# - aces:
# - destination:
# address: 192.0.3.0/24
# grant: deny
# protocol: icmp
# protocol_options:
# icmp:
# traceroute: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# - destination:
# address: 198.51.110.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# address: 198.51.100.0/24
# name: '110'
# - aces:
# - destination:
# address: 198.51.101.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# address: 198.51.100.0/24
# - destination:
# address: 192.0.4.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# address: 192.0.3.0/24
# name: '123'
# - aces:
# - grant: deny
# sequence: 10
# source:
# address: 192.168.1.200/32
# - grant: deny
# sequence: 20
# source:
# address: 192.168.2.0/24
# name: std_acl
# - aces:
# - destination:
# address: 192.0.3.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# fin: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# name: test
# afi: ipv4
# - acls:
# - aces:
# - destination:
# any: true
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# any: true
# port_protocol:
# eq: www
# name: R1_TRAFFIC
# afi: ipv6
# commands:
# - no ip access-list test
# - no ip access-list 110
# - no ip access-list 123
# - no ip access-list test
# - no ipv6 access-list R1_TRAFFIC
# after: []
# After state:
# -------------
#
# Router# sh running-config | section access-list
# Using gathered
# Before state:
# -------------
#
# Router# sh access-lists
# ip access-list std_acl
# 10 deny 192.168.1.200/32
# 20 deny 192.168.2.0/24
# ip access-list 110
# 10 deny icmp 192.0.2.0/24 192.0.3.0/24 traceroute
# 20 deny tcp 198.51.100.0/24 198.51.110.0/24 eq telnet ack
# ip access-list 123
# 10 deny tcp 198.51.100.0/24 198.51.101.0/24 eq telnet ack
# 20 deny tcp 192.0.3.0/24 192.0.4.0/24 eq www ack
# ip access-list test
# 10 deny tcp 192.0.2.0/24 192.0.3.0/24 eq www fin
# ipv6 access-list R1_TRAFFIC
# sequence 10 deny tcp any eq www any eq telnet ack
- name: Gather ACLs configuration from target device
amnesh.soodar.soodar_acls:
state: gathered
# Module Execution Result:
# ------------------------
#
# before:
# - acls:
# - aces:
# - destination:
# address: 192.0.3.0/24
# grant: deny
# protocol: icmp
# protocol_options:
# icmp:
# traceroute: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# - destination:
# host: 198.51.110.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# host: 198.51.100.0
# name: '110'
# - aces:
# - destination:
# address: 198.51.101.0/24
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# address: 198.51.100.0/24
# - destination:
# address: 192.0.4.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 20
# source:
# address: 192.0.3.0/24
# name: '123'
# - aces:
# - grant: deny
# sequence: 10
# source:
# address: 192.168.1.200/32
# - grant: deny
# sequence: 20
# source:
# address: 192.168.2.0/24
# name: std_acl
# - aces:
# - destination:
# address: 192.0.3.0/24
# port_protocol:
# eq: www
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# fin: true
# sequence: 10
# source:
# address: 192.0.2.0/24
# name: test
# afi: ipv4
# - acls:
# - aces:
# - destination:
# any: true
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# any: true
# port_protocol:
# eq: www
# name: R1_TRAFFIC
# afi: ipv6
# Using rendered
- name: Render the provided configuration into platform specific configuration lines
amnesh.soodar.soodar_acls:
config:
- afi: ipv4
acls:
- name: 110
aces:
- grant: deny
sequence: 10
protocol_options:
tcp:
syn: true
source:
address: 192.0.2.0/24
destination:
address: 192.0.3.0/24
port_protocol:
eq: www
- name: 150
aces:
- grant: deny
protocol_options:
tcp:
syn: true
source:
address: 198.51.100.0/24
port_protocol:
eq: telnet
destination:
address: 198.51.110.0/24
port_protocol:
eq: telnet
state: rendered
# Module Execution Result:
# ------------------------
#
# rendered:
# - ip access-list 110
# - 10 deny tcp 192.0.2.0/24 192.0.3.0/24 eq www syn
# - ip access-list 150
# - deny tcp 198.51.100.0/24 eq telnet 198.51.110.0/24 eq telnet syn
# Using Parsed
# File: parsed.cfg
# ----------------
#
# IPv6 access-list R1_TRAFFIC
# deny tcp any eq www any eq telnet ack
- name: Parse the commands for provided configuration
amnesh.soodar.soodar_acls:
running_config: "{{ lookup('file', 'parsed.cfg') }}"
state: parsed
# Module Execution Result:
# ------------------------
#
# parsed:
# - acls:
# - aces:
# - destination:
# any: true
# port_protocol:
# eq: telnet
# grant: deny
# protocol: tcp
# protocol_options:
# tcp:
# ack: true
# sequence: 10
# source:
# any: true
# port_protocol:
# eq: www
# name: R1_TRAFFIC
# afi: ipv6
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key |
Description |
|---|---|
The resulting configuration after module execution. Returned: when changed Sample: |
|
The configuration prior to the module execution. Returned: when state is Sample: |
|
The set of commands pushed to the remote device. Returned: when state is Sample: |
|
Facts about the network resource gathered from the remote device as structured data. Returned: when state is Sample: |
|
The device native config provided in running_config option parsed into structured data as per module argspec. Returned: when state is Sample: |
|
The provided configuration in the task rendered in device-native format (offline). Returned: when state is Sample: |