cisco.nxos.nxos_acls – ACLs resource module
Note
This plugin is part of the cisco.nxos collection (version 1.4.0).
To install it use: ansible-galaxy collection install cisco.nxos.
To use it in a playbook, specify: cisco.nxos.nxos_acls.
New in version 1.0.0: of cisco.nxos
Synopsis
- Manage named IP ACLs on the Cisco NX-OS platform
 
Note
This module has a corresponding action plugin.
Parameters
| Parameter | Choices/Defaults | Comments | ||||||
|---|---|---|---|---|---|---|---|---|
|   config    list / elements=dictionary    |    A dictionary of ACL options.   |  |||||||
|   acls    list / elements=dictionary    |    A list of the ACLs.   |  |||||||
|   aces    list / elements=dictionary    |    The entries within the ACL.   |  |||||||
|   destination    dictionary    |    Specify the packet destination.   |  |||||||
|   address    string    |    Destination network address.   |  |||||||
|   any    boolean    |   
  |    Any destination address.   |  ||||||
|   host    string    |    Host IP address.   |  |||||||
|   port_protocol    dictionary    |    Specify the destination port or protocol (only for TCP and UDP).   |  |||||||
|   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. Only for prefixes of value less than 31 for ipv4 and 127 for ipv6. Prefixes of 32 (ipv4) and 128 (ipv6) should be given in the 'host' key.   |  |||||||
|   wildcard_bits    string    |    Destination wildcard bits.   |  |||||||
|   dscp    string    |    Match packets with given DSCP value.   |  |||||||
|   fragments    boolean    |   
  |    Check non-initial fragments.   |  ||||||
|   grant    string    |   
  |    Action to be applied on the rule.   |  ||||||
|   log    boolean    |   
  |    Log matches against this entry.   |  ||||||
|   precedence    string    |    Match packets with given precedence value.   |  |||||||
|   protocol    string    |    Specify the protocol.   |  |||||||
|   protocol_options    dictionary    |    All possible suboptions for the protocol chosen.   |  |||||||
|   icmp    dictionary    |    ICMP protocol options.   |  |||||||
|   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   |  ||||||
|   echo_request    boolean    |   
  |    Echo request (ping)   |  ||||||
|   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   |  ||||||
|   message_code    integer    |    ICMP message code   |  |||||||
|   message_type    integer    |    ICMP message type   |  |||||||
|   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 exceeded.   |  ||||||
|   timestamp_reply    boolean    |   
  |    Timestamp replies   |  ||||||
|   timestamp_request    boolean    |   
  |    Timestamp requests   |  ||||||
|   traceroute    boolean    |   
  |    Traceroute   |  ||||||
|   ttl_exceeded    boolean    |   
  |    TTL exceeded   |  ||||||
|   unreachable    boolean    |   
  |    All unreachables   |  ||||||
|   igmp    dictionary    |    IGMP protocol options.   |  |||||||
|   dvmrp    boolean    |   
  |    Distance Vector Multicast Routing Protocol   |  ||||||
|   host_query    boolean    |   
  |    Host Query   |  ||||||
|   host_report    boolean    |   
  |    Host Report   |  ||||||
|   tcp    dictionary    |    TCP 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    |    Access list entry comment.   |  |||||||
|   sequence    integer    |    Sequence number.   |  |||||||
|   source    dictionary    |    Specify the packet source.   |  |||||||
|   address    string    |    Source network address.   |  |||||||
|   any    boolean    |   
  |    Any source address.   |  ||||||
|   host    string    |    Host IP address.   |  |||||||
|   port_protocol    dictionary    |    Specify the destination port or protocol (only for TCP and UDP).   |  |||||||
|   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. Only for prefixes of mask value less than 31 for ipv4 and 127 for ipv6. Prefixes of mask 32 (ipv4) and 128 (ipv6) should be given in the 'host' key.   |  |||||||
|   wildcard_bits    string    |    Source wildcard bits.   |  |||||||
|   name    string / required    |    Name of the ACL.   |  |||||||
|   afi    string / required    |   
  |    The Address Family Indicator (AFI) for the ACL.   |  ||||||
|   running_config    string    |    This option is used only with state parsed.  The value of this option should be the output received from the NX-OS device by executing the command show running-config | section 'ip(v6* access-list).  The state parsed reads the configuration from   running_config option and transforms it into Ansible structured data as per the resource module's argspec and the value is then returned in the parsed key within the result. |  |||||||
|   state    string    |   
  |    The state the configuration should be left in   |  ||||||
Notes
Note
- Tested against NX-OS 7.3.(0)D1(1) on VIRL
 - As NX-OS allows configuring a rule again with different sequence numbers, the user is expected to provide sequence numbers for the access control entries to preserve idempotency. If no sequence number is given, the rule will be added as a new rule by the device.
 
