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

nsd_ip: 127.0.0.1
nsd_conf: "/var/nsd/etc/nsd.conf"
nsd_zonesdir: "/var/nsd/zones"
nsd_group: "nsd"

# default DNS TTL
dns_ttl: 3600

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

headnode_dns: head1

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

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

dns_servers:
  - "{{ mgmt_ipv4_first_octets }}.1"

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

