Spec-Zone.ru › Ansible

Модуль cisco.iosxr.iosxr_acls – Модуль ресурсов для настройки ACL.

Примечание

Этот модуль входит в коллекцию cisco.iosxr (версия 9.0.0).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.

Для установки используйте: ansible-galaxy collection install cisco.iosxr.

Для использования в плейбуке укажите: cisco.iosxr.iosxr_acls.

Впервые в cisco.iosxr 1.0.0

  • Описание
  • Параметры
  • Примеры
  • Возвращаемые значения

Описание

  • Этот модуль управляет списками управления доступом (ACL) на устройствах, работающих под управлением IOS-XR.

Псевдонимы: acls

Параметры

Параметр

Комментарии

config

list / elements=dictionary

Список словарей, указывающих конфигурации ACL.

acls

list / elements=dictionary

Список списков контроля доступа (ACL).

aces

list / elements=dictionary

Список записей контроля доступа (ACE) для этого списка контроля доступа (ACL).

authen

boolean

Соответствие, если заголовок аутентификации присутствует.

Варианты:

  • false
  • true

capture

boolean

Захват совпавшего пакета.

Варианты:

  • false
  • true

destination

dictionary

Указывает назначение пакета.

address

string

IP-адрес назначения для сопоставления.

any

boolean

Соответствие любому адресу назначения.

Варианты:

  • false
  • true

host

string

IP-адрес узла для сопоставления.

net_group

string

Имя net-группы.

port_group

string

Имя port-группы.

port_protocol

dictionary

Укажите исходный порт или протокол.

eq

string

Сопоставление только пакетов с заданным номером порта.

gt

string

Сопоставление только пакетов с большим номером порта.

lt

string

Сопоставление только пакетов с меньшим номером порта.

neq

string

Сопоставление только пакетов, не имеющих заданный номер порта.

range

dictionary

Сопоставление только пакетов в диапазоне номеров портов

end

string

Укажите конец диапазона портов

start

string

Укажите начало диапазона портов

prefix

string

Префикс сети назначения.

wildcard_bits

string

Биты подстановки для применения к адресу назначения.

destopts

boolean

Соответствие, если заголовок параметров назначения присутствует.

Варианты:

  • false
  • true

dscp

dictionary

Сопоставление пакетов с заданным значением DSCP.

eq

string

Сопоставление только пакетов с заданным значением dscp

gt

string

Сопоставление только пакетов с большим значением dscp

lt

string

Сопоставление только пакетов с меньшим значением dscp

neq

string

Сопоставлять только пакеты, не имеющие заданного значения DSCP

range

dictionary

Сопоставлять только пакеты в диапазоне значений DSCP

end

string

Конец диапазона DSCP

start

string

Начало диапазона DSCP

fragments

boolean

Проверять неначальные фрагменты.

Choices:

  • false
  • true

grant

string

Пересылать или отбрасывать пакеты, соответствующие записи контроля доступа (ACE).

Choices:

  • "permit"
  • "deny"

hop_by_hop

boolean

Сопоставлять, если присутствует заголовок hop-by-hop opts.

Choices:

  • false
  • true

icmp_off

boolean

Включить/выключить сообщение ICMP для этой записи.

Choices:

  • false
  • true

line

aliases: ace

string

ACE без номера последовательности.

Этот ключ является взаимоисключающим со всеми другими атрибутами, кроме «sequence».

При использовании с другими атрибутами значение этого ключа будет иметь приоритет, а другие ключи будут игнорироваться.

Это следует использовать только тогда, когда атрибут не существует в argspec, но является допустимым для устройства.

Для сбора фактов любая запись ACE, которая не полностью разобранa, будет отображаться как значение этого атрибута, за исключением номера последовательности, который будет заполнен как значение ключа sequence.

log

boolean

Включить/выключить логирование совпадений для этой записи.

Choices:

  • false
  • true

log_input

boolean

Включить/выключить логирование совпадений для этой записи, включая входной интерфейс.

Choices:

  • false
  • true

packet_length

dictionary

Сопоставлять пакеты с заданной длиной пакета.