Examples
# Using merged
# Before state:
# -------------
#
- name: Merge new ACLs configuration
  cisco.nxos.nxos_acls:
    config:
    - afi: ipv4
      acls:
      - name: ACL1v4
        aces:
        - grant: deny
          destination:
            address: 192.0.2.64
            wildcard_bits: 0.0.0.255
          source:
            any: true
            port_protocol:
              lt: 55
          protocol: tcp
          protocol_options:
            tcp:
              ack: true
              fin: true
          sequence: 50
    - afi: ipv6
      acls:
      - name: ACL1v6
        aces:
        - grant: permit
          sequence: 10
          source:
            any: true
          destination:
            prefix: 2001:db8:12::/32
          protocol: sctp
    state: merged
# After state:
# ------------
#
# ip access-list ACL1v4
#  50 deny tcp any lt 55 192.0.2.64 0.0.0.255 ack fin
# ipv6 access-list ACL1v6
#  10 permit sctp any any
# Using replaced
# Before state:
# ----------------
#
# ip access-list ACL1v4
#   10 permit ip any any
#   20 deny udp any any
# ip access-list ACL2v4
#   10 permit ahp 192.0.2.0 0.0.0.255 any
# ip access-list ACL1v6
#   10 permit sctp any any
#   20 remark IPv6 ACL
# ip access-list ACL2v6
#  10 deny ipv6 any 2001:db8:3000::/36
#  20 permit tcp 2001:db8:2000:2::2/128 2001:db8:2000:ab::2/128
- name: Replace existing ACL configuration with provided configuration
  cisco.nxos.nxos_acls:
    config:
    - afi: ipv4
    - afi: ipv6
      acls:
      - name: ACL1v6
        aces:
        - sequence: 20
          grant: permit
          source:
            any: true
          destination:
            any: true
          protocol: pip
        - remark: Replaced ACE
      - name: ACL2v6
    state: replaced
# After state:
# ---------------
#
# ipv6 access-list ACL1v6
#   20 permit pip any any
#   30 remark Replaced ACE
# ipv6 access-list ACL2v6
# Using overridden
# Before state:
# ----------------
#
# ip access-list ACL1v4
#   10 permit ip any any
#   20 deny udp any any
# ip access-list ACL2v4
#   10 permit ahp 192.0.2.0 0.0.0.255 any
# ip access-list ACL1v6
#   10 permit sctp any any
#   20 remark IPv6 ACL
# ip access-list ACL2v6
#  10 deny ipv6 any 2001:db8:3000::/36
#  20 permit tcp 2001:db8:2000:2::2/128 2001:db8:2000:ab::2/128
- name: Override existing configuration with provided configuration
  cisco.nxos.nxos_acls:
    config:
    - afi: ipv4
      acls:
      - name: NewACL
        aces:
        - grant: deny
          source:
            address: 192.0.2.0
            wildcard_bits: 0.0.255.255
          destination:
            any: true
          protocol: eigrp
        - remark: Example for overridden state
    state: overridden
# After state:
# ------------
#
# ip access-list NewACL
#   10 deny eigrp 192.0.2.0 0.0.255.255 any
#   20 remark Example for overridden state
# Using deleted:
#
# Before state:
# -------------
#
# ip access-list ACL1v4
#   10 permit ip any any
#   20 deny udp any any
# ip access-list ACL2v4
#   10 permit ahp 192.0.2.0 0.0.0.255 any
# ip access-list ACL1v6
#   10 permit sctp any any
#   20 remark IPv6 ACL
# ip access-list ACL2v6
#  10 deny ipv6 any 2001:db8:3000::/36
#  20 permit tcp 2001:db8:2000:2::2/128 2001:db8:2000:ab::2/128
- name: Delete all ACLs
  cisco.nxos.nxos_acls:
    config:
    state: deleted
# After state:
# -----------
#
# Before state:
# -------------
#
# ip access-list ACL1v4
#   10 permit ip any any
#   20 deny udp any any
# ip access-list ACL2v4
#   10 permit ahp 192.0.2.0 0.0.0.255 any
# ip access-list ACL1v6
#   10 permit sctp any any
#   20 remark IPv6 ACL
# ip access-list ACL2v6
#  10 deny ipv6 any 2001:db8:3000::/36
#  20 permit tcp 2001:db8:2000:2::2/128 2001:db8:2000:ab::2/128
- name: Delete all ACLs in given AFI
  cisco.nxos.nxos_acls:
    config:
    - afi: ipv4
    state: deleted
