Version information
This version is compatible with:
- Puppet Enterprise 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x, 2019.8.x
- Puppet >= 6.21.0 < 8.0.0
- ,
Start using this module
Add this module to your Puppetfile:
mod 'bibigon812-quagga', '4.5.0'
Learn more about managing modules with a PuppetfileDocumentation
Table of Contents
Module Description
This module provides management of network protocols without restarting services. All resources make changes to the configuration of services using commands, as if you are doing this through the CLI.
Notice
- If you use SELinux set the sebool for Quagga:
setsebool zebra_write_config on
- If you have over 500k routes on CentOS set
UseDNS no
in/etc/ssh/sshd_config
- If you have the FullView on CentOS turn off
NetworkManager
.
systemctl stop NetworkManager
systemctl mask NetworkManager
- Use the default value for the
default_ipv4_unicast
property of thequagga_bgp_router
resource type. - The correct way to delete route-map or prefix-list rules is to use the
ensure: absent
.
quagga::zebra::route_maps:
ROUTE_MAP_IN:
rules:
1:
ensure: absent
action: deny
match: ip address prefix-list ADVERTISED_PREFIXES
Quick Start
Include with default parameters:
include quagga
Zebra Options
SNMP
quagga::zebra::agentx: false
Forwarding
quagga::zebra::global_opts:
ip_forwarding: true
ipv6_forwarding: true
Interfaces
quagga::zebra::interfaces:
eth0:
ip_address:
- 10.0.0.1/24
lo:
ip_address:
- 10.255.255.1/32
- 172.16.255.1/32
Routes
The prefix and the nexthop are namevars.
quagga::zebra::routes:
192.168.0.0/24:
ensure: present
nexthop: 10.0.0.100
distance: 250
192.168.1.0/24 Null0:
ensure: present
distance: 250
192.168.1.0/24 10.0.0.100:
ensure: present
option: reject
distance: 200
Access-Lists
- standard: 1-99, 1300-1999
- extended: 100-199, 2000-2699
- zebra: [[:alpha:]]+
quagga::zebra::access_lists:
1:
remark: Standard access-list
rules:
- permit 127.0.0.1
- deny any
100:
remark: Extended access-list
rules:
- permit ip 10.0.0.0 0.0.0.255 any
- permit ip any 10.0.0.0 0.0.0.255
- deny ip any any
zebra_list:
remark: Zebra access-list
rules:
- permit 10.0.0.0/24
- deny any
Prefix Lists
quagga::zebra::prefix_lists:
CONNECTED_PREFIXES:
rules:
500:
action: permit
le: 32
prefix: 10.255.255.0/24
OSPF_PREFIXES:
rules:
10:
action: permit
prefix: 172.16.255.0/24
Route Maps
quagga::zebra::route_maps:
BGP_FROM_OSPF:
rules:
10:
action: permit
match: ip address prefix-list OSPF_PREFIXES
CONNECTED:
rules:
10:
action: permit
match: ip address prefix-list CONNECTED_PREFIXES
BGP
BGP SNMP
quagga::bgp::agentx: false
BGP Router
quagga::bgp::router:
as_number: 65000
default_ipv4_unicast: false
import_check: true
router_id: 10.0.0.1
keepalive: 3
holdtime: 9
BGP Address Families
quagga::bgp::address_families:
ipv4_unicast:
aggregate_address:
- 1.1.1.0/24 summary-only
- 1.1.2.0/24 summary-only
maximum_ebgp_paths: 2
maximum_ibgp_paths: 10
networks:
- 1.1.1.0/23
- 1.1.3.0/24
ipv4_multicast:
networks:
- 230.0.0.0/8
- 231.0.0.0/8
ipv6_unicast:
aggregate_address:
- 2001:db8:0:2::/64
- 2001:db8:0:3::/64
networks:
- 2001:db8::/64
- 2001:db8:0:1::/64
- 2001:db8:0:2::/63
BGP Peers
quagga::bgp::peers:
CLIENTS:
passive: true
address_families:
ipv4_unicast:
activate: true
default_originate: true
INTERNAL:
remote_as: 65000
password: QWRF$345!#@$
update_source: 10.0.0.1
address_families:
ipv4_unicast:
activate: true
next_hop_self: true
10.0.0.2:
peer_group: INTERNAL
address_families:
ipv4_unicast:
peer_group: INTERNAL
10.0.0.3:
peer_group: INTERNAL
address_families:
ipv4_unicast:
peer_group: INTERNAL
10.0.0.10:
peer_group: INTERNAL
address_families:
ipv4_multicast:
activate: true
172.16.0.2:
peer_group: CLIENTS
remote_as: 65001
address_families:
ipv4_unicast:
peer_group: CLIENTS
BGP AS-Paths
quagga::bgp::as_paths:
FROM_AS100:
rules:
- permit _100$
BGP Community Lists
quagga::bgp::community_lists:
100:
rules:
- permit 65000:101
- permit 65000:102
- permit 65000:103
200:
rules:
- permit 65000:201
- permit 65000:202
OSPF
OSPF SNMP
quagga::ospf::agentx: false
OSPF Router
quagga::ospf::router:
distribute_list:
- ACCESS_LIST out kernel
- ACCESS_LIST out isis
log_adjacency_changes: true
opaque: false
passive_interfaces:
- eth0
- eth1
redistribute:
- connected route-map CONNECTED
rfc1583: false
router_id: 10.0.0.1
OSPF Areas
quagga::ospf::areas:
0.0.0.0:
networks:
- 172.16.0.0/24
- 192.168.0.0/24
ranges:
1.1.1.1/32:
substitute: 1.1.1.0/24
0.0.0.1:
networks:
- 172.16.1.0/24
- 192.168.1.0/24
stub: true
OSPF Interfaces
quagga::ospf::interfaces:
eth0:
dead_interval: 8
hello_interval: 2
mtu_ignore: true
priority: 100
PIM
PIM SNMP
quagga::pim::agentx: false
PIM Router
quagga::pim::router:
ip_multicast_routing: true
PIM Interfaces
quagga::pim::interfaces:
eth0:
igmp: true
multicast: true
pim_ssm: true
Reference
Classes
quagga
default_owner
: overrides the default owner of Quagga configuration files in the file system. Defaults toquagga
.default_group
: overrides the default group of Quagga configuration files in the file system. Defaults toquagga
.default_mode
: overrides the default mode of Quagga configuration files in the system. Defaults to0600
.default_content
: overrides the initial content of quagga configuration files.service_file
: overrides the default path of the Quagga system configuration file in the file system.service_file_manage
: enable management of the service file. Defaults totrue
.packages
: Quagga package options.
quagga::bgp
agentx
: enable agentx. Defaults tofalse
.config_file
: configuration file of the BGP service.config_file_manage
: enable management of the BGP service setting file.service_name
: the name of the BGP service.service_enable
: enable the BGP service.service_manage
: enable management of the BGP service.service_ensure
: the state of the BGP Service.service_opts
: service start options.router
: BGP router options. See the typequagga_bgp_router
.peers
: BGP peer options. See the typequagga_bgp_peer
.as_paths
: as-path options. See the typequagga_bgp_as_path
.community_lists
: community-list options. See the typequagga_bgp_community_list
.address_families
: BGP address-family options. See the typequagga_bgp_address_family
.
quagga::ospf
agentx
: enable agentx. Defaults tofalse
.config_file
: configuration file of the OSPF service.config_file_manage
: enable management of the OSPF service setting file.service_name
: the name of the OSPF service.service_enable
: enable the OSPF service.service_manage
: enable management of the OSPF service.service_ensure
: the state of the OSPF Service.service_opts
: service start options.router
: OSPF router options. See the typequagga_ospf_router
.areas
: OSPF area options. See the typequagga_ospf_area
.interfaces
: OSPF parameters of interfaces. See the typequagga_ospf_interface
.
quagga::ospf::area
- See
quagga_ospf_area
. ranges
: OSPF ranges. Seequagga_ospf_area_range
.
quagga::pim
agentx
: enable agentx. Defaults tofalse
.config_file
: configuration file of the PIM service.config_file_manage
: enable management of the PIM service setting file.service_name
: the name of the PIM service.service_enable
: enable the PIM service.service_manage
: enable management of the PIM service.service_ensure
: the state of the PIM Service.service_opts
: service start options.router
: PIM router options. See the typequagga_pim_router
.interfaces
: OSPF parameters of interfaces. See the typequagga_pim_interface
.
quagga::zebra
agentx
: enable agentx. Defaults tofalse
.hostname
: Quagga router hostname. Defaults to FQDN.global_opts
: Quagga global options. See the typequagga_global
.interfaces
: Quagga interfacec options. See the typequagga_interface
.prefix_lists
: Quagga prefix-list options. See the typequagga_prefix_list
.route_maps
: Quagga route-map options. See the typequagga_rotue_map
.routes
: parameters of the static routes. See the typequagga_static_route
.access_lists
: parameters of the access-lists. See the typequagga_access_list
.config_file
: configuration file if the Zebra service.config_file_manage
: enable management of the Zebra service setting file.service_name
: the name of the Zebra service.service_enable
: enable the Zebra service.service_manage
: enable management of the Zebra service.service_ensure
: the state of the Zebra Service.service_opts
: service start options.
Defines
quagga::bgp::peer
See types quagga_bgp_peer
and quagga_bgp_peer_address_family
.
Types
quagga_as_path
quagga_as_path { 'TEST_AS_PATH':
ensure => present,
rules => [
'permit _100$',
'permit _100_',
],
}
name
: the name of the as-path access-list.ensure
: manage the state of this as-path list:absent
,present
.rules
: the list of rules.
quagga_bgp_router
quagga_bgp_router { 'bgp':
ensure => present,
as_number => 65000,
import_check => true,
default_ipv4_unicast => false,
default_local_preference => 100,
redistribute => [ 'ospf route-map BGP_FROM_OSPF', ],
router_id => '192.168.1.1',
keepalive => 3,
holdtime => 9,
}
name
: the instance name.ensure
: manage the state of this BGP router:absent
,present
.as_number
: the number of the AS.import_check
: check BGP network route exists in IGP. Defaults tofalse
.default_ipv4_unicast
: activate ipv4-unicast for a peer by default. Defaults tofalse
.default_local_preference
: default local preference. Defaults to100
.redistribute
: redistribute information from another routing protocol.router_id
: override configured router identifier.keepalive
: the default bgp peer keepalive interval. Defaults to3
.holdtime
: the default bgp peer holdtime. Defaults to9
.
quagga_bgp_address_family
quagga_bgp_address_family { 'ipv4_unicast':
aggregate_address => '192.168.0.0/24 summary-only',
maximum_ebgp_paths => 2,
maximum_ibgp_paths => 2,
networks => ['192.168.0.0/24', '172.16.0.0/24',],
}
quagga_bgp_address_family { 'ipv4_multicast':
aggregate_address => '230.0.0.0/8 summary-only',
networks => [ '230.0.0.0/8', '231.0.0.0/8', ],
}
name
: the address family.aggregate_address
: configure BGP aggregate entries.maximum_ebgp_paths
: forward packets over multiple ebgp paths.maximum_ibgp_paths
: forward packets over multiple ibgp paths.networks
: specify a network to announce via BGP.
quagga_bgp_peer
quagga_bgp_peer { '192.168.1.1':
ensure => present,
peer_group => 'internal_peers',
}
quagga_bgp_peer { 'internal_peers':
ensure => present,
local_as => 65000,
password => 'QWRF$345!#@$',
peer_group => true,
remote_as => 65000,
}
name
: a neighbor IP address or a peer-group name.ensure
: manage the state of this BGP neighbor:absent
,present
: Defaults topresent
.local_as
: specify a local-as number.passive
: don't send open messages to this neighbor. Defaults tofalse
.password
: set a password.peer_group
: member of the peer-group.remote_as
: specify a BGP neighbor AS.shutdown
: administratively shut down this neighbor. Defaults tofalse
.update_source
: source of routing updates.
quagga_bgp_peer_address_family
quagga_bgp_peer_address_family { '192.168.0.2 ipv4_unicast':
peer_group => PEER_GROUP,
activate => true,
allow_as_in => 1,
default_originate => true,
maximum_prefix => 500000,
next_hop_self => true,
prefix_list_in => PREFIX_LIST,
prefix_list_out => PREFIX_LIST,
remove_private_as => true,
route_map_export => ROUTE_MAP,
route_map_import => ROUTE_MAP,
route_map_in => ROUTE_MAP,
route_map_out => ROUTE_MAP,
route_reflector_client => false,
route_server_client => false,
send_community => 'both',
}
name
: contains peer and address family names separated by space.ensure
: manage the state of this BGP neighbor:absent
,present
: Defaults topresent
.activate
: enable the Address Family for this Neighbor. Defaults totrue
.allow_as_in
: accept as-path with my AS present in it.default_originate
: originate default route to this neighbor. Defaults tofalse
.next_hop_self
: disable the next hop calculation for this neighbor. Defaults tofalse
.peer_group
: member of the peer-group.prefix_list_in
: filter updates from this neighbor.prefix_list_out
: filter updates to this neighbor.route_map_export
: apply map to routes coming from a Route-Server client.route_map_import
: apply map to routes going into a Route-Server client's table.route_map_in
: apply map to incoming routes.route_map_out
: apply map to outbound routes.route_reflector_client
: configure a neighbor as Route Reflector client. Defaults tofalse
.route_server_client
: configure a neighbor as Route Server client. Defaults tofalse
.
quagga_community_list
quagga_community_list { '100':
ensure => present,
rules => [
'permit 65000:50952',
'permit 65000:31500',
],
}
name
: community list number.ensure
: manage the state of this community list:absent
,present
: Defaults topresent
.rules
: the list of rules.
quagga_global
quagga_global { 'router-1.sandbox.local':
password => 'password',
enable_password => 'enable_password',
ip_forwarding => true,
ipv6_forwarding => true,
line_vty => true,
service_password_encryption => true,
}
name
: router instance name.hostname
: router hostname. Defaults toname
.password
: set password for vty interface. If there is no password, a vty won’t accept connections.enable_password
: set enable password.ip_forwarding
: enable IP forwarding. Defaults tofalse
.ipv6_forwarding
: enable IPv6 forwarding. Defaults tofalse
.line_vty
: enter vty configuration mode. Defaults totrue
.service_password_encryption
: encrypt passwords. Defaults tofalse
.
quagga_interface
quagga_interface { 'eth0':
igmp => true,
ip_address => [ '10.0.0.1/24', '172.16.0.1/24', ],
}
name
: the friendly name of the network interface.bandwidth
: set bandwidth value of the interface in kilobits/sec.description
: interface description.enable
: whether the interface should be enabled or notip_address
: IP addresses. Defaults to[]
.link_detect
: enable link state detection. Defaults tofalse
.
quagga_ospf_interface
quagga_ospf_interface { 'eth0':
auth => 'message-digest',
message_digest_key => '1 md5 MESSAGEDIGEST',
mtu_ignore => true,
hello_interval => 2,
dead_interval => 8,
}
name
: the friendly name of the network interface.auth
: interface authentication type:absent
,message-digest
. Defaults toabsent
.message_digest_key
: set OSPF authentication key to a cryptographic password:absent
,KEYID md5 KEY
. Defaults toabsent
.cost
: interface cost. Defaults toabsent
.dead_interval
: interval after which a neighbor is declared dead. Defaults to40
.hello_interval
: time between HELLO packets. Defaults to10
.mtu_ignore
: disable mtu mismatch detection. Defaults tofalse
.network
: network type:absent
,broadcast
,non-broadcast
,point-to-multipoint
,point-to-point
orloopback
: Defaults toabsent
.priority
: router priority. Defaults to1
.retransmit_interval
: time between retransmitting lost link state advertisements. Defaults to5
.transmit_delay
: link state transmit delay. Defaults to1
.
quagga_pim_router
quagga_pim_router { 'pim':
ip_multicast_routing => true
}
name
: the name must bepim
.ip_multicast_routing
: enable IP multicast forwarding. Defaults tofalse
.
quagga_pim_interface
quagga_interface { 'eth0':
igmp => true,
multicast => true,
pim_ssm => true,
}
name
: the friendly name of the network interface.igmp
: enable IGMP. Defaults tofalse
.igmp_query_interval
: IGMP query interval. Defaults to125
.igmp_query_max_response_time_dsec
: IGMP maximum query response time in deciseconds. Defaults to100
.multicast
: enable multicast flag for the interface. Defaults tofalse
.pim_ssm
: enable PIM SSM operation. Defaults tofalse
.
quagga_ospf_router
quagga_ospf_router { 'ospf':
ensure => present,
abr_type => 'cisco',
distribute_list => [ 'ACCESS_LIST out bgp', 'ACCESS_LIST out static', ],
opaque => true,
passive_interfaces => [ 'eth0', 'eth1', ],
redistribute => [ 'connected', 'static route-map STATIC', ],
rfc1583 => true,
router_id => '10.0.0.1',
}
name
: the name must beospf
.ensure
: manage the state of this OSPF router:absent
,present
. Defaults topresent
.abr_type
: set OSPF ABR type. Defaults tocisco
.distribute_list
: Filter networks in routing updates. Defaults to[]
.log_adjacency_changes
: log changes in adjacency. Defaults tofalse
.opaque
: enable the Opaque-LSA capability (rfc2370). Defaults tofalse
.passive_interfaces
: Suppress routing updates on interfaces. Defaults to[]
.redistribute
: redistribute information from another routing protocol.rfc1583
: enable the RFC1583Compatibility flag. Defaults tofalse
.router_id
: Router-id for the OSPF process.
quagga_ospf_area
quagga_ospf_area { '0.0.0.0':
ensure => present,
network => [ '10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16' ],
}
name
: the OSPF area.ensure
: manage the state of this OSPF area:absent
,present
: Defaults topresent
.access_list_expor
: set the filter for networks announced to other areas.access_list_import
: set the filter for networks from other areas announced to the specified one.prefix_list_export
: filter networks sent from this area.prefix_list_import
: filter networks sent to this area.networks
: enable routing on an IP network. Defaults to[]
.auth
: enable authentication on this area:false
,true
,message-digest
: Defaults tofalse
.stub
: . configure the area to be a stub area:false
,true
,no-summary
: Defaults tofalse
.
qugga_ospf_area_range
quagga_ospf_area_range { '0.0.0.0 10.0.0.0/8':
substitute: '10.0.0.0/8',
}
name
: contains an OSPF area id and range.advertise
: Advertise this range. Defaults totrue
.cost
: User specified metric for this range.substitute
: Network prefix to be announced instead of range.
quagga_prefix_list
The prefix_list resource is a single sequence. You can use a chain of resources to describe comlpex prefix lists, for example:
quagga_prefix_list {'ADVERTISED_PREFIXES 10':
ensure => present,
action => 'permit',
prefix => '192.168.0.0/16',
le => 24,
}
quagga_prefix_list {'ADVERTISED_PREFIXES 20':
ensure => present,
action => 'permit',
prefix => '172.16.0.0/12',
le => 24,
}
name
: name of the prefix-list and sequence number.ensure
: manage the state of this prefix list:absent
,present
: Defaults topresent
.action
: action can bepermit
ordeny
.ge
: minimum prefix length to be matched.le
: maximum prefix length to be matched.prefix
: IP prefix<network>/<length>
.proto
: IP protocol version:ip
,ipv6
: Defaults toip
.
quagga_route_map
The route_map resource is a single sequence. You can use a chain of resources to describe complex route maps, for example:
quagga_route_map { 'bgp_out 10':
ensure => present,
action => 'permit',
match => 'ip address prefix-list ADVERTISED-PREFIXES'
on_match => 'goto 65000',
}
quagga_route_map { 'bgp_out 99':
ensure => present,
action => 'deny',
}
quagga_route_map { 'bgp_out 65000':
ensure => present,
action => 'permit',
match => [
'as-path AS_PATH_LIST',
'community 100',
'community 300 exact-match',
'extcommunity 200',
'interface eth0',
'ip address 100',
'ip next-hop ACCESS_LIST',
'ip route-source prefix-list PREFIX_LIST',
'ipv6 address IPV6_ACCESS_LIST',
'ipv6 next-hop prefix-list IPV6_PREFIX_LIST',
'local-preference 1000',
'metric 0',
'origin igp',
'origin egp',
'origin incomplete',
'peer 1.1.1.1',
'peer 100',
'peer local',
'probability 50',
'tag 100',
],
on_match => 'next',
set => [
'aggregator as 65000',
'as-path exclude 100 200',
'as-path prepend 100 100 100',
'as-path prepend last-as 5',
'atomic-aggregate',
'comm-list 100 delete',
'community 0:666 additive',
'community none',
'forwarding address 1fff::',
'ip next-hop 1.1.1.1',
'ip next-hop peer-address',
'ipv6 next-hop global 1::',
'ipv6 next-hop local 1::',
'ipv6 next-hop peer-address',
'local-preference 1000',
'metric 0',
'metric-type type-1',
'origin egp',
'origin igp',
'origin incomplete',
'originator-id 1.1.1.1',
'src 1.1.1.1',
'tag 100',
'vpn4 next-hop 1.1.1.1',
'weight 100',
],
}
name
: name of the route-map and sequence number of rule.action
: route map actions:deny
,permit
.ensure
: manage the state of this route map:absent
,present
: Defaults topresent
.match
: match values from routing table. Defaults to[]
.on_match
: exit policy on matches.set
: set values in destination routing protocol. Defaults to[]
.
quagga_static_route
quagga_static_route { '10.0.0.0/24':
ensure => present,
nexthop => '1.1.1.1',
option => 'reject',
distance => 250,
}
quagga_static_route { '192.168.0.0/24 1.1.1.1':
ensure => present,
distance => 250,
}
prefix
: namevar. IP destination prefix.nexthop
: namevar. Specifies IP or the interface name of the nexthop router. Defaults toNull0
.distance
: Specifies the distance value for this route. Values are1-255
.option
: Sets reject or blackhole for this route. Values arereject
andblackhole
.
quagga_access_list
quagga_access_list {'1':
ensure => present,
remark => 'IP standard access list',
rules => [
'deny 10.0.0.128 0.0.0.127',
'deny 10.0.101.193',
'permit 10.0.0.0 0.0.255.255',
'permit 192.168.10.1'.
'deny any'
]
}
quagga_access_list {'100':
ensure => present,
remark => 'IP extended access-list',
rules => [
'deny ip host 10.0.1.100 any',
'permit ip 10.0.1.0 0.0.0.255 any',
'deny ip any any'
]
}
quagga_access_list {'a_word':
ensure => present,
remark => 'IP zebra access-list',
rules => [
'deny 192.168.0.0/23',,
'permit 192.168.0.0/16',
'deny any',
]
}
name
: The number of this access list.remark
: Specifies the remark for this access-list.rules
: Permits and denies for this rule. Defaults to [].
Reference
Table of Contents
Classes
Public Classes
quagga
: Manages common option of quagga servicesquagga::bgp
: Manage the Quagga BGP Daemonquagga::logging
: Loggingquagga::ospf
: Manage the Quagga OSPF daemonquagga::pim
: Manage Quagga Protocol Independent Multicasting (PIM)quagga::zebra
: manage the main zebra process
Private Classes
quagga::bgp::config
quagga::bgp::service
quagga::ospf::config
quagga::ospf::service
quagga::pim::config
quagga::pim::service
quagga::zebra::config
quagga::zebra::service
Defined types
Public Defined types
quagga::ospf::area
: configure an OSPF areaquagga::prefix_list
: manage a Quagga prefix listquagga::route_map
: Manage a quagga route-map
Private Defined types
quagga::bgp::peer
: wrapper for quagga_bgp_peer and quagga_bgp_peer_address_family
Resource types
quagga_access_list
: This type provides the capability to manage BGP community-list within puppet. Examples: quagga_access_list {'1': ensure => present,quagga_bgp_address_family
: This type provides capabilities to manage Quagga bgp address family parameters. Examples: quagga_bgp_address_family { 'ipv4_unicast':quagga_bgp_as_path
: This type provides the capabilities to manage BGP as-path access-list within puppet. Examples: quagga_bgp_as_path { 'as100':quagga_bgp_community_list
: This type provides the capability to manage BGP community-list within puppet. Examples: quagga_bgp_community_list { '100': enquagga_bgp_peer
: This type provides the capability to manage bgp neighbor within puppet. Examples: quagga_bgp_peer { '192.168.1.1': ensurequagga_bgp_peer_address_family
: This type provides capabilities to manage Quagga bgp address family parameters. Examples: quagga_bgp_peer_address_family { '192.168.0quagga_bgp_router
: This type provides the capability to manage bgp parameters within puppet. Examples: quagga_bgp_router { 'bgp': ensurequagga_global
: This type provides the capabilities to manage the routerquagga_interface
: This type provides the capabilities to manage Quagga interface parametersquagga_logging
: This type provides the capabilities to manage logging within puppet. Examples: quagga_logging { 'file': file_name => '/tmp/quagga.errquagga_ospf_area
: This type provides the capabilities to manage ospf area within puppet. Examples: ospf_area { '0.0.0.0': auth =>quagga_ospf_area_range
: This type provides the capabilities to manage ospf area range within puppet. Examples: ospf_area_name { '0.0.0.0 10.0.0.0/24':quagga_ospf_interface
: This type provides the capabilities to manage Quagga interface OSPF parameters.quagga_ospf_router
: This type provides the capabilities to manage ospf router within puppet. Examples: quagga_ospf_router { 'ospf': ensure => prequagga_pim_interface
: This type provides the capabilities to manage Quagga pim interface parametersquagga_pim_router
: This type provides the capabilities to manage the PIM routerquagga_prefix_list
: This type provides the capability to manage prefix-lists within puppet. Example: ```puppet quagga_prefix_list { 'TEST_PREFIX_LIST 10': enquagga_route_map
: This type provides the capability to manage route-map within puppet. Example: route_map {'TEST_ROUTE_MAP 10': ensure => prequagga_static_route
: This type provides the capability to manage static routes within puppet. Example: quagga_static_route {'172.16.2.0/24': ensure
Data types
Quagga::Bgp
Quagga::BgpPeerAddressFamily
: Address family specific settings for BGP peersQuagga::Ospf
Quagga::OspfRouter
Quagga::Pim
Quagga::Zebra
Classes
quagga
Manages common option of quagga services
Parameters
The following parameters are available in the quagga
class:
default_owner
default_group
default_mode
default_content
service_file
service_file_manage
packages
config_dir
frr_mode_enable
pim_settings
ospf_settings
bgp_settings
zebra_settings
default_owner
Data type: String
Specifies the default owner of quagga files.
default_group
Data type: String
Specifies the default group of quagga files.
default_mode
Data type: String
Specifies the default mode of quagga files.
default_content
Data type: String
Specifies the default content of quagga files.
service_file
Data type: String
The system configuration file on the filesyustem
service_file_manage
Data type: Boolean
Enable or disable management of the system configuration file
packages
Data type: Hash
Specifies which packages will be installed
config_dir
Data type: Stdlib::AbsolutePath
Directory in which the quagga configuration files reside
Default value: '/etc/quagga'
frr_mode_enable
Data type: Boolean
Indicates whether this is a quagga or FRRouting based system
Default value: false
pim_settings
Data type: Quagga::Pim
Hash containing all of the pim daemon configuration directives
ospf_settings
Data type: Quagga::Ospf
Hash containing all of the ospf daemon configuration directives
bgp_settings
Data type: Quagga::Bgp
Hash containing all of the bgp daemon configuration directives
zebra_settings
Data type: Quagga::Zebra
Hash containing all of the zebra daemon configuration directives
quagga::bgp
This class is automatically included when you include the main quagga class. However, it has a number of parameters that can be set via hiera.
- See also
- quagga_bgp_router
- quagga::bgp::peer
- quagga_bgp_as_path
- quagga_bgp_community_list
- quagga_bgp_address_family
Parameters
The following parameters are available in the quagga::bgp
class:
agentx
config_file
config_file_manage
service_name
service_enable
service_manage
service_ensure
service_opts
router
peers
as_paths
community_lists
address_families
frr_mode_enable
agentx
Data type: Boolean
Enable SNMP integration
config_file
Data type: Stdlib::Unixpath
Path to the quagga configuration file for BGP
Default value: "${quagga::config_dir}/bgpd.conf"
config_file_manage
Data type: Boolean
If true, manage the existence of the $config_file
service_name
Data type: String
System service name for quagga bgpd
service_enable
Data type: Boolean
Manages the state of the service at boot
service_manage
Data type: Boolean
If true, manages the state of the BGP daemon and the SNMP agentx
service_ensure
Data type: Enum['running', 'stopped']
Ensures the service is either stopped or running.
service_opts
Data type: String
Options for the BGP service
router
Data type: Hash
Parameters for the router process.
peers
Data type: Hash
BGP Peers.
as_paths
Data type: Hash
AS Path rules.
community_lists
Data type: Hash
BGP Community list options.
address_families
Data type: Hash
BGP Address family options.
frr_mode_enable
Data type: Boolean
quagga::logging
Logging
Parameters
The following parameters are available in the quagga::logging
class:
backend
Data type: Variant[ Enum['monitor', 'stdout', 'syslog'], Pattern[/\Afile\s(\/\S+)+\Z/] ]
The quagga logging backend.
filename
Data type: Optional[Stdlib::Absolutepath]
If the backend is set to file, use this file as the output
level
Data type: Enum['alerts','critical','debugging','emergencies','errors','informational','notifications','warnings']
The log level
quagga::ospf
Manage the Quagga OSPF daemon
- See also
- quagga_ospf_router
- quagga_ospf_area
- @param interfaces OSPF parameters of interfaces.
- quagga_ospf_interface
Parameters
The following parameters are available in the quagga::ospf
class:
agentx
config_file
config_file_manage
service_ensure
service_name
service_enable
service_manage
service_opts
router
areas
frr_mode_enable
interfaces
agentx
Data type: Boolean
Manage the AgentX integration
config_file
Data type: Stdlib::Unixpath
configuration file of the OSPF service.
Default value: "${quagga::config_dir}/ospfd.conf"
config_file_manage
Data type: Boolean
Manage the configuration file content
service_ensure
Data type: Enum['running', 'stopped']
Controls whether the service is stopped or running.
service_name
Data type: String
the name of the OSPF service
service_enable
Data type: Boolean
Enable the OSPF service
service_manage
Data type: Boolean
Enable management of the OSPF service
service_opts
Data type: String
Service start options
router
Data type: Hash
OSPF router options.
areas
Data type: Hash
OSPF area options.
frr_mode_enable
Data type: Boolean
interfaces
Data type: Hash
quagga::pim
Manage Quagga Protocol Independent Multicasting (PIM)
Parameters
The following parameters are available in the quagga::pim
class:
agentx
config_file
config_file_manage
service_name
service_enable
service_manage
service_ensure
service_opts
router
interfaces
frr_mode_enable
agentx
Data type: Boolean
manage the SNMP agentx for PIM
config_file
Data type: Stdlib::Unixpath
configuration file of the PIM servie
Default value: "${quagga::config_dir}/pimd.conf"
config_file_manage
Data type: Boolean
enable management of the PIM service setting file.
service_name
Data type: String
the name of the PIM service.
service_enable
Data type: Boolean
enable the PIM service.
service_manage
Data type: Boolean
enable management of the PIM service.
service_ensure
Data type: Enum['running', 'stopped']
the state of the PIM Service.
service_opts
Data type: String
service start options.
router
Data type: Hash
PIM router options. See the type quagga_pim_router
.
interfaces
Data type: Hash
OSPF parameters of interfaces. See the type quagga_pim_interface
.
frr_mode_enable
Data type: Boolean
quagga::zebra
manage the main zebra process
Parameters
The following parameters are available in the quagga::zebra
class:
agentx
hostname
global_opts
interfaces
prefix_lists
route_maps
routes
access_lists
config_file
config_file_manage
service_name
service_enable
service_manage
service_ensure
service_opts
frr_mode_enable
agentx
Data type: Boolean
Manage SNMP agentx processes for the main quagga zebra process
hostname
Data type: String
Router's hostname
global_opts
Data type: Hash
Global options for all daemons
interfaces
Data type: Hash
Global network interface parameters
prefix_lists
Data type: Hash
Create prefix lists
route_maps
Data type: Hash
Create route-map entries
routes
Data type: Hash
Define static routes
access_lists
Data type: Hash
Define access lists to use elsewhere in quagga config
config_file
Data type: Stdlib::Unixpath
The main configuration file name
Default value: "${quagga::config_dir}/zebra.conf"
config_file_manage
Data type: Boolean
Manage the content of the configuration file
service_name
Data type: String
the main zebra service name
service_enable
Data type: Boolean
enable the service
service_manage
Data type: Boolean
manage the service state
service_ensure
Data type: Enum['running', 'stopped']
manage the actual service state of stopped or running
service_opts
Data type: String
service startup options
frr_mode_enable
Data type: Boolean
Defined types
quagga::ospf::area
configure an OSPF area
- See also
- quagga_ospf_area
- quagga_ospf_area_range
Parameters
The following parameters are available in the quagga::ospf::area
defined type:
ensure
auth
stub
access_list_export
access_list_import
prefix_list_export
prefix_list_import
networks
ranges
ensure
Data type: Enum['absent', 'present']
Manage the presence of the area
Default value: 'present'
auth
Data type: Variant[Boolean, Enum['message-digest']]
Enable authentication on the area
Default value: false
stub
Data type: Variant[Boolean, Enum['no-summary']]
Configure stub or stub no-summary properties on the area
Default value: false
access_list_export
Data type: Optional[String[1]]
Access list to use for OSPF area export
Default value: undef
access_list_import
Data type: Optional[String[1]]
Access list to use for OSPF area import
Default value: undef
prefix_list_export
Data type: Optional[String[1]]
Prefix list to use for OSPF area export
Default value: undef
prefix_list_import
Data type: Optional[String[1]]
Prefix list to use for OSPF area import
Default value: undef
networks
Data type: Array[String[1]]
Networks that belong to an area. Note that with Quagga, the area must match the network for an interface exactly.
A short mask of /16
won't include all of the /17s
and longer below it.
Default value: []
ranges
Data type: Hash
Consolidate announcements to a larger block based on network ranges.
Default value: {}
quagga::prefix_list
manage a Quagga prefix list
- See also
- quagga_prefix_list
Parameters
The following parameters are available in the quagga::prefix_list
defined type:
rules
Data type: Hash
Prefix list definition
Default value: {}
quagga::route_map
Manage a quagga route-map
- See also
- quagga_route_map
Parameters
The following parameters are available in the quagga::route_map
defined type:
rules
Data type: Hash
the route-map definition
Default value: {}
Resource types
quagga_access_list
This type provides the capability to manage BGP community-list within puppet.
Examples:
quagga_access_list {'1': ensure => present, remark => 'IP standard access list', rules => [ 'deny 10.0.0.128 0.0.0.127', 'deny 10.0.101.193', 'permit 10.0.0.0 0.0.255.255', 'permit 192.168.10.1'. 'deny any' ] } quagga_access_list {'100': ensure => present, remark => 'IP extended access-list', rules => [ 'deny ip host 10.0.1.100 any', 'permit ip 10.0.1.0 0.0.0.255 any', 'deny ip any any' ] } quagga_access_list {'a_word': ensure => present, remark => 'IP zebra access-list', rules => [ 'deny 192.168.0.0/23',, 'permit 192.168.0.0/16', 'deny any', ] }
Properties
The following properties are available in the quagga_access_list
type.
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
remark
Specifies the remark for this access-list.
rules
Permits and denies for this rule.
Default value: []
Parameters
The following parameters are available in the quagga_access_list
type.
name
Valid values: %r{\A(1|\d{2}|1[3-9]\d{2})\Z}
, %r{\A(1\d{2}|2[0-6]\d{2})\Z}
, %r{\A[\w-]+\Z}
namevar
The number of this access list.
provider
The specific backend to use for this quagga_access_list
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
quagga_bgp_address_family
This type provides capabilities to manage Quagga bgp address family parameters.
Examples:
quagga_bgp_address_family { 'ipv4_unicast':
aggregate_address => '192.168.0.0/24 summary-only',
maximum_ebgp_paths => 2,
maximum_ibgp_paths => 2,
networks => ['192.168.0.0/24', '172.16.0.0/24',],
}
Properties
The following properties are available in the quagga_bgp_address_family
type.
aggregate_address
Valid values: %r{\A(\d+\.\d+\.\d+\.\d+/\d+)(\sas-set)?(\ssummary-only)?\Z}
, %r{\A([\h:/]+)(\ssummary-only)?\Z}
Configure BGP aggregate entries.
Default value: []
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
maximum_ebgp_paths
Valid values: %r{\A\d+\Z}
Forward packets over multiple paths.
Default value: 1
maximum_ibgp_paths
Valid values: %r{\A\d+\Z}
Forward packets over multiple paths.
Default value: 1
networks
Valid values: %r{\A[\h\.:]+/\d+\Z}
Specify a network to announce via BGP.
Default value: []
redistribute
Valid values: %r{\A(babel|connected|isis|kernel|ospf|rip|static)(\smetric\s\d+)?(\sroute-map\s\w+)?\Z}
Redistribute information from another routing protocol.
Default value: []
Parameters
The following parameters are available in the quagga_bgp_address_family
type.
name
Valid values: %r{\Aipv4_(unicast|multicast)\Z}
, %r{\Aipv6_unicast\Z}
namevar
The Address family.
provider
The specific backend to use for this quagga_bgp_address_family
resource. You will seldom need to specify this ---
Puppet will usually discover the appropriate provider for your platform.
quagga_bgp_as_path
This type provides the capabilities to manage BGP as-path access-list within puppet.
Examples:
quagga_bgp_as_path { 'as100':
ensure => present,
rules => [
'permit _100$',
'permit _100_',
],
}
Properties
The following properties are available in the quagga_bgp_as_path
type.
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
rules
Valid values: %r{\A(permit|deny)\s\^?[_,\d\.\\\*\+\-\[\]\(\)\{\}\|\?]+\$?\Z}
Set actions of this ap-path list.
Parameters
The following parameters are available in the quagga_bgp_as_path
type.
name
Valid values: %r{\A\w+\Z}
namevar
The name of the as-path access-list.
provider
The specific backend to use for this quagga_bgp_as_path
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
quagga_bgp_community_list
This type provides the capability to manage BGP community-list within puppet.
Examples:
quagga_bgp_community_list { '100':
ensure => present,
rules => [
'permit 65000:50952',
'permit 65000:31500',
],
}
Properties
The following properties are available in the quagga_bgp_community_list
type.
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
rules
Valid values: %r{\A(deny|permit)\s\^?[_,\d\.\\\*\+\-\[\]\(\)\{\}\|\?:]+\$?\Z}
Set actions of this community list.
Parameters
The following parameters are available in the quagga_bgp_community_list
type.
name
Valid values: %r{^\d+$}
namevar
Community list number.
provider
The specific backend to use for this quagga_bgp_community_list
resource. You will seldom need to specify this ---
Puppet will usually discover the appropriate provider for your platform.
quagga_bgp_peer
This type provides the capability to manage bgp neighbor within puppet.
Examples:
quagga_bgp_peer { '192.168.1.1':
ensure => present,
peer_group => 'internal_peers',
password => 'QWRF$345!
Properties
The following properties are available in the quagga_bgp_peer
type.
ebgp_multihop
Number of allowed hops to remote BGP peer
Default value: absent
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
local_as
Specify a local-as number.
Default value: absent
passive
Valid values: false
, true
Don\'t send open messages to this neighbor.
Default value: false
password
Set a password
Default value: absent
peer_group
Valid values: false
, true
, %r{\A[[:alpha:]]\w+\Z}
Member of the peer-group.
remote_as
Specify a BGP neighbor AS.
Default value: absent
shutdown
Valid values: false
, true
Administratively shut down this neighbor.
Default value: false
update_source
Valid values: absent
, %r{\A#{block}\.#{block}\.#{block}\.#{block}\Z}
, %r{\A\h+:[\h:]+\Z}
, %r{\A#{interface}\Z}
Source of routing updates.
Default value: absent
Parameters
The following parameters are available in the quagga_bgp_peer
type.
name
Valid values: %r{\A(\d{,2}|1\d{2}|2[0-4]\d|25[0-5])\.(\d{,2}|1\d{2}|2[0-4]\d|25[0-5])\.(\d{,2}|1\d{2}|2[0-4]\d|25[0-5])\.(\d{,2}|1\d{2}|2[0-4]\d|25[0-5])\Z}
, %r{\A[\h:]+\Z}
, %r{\A\w+\Z}
namevar
The neighbor IP address or a peer-group name.
provider
The specific backend to use for this quagga_bgp_peer
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
quagga_bgp_peer_address_family
This type provides capabilities to manage Quagga bgp address family parameters.
Examples:
quagga_bgp_peer_address_family { '192.168.0.2 ipv4_unicast':
peer_group => PEER_GROUP,
activate => true,
allow_as_in => 1,
default_originate => true,
maximum_prefix => 500000,
next_hop_self => true,
prefix_list_in => PREFIX_LIST,
prefix_list_out => PREFIX_LIST,
remove_private_as => true,
route_map_export => ROUTE_MAP,
route_map_import => ROUTE_MAP,
route_map_in => ROUTE_MAP,
route_map_out => ROUTE_MAP,
route_reflector_client => false,
route_server_client => false,
send_community => 'both',
soft_reconfiguration => 'inbound',
}
Properties
The following properties are available in the quagga_bgp_peer_address_family
type.
activate
Valid values: false
, true
Enable the Address Family for this Neighbor.
Default value: false
allow_as_in
Accept as-path with my AS present in it.
Default value: absent
default_originate
Valid values: false
, true
Originate default route to this neighbor.
Default value: false
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
next_hop_self
Valid values: false
, true
Disable the next hop calculation for this neighbor.
Default value: false
peer_group
Valid values: false
, true
, %r{\A[[:alpha:]]\w+\Z}
Member of the peer-group.
prefix_list_in
Valid values: absent
, %r{\A[[:alpha:]][\w-]+\Z}
Filter updates from this neighbor.
Default value: absent
prefix_list_out
Valid values: absent
, %r{\A[[:alpha:]][\w-]+\Z}
Filter updates to this neighbor.
Default value: absent
route_map_export
Valid values: absent
, %r{\A[[:alpha:]][\w-]+\Z}
Apply map to routes coming from a Route-Server client.
Default value: absent
route_map_import
Valid values: absent
, %r{\A[[:alpha:]][\w-]+\Z}
Apply map to routes going into a Route-Server client\'s table.
Default value: absent
route_map_in
Valid values: absent
, %r{\A[[:alpha:]][\w-]+\Z}
Apply map to incoming routes.
Default value: absent
route_map_out
Valid values: absent
, %r{\A[[:alpha:]][\w-]+\Z}
Apply map to outbound routes.
Default value: absent
route_reflector_client
Valid values: false
, true
Configure a neighbor as Route Reflector client.
Default value: false
route_server_client
Valid values: false
, true
Configure a neighbor as Route Server client.
Default value: false
Parameters
The following parameters are available in the quagga_bgp_peer_address_family
type.
name
Valid values: %r{\A[\d\.]+\sipv4_(unicast|multicast)\Z}
, %r{\A[\h:]+\sipv6_unicast\Z}
, %r{\A\w+\sipv4_(unicast|multicast)\Z}
, %r{\A\w+\sipv6_unicast\Z}
namevar
Contains a bgp peer name and an address family.
provider
The specific backend to use for this quagga_bgp_peer_address_family
resource. You will seldom need to specify this ---
Puppet will usually discover the appropriate provider for your platform.
quagga_bgp_router
This type provides the capability to manage bgp parameters within puppet.
Examples:
quagga_bgp_router { 'bgp':
ensure => present,
as_number => 65000,
import_check => true,
default_ipv4_unicast => false,
default_local_preference => 100,
router_id => '192.168.1.1',
keepalive => 3,
holdtime => 9,
}
Properties
The following properties are available in the quagga_bgp_router
type.
as_number
The AS number.
default_ipv4_unicast
Valid values: false
, true
Activate ipv4-unicast for a peer by default.
Default value: false
default_local_preference
Default local preference.
Default value: 100
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
holdtime
Default BGP holdtime.
Default value: 9
import_check
Valid values: false
, true
Check BGP network route exists in IGP.
Default value: false
keepalive
Default BGP keepalive interval.
Default value: 3
router_id
Valid values: re
Override configured router identifier.
Parameters
The following parameters are available in the quagga_bgp_router
type.
name
namevar
BGP router instance.
provider
The specific backend to use for this quagga_bgp_router
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
quagga_global
This type provides the capabilities to manage the router
Properties
The following properties are available in the quagga_global
type.
enable_password
Set enable password.
Default value: absent
ip_forwarding
Valid values: true
, false
Enable IP forwarding.
Default value: false
ipv6_forwarding
Valid values: true
, false
Enable IPv6 forwarding.
Default value: false
line_vty
Valid values: true
, false
Enter vty configuration mode.
Default value: true
password
Set password for vty interface. If there is no password, a vty won\'t accept connections.
Default value: absent
service_password_encryption
Valid values: true
, false
Encrypt passwords.
Default value: false
Parameters
The following parameters are available in the quagga_global
type.
hostname
Router hostname.
provider
The specific backend to use for this quagga_global
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
quagga_interface
This type provides the capabilities to manage Quagga interface parameters
Properties
The following properties are available in the quagga_interface
type.
bandwidth
Set bandwidth value of the interface in kilobits/sec.
Default value: absent
description
Interface description.
Default value: absent
enable
Valid values: true
, false
Whether the interface should be enabled or not.
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
ip_address
The IP address.
Default value: []
link_detect
Valid values: true
, false
Enable link state detection.
Default value: false
Parameters
The following parameters are available in the quagga_interface
type.
name
namevar
The network interface name
provider
The specific backend to use for this quagga_interface
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
quagga_logging
This type provides the capabilities to manage logging within puppet.
Examples:
quagga_logging { 'file': file_name => '/tmp/quagga.errors.log', level => 'debugging, }
quagga_logging { 'syslog': facility => 'local7', level => 'warnings', }
Properties
The following properties are available in the quagga_logging
type.
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
filename
Specifies the filename for file messages.
level
Valid values: alerts
, critical
, debugging
, emergencies
, errors
, informational
, notifications
, warnings
Specifies the logging level. The values are:
- alerts
- critical
- debugging
- emergencies
- errors
- informational
- notifications
- warnings
Parameters
The following parameters are available in the quagga_logging
type.
name
Valid values: file
, monitor
, stdout
, syslog
namevar
Specifies a backend name of the logging system. The values are:
- file /path/to/file
- monitor
- stdout
- syslog
provider
The specific backend to use for this quagga_logging
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
quagga_ospf_area
This type provides the capabilities to manage ospf area within puppet.
Examples:
ospf_area { '0.0.0.0':
auth => true,
stub => true,
access_list_export => 'ACCESS_LIST_EXPORT',
access_list_import => 'ACCESS_LIST_IPMORT',
prefix_list_export => 'PREFIX_LIST_EXPORT',
prefix_list_import => 'PREFIX_LIST_IMPORT',
networks => [ '10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16' ],
}
Properties
The following properties are available in the quagga_ospf_area
type.
access_list_export
Valid values: %r{\A[[:alpha:]][\w-]+\Z}
, absent
Set the filter for networks announced to other areas.
Default value: absent
access_list_import
Valid values: %r{\A[[:alpha:]][\w-]+\Z}
, absent
Set the filter for networks from other areas announced to the specified one.
Default value: absent
auth
Valid values: false
, true
, message-digest
OSPF authentication.
Default value: false
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
networks
Enable routing on an IP network.
Default value: []
prefix_list_export
Valid values: %r{\A[[:alpha:]][\w-]+\Z}
, absent
Filter networks sent from this area.
Default value: absent
prefix_list_import
Valid values: %r{\A[[:alpha:]][\w-]+\Z}
, absent
Filter networks sent to this area.
Default value: absent
stub
Valid values: false
, true
, no-summary
Configure the OSPF area to be a stub area.
Default value: false
Parameters
The following parameters are available in the quagga_ospf_area
type.
name
Valid values: re
namevar
OSPF area, ex. 0.0.0.0
.
provider
The specific backend to use for this quagga_ospf_area
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
quagga_ospf_area_range
This type provides the capabilities to manage ospf area range within puppet.
Examples:
ospf_area_name { '0.0.0.0 10.0.0.0/24':
cost => 100,
advertise => true,
substitute => '10.0.0.0/8',
}
Properties
The following properties are available in the quagga_ospf_area_range
type.
cost
User specified metric for this range
Default value: absent
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
substitute
Valid values: %r{\A#{block}\.#{block}\.#{block}\.#{block}/(?:[1-2]?[0-9]|3[0-2])\Z}
Network prefix to be announced instead of range
Parameters
The following parameters are available in the quagga_ospf_area_range
type.
advertise
Valid values: false
, true
Advertise this range. Defaults to true
Default value: true
name
Valid values: %r{\A#{block}\.#{block}\.#{block}\.#{block}\s#{block}\.#{block}\.#{block}\.#{block}/(?:[1-2]?[0-9]|3[0-2])\Z}
namevar
Contains an OSPF area id and CIDR, ex. '0.0.0.0 10.0.0.0/24'
provider
The specific backend to use for this quagga_ospf_area_range
resource. You will seldom need to specify this --- Puppet
will usually discover the appropriate provider for your platform.
quagga_ospf_interface
This type provides the capabilities to manage Quagga interface OSPF parameters.
Properties
The following properties are available in the quagga_ospf_interface
type.
auth
Valid values: absent
, message-digest
Interface OSPF authentication.
Default value: absent
cost
Interface OSPF cost.
Default value: absent
dead_interval
Interval after which an OSPF neighbor is declared dead.
Default value: 40
hello_interval
HELLO packets interval between OSPF neighbours.
Default value: 10
message_digest_key
Valid values: absent
, %r{\d+\smd5\s\S{1,16}}
Set OSPF authentication key to a cryptographic password. The cryptographic algorithm is MD5.
Default value: absent
mtu_ignore
Valid values: true
, false
Disable OSPF mtu mismatch detection.
Default value: false
network
Valid values: absent
, broadcast
, non-broadcast
, point-to-multipoint
, point-to-point
, loopback
OSPF network type
Default value: absent
priority
Router OSPF priority.
Default value: 1
retransmit_interval
Time between retransmitting lost OSPF link state advertisements.
Default value: 5
transmit_delay
Link state transmit delay.
Default value: 1
Parameters
The following parameters are available in the quagga_ospf_interface
type.
name
namevar
The network interface name
provider
The specific backend to use for this quagga_ospf_interface
resource. You will seldom need to specify this --- Puppet
will usually discover the appropriate provider for your platform.
quagga_ospf_router
This type provides the capabilities to manage ospf router within puppet.
Examples:
quagga_ospf_router { 'ospf':
ensure => present,
redistribute => [
'connected route-map QWER',
'kernel',
],
router_id => '10.0.0.1',
}
Properties
The following properties are available in the quagga_ospf_router
type.
abr_type
Valid values: cisco
, ibm
, shortcut
, standard
Set OSPF ABR type.
Default value: cisco
default_originate
Valid values: true
, false
, %r{\Aalways(\smetric\s\d+)?(\smetric-type\s[1-2])?(\sroute-map\s\w+)?\Z}
Control distribution of default information.
Default value: false
distribute_list
Valid values: %r{\A\w+\sout\s(babel|bgp|connected|isis|kernel|rip|static)\Z}
Filter networks in routing updates.
Default value: []
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
log_adjacency_changes
Valid values: true
, false
, detail
Log changes in adjacency.
Default value: false
opaque
Valid values: true
, false
Enable the Opaque-LSA capability (rfc2370).
Default value: false
passive_interfaces
Valid values: %r{\A(default|[[:alpha:]]+\w+(?:\s\d+\.\d+\.\d+\.\d+)?)\Z}
Suppress routing updates on interfaces.
Default value: []
redistribute
Valid values: %r{\A(babel|bgp|connected|isis|kernel|rip|static)(\smetric\s\d+)?(\smetric-type\s[1-2])?(\sroute-map\s\w+)?\Z}
Redistribute information from another routing protocol.
Default value: []
rfc1583
Valid values: true
, false
Enable the RFC1583Compatibility flag.
Default value: false
router_id
Valid values: absent
, re
OSPF process router id
Default value: absent
Parameters
The following parameters are available in the quagga_ospf_router
type.
name
namevar
OSPF router instance.
provider
The specific backend to use for this quagga_ospf_router
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
quagga_pim_interface
This type provides the capabilities to manage Quagga pim interface parameters
Properties
The following properties are available in the quagga_pim_interface
type.
igmp
Valid values: true
, false
Enable IGMP.
Default value: false
igmp_query_interval
IGMP query interval.
Default value: 125
igmp_query_max_response_time_dsec
IGMP maximum query response time in deciseconds.
Default value: 100
multicast
Valid values: true
, false
Enable multicast flag for the interface.
Default value: false
pim_ssm
Valid values: true
, false
Enable PIM SSM operation.
Default value: false
Parameters
The following parameters are available in the quagga_pim_interface
type.
name
namevar
The network interface name
provider
The specific backend to use for this quagga_pim_interface
resource. You will seldom need to specify this --- Puppet
will usually discover the appropriate provider for your platform.
quagga_pim_router
This type provides the capabilities to manage the PIM router
Properties
The following properties are available in the quagga_pim_router
type.
ip_multicast_routing
Valid values: true
, false
Enable IP multicast forwarding.
Default value: false
Parameters
The following parameters are available in the quagga_pim_router
type.
name
namevar
PIM router instance.
provider
The specific backend to use for this quagga_pim_router
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
quagga_prefix_list
This type provides the capability to manage prefix-lists within puppet.
Example:
quagga_prefix_list { 'TEST_PREFIX_LIST 10':
ensure => present,
action => permit,
ge => 8,
le => 24,
prefix => '224.0.0.0/4',
proto => 'ip',
}
Properties
The following properties are available in the quagga_prefix_list
type.
action
Valid values: deny
, permit
The action of this rule.
Default value: permit
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
ge
Minimum prefix length to be matched.
Default value: absent
le
Maximum prefix length to be matched.
Default value: absent
prefix
Valid values: %r{\A([\h\.:/]+|any)\Z}
The IP prefix <network>/<length>
.
proto
Valid values: ip
, ipv6
The IP protocol version.
Parameters
The following parameters are available in the quagga_prefix_list
type.
name
Valid values: %r{\A[\w-]+\s\d+\Z}
namevar
The name of the prefix-list.
provider
The specific backend to use for this quagga_prefix_list
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
quagga_route_map
This type provides the capability to manage route-map within puppet.
Example:
route_map {'TEST_ROUTE_MAP 10':
ensure => present,
action => 'permit',
match => [
'as-path PATH_LIST',
'community COMMUNITY_LIST',
],
on_match => 'next',
set => [
'local-preference 200',
'community none',
],
}
Properties
The following properties are available in the quagga_route_map
type.
action
Valid values: deny
, permit
The route-map action.
Default value: permit
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
match
Valid values: %r{\Aas-path\s(\w+)\Z}
, %r{\Acommunity\s(\w+)(\s(exact-match))?\Z}
, %r{\Aextcommunity\s(\w+)\Z}
, %r{\Ainterface\s(\w[\w\.:]+)\Z}
, %r{\Aip\s(address|next-hop|route-source)\s(\d+)\Z}
, %r{\Aip\s(address|next-hop|route-source)\s(\w[\w-]+)\Z}
, %r{\Aip\s(address|next-hop|route-source)\sprefix-list\s(\w[\w-]+)\Z}
, %r{\Aipv6\s(address|next-hop)\s(\w[\w-]+)\Z}
, %r{\Aipv6\s(address|next-hop)\sprefix-list\s(\w[\w-]+)\Z}
, %r{\Alocal-preference\s(\d+)\Z}
, %r{\Ametric\s(\d+)\Z}
, %r{\Aorigin\s(egp|igp|incomplete)\Z}
, %r{\Apeer\s(\d+\.\d+\.\d+\.\d+)\Z}
, %r{\Apeer\s([\d:]+)\Z}
, %r{\Apeer\slocal\Z}
, %r{\Aprobability\s(\d+)\Z}
, %r{\Atag\s(\d+)\Z}
Match values from routing table.
Default value: []
on_match
Valid values: absent
, %r{\Agoto\s(\d+)\Z}
, %r{\Anext\Z}
Exit policy on matches.
Default value: absent
set
Valid values: %r{\Aaggregator\sas\s(\d+)\Z}
, %r{\Aas-path\sexclude(\s(\d+))+\Z}
, %r{\Aas-path\sprepend(\s(\d+))+\Z}
, %r{\Aas-path\sprepend\slast-as\s(\d+)\Z}
, %r{\Aatomic-aggregate\Z}
, %r{\Acomm-list\s(\d+|\w[\w-]+)\sdelete\Z}
, %r{\Acommunity(\s(\d+:\d+))+(\sadditive)?\Z}
, %r{\Acommunity\snone\Z}
, %r{\Aforwarding-address\s([\d:]+)\Z}
, %r{\Aip\snext-hop\s((\d+\.\d+\.\d+\.\d+)|peer-address)\Z}
, %r{\Aipv6\snext-hop\s(global|local)\s([\d:]+)\Z}
, %r{\Aipv6\snext-hop\speer-address\Z}
, %r{\Alocal-preference\s(\d+)\Z}
, %r{\Ametric\s(\+|-)?(rtt|\d+)\Z}
, %r{\Ametric-type\stype-(1|2)\Z}
, %r{\Aorigin\s(egp|igp|incomplete)\Z}
, %r{\Aoriginator-id\s(\d+\.\d+\.\d+\.\d+)\Z}
, %r{\Asrc\s(\d+\.\d+\.\d+\.\d+)\Z}
, %r{\Atag\s(\d+)\Z}
, %r{\Avpn4\snext-hop\s(\d+\.\d+\.\d+\.\d+)\Z}
, %r{\Aweight\s(\d+)\Z}
Set values in destination routing protocol.
Default value: []
Parameters
The following parameters are available in the quagga_route_map
type.
name
Valid values: %r{\A[[:alpha:]][\w-]+\s\d+\Z}
namevar
Contains a name and a sequence of the route-map.
provider
The specific backend to use for this quagga_route_map
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
quagga_static_route
This type provides the capability to manage static routes within puppet.
Example:
quagga_static_route {'172.16.2.0/24':
ensure => present,
hexthop => '192.168.1.10',
distance => 10,
}
quagga_static_route {'172.16.3.0/24':
ensure => present,
hexthop => 'null0',
distance => 10,
}
Properties
The following properties are available in the quagga_static_route
type.
distance
Specifies the distance value for this route.
Default value: absent
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
option
Valid values: absent
, blackhole
, reject
Sets reject or blackhole for this route.
Default value: absent
Parameters
The following parameters are available in the quagga_static_route
type.
nexthop
Specifies IP or the interface name of the nexthop router.
Default value: Null0
prefix
IP destination prefix.
provider
The specific backend to use for this quagga_static_route
resource. You will seldom need to specify this --- Puppet
will usually discover the appropriate provider for your platform.
Data types
Quagga::Bgp
The Quagga::Bgp data type.
- See also
- quagga_bgp_router
- quagga::bgp::peer
- quagga_bgp_as_path
- quagga_bgp_community_list
- quagga_bgp_address_family
Alias of
Struct[=>]
Parameters
The following parameters are available in the Quagga::Bgp
data type:
agentx
config_file
config_file_manage
service_name
service_enable
service_manage
service_ensure
service_opts
router
peers
as_paths
community_lists
address_families
agentx
Enable SNMP integration
config_file
Path to the quagga configuration file for BGP
config_file_manage
If true, manage the existence of the $config_file
service_name
System service name for quagga bgpd
service_enable
Manages the state of the service at boot
service_manage
If true, manages the state of the BGP daemon and the SNMP agentx
service_ensure
Ensures the service is either stopped or running.
service_opts
Options for the BGP service
router
Parameters for the router process.
peers
BGP Peers.
as_paths
AS Path rules.
community_lists
BGP Community list options.
address_families
BGP Address family options.
Quagga::BgpPeerAddressFamily
Address family specific settings for BGP peers
- See also
- quagga_bgp_peer_address_family
Alias of
Struct[=>]
Quagga::Ospf
The Quagga::Ospf data type.
- See also
- quagga_ospf_router
- quagga_ospf_area
- quagga_ospf_interface
Alias of
Struct[=>]
Parameters
The following parameters are available in the Quagga::Ospf
data type:
agentx
config_file
config_file_manage
service_ensure
service_name
service_enable
service_manage
service_opts
router
areas
interfaces
agentx
Manage the AgentX integration
config_file
configuration file of the OSPF service.
config_file_manage
Manage the configuration file content
service_ensure
Controls whether the service is stopped or running.
service_name
the name of the OSPF service
service_enable
Enable the OSPF service
service_manage
Enable management of the OSPF service
service_opts
Service start options
router
OSPF router options.
areas
OSPF area options.
interfaces
OSPF parameters of interfaces.
Quagga::OspfRouter
The Quagga::OspfRouter data type.
Alias of
Struct[=>]
Quagga::Pim
The Quagga::Pim data type.
Alias of
Struct[=>]
Parameters
The following parameters are available in the Quagga::Pim
data type:
agentx
config_file_manage
service_name
service_enable
service_manage
service_ensure
service_opts
router
interfaces
agentx
manage the SNMP agentx for PIM
config_file_manage
enable management of the PIM service setting file.
service_name
the name of the PIM service.
service_enable
enable the PIM service.
service_manage
enable management of the PIM service.
service_ensure
the state of the PIM Service.
service_opts
service start options.
router
PIM router options. See the type quagga_pim_router
.
interfaces
OSPF parameters of interfaces. See the type quagga_pim_interface
.
Quagga::Zebra
The Quagga::Zebra data type.
Alias of
Struct[=>]
Parameters
The following parameters are available in the Quagga::Zebra
data type:
agentx
hostname
global_opts
interfaces
prefix_lists
route_maps
routes
access_lists
config_file
config_file_manage
service_name
service_enable
service_manage
service_ensure
service_opts
agentx
Manage SNMP agentx processes for the main quagga zebra process
hostname
Router's hostname
global_opts
Global options for all daemons
interfaces
Global network interface parameters
prefix_lists
Create prefix lists
route_maps
Create route-map entries
routes
Define static routes
access_lists
Define access lists to use elsewhere in quagga config
config_file
The main configuration file name
config_file_manage
Manage the content of the configuration file
service_name
the main zebra service name
service_enable
enable the service
service_manage
manage the service state
service_ensure
manage the actual service state of stopped or running
service_opts
service startup options
Changelog
4.5.0 - 2023-08-11
Added
- frr support
- bgp timers
Changed
- pdk version
[4.3.1] - 2018-05-21
Fixed
- the error:
Error: Failed to apply catalog: undefined method `fletten' for []:Array
[4.3.0] - 2018-03-14
Added
- password supporting for bgp sessions
[4.2.2] - 2018-01-31
Fixed
- the prefix-list's search pattern
[4.2.1] - 2018-01-30
Fixed
- the ipv6 prefix validation of a quagga_prefix_list
[4.2.0] - 2017-12-25
Added
- ospf area ranges
[4.1.4] - 2017-12-01
Fixed
- the community-list instantiation
[4.1.3] - 2017-12-01
Changed
- a rule pattern of a community-list
Fixed
- module building
[4.1.2] - 2017-11-02
Fixed
- clearing the empty resource
quagga_bgp_peer_address_family
[4.1.1] - 2017-09-30
Updated
- the regexp of the as-path list rule
[4.1.0] - 2017-09-13
Added
- snmp support
[4.0.1] - 2017-09-04
Added
- tags in the file
metadata.json
[4.0.0] - 2017-08-26
Added
- the
quagga::zebra::hostname
Changed
- the
quagga::prefix_lists
to thequagga::zebra::prefix_lists
- the
quagga::route_maps
to thequagga::zebra::route_maps
[3.5.1] - 2017-08-23
Added
- the property
distribute_list
to the resource typequagga_ospf_router
[3.5.0] - 2017-08-22
Added
- the resource type
quagga_access_list
[3.4.0] - 2017-08-21
Added
- the resource type
quagga_static_route
- the property
passive_interfaces
to the resource typequagga_ospf_router
[3.3.0] - 2017-07-19
Added
- autosubscribe methods in the quagga_bgp_peer_address_family resource type
Updated
- docs
[3.2.3] - 2017-07-14
Fixed
- property validations of the
quagga_bgp_peer_address_family
resource type.
[3.2.2] - 2017-07-13
Fixed
- getting an AS number in resources
quagga_bgp_peer
andquagga_bgp_peer_address_family
- getting a BGP router-id in the resource
quagga_bgp_router
Removed
- retrieving the
activate
value in the provider of the resourcequagga_bgp_peer_address_family
[3.2.1] - 2017-07-13
Fixed
- changing the resource
quagga_route_map
[3.2.0] - 2017-07-13
Added
- the new resource type
quagga_pim_router
Changed
- split PIM router settings
Removed
- the property
ip_multicast_routing
from the resourcequagga_global
[3.1.0] - 2017-07-12
Added
- the
quagga_ospf_interface
resource - the
quagga_pim_interface
resource
Updated
- the
quagga::ospf
class - the
quagga::pim
class
Removed
- ospf and multicast settings from
quagga_interface
resource
[3.0.2] - 2017-07-12
Fixed
- applying the OSPF configuration
- the lint warning about only_variable_string
- autorequire
quagga_ospf_router
in thequagga_ospf_area
resource
Updated
- changelog
- docs
[3.0.1] - 2017-07-12
Fixed
- the lint warning when creating the resource
quagga_global
- the creating the resource
quagga_interface
Updated
- docs
[3.0.0] - 2017-07-11
Added
- the resource
quagga_bgp_address_family
- the resource
quagga_bgp_peer_address_family
- the property
as_number
to the resourcequagga_bgp_router
- the true hiera support
- many classes that are wrappers for resources
quagga_*
Changed
- changelog
- the resource
quagga_bgp
toquagga_bgp_router
- names of resources
quagga_route_map
,quagga_prefix_list
- the resource
quagga_bgp
toquagga_bgp_router
- resources
quagga_bgp_router
,quagga_bgp_peer
Removed
- the resource
quagga_redistribution
Updated
- dependencies
[2.0.3] - 2017-06-27
Added
- tests
Fixed
- a name validation of the type
quagga_bgp_peer
Updated
- docs
- changelog
[2.0.2] - 2017-06-26
Fixed
- creating the resource
quagga_bgp_peer
Updated
- the provider of the type
quagga_bgp_peer
[2.0.1] - 2017-06-26
Fixed
- the router_id default value of the type
quagga_bgp
[2.0.0] - 2017-06-26
Added
- multicast-routing by @m4ce
- the resource
quagga_router
by @m4ce - the property
networks
to the resourcequagga_bgp
- tests
quagga_ip
properties to the resourcequagga_system
- the property
action
to the resourcequagga_route_map
- wrappers for resources
- hiera support
- the property
redistribute
to the resourcequagga_ospf
- the property
redistribute
to the resourcequagga_bgp
- the property
default_originate
to the resourcequagga_ospf
Changed
- boolean values of variables to
true
orfalse
in resourcebgp*
,ospf*
- types
ospf_interface
andpim_interface
toquagga_interface
- the type
as_path
toquagga_as_path
- a syntax of
quagga_as_path
rules - the type
bgp
toquagga_bgp
- the type
bgp_neighbor
toquagga_bgp_peer
- the type
bgp_network
toquagga_bgp_network
- the type
quagga_router
toquagga_system
- the type
community_list
toquagga_community_list
- a syntax of
quagga_community_list
rules - the type
ospf_area
toquagga_ospf_area
- the type
prefix_list
toquagga_prefix_list
- the type
redistribution
toquagga_redistribution
- the type
route_map
toquagga_route_map
- the name of the resource
quagga_route_map
- the property
ipaddress
toip_address
of the resourcequagga_interface
Deprecated
- the type
quagga_redistribution
Removed
- the method
purge
from resourcesbgp*
- the resource
quagga_bgp_network
- properties
default_cost
andstub
fromquagga_ospf_area
- the resource
quagga_ip
Updated
- changelog
- docs
[1.2.1] - 2017-06-07
Added
- pim support by @m4ce
Fixed
- the ipv6 support of the resource
bgp_network
[1.1.4] - 2017-06-05
Added
- the property
update_source
to the resourcebgp_neighbor
Updated
- docs
[1.1.3] - 2017-06-01
Fixed
- creation of the resource
ospf
Removed
- the property
reference_bandwidth
from the provider
Updated
- the method
flush
of the resourceospf
[1.1.2] - 2017-06-01
Fixed
- removing of
bgp
andbgp_neighbor
resources - the
flush
method in theospf
resource
Removed
- an unused code
Updated
- changelog
- proxy classes
[1.1.1] - 2017-05-31
Fixed
- NilClass in flush methods
- errors on creating all resources
Updated
- docs
- the ensurable method in types
- changelog
[1.1.0] - 2017-05-31
Fixed
- reading the activate property of the bgp_neighbor resource
Removed
- the shortcut property of the ospf_area type
Updated
- docs
- changelog
[1.0.5] - 2017-05-30
Added
- a default value of the activate property of the bgp_neighbor resource
Fixed
- an instantiation of the bgp_neighbor resource
- removing the allow_as_in property of the bgp_neighbor resource
Updated
- changelog
[1.0.4] - 2017-05-30
Fixed
- an instantiation of the ospf resource
Removed
- a default value of the activate property of the bgp_neighbor resource
[1.0.3] - 2017-05-30
Fixed
- typos
- autorequires in bgp_netighbor and bgp_network resources
Updated
- docs
- changelog
[1.0.2] - 2017-05-30
Added
- proxy classes to use hiera
Updated
- changelog
- docs
Fixed
- a control of services
[1.0.1] - 2017-05-29
Changed
- values of the stub property
Updated
- changelog
- docs
[1.0.0] - 2017-05-29
Added
- the ospf_interface type
- the quagga provider of the ospf_interface type
- the ospf type
- the quagga provider of the ospf type
- the ospf_area type and a provider for it
- the redistribution type and a provider for it
- the as_path type and a provider for it
- the community_list type and a provider for it
- the prefix_list type and a provider for it
- the route_map type and a provider for it
- the bgp type and a provider for it
- the bgp_neighbor type and a provider for it
- the bgp_network type and a provider for it
Updated
- changelog
- docs
Dependencies
- puppetlabs-stdlib (>= 4.10.0 < 10.0.0)
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright {yyyy} {name of copyright owner} Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.