---
# 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

# Shared settings
site_name: placeholder-sitename
site_suffix: "{{ site_name }}.test"

headnode_dns: head1

management_net_cidr: "10.1.0.0/24"

# node lists
head_lxd_list: []
physical_node_list: []

# 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.

nsd_ip: 127.0.0.1

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

unbound_listen_on_default: False
unbound_listen_all: True
unbound_listen_zones: True

# DNS settings for NSD/Unbound
nsd_zones:
  - name: "{{ site_suffix }}"
    cidr: "{{ management_net_cidr }}"
    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: "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-core", dest: "{{ headnode_dns }}" }
      - { name: "xos-gui", dest: "{{ headnode_dns }}" }
      - { name: "xos-tosca", dest: "{{ headnode_dns }}" }
      - { name: "xos-ws", dest: "{{ headnode_dns }}" }

