---
# 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-nsd/defaults/main.yml

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_conf: "/etc/nsd/nsd.conf"
nsd_zonesdir: "/var/lib/nsd/zones"

nsd_group: "nsd"

nsd_ip: 127.0.0.1
nsd_port: 53

dns_ttl: 3600

# 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: "docker-registry", 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 }}" }