eq

integer

Сопоставлять только пакеты с заданной длиной пакета

gt

integer

Сопоставлять только пакеты с большей длиной пакета

lt

integer

Сопоставлять только пакеты с меньшей длиной пакета

neq

integer

Сопоставлять только пакеты, не имеющие заданной длины пакета

range

dictionary

Сопоставлять только пакеты в диапазоне длин пакетов

end

integer

Конец диапазона длин пакетов

start

integer

Начало диапазона длин пакетов

precedence

string

Сопоставлять пакеты с заданным значением приоритета

protocol

string

Укажите протокол для сопоставления.

Обратитесь к документации поставщика для допустимых значений.

protocol_options

dictionary

Дополнительные подпараметры для протокола.

icmp

dictionary

Параметры протокола управления интернет-сообщениями (ICMP).

administratively_prohibited

boolean

Административно запрещено

Choices:

  • false
  • true

alternate_address

boolean

Альтернативный адрес

Choices:

  • false
  • true

conversion_error

boolean

Преобразование датограмм

Choices:

  • false
  • true

dod_host_prohibited

boolean

Хост запрещен

Choices:

  • false
  • true

dod_net_prohibited

boolean

Сеть запрещена

Choices:

  • false
  • true

echo

boolean

Эхо (ping)

Choices:

  • false
  • true

echo_reply

boolean

Ответ эхо

Choices:

  • false
  • true

general_parameter_problem

boolean

Проблема с параметром

Choices:

  • false
  • true

host_isolated

boolean

Хост изолирован

Choices:

  • false
  • true

host_precedence_unreachable

boolean

Хост недоступен для приоритета

Choices:

  • false
  • true

host_redirect

boolean

Перенаправление хоста

Choices:

  • false
  • true

host_tos_redirect

boolean

Перенаправление хоста для TOS

Choices:

  • false
  • true

host_tos_unreachable

boolean

Хост недоступен для TOS

Choices:

  • false
  • true

host_unknown

boolean

Хост неизвестен

Choices:

  • false
  • true

host_unreachable

boolean

Хост недоступен

Choices:

  • false
  • true

information_reply

boolean

Ответы информации

Choices:

  • false
  • true

information_request

boolean

Запросы информации

Choices:

  • false
  • true

mask_reply

boolean

Ответы маски

Choices:

  • false
  • true

mask_request

boolean

Запросы маски

Choices:

  • false
  • true

mobile_redirect

boolean

Перенаправление мобильного хоста

Choices:

  • false
  • true

net_redirect

boolean

Перенаправление сети

Choices:

  • false
  • true

net_tos_redirect

boolean

Перенаправление сети для TOS

Choices:

  • false
  • true

net_tos_unreachable

boolean

Сеть недоступна для TOS

Choices:

  • false
  • true

net_unreachable

boolean

Сеть недоступна

Choices:

  • false
  • true

network_unknown

boolean

Неизвестная сеть

Choices:

  • false
  • true

no_room_for_option

boolean

Требуемый параметр, но недостаточно места

Choices:

  • false
  • true

option_missing

boolean

Требуемый параметр отсутствует

Choices:

  • false
  • true

packet_too_big

boolean

Необходима фрагментация, но установлен флаг DF

Choices:

  • false
  • true

parameter_problem

boolean

Все проблемы с параметрами

Choices:

  • false
  • true

port_unreachable

boolean

Порт недоступен

Choices:

  • false
  • true

precedence_unreachable

boolean

Превышение приоритета

Choices:

  • false
  • true

protocol_unreachable

boolean

Протокол недоступен

Choices:

  • false
  • true

reassembly_timeout

boolean

Превышено время сборки

Choices:

  • false
  • true

redirect

boolean

Все перенаправления

Choices:

  • false
  • true

router_advertisement

boolean

Объявления обнаружения маршрутизатора

Choices:

  • false
  • true

router_solicitation

boolean

Запросы обнаружения маршрутизатора

Choices:

  • false
  • true

source_quench

boolean

Заглушки источника

Choices:

  • false
  • true

source_route_failed

boolean

