
# 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: 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 }}" }
      - { name: "cordloghost", dest: "{{ headnode }}" }
      - { name: "consul", dest: "{{ headnode }}" }
      - { name: "docker", dest: "{{ headnode }}" }
      - { name: "mavenrepo", dest: "{{ headnode }}" }
      - { name: "ns", dest: "{{ headnode }}" }
      - { name: "ns1", dest: "{{ headnode }}" }
      - { name: "onos-cord", dest: "{{ headnode }}" }
      - { name: "xos", dest: "{{ headnode }}" }
      - { name: "xos-chameleon", dest: "{{ headnode }}" }
      - { name: "xos-consul", dest: "{{ headnode }}" }
      - { name: "xos-core", dest: "{{ headnode }}" }
      - { name: "xos-gui", dest: "{{ headnode }}" }
      - { name: "xos-tosca", dest: "{{ headnode }}" }
      - { name: "xos-ws", dest: "{{ headnode }}" }
