---
# Copyright 2017-present Open Networking Foundation
#
# 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.

# dns-unbound/defaults/main.yml

unbound_conf: "/etc/unbound/unbound.conf"
unbound_group: "unbound"

unbound_listen_on_default: False

unbound_listen_all: True

# NOTE - many of the below settings are shared with the dns-nsd role, and you
# may need to update them in the defaults of both.

site_name: placeholder-sitename
site_suffix: "{{ site_name }}.test"

headnode_dns: head1

# Management IP range from DHCP settings
mgmt_ipv4_first_octets: "192.168.200"
mgmt_name_reverse_unbound: "168.192.in-addr.arpa"

unbound_interfaces:
  - "{{ mgmt_ipv4_first_octets }}.1/24"

# node lists
head_lxd_list: []
physical_node_list: []

# DNS settings for NSD/Unbound
nsd_zones:
  - name: "{{ site_suffix }}"
    ipv4_first_octets: "{{ mgmt_ipv4_first_octets }}"
    name_reverse_unbound: "{{ mgmt_name_reverse_unbound }}"
    soa: ns1
    ns:
      - { name: ns1 }
    nodelists:
      - head_lxd_list
      - physical_node_list
    aliases:
      - { name: "apt-cache", dest: "{{ headnode_dns }}" }
      - { name: "cordloghost", dest: "{{ headnode_dns }}" }
      - { name: "consul", dest: "{{ headnode_dns }}" }
      - { name: "docker", dest: "{{ headnode_dns }}" }
      - { name: "mavenrepo", dest: "{{ headnode_dns }}" }
      - { name: "ns", dest: "{{ headnode_dns }}" }
      - { name: "ns1", dest: "{{ headnode_dns }}" }
      - { name: "onos-cord", dest: "{{ headnode_dns }}" }
      - { name: "onos-fabric", dest: "{{ headnode_dns }}" }
      - { name: "xos", dest: "{{ headnode_dns }}" }
      - { name: "xos-chameleon", dest: "{{ headnode_dns }}" }
      - { name: "xos-consul", dest: "{{ headnode_dns }}" }
      - { name: "xos-core", dest: "{{ headnode_dns }}" }
      - { name: "xos-gui", dest: "{{ headnode_dns }}" }
      - { name: "xos-tosca", dest: "{{ headnode_dns }}" }
      - { name: "xos-ws", dest: "{{ headnode_dns }}" }