Ошибка маршрута источника

Choices:

  • false
  • true

time_exceeded

boolean

Все превышения времени

Варианты:

  • false
  • true

timestamp_reply

boolean

Ответы на запрос метки времени

Варианты:

  • false
  • true

timestamp_request

boolean

Запросы метки времени

Варианты:

  • false
  • true

traceroute

boolean

Traceroute

Варианты:

  • false
  • true

ttl_exceeded

boolean

Превышено значение TTL

Варианты:

  • false
  • true

unreachable

boolean

Все недоступные

Варианты:

  • false
  • true

icmpv6

dictionary

Параметры протокола управления интернет-сообщениями для IPv6.

address_unreachable

boolean

Адрес недоступен

Варианты:

  • false
  • true

administratively_prohibited

boolean

Административно запрещено

Варианты:

  • false
  • true

beyond_scope_of_source_address

boolean

Административно запрещено

Варианты:

  • false
  • true

destination_unreachable

boolean

Пункт назначения недоступен

Варианты:

  • false
  • true

echo

boolean

Эхо

Варианты:

  • false
  • true

echo_reply

boolean

Ответ эхо

Варианты:

  • false
  • true

erroneous_header_field

boolean

Поле заголовка с ошибкой

Варианты:

  • false
  • true

group_membership_query

boolean

Запрос членства в группе

Варианты:

  • false
  • true

group_membership_report

boolean

Отчет о членстве в группе

Варианты:

  • false
  • true

group_membership_termination

boolean

Завершение членства в группе

Варианты:

  • false
  • true

host_unreachable

boolean

Узел недоступен

Варианты:

  • false
  • true

nd_na

boolean

Обнаружение соседа - Объявление соседа

Варианты:

  • false
  • true

nd_ns

boolean

Запрос сопоставления узлов - Запрос узла

Choices:

  • false
  • true

neighbor_redirect

boolean

Перенаправление узла

Choices:

  • false
  • true

no_route_to_destination

boolean

Нет маршрута к месту назначения

Choices:

  • false
  • true

node_information_request_is_refused

boolean

Запрос информации об узле отклонен

Choices:

  • false
  • true

node_information_successful_reply

boolean

Успешный ответ на запрос информации об узле

Choices:

  • false
  • true

packet_too_big

boolean

Пакет слишком большой

Choices:

  • false
  • true

parameter_problem

boolean

Проблема с параметром

Choices:

  • false
  • true

port_unreachable

boolean

Порт недоступен

Choices:

  • false
  • true

query_subject_is_domainname

boolean

Запрашиваемый объект является именем домена

Choices:

  • false
  • true

query_subject_is_IPv4address

boolean

Запрашиваемый объект является IPv4-адресом

Choices:

  • false
  • true

query_subject_is_IPv6address

boolean

Запрашиваемый объект является IPv6-адресом

Choices:

  • false
  • true

reassembly_timeout

boolean

Время ожидания повторной сборки

Choices:

  • false
  • true

redirect

boolean

Перенаправление

Choices:

  • false
  • true

router_advertisement

boolean

Объявление маршрутизатора

Choices:

  • false
  • true

router_renumbering

boolean

Перемаршрутизация маршрутизатора

Choices:

  • false
  • true

router_solicitation

boolean

Запрос маршрутизатора

Choices:

  • false
  • true

rr_command

boolean

Команда RR

Choices:

  • false
  • true

rr_result

boolean

Результат RR

Choices:

  • false
  • true

rr_seqnum_reset

boolean

Сброс номера последовательности RR

Choices:

  • false
  • true

time_exceeded

boolean

Превышено время ожидания

Choices:

  • false
  • true

ttl_exceeded

boolean

Превышено значение TTL

Choices:

  • false
  • true

unknown_query_type

boolean

Неизвестный тип запроса

Choices:

  • false
  • true

unreachable

boolean

Недоступен

Choices:

  • false
  • true

unrecognized_next_header

boolean

Нераспознанный следующий заголовок

Choices:

  • false
  • true

unrecognized_option

boolean

Нераспознанный параметр

