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

# preppedkube Scenario - install CORD on kubernetes, on pre-prepared systems with OS installed

frontend_only: False
use_k8s: True
use_maas: False
use_openstack: False

# create a cord_profile dir next to the cord checkout
config_cord_dir: "{{ ( playbook_dir ~ '/../..' ) | realpath }}"
config_cord_profile_dir: "{{ ( playbook_dir ~ '/../../../cord_profile' ) | realpath }}"

create_configdirs_become: False

build_cord_dir: /opt/cord

# Vagrant VM configuration
vagrant_box: "bento/ubuntu-16.04"

head_vm_mem: 16384
head_vm_cpu: 8

compute_vm_mem: 16384
compute_vm_cpu: 8

buildnode: head1
headnode: head1

vagrant_vms:
  - head1
  - compute1
  - compute2

# Make build config
build_targets:
  - start-xos-helm

vagrant_up_prereqs:
  - prereqs-check

config_ssh_key_prereqs:
  - vagrant-ssh-install

copy_cord_prereqs:
  - vagrant-ssh-install

cord_config_prereqs:
  - vagrant-ssh-install
  - copy-cord

prep_buildnode_prereqs:
  - copy-cord
  - copy-config

# Run build prep before head prep, when build == head
prep_headnode_prereqs:
  - prep-buildnode

# Wait until headnode prepped before building containers, for consistent DNS
docker_images_prereqs:
  - prep-headnode

# FIXME: check out and use this kubespray commit (set on 2018-03-02 by zdw):
# https://github.com/kubernetes-incubator/kubespray/commit/b75b6b513b7d26a0fce3dd55a77ef538d18433a5
kubespray_version: b75b6b513b7d26a0fce3dd55a77ef538d18433a5

# have kubespray skip docker installation
skipTags:
  - docker

# node topology, used to bring up management interfaces
physical_node_list:
  - name: head1
    ipv4_last_octet: 1
    aliases:
      - head
  - name: compute1
    ipv4_last_octet: 17
  - name: compute2
    ipv4_last_octet: 18

vm_management_network_name: cordmgmt
vm_public_network_name: cordpub
vm_public_network_cidr: "10.230.100.0/24"

# images for imagebuilder to build/pull (tagged elsewhere)
docker_image_whitelist:
  - "xosproject/xos-base"
  - "xosproject/xos"
  - "xosproject/xos-ui"
  - "xosproject/xos-client"
  - "xosproject/xos-gui"
  - "xosproject/xos-gui-builder"
  - "xosproject/xos-libraries"
  - "xosproject/xos-postgres"
  - "xosproject/xos-tosca"
  - "xosproject/xos-ws"
  - "xosproject/chameleon"
  - "xosproject/xos-synchronizer-base"
  - "nginx"
  - "onosproject/onos"
  - "opencord/mavenrepo"
  - "redis"
  - "node"
  - "sebp/elk"

# Ansible Inventory
inventory_groups:

  config:
    localhost:
      ansible_connection: local

  build:
    head1:

  head:
    head1:

  compute:
    compute1:
    compute2:

