Note
This plugin is part of the arista.eos collection.
To install it use: ansible-galaxy collection install arista.eos.
To use it in a playbook, specify: arista.eos.eos_acls.
New in version 1.0.0: of arista.eos
Note
This module has a corresponding action plugin.
| Parameter | Choices/Defaults | Comments | ||||||
|---|---|---|---|---|---|---|---|---|
| config list / elements=dictionary | A dictionary of IP access-list options | |||||||
| acls list / elements=dictionary | A list of Access Control Lists (ACL). | |||||||
| aces list / elements=dictionary | Filtering data | |||||||
| destination dictionary | The packet's destination address | |||||||
| address string | dotted decimal notation of IP address | |||||||
| any boolean |
| Rule matches all source addresses | ||||||
| host string | Host IP address | |||||||
| port_protocol dictionary | Specify dest port/protocol, along with operator . (comes with tcp/udp). | |||||||
| subnet_address string | A subnet address | |||||||
| wildcard_bits string | Source wildcard bits | |||||||
| fragment_rules boolean |
| Add fragment rules | ||||||
| fragments boolean |
| Match non-head fragment packets | ||||||
| grant string |
| Action to be applied on the rule | ||||||
| hop_limit dictionary | Hop limit value. | |||||||
| line string | For fact gathering, any ACE that is not fully parsed, while show up as a value of this attribute. aliases: ace | |||||||
| log boolean |
| Log matches against this rule | ||||||
| protocol string | Specify the protocol to match. Refer to vendor documentation for valid values. | |||||||
| protocol_options dictionary | All the possible sub options for the protocol chosen. | |||||||
| 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 | ||||||
| message_code integer | ICMP message code | |||||||
| message_num integer | icmp msg type number. | |||||||
| 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 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 | Options for icmpv6. | |||||||
| address_unreachable boolean |
| address unreachable | ||||||
| beyond_scope boolean |
| beyond_scope | ||||||
| echo_reply boolean |
| echo_reply | ||||||
| echo_request boolean |
| echo reques | ||||||
| erroneous_header boolean |
| erroneous header | ||||||
| fragment_reassembly_exceeded boolean |
| fragment_reassembly_exceeded | ||||||
| hop_limit_exceeded boolean |
| hop limit exceeded | ||||||
| neighbor_advertisement boolean |
| neighbor advertisement | ||||||
| neighbor_solicitation boolean |
| neighbor_solicitation | ||||||
| no_admin boolean |
| no admin | ||||||
| no_route boolean |
| no route | ||||||
| packet_too_big boolean |
| packet too big | ||||||
| parameter_problem boolean |
| parameter problem | ||||||
| port_unreachable boolean |
| port unreachable | ||||||
| redirect_message boolean |
| redirect message | ||||||
| reject_route boolean |
| reject route | ||||||
| router_advertisement boolean |
| router_advertisement | ||||||
| router_solicitation boolean |
| router_solicitation | ||||||
| source_address_failed boolean |
| source_address_failed | ||||||
| source_routing_error boolean |
| source_routing_error | ||||||
| time_exceeded boolean |
| time_exceeded | ||||||
| unreachable boolean |
| unreachable | ||||||
| unrecognized_ipv6_option boolean |
| unrecognized_ipv6_option | ||||||
| unrecognized_next_header boolean |
| unrecognized_next_header | ||||||
| ip dictionary | Internet Protocol. | |||||||
| nexthop_group string | Nexthop-group name. | |||||||
| ipv6 dictionary | Internet V6 Protocol. | |||||||
| nexthop_group string | Nexthop-group name. | |||||||
| tcp dictionary | Options for tcp protocol. | |||||||
| flags 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 | Specify a comment | |||||||
| sequence integer | sequence number for the ordered list of rules | |||||||
| source dictionary | The packet's source address | |||||||
| address string | dotted decimal notation of IP address | |||||||
| any boolean |
| Rule matches all source addresses | ||||||
| host string | Host IP address | |||||||
| port_protocol dictionary | Specify source port/protocoli, along with operator. (comes with tcp/udp). | |||||||
| subnet_address string | A subnet address | |||||||
| wildcard_bits string | Source wildcard bits | |||||||
| tracked boolean |
| Match packets in existing ICMP/UDP/TCP connections | ||||||
| ttl dictionary | Compares the TTL (time-to-live) value in the packet to a specified value | |||||||
| eq integer | Match a single TTL value | |||||||
| gt integer | Match TTL greater than this number | |||||||
| lt integer | Match TTL lesser than this number | |||||||
| neq integer | Match TTL not equal to this value | |||||||
| vlan string | Vlan options | |||||||
| name string / required | Name of the acl-list | |||||||
| standard boolean |
| standard access-list or not | ||||||
| afi string / required |
| The Address Family Indicator (AFI) for the Access Control Lists (ACL). | ||||||
| running_config string | This option is used only with state parsed. The value of this option should be the output received from the EOS device by executing the command show running-config | section 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. | ||||||
Note
# Using merged
# Before state:
# -------------
# show running-config | section access-list
# ip access-list test1
# 10 permit ip 10.10.10.0/24 any ttl eq 200
# 20 permit ip 10.30.10.0/24 host 10.20.10.1
# 30 deny tcp host 10.10.20.1 eq finger www any syn log
# 40 permit ip any any
# ipv6 access-list test2
# 10 deny icmpv6 any any reject-route hop-limit eq 20
- name: Merge provided configuration with device configuration
arista.eos.eos_acls:
config:
- afi: ipv4
acls:
- name: test1
aces:
- sequence: 35
grant: deny
protocol: ospf
source:
subnet_address: 20.0.0.0/8
destnation:
any: true
state: merged
# After state:
# ------------
#
# show running-config | section access-list
# ip access-list test1
# 10 permit ip 10.10.10.0/24 any ttl eq 200
# 20 permit ip 10.30.10.0/24 host 10.20.10.1
# 30 deny tcp host 10.10.20.1 eq finger www any syn log
# 35 deny ospf 20.0.0.0/8 any
# 40 permit ip any any
# ipv6 access-list test2
# 10 deny icmpv6 any any reject-route hop-limit eq 20
# Using merged
# Before state:
# -------------
# show running-config | section access-list
# ip access-list test1
# 10 permit ip 10.10.10.0/24 any ttl eq 200
# 20 permit ip 10.30.10.0/24 host 10.20.10.1
# 30 deny tcp host 10.10.20.1 eq finger www any syn log
# 40 permit ip any any
# ipv6 access-list test2
# 10 deny icmpv6 any any reject-route hop-limit eq 20
- name: Merge to update the given configuration with an existing ace
arista.eos.eos_acls:
config:
- afi: ipv4
acls:
- name: test1
aces:
- sequence: 35
log: true
ttl:
eq: 33
state: merged
# After state:
# ------------
#
# show running-config | section access-list
# ip access-list test1
# 10 permit ip 10.10.10.0/24 any ttl eq 200
# 20 permit ip 10.30.10.0/24 host 10.20.10.1
# 30 deny tcp host 10.10.20.1 eq finger www any syn log
# 35 deny ospf 20.0.0.0/8 any ttl eq 33 log
# 40 permit ip any any
# ipv6 access-list test2
# 10 deny icmpv6 any any reject-route hop-limit eq 20
# Using replaced
# Before state:
# -------------
# show running-config | section access-list
# ip access-list test1
# 10 permit ip 10.10.10.0/24 any ttl eq 200
# 20 permit ip 10.30.10.0/24 host 10.20.10.1
# 30 deny tcp host 10.10.20.1 eq finger www any syn log
# 40 permit ip any any
# !
# ip access-list test3
# 10 permit ip 35.33.0.0/16 any log
# !
# ipv6 access-list test2
# 10 deny icmpv6 any any reject-route hop-limit eq 20
- name: Replace device configuration with provided configuration
arista.eos.eos_acls:
config:
- afi: ipv4
acls:
- name: test1
aces:
- sequence: 35
grant: permit
protocol: ospf
source:
subnet_address: 20.0.0.0/8
destination:
any: true
state: replaced
# After state:
# ------------
#
# show running-config | section access-list
# ip access-list test1
# 35 permit ospf 20.0.0.0/8 any
# !
# ip access-list test3
# 10 permit ip 35.33.0.0/16 any log
# !
# ipv6 access-list test2
# 10 deny icmpv6 any any reject-route hop-limit eq 20
# Using overridden
# Before state:
# -------------
# show running-config | section access-list
# ip access-list test1
# 10 permit ip 10.10.10.0/24 any ttl eq 200
# 20 permit ip 10.30.10.0/24 host 10.20.10.1
# 30 deny tcp host 10.10.20.1 eq finger www any syn log
# 40 permit ip any any
# !
# ip access-list test3
# 10 permit ip 35.33.0.0/16 any log
# !
# ipv6 access-list test2
# 10 deny icmpv6 any any reject-route hop-limit eq 20
- name: override device configuration with provided configuration
arista.eos.eos_acls:
config:
- afi: ipv4
acls:
- name: test1
aces:
- sequence: 35
action: permit
protocol: ospf
source:
subnet_address: 20.0.0.0/8
destination:
any: true
state: overridden
# After state:
# ------------
#
# show running-config | section access-list
# ip access-list test1
# 35 permit ospf 20.0.0.0/8 any
# !
# Using deleted:
# Before state:
# -------------
# show running-config | section access-list
# ip access-list test1
# 10 permit ip 10.10.10.0/24 any ttl eq 200
# 20 permit ip 10.30.10.0/24 host 10.20.10.1
# 30 deny tcp host 10.10.20.1 eq finger www any syn log
# 40 permit ip any any
# ipv6 access-list test2
# 10 deny icmpv6 any any reject-route hop-limit eq 20
# !
- name: Delete provided configuration
arista.eos.eos_acls:
config:
- afi: ipv4
state: deleted
# After state:
# ------------
#
# show running-config | section access-list
# ipv6 access-list test2
# 10 deny icmpv6 any any reject-route hop-limit eq 20
# Before state:
# -------------
# show running-config | section access-list
# ip access-list test1
# 10 permit ip 10.10.10.0/24 any ttl eq 200
# 20 permit ip 10.30.10.0/24 host 10.20.10.1
# 30 deny tcp host 10.10.20.1 eq finger www any syn log
# 40 permit ip any any
# ipv6 access-list test2
# 10 deny icmpv6 any any reject-route hop-limit eq 20
# !
- name: Delete provided configuration
arista.eos.eos_acls:
config:
- afi: ipv4
acls:
- name: test1
state: deleted
# After state:
# ------------
#
# show running-config | section access-list
# ipv6 access-list test2
# 10 deny icmpv6 any any reject-route hop-limit eq 20
# using gathered
# ip access-list test1
# 35 deny ospf 20.0.0.0/8 any
# ip access-list test2
# 40 permit vlan 55 0xE2 icmpv6 any any log
- name: Gather the exisitng condiguration
arista.eos.eos_acls:
state: gathered
# returns:
# arista.eos.eos_acls:
# config:
# - afi: "ipv4"
# acls:
# - name: test1
# aces:
# - sequence: 35
# grant: "deny"
# protocol: "ospf"
# source:
# subnet_address: 20.0.0.0/8
# destination:
# any: true
# - afi: "ipv6"
# acls:
# - name: test2
# aces:
# - sequence: 40
# grant: "permit"
# vlan: "55 0xE2"
# protocol: "icmpv6"
# log: true
# source:
# any: true
# destination:
# any: true
# using rendered
- name: Delete provided configuration
arista.eos.eos_acls:
config:
- afi: ipv4
acls:
- name: test1
aces:
- sequence: 35
grant: deny
protocol: ospf
source:
subnet_address: 20.0.0.0/8
destination:
any: true
- afi: ipv6
acls:
- name: test2
aces:
- sequence: 40
grant: permit
vlan: 55 0xE2
protocol: icmpv6
log: true
source:
any: true
destination:
any: true
state: rendered
# returns:
# ip access-list test1
# 35 deny ospf 20.0.0.0/8 any
# ip access-list test2
# 40 permit vlan 55 0xE2 icmpv6 any any log
# Using Parsed
# parsed_acls.cfg
# ipv6 access-list standard test2
# 10 permit any log
# !
# ip access-list test1
# 35 deny ospf 20.0.0.0/8 any
# 45 remark Run by ansible
# 55 permit tcp any any
# !
- name: parse configs
arista.eos.eos_acls:
running_config: "{{ lookup('file', './parsed_acls.cfg') }}"
state: parsed
# returns
# "parsed": [
# {
# "acls": [
# {
# "aces": [
# {
# "destination": {
# "any": true
# },
# "grant": "deny",
# "protocol": "ospf",
# "sequence": 35,
# "source": {
# "subnet_address": "20.0.0.0/8"
# }
# },
# {
# "remark": "Run by ansible",
# "sequence": 45
# },
# {
# "destination": {
# "any": true
# },
# "grant": "permit",
# "protocol": "tcp",
# "sequence": 55,
# "source": {
# "any": true
# }
# }
# ],
# "name": "test1"
# }
# ],
# "afi": "ipv4"
# },
# {
# "acls": [
# {
# "aces": [
# {
# "grant": "permit",
# "log": true,
# "sequence": 10,
# "source": {
# "any": true
# }
# }
# ],
# "name": "test2",
# "standard": true
# }
# ],
# "afi": "ipv6"
# }
# ]
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 standard test2', '10 permit any log', 'ip access-list test1', '35 deny ospf 20.0.0.0/8 any', '45 remark Run by ansible', '55 permit tcp any any'] |
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/arista/eos/eos_acls_module.html