Choices:

  • false
  • true

whoareyou_reply

boolean

Ответ Whoareyou

Choices:

  • false
  • true

whoareyou_request

boolean

Запрос Whoareyou

Choices:

  • false
  • true

igmp

dictionary

Параметры протокола управления интернет-группами (IGMP).

dvmrp

boolean

Сопоставление протокола маршрутизации многоадресной рассылки с вектором расстояний

Choices:

  • false
  • true

host_query

boolean

Сопоставление запроса узла

Choices:

  • false
  • true

host_report

boolean

Сопоставление отчета узла

Choices:

  • false
  • true

mtrace

boolean

Сопоставление mtrace

Choices:

  • false
  • true

mtrace_response

boolean

Сопоставление ответа mtrace

Choices:

  • false
  • true

pim

boolean

Сопоставление независимого от протокола многоадресного доступа

Choices:

  • false
  • true

trace

boolean

Многоадресная трассировка

Choices:

  • false
  • true

tcp

dictionary

Сопоставление флагов пакетов TCP

ack

boolean

Сопоставление по биту ACK

Choices:

  • false
  • true

established

boolean

Сопоставление установленных соединений

Choices:

  • false
  • true

fin

boolean

Соответствие биту FIN

Варианты:

  • false
  • true

psh

boolean

Соответствие биту PSH

Варианты:

  • false
  • true

rst

boolean

Соответствие биту RST

Варианты:

  • false
  • true

syn

boolean

Соответствие биту SYN

Варианты:

  • false
  • true

urg

boolean

Соответствие биту URG

Варианты:

  • false
  • true

remark

string

Комментарии или описание для списка доступа.

routing

boolean

Соответствие, если заголовок маршрутизации присутствует.

Варианты:

  • false
  • true

sequence

integer

Порядковый номер для записи управления доступом (ACE).

source

dictionary

Указывает источник пакета.

address

string

IP-адрес источника для сопоставления.

any

boolean

Соответствие любому адресу источника.

Варианты:

  • false
  • true

host

string

IP-адрес узла для сопоставления.

net_group

string

Имя группы сетей.

port_group

string

Имя группы портов.

port_protocol

dictionary

Укажите исходный порт или протокол.

eq

string

Сопоставлять только пакеты с заданным номером порта.

gt

string

Сопоставлять только пакеты с большим номером порта.

lt

string

Сопоставлять только пакеты с меньшим номером порта.

neq

string

Сопоставлять только пакеты не с заданным номером порта.

range

dictionary

Сопоставлять только пакеты в диапазоне номеров портов

end

string

Укажите конец диапазона портов

start

string

Укажите начало диапазона портов

prefix

string

Префикс исходной сети.

wildcard_bits

string

Разряды Wildcard для применения к исходному адресу.

ttl

dictionary

Сопоставление с указанным значением TTL.

eq

целое число

Сопоставить только пакеты с точным значением TTL.

gt

целое число

Сопоставить только пакеты с большим значением TTL.

lt

целое число

Сопоставить только пакеты с меньшим значением TTL.

neq

целое число

Сопоставить только пакеты, у которых нет указанного значения TTL.

range

словарь

Сопоставить только пакеты в заданном диапазоне значений TTL.

end

целое число

Конец диапазона TTL.

start

целое число

Начало диапазона TTL.

name

строка

Имя списка управления доступом (ACL).

afi

строка / обязательно

Индикатор семейства адресов (AFI) для списков управления доступом (ACL).

Варианты:

  • "ipv4"
  • "ipv6"

running_config

строка

Модуль по умолчанию подключается к удалённому устройству и извлекает текущую конфигурацию running-config, чтобы использовать её как базу для сравнения с содержимым источника. Иногда нежелательно, чтобы задача получала текущую конфигурацию running-config для каждой задачи в playbook. Аргумент running_config позволяет разработчику передать конфигурацию для использования в качестве базовой конфигурации сравнения. Это значение должно быть результатом выполнения команды show running-config router static на устройстве.

state

строка

Состояние, в котором должна оставаться конфигурация.

