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