# After state:
# ------------
#
# ip access-list ACL1v6
#   10 permit sctp any any
#   20 remark IPv6 ACL
# ip access-list ACL2v6
#  10 deny ipv6 any 2001:db8:3000::/36
#  20 permit tcp 2001:db8:2000:2::2/128 2001:db8:2000:ab::2/128
# Before state:
# -------------
#
# ip access-list ACL1v4
#   10 permit ip any any
#   20 deny udp any any
# ip access-list ACL2v4
#   10 permit ahp 192.0.2.0 0.0.0.255 any
# ipv6 access-list ACL1v6
#   10 permit sctp any any
#   20 remark IPv6 ACL
# ipv6 access-list ACL2v6
#  10 deny ipv6 any 2001:db8:3000::/36
#  20 permit tcp 2001:db8:2000:2::2/128 2001:db8:2000:ab::2/128
- name: Delete specific ACLs
  cisco.nxos.nxos_acls:
    config:
    - afi: ipv4
      acls:
      - name: ACL1v4
      - name: ACL2v4
    - afi: ipv6
      acls:
      - name: ACL1v6
    state: deleted
# After state:
# ------------
# ipv6 access-list ACL2v6
#  10 deny ipv6 any 2001:db8:3000::/36
#  20 permit tcp 2001:db8:2000:2::2/128 2001:db8:2000:ab::2/128
# Using parsed
- name: Parse given config to structured data
  cisco.nxos.nxos_acls:
    running_config: |
      ip access-list ACL1v4
        50 deny tcp any lt 55 192.0.2.64 0.0.0.255 ack fin
      ipv6 access-list ACL1v6
        10 permit sctp any any
    state: parsed
# returns:
# parsed:
# - afi: ipv4
#   acls:
#     - name: ACL1v4
#       aces:
#         - grant: deny
#           destination:
#             address: 192.0.2.64
#             wildcard_bits: 0.0.0.255
#           source:
#             any: true
#             port_protocol:
#               lt: 55
#           protocol: tcp
#           protocol_options:
#             tcp:
#               ack: true
#               fin: true
#           sequence: 50
#
# - afi: ipv6
#   acls:
#     - name: ACL1v6
#       aces:
#         - grant: permit
#           sequence: 10
#           source:
#             any: true
#           destination:
#             prefix: 2001:db8:12::/32
#           protocol: sctp
# Using gathered:
# Before state:
# ------------
#
# ip access-list ACL1v4
#  50 deny tcp any lt 55 192.0.2.64 0.0.0.255 ack fin
# ipv6 access-list ACL1v6
#  10 permit sctp any any
- name: Gather existing configuration
  cisco.nxos.nxos_acls:
    state: gathered
# returns:
# gathered:
# - afi: ipv4
#   acls:
#     - name: ACL1v4
#       aces:
#         - grant: deny
#           destination:
#             address: 192.0.2.64
#             wildcard_bits: 0.0.0.255
#           source:
#             any: true
#             port_protocol:
#               lt: 55
#           protocol: tcp
#           protocol_options:
#             tcp:
#               ack: true
#               fin: true
#           sequence: 50
# - afi: ipv6
#   acls:
#     - name: ACL1v6
#       aces:
#         - grant: permit
#           sequence: 10
#           source:
#             any: true
#           destination:
#             prefix: 2001:db8:12::/32
#           protocol: sctp
# Using rendered
- name: Render required configuration to be pushed to the device
  cisco.nxos.nxos_acls:
    config:
    - afi: ipv4
      acls:
      - name: ACL1v4
        aces:
        - grant: deny
          destination:
            address: 192.0.2.64
            wildcard_bits: 0.0.0.255
          source:
            any: true
            port_protocol:
              lt: 55
          protocol: tcp
          protocol_options:
            tcp:
              ack: true
              fin: true
          sequence: 50
    - afi: ipv6
      acls:
      - name: ACL1v6
        aces:
        - grant: permit
          sequence: 10
          source:
            any: true
          destination:
            prefix: 2001:db8:12::/32
          protocol: sctp
    state: rendered
# returns:
# rendered:
#  ip access-list ACL1v4
#   50 deny tcp any lt 55 192.0.2.64 0.0.0.255 ack fin
#  ipv6 access-list ACL1v6
#   10 permit sctp any any
   Return Values
Common return values are documented here, the following are the fields unique to this module:
| Key | Returned | Description | 
|---|---|---|
|   after    dictionary    |  when changed |   The resulting configuration model invocation.  Sample:  The configuration returned will always be in the same format of the parameters above.   |  
|   before    dictionary    |  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:  ['ip access-list ACL1v4', '10 permit ip any any precedence critical log', '20 deny tcp any lt smtp host 192.0.2.64 ack fin']   |  
Authors
- Adharsh Srivats Rangarajan (@adharshsrivatsr)
 
    © 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
    https://docs.ansible.com/ansible/2.11/collections/cisco/nxos/nxos_acls_module.html