Варианты:

  • "merged" ← (по умолчанию)
  • "replaced"
  • "overridden"
  • "deleted"
  • "gathered"
  • "rendered"
  • "parsed"

Примеры

# Using merged to add new ACLs

# Before state:
# -------------

# RP/0/RP0/CPU0:ios#show access-lists afi-al
# Fri Sep 22 03:57:04.758 UTC
# ipv4 access-list acl_1
#  10 permit udp 192.168.1.0 0.0.0.255 any

- 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

# Task Output
# -----------
#
# before:
#  - acls:
#    - aces:
#      - destination:
#          any: true
#        grant: permit
#        protocol: udp
#        sequence: 10
#        source:
#          address: 192.168.1.0
#          wildcard_bits: 0.0.0.255
#      name: acl_1
#    afi: ipv4
#
# commands:
#  - 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
#  - ipv4 access-list acl_2
#  - 10 remark TEST_ACL_2_REMARK
#
# after:
#  - acls:
#    - aces:
#      - destination:
#          any: true
#        grant: permit
#        protocol: udp
#        sequence: 10
#        source:
#          address: 192.168.1.0
#          wildcard_bits: 0.0.0.255
#      - 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

# After state:
# -------------

# RP/0/RP0/CPU0:ios#show access-lists afi-all
# Fri Sep 22 04:35:19.977 UTC
# ipv4 access-list acl_1
#  10 permit udp 192.168.1.0 0.0.0.255 any
#  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#show access-lists afi-all
# Fri Sep 22 04:37:33.542 UTC
# ipv4 access-list acl_1
#  10 permit udp 192.168.1.0 0.0.0.255 any
#  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

# Task Output
# -----------
#
# before:
#  - acls:
#    - aces:
#      - destination:
#          any: true
#        grant: permit
#        protocol: udp
#        sequence: 10
#        source:
#          address: 192.168.1.0
#          wildcard_bits: 0.0.0.255
#      - 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
#
# commands:
#  - ipv4 access-list acl_1
#  - 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
# after:
#  - acls:
#    - aces:
#      - destination:
#          any: true
#        grant: permit
#        protocol: udp
#        sequence: 10
#        source:
#          address: 192.168.1.0
#          wildcard_bits: 0.0.0.255
#      - 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:
#            syn: true
#        sequence: 21
#        source:
#          address: 198.51.100.32
#          port_protocol:
#            range:
#              end: '121'
#              start: pop3
#          wildcard_bits: 0.0.0.15
#      - destination:
#          address: 198.51.100.0
#          wildcard_bits: 0.0.0.15
#        dscp:
#          eq: af23
#        grant: deny
#        protocol: icmp
#        protocol_options:
#          icmp:
#            router_advertisement: 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

# After state:
# -------------

# RP/0/RP0/CPU0:ios#show access-lists afi-all
# Wed Sep 27 09:58:38.345 UTC
# ipv4 access-list acl_1
#  10 permit udp 192.168.1.0 0.0.0.255 any
#  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#show access-lists afi-all
# Fri Sep 22 05:38:36.205 UTC
# ipv4 access-list acl_1
#  10 permit udp 192.168.1.0 0.0.0.255 any
#  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:
    state: replaced
    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

# Task Output
# -----------
# before:
#  - acls:
#    - aces:
#      - destination:
#          any: true
#        grant: permit
#        protocol: udp
#        sequence: 10
#        source:
#          address: 192.168.1.0
#          wildcard_bits: 0.0.0.255
#      - 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
#
# commands:
#  - ipv4 access-list acl_2
#  - no 10
#  - 11 permit igmp host 198.51.100.130 any ttl eq 100
#  - 12 deny icmp any any
#
# after:
#  - acls:
#    - aces:
#      - destination:
#          any: true
#        grant: permit
#        protocol: udp
#        sequence: 10
#        source:
#          address: 192.168.1.0
#          wildcard_bits: 0.0.0.255
#      - 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:
#      - destination:
#          any: true
#        grant: permit
#        protocol: igmp
#        sequence: 11
#        source:
#          host: 198.51.100.130
#        ttl:
#          eq: 100
#      - destination:
#          any: true
#        grant: deny
#        protocol: icmp
#        sequence: 12
#        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
#        precedence: network
#        protocol: icmpv6
#        protocol_options:
#          icmpv6:
#            router_advertisement: true
#        sequence: 20
#        source:
#          any: true
#      name: acl6_1
#    afi: ipv6

