On this page
cisco.iosxr.iosxr_acls – ACLs resource module
Note
This plugin is part of the cisco.iosxr collection (version 2.5.0).
You might already have this collection installed if you are using the ansible
package. 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 cisco.iosxr
.
To use it in a playbook, specify: cisco.iosxr.iosxr_acls
.
New in version 1.0.0: of cisco.iosxr
Synopsis
- This module manages Access Control Lists (ACLs) on devices running IOS-XR.
Note
This module has a corresponding action plugin.
Parameters
Parameter | Choices/Defaults | Comments | ||||||
---|---|---|---|---|---|---|---|---|
config
list / elements=dictionary
|
A list of dictionaries specifying ACL configurations.
|
|||||||
acls
list / elements=dictionary
|
A list of Access Control Lists (ACLs).
|
|||||||
aces
list / elements=dictionary
|
List of Access Control Entries (ACEs) for this Access Control List (ACL).
|
|||||||
authen
boolean
|
|
Match if authentication header is present.
|
||||||
capture
boolean
|
|
Capture matched packet.
|
||||||
destination
dictionary
|
Specifies the packet destination.
|
|||||||
address
string
|
The destination IP address to match.
|
|||||||
any
boolean
|
|
Match any destination address.
|
||||||
host
string
|
The host IP address to match.
|
|||||||
port_protocol
dictionary
|
Specify the source port or protocol.
|
|||||||
eq
string
|
Match only packets on a given port number.
|
|||||||
gt
string
|
Match only packets with a greater port number.
|
|||||||
lt
string
|
Match only packets with a lower port number.
|
|||||||
neq
string
|
Match only packets not on a given port number.
|
|||||||
range
dictionary
|
Match only packets in the range of port numbers
|
|||||||
end
string
|
Specify the end of the port range
|
|||||||
start
string
|
Specify the start of the port range
|
|||||||
prefix
string
|
Destination network prefix.
|
|||||||
wildcard_bits
string
|
The Wildcard bits to apply to destination address.
|
|||||||
destopts
boolean
|
|
Match if destination opts header is present.
|
||||||
dscp
dictionary
|
Match packets with given DSCP value.
|
|||||||
eq
string
|
Match only packets on a given dscp value
|
|||||||
gt
string
|
Match only packets with a greater dscp value
|
|||||||
lt
string
|
Match only packets with a lower dscp value
|
|||||||
neq
string
|
Match only packets not on a given dscp value
|
|||||||
range
dictionary
|
Match only packets in the range of dscp values
|
|||||||
end
string
|
End of the dscp range
|
|||||||
start
string
|
Start of the dscp range
|
|||||||
fragments
boolean
|
|
Check non-intial fragments.
|
||||||
grant
string
|
|
Forward or drop packets matching the Access Control Entry (ACE).
|
||||||
hop_by_hop
boolean
|
|
Match if hop-by-hop opts header is present.
|
||||||
icmp_off
boolean
|
|
Enable/disable the ICMP message for this entry.
|
||||||
line
string
|
An ACE excluding the sequence number.
This key is mutually exclusive with all the other attributes except 'sequence'.
When used with other attributes, the value of this key will get precedence and the other keys will be ignored.
This should only be used when an attribute doesn't exist in the argspec but is valid for the device.
For fact gathering, any ACE that is not fully parsed, will show up as a value of this attribute, excluding the sequence number, which will be populated as value of the sequence key.
aliases: ace |
|||||||
log
boolean
|
|
Enable/disable log matches against this entry.
|
||||||
log_input
boolean
|
|
Enable/disable log matches against this entry, including input interface.
|
||||||
packet_length
dictionary
|
Match packets given packet length.
|
|||||||
eq
integer
|
Match only packets on a given packet length
|
|||||||
gt
integer
|
Match only packets with a greater packet length
|
|||||||
lt
integer
|
Match only packets with a lower packet length
|
|||||||
neq
integer
|
Match only packets not on a given packet length
|
|||||||
range
dictionary
|
Match only packets in the range of packet lengths
|
|||||||
end
integer
|
End of the packet length range
|
|||||||
start
integer
|
Start of the packet length range
|
|||||||
precedence
string
|
Match packets with given precedence value
|
|||||||
protocol
string
|
Specify the protocol to match.
Refer to vendor documentation for valid values.
|
|||||||
protocol_options
dictionary
|
Additional suboptions for the protocol.
|
|||||||
icmp
dictionary
|
Internet Control Message Protocol settings.
|
|||||||
administratively_prohibited
boolean
|
|
Administratively prohibited
|
||||||
alternate_address
boolean
|
|
Alternate address
|
||||||
conversion_error
boolean
|
|
Datagram conversion
|
||||||
dod_host_prohibited
boolean
|
|
Host prohibited
|
||||||
dod_net_prohibited
boolean
|
|
Net prohibited
|
||||||
echo
boolean
|
|
Echo (ping)
|
||||||
echo_reply
boolean
|
|
Echo reply
|
||||||
general_parameter_problem
boolean
|
|
Parameter problem
|
||||||
host_isolated
boolean
|
|
Host isolated
|
||||||
host_precedence_unreachable
boolean
|
|
Host unreachable for precedence
|
||||||
host_redirect
boolean
|
|
Host redirect
|
||||||
host_tos_redirect
boolean
|
|
Host redirect for TOS
|
||||||
host_tos_unreachable
boolean
|
|
Host unreachable for TOS
|
||||||
host_unknown
boolean
|
|
Host unknown
|
||||||
host_unreachable
boolean
|
|
Host unreachable
|
||||||
information_reply
boolean
|
|
Information replies
|
||||||
information_request
boolean
|
|
Information requests
|
||||||
mask_reply
boolean
|
|
Mask replies
|
||||||
mask_request
boolean
|
|
Mask requests
|
||||||
mobile_redirect
boolean
|
|
Mobile host redirect
|
||||||
net_redirect
boolean
|
|
Network redirect
|
||||||
net_tos_redirect
boolean
|
|
Net redirect for TOS
|
||||||
net_tos_unreachable
boolean
|
|
Network unreachable for TOS
|
||||||
net_unreachable
boolean
|
|
Net unreachable
|
||||||
network_unknown
boolean
|
|
Network unknown
|
||||||
no_room_for_option
boolean
|
|
Parameter required but no room
|
||||||
option_missing
boolean
|
|
Parameter required but not present
|
||||||
packet_too_big
boolean
|
|
Fragmentation needed and DF set
|
||||||
parameter_problem
boolean
|
|
All parameter problems
|
||||||
port_unreachable
boolean
|
|
Port unreachable
|
||||||
precedence_unreachable
boolean
|
|
Precedence cutoff
|
||||||
protocol_unreachable
boolean
|
|
Protocol unreachable
|
||||||
reassembly_timeout
boolean
|
|
Reassembly timeout
|
||||||
redirect
boolean
|
|
All redirects
|
||||||
router_advertisement
boolean
|
|
Router discovery advertisements
|
||||||
router_solicitation
boolean
|
|
Router discovery solicitations
|
||||||
source_quench
boolean
|
|
Source quenches
|
||||||
source_route_failed
boolean
|
|
Source route failed
|
||||||
time_exceeded
boolean
|
|
All time exceededs
|
||||||
timestamp_reply
boolean
|
|
Timestamp replies
|
||||||
timestamp_request
boolean
|
|
Timestamp requests
|
||||||
traceroute
boolean
|
|
Traceroute
|
||||||
ttl_exceeded
boolean
|
|
TTL exceeded
|
||||||
unreachable
boolean
|
|
All unreachables
|
||||||
icmpv6
dictionary
|
Internet Control Message Protocol settings for IPv6.
|
|||||||
address_unreachable
boolean
|
|
Address Unreachable
|
||||||
administratively_prohibited
boolean
|
|
Administratively Prohibited
|
||||||
beyond_scope_of_source_address
boolean
|
|
Administratively Prohibited
|
||||||
destination_unreachable
boolean
|
|
Destination Unreachable
|
||||||
echo
boolean
|
|
Echo
|
||||||
echo_reply
boolean
|
|
Echo Reply
|
||||||
erroneous_header_field
boolean
|
|
Erroneous Header Field
|
||||||
group_membership_query
boolean
|
|
Group Membership Query
|
||||||
group_membership_report
boolean
|
|
Group Membership Report
|
||||||
group_membership_termination
boolean
|
|
Group Membership Termination
|
||||||
host_unreachable
boolean
|
|
Host Unreachable
|
||||||
nd_na
boolean
|
|
Neighbor Discovery - Neighbor Advertisement
|
||||||
nd_ns
boolean
|
|
Neighbor Discovery - Neighbor Solicitation
|
||||||
neighbor_redirect
boolean
|
|
Neighbor Redirect
|
||||||
no_route_to_destination
boolean
|
|
No Route To Destination
|
||||||
node_information_request_is_refused
boolean
|
|
Node Information Request Is Refused
|
||||||
node_information_successful_reply
boolean
|
|
Node Information Successful Reply
|
||||||
packet_too_big
boolean
|
|
Packet Too Big
|
||||||
parameter_problem
boolean
|
|
Parameter Problem
|
||||||
port_unreachable
boolean
|
|
Port Unreachable
|
||||||
query_subject_is_domainname
boolean
|
|
Query Subject Is Domain name
|
||||||
query_subject_is_IPv4address
boolean
|
|
Query Subject Is IPv4 address
|
||||||
query_subject_is_IPv6address
boolean
|
|
Query Subject Is IPv6 address
|
||||||
reassembly_timeout
boolean
|
|
Reassembly Timeout
|
||||||
redirect
boolean
|
|
Redirect
|
||||||
router_advertisement
boolean
|
|
Router Advertisement
|
||||||
router_renumbering
boolean
|
|
Router Renumbering
|
||||||
router_solicitation
boolean
|
|
Router Solicitation
|
||||||
rr_command
boolean
|
|
RR Command
|
||||||
rr_result
boolean
|
|
RR Result
|
||||||
rr_seqnum_reset
boolean
|
|
RR Seqnum Reset
|
||||||
time_exceeded
boolean
|
|
Time Exceeded
|
||||||
ttl_exceeded
boolean
|
|
TTL Exceeded
|
||||||
unknown_query_type
boolean
|
|
Unknown Query Type
|
||||||
unreachable
boolean
|
|
Unreachable
|
||||||
unrecognized_next_header
boolean
|
|
Unrecognized Next Header
|
||||||
unrecognized_option
boolean
|
|
Unrecognized Option
|
||||||
whoareyou_reply
boolean
|
|
Whoareyou Reply
|
||||||
whoareyou_request
boolean
|
|
Whoareyou Request
|
||||||
igmp
dictionary
|
Internet Group Management Protocol (IGMP) settings.
|
|||||||
dvmrp
boolean
|
|
Match Distance Vector Multicast Routing Protocol
|
||||||
host_query
boolean
|
|
Match Host Query
|
||||||
host_report
boolean
|
|
Match Host Report
|
||||||
mtrace
boolean
|
|
Match mtrace
|
||||||
mtrace_response
boolean
|
|
Match mtrace response
|
||||||
pim
boolean
|
|
Match Protocol Independent Multicast
|
||||||
trace
boolean
|
|
Multicast trace
|
||||||
tcp
dictionary
|
Match TCP packet flags
|
|||||||
ack
boolean
|
|
Match on the ACK bit
|
||||||
established
boolean
|
|
Match established connections
|
||||||
fin
boolean
|
|
Match on the FIN bit
|
||||||
psh
boolean
|
|
Match on the PSH bit
|
||||||
rst
boolean
|
|
Match on the RST bit
|
||||||
syn
boolean
|
|
Match on the SYN bit
|
||||||
urg
boolean
|
|
Match on the URG bit
|
||||||
remark
string
|
Comments or a description for the access list.
|
|||||||
routing
boolean
|
|
Match if routing header is present.
|
||||||
sequence
integer
|
Sequence number for the Access Control Entry (ACE).
|
|||||||
source
dictionary
|
Specifies the packet source.
|
|||||||
address
string
|
The source IP address to match.
|
|||||||
any
boolean
|
|
Match any source address.
|
||||||
host
string
|
The host IP address to match.
|
|||||||
port_protocol
dictionary
|
Specify the source port or protocol.
|
|||||||
eq
string
|
Match only packets on a given port number.
|
|||||||
gt
string
|
Match only packets with a greater port number.
|
|||||||
lt
string
|
Match only packets with a lower port number.
|
|||||||
neq
string
|
Match only packets not on a given port number.
|
|||||||
range
dictionary
|
Match only packets in the range of port numbers
|
|||||||
end
string
|
Specify the end of the port range
|
|||||||
start
string
|
Specify the start of the port range
|
|||||||
prefix
string
|
Source network prefix.
|
|||||||
wildcard_bits
string
|
The Wildcard bits to apply to source address.
|
|||||||
ttl
dictionary
|
Match against specified TTL value.
|
|||||||
eq
integer
|
Match only packets with exact TTL value.
|
|||||||
gt
integer
|
Match only packets with a greater TTL value.
|
|||||||
lt
integer
|
Match only packets with a lower TTL value.
|
|||||||
neq
integer
|
Match only packets that won't have the given TTL value.
|
|||||||
range
dictionary
|
Match only packets in the range of given TTL values.
|
|||||||
end
integer
|
End of the TTL range.
|
|||||||
start
integer
|
Start of the TTL range.
|
|||||||
name
string
|
The name of the Access Control List (ACL).
|
|||||||
afi
string / required
|
|
The Address Family Indicator (AFI) for the Access Control Lists (ACL).
|
||||||
running_config
string
|
The module, by default, will connect to the remote device and retrieve the current running-config to use as a base for comparing against the contents of source. There are times when it is not desirable to have the task get the current running-config for every task in a playbook. The running_config argument allows the implementer to pass in the configuration to use as the base config for comparison. This value of this option should be the output received from device by executing command show running-config router static.
|
|||||||
state
string
|
|
The state the configuration should be left in.
|
Examples
# Using merged to add new ACLs
# Before state:
# -------------
# RP/0/RP0/CPU0:ios#sh access-lists afi-all
# Thu Feb 20 05:07:45.767 UTC
# RP/0/RP0/CPU0:ios#
- name: Merge the provided configuration with the existing running configuration
cisco.iosxr.iosxr_acls:
config:
- afi: ipv6
acls:
- name: acl6_1
aces:
- sequence: 10
grant: deny
protocol: tcp
source:
prefix: 2001:db8:1234::/48
port_protocol:
range:
start: ftp
end: telnet
destination:
any: true
protocol_options:
tcp:
syn: true
ttl:
range:
start: 180
end: 250
routing: true
authen: true
log: true
- sequence: 20
grant: permit
protocol: icmpv6
source:
any: true
destination:
any: true
protocol_options:
icmpv6:
router_advertisement: true
precedence: network
destopts: true
- afi: ipv4
acls:
- name: acl_1
aces:
- sequence: 16
remark: TEST_ACL_1_REMARK
- sequence: 21
grant: permit
protocol: tcp
source:
host: 192.0.2.10
port_protocol:
range:
start: pop3
end: 121
destination:
address: 198.51.100.0
wildcard_bits: 0.0.0.15
protocol_options:
tcp:
rst: true
- sequence: 23
grant: deny
protocol: icmp
source:
any: true
destination:
prefix: 198.51.100.0/28
protocol_options:
icmp:
reassembly_timeout: true
dscp:
lt: af12
- name: acl_2
aces:
- sequence: 10
remark: TEST_ACL_2_REMARK
state: merged
# After state:
# -------------
# RP/0/RP0/CPU0:ios#sh access-lists afi-all
# Thu Feb 20 05:22:57.021 UTC
# ipv4 access-list acl_1
# 16 remark TEST_ACL_1_REMARK
# 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst
# 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12
# ipv4 access-list acl_2
# 10 remark TEST_ACL_2_REMARK
# ipv6 access-list acl6_1
# 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log
# 20 permit icmpv6 any any router-advertisement precedence network destopts
# Using merged to update existing ACLs
# Before state:
# -------------
# RP/0/RP0/CPU0:ios#sh access-lists afi-all
# Thu Feb 20 05:22:57.021 UTC
# ipv4 access-list acl_1
# 16 remark TEST_ACL_1_REMARK
# 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst
# 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12
# ipv4 access-list acl_2
# 10 remark TEST_ACL_2_REMARK
# ipv6 access-list acl6_1
# 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log
# 20 permit icmpv6 any any router-advertisement precedence network destopts
- name: Update existing ACEs
cisco.iosxr.iosxr_acls:
config:
- afi: ipv4
acls:
- name: acl_1
aces:
- sequence: 21
source:
prefix: 198.51.100.32/28
port_protocol:
range:
start: pop3
end: 121
protocol_options:
tcp:
syn: true
- sequence: 23
protocol_options:
icmp:
router_advertisement: true
dscp:
eq: af23
# After state:
# -------------
# RP/0/RP0/CPU0:ios#sh access-lists afi-all
# Thu Feb 20 05:47:18.711 UTC
# ipv4 access-list acl_1
# 16 remark TEST_ACL_1_REMARK
# 21 permit tcp 198.51.100.32 0.0.0.15 range pop3 121 198.51.100.0 0.0.0.15 syn
# 23 deny icmp any 198.51.100.0 0.0.0.15 router-advertisement dscp eq af23
# ipv4 access-list acl_2
# 10 remark TEST_ACL_2_REMARK
# ipv6 access-list acl6_1
# 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log
# 20 permit icmpv6 any any router-advertisement precedence network destopts
# Using replaced to replace a whole ACL
# Before state:
# -------------
# RP/0/RP0/CPU0:ios#sh access-lists afi-all
# Thu Feb 20 05:22:57.021 UTC
# ipv4 access-list acl_1
# 16 remark TEST_ACL_1_REMARK
# 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst
# 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12
# ipv4 access-list acl_2
# 10 remark TEST_ACL_2_REMARK
# ipv6 access-list acl6_1
# 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log
# 20 permit icmpv6 any any router-advertisement precedence network destopts
- name: Replace device configurations of listed ACL with provided configurations
cisco.iosxr.iosxr_acls:
config:
- afi: ipv4
acls:
- name: acl_2
aces:
- sequence: 11
grant: permit
protocol: igmp
source:
host: 198.51.100.130
destination:
any: true
ttl:
eq: 100
- sequence: 12
grant: deny
source:
any: true
destination:
any: true
protocol: icmp
state: replaced
# After state:
# -------------
# RP/0/RP0/CPU0:ios#sh access-lists afi-all
# Thu Feb 20 06:19:51.496 UTC
# ipv4 access-list acl_1
# 16 remark TEST_ACL_1_REMARK
# 21 permit tcp 198.51.100.32 0.0.0.15 range pop3 121 198.51.100.0 0.0.0.15 syn
# 23 deny icmp any 198.51.100.0 0.0.0.15 router-advertisement dscp eq af23
# ipv4 access-list acl_2
# 11 permit igmp host 198.51.100.130 any ttl eq 100
# 12 deny icmp any any
# ipv6 access-list acl6_1
# 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log
# 20 permit icmpv6 any any router-advertisement precedence network destopts
# Using overridden to override all ACLs in the device
# Before state:
# -------------
# RP/0/RP0/CPU0:ios#sh access-lists afi-all
# Thu Feb 20 05:22:57.021 UTC
# ipv4 access-list acl_1
# 16 remark TEST_ACL_1_REMARK
# 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst
# 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12
# ipv4 access-list acl_2
# 10 remark TEST_ACL_2_REMARK
# ipv6 access-list acl6_1
# 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log
# 20 permit icmpv6 any any router-advertisement precedence network destopts
- name: Overridde all ACLs configuration with provided configuration
cisco.iosxr.iosxr_acls:
config:
- afi: ipv4
acls:
- name: acl_1
aces:
- sequence: 10
grant: permit
source:
any: true
destination:
any: true
protocol: tcp
- name: acl_2
aces:
- sequence: 20
grant: permit
source:
any: true
destination:
any: true
protocol: igmp
state: overridden
# After state:
# -------------
# RP/0/RP0/CPU0:ios#sh access-lists afi-all
# Thu Feb 20 06:31:22.178 UTC
# ipv4 access-list acl_1
# 10 permit tcp any any
# ipv4 access-list acl_2
# 20 permit igmp any any
# Using deleted to delete an entire ACL
# Before state:
# -------------
# RP/0/RP0/CPU0:ios#sh access-lists afi-all
# Thu Feb 20 05:22:57.021 UTC
# ipv4 access-list acl_1
# 16 remark TEST_ACL_1_REMARK
# 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst
# 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12
# ipv4 access-list acl_2
# 10 remark TEST_ACL_2_REMARK
# ipv6 access-list acl6_1
# 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log
# 20 permit icmpv6 any any router-advertisement precedence network destopts
- name: Delete a single ACL
cisco.iosxr.iosxr_acls:
config:
- afi: ipv6
acls:
- name: acl6_1
state: deleted
# After state:
# -------------
# RP/0/RP0/CPU0:ios#sh access-lists afi-all
# Thu Feb 20 05:22:57.021 UTC
# ipv4 access-list acl_1
# 16 remark TEST_ACL_1_REMARK
# 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst
# 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12
# ipv4 access-list acl_2
# 10 remark TEST_ACL_2_REMARK
# Using deleted to delete all ACLs under one AFI
# Before state:
# -------------
# RP/0/RP0/CPU0:ios#sh access-lists afi-all
# Thu Feb 20 05:22:57.021 UTC
# ipv4 access-list acl_1
# 16 remark TEST_ACL_1_REMARK
# 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst
# 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12
# ipv4 access-list acl_2
# 10 remark TEST_ACL_2_REMARK
# ipv6 access-list acl6_1
# 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log
# 20 permit icmpv6 any any router-advertisement precedence network destopts
- name: Delete all ACLs under one AFI
cisco.iosxr.iosxr_acls:
config:
- afi: ipv4
state: deleted
# After state:
# -------------
# RP/0/RP0/CPU0:ios#sh access-lists afi-all
# Thu Feb 20 05:22:57.021 UTC
# ipv6 access-list acl6_1
# 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log
# 20 permit icmpv6 any any router-advertisement precedence network destopts
# Using deleted to delete all ACLs from the device
# Before state:
# -------------
# RP/0/RP0/CPU0:ios#sh access-lists afi-all
# Thu Feb 20 05:22:57.021 UTC
# ipv4 access-list acl_1
# 16 remark TEST_ACL_1_REMARK
# 21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst
# 23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12
# ipv4 access-list acl_2
# 10 remark TEST_ACL_2_REMARK
# ipv6 access-list acl6_1
# 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log
# 20 permit icmpv6 any any router-advertisement precedence network destopts
- name: Delete all ACLs from the device
cisco.iosxr.iosxr_acls:
state: deleted
# After state:
# -------------
# RP/0/RP0/CPU0:ios#sh access-lists afi-all
# Thu Feb 20 05:07:45.767 UTC
# RP/0/RP0/CPU0:ios#
# Using gathered to gather ACL facts from the device
- name: Gather ACL interfaces facts using gathered state
cisco.iosxr.iosxr_acls:
state: gathered
# Task Output (redacted)
# -----------------------
#
# "gathered": [
# {
# "acls": [
# {
# "aces": [
# {
# "remark": "TEST_ACL_1_REMARK",
# "sequence": 16
# },
# {
# "destination": {
# "address": "198.51.100.0",
# "wildcard_bits": "0.0.0.15"
# },
# "grant": "permit",
# "protocol": "tcp",
# "protocol_options": {
# "tcp": {
# "rst": true
# }
# },
# "sequence": 21,
# "source": {
# "host": "192.0.2.10",
# "port_protocol": {
# "range": {
# "end": "121",
# "start": "pop3"
# }
# }
# }
# },
# {
# "destination": {
# "address": "198.51.100.0",
# "wildcard_bits": "0.0.0.15"
# },
# "dscp": {
# "lt": "af12"
# },
# "grant": "deny",
# "protocol": "icmp",
# "protocol_options": {
# "icmp": {
# "reassembly_timeout": true
# }
# },
# "sequence": 23,
# "source": {
# "any": true
# }
# }
# ],
# "name": "acl_1"
# },
# {
# "aces": [
# {
# "remark": "TEST_ACL_2_REMARK",
# "sequence": 10
# }
# ],
# "name": "acl_2"
# }
# ],
# "afi": "ipv4"
# },
# {
# "acls": [
# {
# "aces": [
# {
# "authen": true,
# "destination": {
# "any": true
# },
# "grant": "deny",
# "log": true,
# "protocol": "tcp",
# "protocol_options": {
# "tcp": {
# "syn": true
# }
# },
# "routing": true,
# "sequence": 10,
# "source": {
# "port_protocol": {
# "range": {
# "end": "telnet",
# "start": "ftp"
# }
# },
# "prefix": "2001:db8:1234::/48"
# },
# "ttl": {
# "range": {
# "end": 250,
# "start": 180
# }
# }
# },
# {
# "destination": {
# "any": true
# },
# "destopts": true,
# "grant": "permit",
# "precedence": "network",
# "protocol": "icmpv6",
# "protocol_options": {
# "icmpv6": {
# "router_advertisement": true
# }
# },
# "sequence": 20,
# "source": {
# "any": true
# }
# }
# ],
# "name": "acl6_1"
# }
# ],
# "afi": "ipv6"
# }
# ]
# Using rendered
- name: Render platform specific commands (without connecting to the device)
cisco.iosxr.iosxr_acls:
config:
- afi: ipv4
acls:
- name: acl_2
aces:
- sequence: 11
grant: permit
protocol: igmp
source:
host: 198.51.100.130
destination:
any: true
ttl:
eq: 100
- sequence: 12
grant: deny
source:
any: true
destination:
any: true
protocol: icmp
state: rendered
# Task Output (redacted)
# -----------------------
# "rendered": [
# "ipv4 access-list acl_2",
# "11 permit igmp host 198.51.100.130 any ttl eq 100",
# "12 deny icmp any any"
# Using parsed
# parsed.cfg
# ------------
#
# ipv4 access-list acl_1
# 10 remark TEST_ACL_2_REMARK
# ipv4 access-list acl_2
# 11 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 authen routing log
# 21 permit icmpv6 any any router-advertisement precedence network packet-length eq 576 destopts
# ipv6 access-list acl6_1
# 10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 routing authen log
# 20 permit icmpv6 any any router-advertisement precedence network packet-length eq 576 destopts
- name: Parse externally provided ACL config to agnostic model
cisco.iosxr.iosxr_acls:
running_config: "{{ lookup('file', 'parsed.cfg') }}"
state: parsed
# Task Output (redacted)
# -----------------------
# "parsed": [
# {
# "acls": [
# {
# "aces": [
# {
# "remark": "TEST_ACL_2_REMARK",
# "sequence": 10
# }
# ],
# "name": "acl_1"
# },
# {
# "aces": [
# {
# "authen": true,
# "destination": {
# "any": true
# },
# "grant": "deny",
# "log": true,
# "protocol": "tcp",
# "protocol_options": {
# "tcp": {
# "syn": true
# }
# },
# "routing": true,
# "sequence": 11,
# "source": {
# "port_protocol": {
# "range": {
# "end": "telnet",
# "start": "ftp"
# }
# },
# "prefix": "2001:db8:1234::/48"
# },
# "ttl": {
# "range": {
# "end": 250,
# "start": 180
# }
# }
# },
# {
# "destination": {
# "any": true
# },
# "destopts": true,
# "grant": "permit",
# "packet_length": {
# "eq": 576
# },
# "precedence": "network",
# "protocol": "icmpv6",
# "protocol_options": {
# "icmpv6": {
# "router_advertisement": true
# }
# },
# "sequence": 21,
# "source": {
# "any": true
# }
# }
# ],
# "name": "acl_2"
# }
# ],
# "afi": "ipv4"
# },
# {
# "acls": [
# {
# "aces": [
# {
# "authen": true,
# "destination": {
# "any": true
# },
# "grant": "deny",
# "log": true,
# "protocol": "tcp",
# "protocol_options": {
# "tcp": {
# "syn": true
# }
# },
# "routing": true,
# "sequence": 10,
# "source": {
# "port_protocol": {
# "range": {
# "end": "telnet",
# "start": "ftp"
# }
# },
# "prefix": "2001:db8:1234::/48"
# },
# "ttl": {
# "range": {
# "end": 250,
# "start": 180
# }
# }
# },
# {
# "destination": {
# "any": true
# },
# "destopts": true,
# "grant": "permit",
# "packet_length": {
# "eq": 576
# },
# "precedence": "network",
# "protocol": "icmpv6",
# "protocol_options": {
# "icmpv6": {
# "router_advertisement": true
# }
# },
# "sequence": 20,
# "source": {
# "any": true
# }
# }
# ],
# "name": "acl6_1"
# }
# ],
# "afi": "ipv6"
# }
# ]
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key | Returned | Description |
---|---|---|
after
list / elements=string
|
when changed |
The resulting configuration model invocation.
Sample:
The configuration returned will always be in the same format of the parameters above.
|
before
list / elements=string
|
always |
The configuration prior to the model invocation.
Sample:
The configuration returned will always be in the same format of the parameters above.
|
commands
list / elements=string
|
always |
The set of commands pushed to the remote device.
Sample:
['ipv6 access-list acl6_1', '10 deny tcp 2001:db8:1234::/48 range ftp telnet any syn ttl range 180 250 authen routing log', '20 permit icmpv6 any any router-advertisement precedence network destopts', 'ipv4 access-list acl_1', '16 remark TEST_ACL_1_REMARK', '21 permit tcp host 192.0.2.10 range pop3 121 198.51.100.0 0.0.0.15 rst', '23 deny icmp any 198.51.100.0 0.0.0.15 reassembly-timeout dscp lt af12']
|
Authors
- Nilashish Chakraborty (@NilashishC)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/cisco/iosxr/iosxr_acls_module.html