# After state:
# -------------
# RP/0/RP0/CPU0:ios#show access-lists afi-all
# Fri Sep 22 05:56:21.103 UTC
# ipv4 access-list acl_1
#  10 permit udp 192.168.1.0 0.0.0.255 any
#  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
#  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
#  10 permit udp 192.168.1.0 0.0.0.255 any
#  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

# Task Output
# -----------
#
# before:
#  - 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
#
# commands:
#  - no ipv6 access-list acl6_1
#  - ipv4 access-list acl_1
#  - no 16
#  - no 21
#  - no 23
#  - 10 permit tcp any any
#  - ipv4 access-list acl_2
#  - no 10
#  - 20 permit igmp any any
#
# after:
#  - acls:
#    - aces:
#      - destination:
#          any: true
#        grant: permit
#        protocol: tcp
#        sequence: 10
#        source:
#          any: true
#      name: acl_1
#    - aces:
#      - destination:
#          any: true
#        grant: permit
#        protocol: igmp
#        sequence: 20
#        source:
#          any: true
#      name: acl_2
#    afi: ipv4

# 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#show access-lists afi-all
# Wed Sep 27 09:34:04.831 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

# Task Output
# -----------
#
# before:
#  - 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
#
#  commands:
#  - no ipv6 access-list acl6_1
#
# after:
#  - 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


# 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#show access-lists afi-all
# Wed Sep 27 09:34:04.831 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

# Task Output
# -----------
#
# before:
#  - 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
#
# commands:
#  - no ipv4 access-list acl_1
#  - no ipv4 access-list acl_2
#
# after:
#  - 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

# After state:
# -------------

# RP/0/RP0/CPU0:ios#show 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#show access-lists afi-all
# Wed Sep 27 09:34:04.831 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


# Task Output
# -----------
#
# before:
#  - 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
#
# commands:
#  - no ipv4 access-list acl_1
#  - no ipv4 access-list acl_2
#  - no ipv6 access-list acl6_1
#
# after: []

# After state:
# -------------

# RP/0/RP0/CPU0:ios#show 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

# RP/0/RP0/CPU0:ios#show access-lists afi-all
# Wed Sep 27 09:34:04.831 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: 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
#  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: 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_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

Значения возврата

Общие значения возврата описаны здесь, следующие поля уникальны для этого модуля:

Ключ

Описание

after

список / элементы=строка

Результат вызова модели конфигурации.

Возвращается: при изменении

Пример: ["The configuration returned will always be in the same format\n of the parameters above.\n"]

before

список / элементы=строка

Конфигурация до вызова модели.

Возвращается: всегда

Пример: ["The configuration returned will always be in the same format\n of the parameters above.\n"]

commands

список / элементы=строка

Набор команд, отправленных на удалённое устройство.

Возвращается: всегда

Пример: ["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"]

gathered

список / элементы=строка

Факты о сетевом ресурсе, собранные с удалённого устройства в виде структурированных данных.

Возвращается: когда state — gathered

Пример: ["This output will always be in the same format as the module argspec.\n"]

parsed

список / элементы=строка

Родная конфигурация устройства, предоставленная в опции running_config, разобранная в структурированные данные в соответствии с аргументами модуля.

Возвращается: когда state — parsed

Пример: ["This output will always be in the same format as the module argspec.\n"]

rendered

список / элементы=строка

Предоставленная в задаче конфигурация, рендеренная в формате, родном для устройства (оффлайн).

Возвращается: когда state — rendered

Пример: ["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"]

Авторы

  • Nilashish Chakraborty (@NilashishC)

Ссылки на коллекции

  • Отслеживание проблем
  • Репозиторий (источники)

© 2012–2018 Michael DeHaan
© 2018–2024 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API