# This environment requires 50.5 GB of RAM and 270GB of Storage. Run with caution.
{% set REPOSITORY_SUITE = os_env('REPOSITORY_SUITE', 'stable') %}

{% import 'virtual-mcp11-k8s-contrail/underlay--meta-data.yaml' as CLOUDINIT_META_DATA with context %}
{% import 'virtual-mcp11-k8s-contrail/underlay--user-data-cfg01.yaml' as CLOUDINIT_USER_DATA_CFG01 with context %}
{% import 'virtual-mcp11-k8s-contrail/underlay--user-data1604.yaml' as CLOUDINIT_USER_DATA_1604 with context %}
{% import 'virtual-mcp11-k8s-contrail/underlay--user-data1404.yaml' as CLOUDINIT_USER_DATA_1404 with context %}

---
aliases:
 - &interface_model {{ os_env('INTERFACE_MODEL', 'virtio') }}
 - &cloudinit_meta_data {{ CLOUDINIT_META_DATA }}
 - &cloudinit_user_data_cfg01 {{ CLOUDINIT_USER_DATA_CFG01 }}
 - &cloudinit_user_data_1604 {{ CLOUDINIT_USER_DATA_1604 }}
 - &cloudinit_user_data_1404 {{ CLOUDINIT_USER_DATA_1404 }}

{% set DOMAIN_NAME = os_env('LAB_CONFIG_NAME', 'virtual-mcp11-k8s-contrail') + '.local' %}
{% set HOSTNAME_CFG01 = os_env('HOSTNAME_CFG01', 'cfg01.' + DOMAIN_NAME) %}
{% set HOSTNAME_CTL01 = os_env('HOSTNAME_CTL01', 'ctl01.' + DOMAIN_NAME) %}
{% set HOSTNAME_CTL02 = os_env('HOSTNAME_CTL02', 'ctl02.' + DOMAIN_NAME) %}
{% set HOSTNAME_CTL03 = os_env('HOSTNAME_CTL03', 'ctl03.' + DOMAIN_NAME) %}
{% set HOSTNAME_CMP01 = os_env('HOSTNAME_CMP01', 'cmp01.' + DOMAIN_NAME) %}
{% set HOSTNAME_CMP02 = os_env('HOSTNAME_CMP02', 'cmp02.' + DOMAIN_NAME) %}
{% set HOSTNAME_MON01 = os_env('HOSTNAME_MON01', 'mon01.' + DOMAIN_NAME) %}
{% set HOSTNAME_MON02 = os_env('HOSTNAME_MON02', 'mon02.' + DOMAIN_NAME) %}
{% set HOSTNAME_MON03 = os_env('HOSTNAME_MON03', 'mon03.' + DOMAIN_NAME) %}
{% set HOSTNAME_NTW01 = os_env('HOSTNAME_NTW01', 'ntw01.' + DOMAIN_NAME) %}
{% set HOSTNAME_NTW02 = os_env('HOSTNAME_NTW02', 'ntw02.' + DOMAIN_NAME) %}
{% set HOSTNAME_NTW03 = os_env('HOSTNAME_NTW03', 'ntw03.' + DOMAIN_NAME) %}
{% set HOSTNAME_PRX01 = os_env('HOSTNAME_PRX01', 'prx01.' + DOMAIN_NAME) %}
{% set HOSTNAME_VSRX01 = os_env('HOSTNAME_VSRX01', 'vsrx01' + DOMAIN_NAME) %}

template:
  devops_settings:
    env_name: {{ os_env('ENV_NAME', 'virtual-mcp11-k8s-contrail_' + REPOSITORY_SUITE + "_" + os_env('BUILD_NUMBER', '')) }}

    address_pools:

      private-pool01:
        net: {{ os_env('PRIVATE_ADDRESS_POOL01', '172.16.10.0/24:24') }}
        params:
          ip_reserved:
            gateway: +1
            l2_network_device: +1
            default_{{ HOSTNAME_CFG01 }}: +100
            default_{{ HOSTNAME_CTL01 }}: +101
            default_{{ HOSTNAME_CTL02 }}: +102
            default_{{ HOSTNAME_CTL03 }}: +103
            default_{{ HOSTNAME_CMP01 }}: +105
            default_{{ HOSTNAME_CMP02 }}: +106
            default_{{ HOSTNAME_MON01 }}: +107
            default_{{ HOSTNAME_MON02 }}: +108
            default_{{ HOSTNAME_MON03 }}: +109
            default_{{ HOSTNAME_NTW01 }}: +110
            default_{{ HOSTNAME_NTW02 }}: +111
            default_{{ HOSTNAME_NTW03 }}: +112
            default_{{ HOSTNAME_PRX01 }}: +121
            default_{{ HOSTNAME_VSRX01 }}: +90
          ip_ranges:
            dhcp: [+90, -10]

      public-pool01:
        net: {{ os_env('PUBLIC_ADDRESS_POOL01', '192.168.10.0/24:24') }}
        params:
          ip_reserved:
            gateway: +1
            l2_network_device: +1
            default_{{ HOSTNAME_CFG01 }}: +100
            default_{{ HOSTNAME_CTL01 }}: +101
            default_{{ HOSTNAME_CTL02 }}: +102
            default_{{ HOSTNAME_CTL03 }}: +103
            default_{{ HOSTNAME_CMP01 }}: +105
            default_{{ HOSTNAME_CMP02 }}: +106
            default_{{ HOSTNAME_MON01 }}: +107
            default_{{ HOSTNAME_MON02 }}: +108
            default_{{ HOSTNAME_MON03 }}: +109
            default_{{ HOSTNAME_NTW01 }}: +110
            default_{{ HOSTNAME_NTW02 }}: +111
            default_{{ HOSTNAME_NTW03 }}: +112
            default_{{ HOSTNAME_PRX01 }}: +121
            default_{{ HOSTNAME_VSRX01 }}: +90
          ip_ranges:
            dhcp: [+90, -10]

      admin-pool01:
        net: {{ os_env('ADMIN_ADDRESS_POOL01', '10.70.0.0/24:24') }}
        params:
          ip_reserved:
            gateway: +1
            l2_network_device: +1
            default_{{ HOSTNAME_CFG01 }}: +100
            default_{{ HOSTNAME_CTL01 }}: +101
            default_{{ HOSTNAME_CTL02 }}: +102
            default_{{ HOSTNAME_CTL03 }}: +103
            default_{{ HOSTNAME_CMP01 }}: +105
            default_{{ HOSTNAME_CMP02 }}: +106
            default_{{ HOSTNAME_MON01 }}: +107
            default_{{ HOSTNAME_MON02 }}: +108
            default_{{ HOSTNAME_MON03 }}: +109
            default_{{ HOSTNAME_NTW01 }}: +110
            default_{{ HOSTNAME_NTW02 }}: +111
            default_{{ HOSTNAME_NTW03 }}: +112
            default_{{ HOSTNAME_PRX01 }}: +121
            default_{{ HOSTNAME_VSRX01 }}: +90
          ip_ranges:
            dhcp: [+90, -10]

    groups:
      - name: default
        driver:
          name: devops.driver.libvirt
          params:
            connection_string: !os_env CONNECTION_STRING, qemu:///system
            storage_pool_name: !os_env STORAGE_POOL_NAME, default
            stp: True
            hpet: False
            enable_acpi: true
            use_host_cpu: !os_env DRIVER_USE_HOST_CPU, true

        network_pools:
          private: private-pool01
          public: public-pool01
          admin: admin-pool01

        l2_network_devices:
          private:
            address_pool: private-pool01
            dhcp: true

          public:
            address_pool: public-pool01
            dhcp: true
            forward:
              mode: nat

          admin:
            address_pool: admin-pool01
            dhcp: true

        group_volumes:
         - name: cloudimage1604    # This name is used for 'backing_store' option for node volumes.
           source_image: !os_env IMAGE_PATH1604  # https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img or
           format: qcow2

         - name: cloudimage1404
           source_image: !os_env IMAGE_PATH1404
           format: qcow2

         - name: vsrx_image
           source_image: !os_env IMAGE_VSRX
           format: qcow2

        nodes:
          - name: {{ HOSTNAME_CFG01 }}
            role: salt_master
            params:
              vcpu: !os_env SLAVE_NODE_CPU, 2
              memory: !os_env SLAVE_NODE_MEMORY, 2048
              boot:
                - hd
              cloud_init_volume_name: iso
              cloud_init_iface_up: ens3
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 20
                  backing_store: cloudimage1604
                  format: qcow2
                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.
                  capacity: 1
                  format: raw
                  device: cdrom
                  bus: ide
                  cloudinit_meta_data: !include underlay--meta-data.yaml
                  cloudinit_user_data: !include underlay--user-data-cfg01.yaml

              interfaces:
                - label: ens3
                  l2_network_device: public
                  interface_model: *interface_model
                - label: ens4
                  l2_network_device: private
                  interface_model: *interface_model
                - label: ens5
                  l2_network_device: admin
                  interface_model: *interface_model

              network_config:
                ens3:
                  networks:
                    - public
                ens4:
                  networks:
                    - private
                ens5:
                  networks:
                    - admin

          - name: {{ HOSTNAME_CTL01 }}
            role: salt_minion
            params:
              vcpu: !os_env SLAVE_NODE_CPU, 2
              memory: !os_env SLAVE_NODE_MEMORY, 4096
              boot:
                - hd
              cloud_init_volume_name: iso
              cloud_init_iface_up: ens3
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 20
                  backing_store: cloudimage1604
                  format: qcow2
                - name: cinder
                  capacity: 50
                  format: qcow2
                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.
                  capacity: 1
                  format: raw
                  device: cdrom
                  bus: ide
                  cloudinit_meta_data: !include underlay--meta-data.yaml
                  cloudinit_user_data: !include underlay--user-data1604.yaml

              interfaces: &interfaces
                - label: ens3
                  l2_network_device: public
                  interface_model: *interface_model
                - label: ens4
                  l2_network_device: private
                  interface_model: *interface_model
                - label: ens5
                  l2_network_device: admin
                  interface_model: *interface_model
              network_config: &network_config
                ens3:
                  networks:
                    - public
                ens4:
                  networks:
                    - private
                ens5:
                  networks:
                    - admin

          - name: {{ HOSTNAME_CTL02 }}
            role: salt_minion
            params:
              vcpu: !os_env SLAVE_NODE_CPU, 2
              memory: !os_env SLAVE_NODE_MEMORY, 4096
              boot:
                - hd
              cloud_init_volume_name: iso
              cloud_init_iface_up: ens3
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 20
                  backing_store: cloudimage1604
                  format: qcow2
                - name: cinder
                  capacity: 50
                  format: qcow2
                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.
                  capacity: 1
                  format: raw
                  device: cdrom
                  bus: ide
                  cloudinit_meta_data: !include underlay--meta-data.yaml
                  cloudinit_user_data: !include underlay--user-data1604.yaml

              interfaces: *interfaces
              network_config: *network_config

          - name: {{ HOSTNAME_CTL03 }}
            role: salt_minion
            params:
              vcpu: !os_env SLAVE_NODE_CPU, 2
              memory: !os_env SLAVE_NODE_MEMORY, 4096
              boot:
                - hd
              cloud_init_volume_name: iso
              cloud_init_iface_up: ens3
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 20
                  backing_store: cloudimage1604
                  format: qcow2
                - name: cinder
                  capacity: 50
                  format: qcow2
                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.
                  capacity: 1
                  format: raw
                  device: cdrom
                  bus: ide
                  cloudinit_meta_data: !include underlay--meta-data.yaml
                  cloudinit_user_data: !include underlay--user-data1604.yaml

              interfaces: *interfaces
              network_config: *network_config

          - name: {{ HOSTNAME_CMP01 }}
            role: salt_minion
            params:
              vcpu: !os_env SLAVE_NODE_CPU, 2
              memory: !os_env SLAVE_NODE_MEMORY, 4096
              boot:
                - hd
              cloud_init_volume_name: iso
              cloud_init_iface_up: ens3
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 20
                  backing_store: cloudimage1604
                  format: qcow2
                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.
                  capacity: 1
                  format: raw
                  device: cdrom
                  bus: ide
                  cloudinit_meta_data: !include underlay--meta-data.yaml
                  cloudinit_user_data: !include underlay--user-data1604.yaml

              interfaces: *interfaces
              network_config: *network_config

          - name: {{ HOSTNAME_CMP02 }}
            role: salt_minion
            params:
              vcpu: !os_env SLAVE_NODE_CPU, 2
              memory: !os_env SLAVE_NODE_MEMORY, 4096
              boot:
                - hd
              cloud_init_volume_name: iso
              cloud_init_iface_up: ens3
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 20
                  backing_store: cloudimage1604
                  format: qcow2
                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.
                  capacity: 1
                  format: raw
                  device: cdrom
                  bus: ide
                  cloudinit_meta_data: !include underlay--meta-data.yaml
                  cloudinit_user_data: !include underlay--user-data1604.yaml

              interfaces: *interfaces
              network_config: *network_config

          - name: {{ HOSTNAME_MON01 }}
            role: salt_minion
            params:
              vcpu: !os_env SLAVE_NODE_CPU, 1
              memory: !os_env SLAVE_NODE_MEMORY, 1024
              boot:
                - hd
              cloud_init_volume_name: iso
              cloud_init_iface_up: ens3
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 20
                  backing_store: cloudimage1604
                  format: qcow2
                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.
                  capacity: 1
                  format: raw
                  device: cdrom
                  bus: ide
                  cloudinit_meta_data: !include underlay--meta-data.yaml
                  cloudinit_user_data: !include underlay--user-data1604.yaml

              interfaces: *interfaces
              network_config: *network_config

          - name: {{ HOSTNAME_MON02 }}
            role: salt_minion
            params:
              vcpu: !os_env SLAVE_NODE_CPU, 1
              memory: !os_env SLAVE_NODE_MEMORY, 1024
              boot:
                - hd
              cloud_init_volume_name: iso
              cloud_init_iface_up: ens3
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 20
                  backing_store: cloudimage1604
                  format: qcow2
                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.
                  capacity: 1
                  format: raw
                  device: cdrom
                  bus: ide
                  cloudinit_meta_data: !include underlay--meta-data.yaml
                  cloudinit_user_data: !include underlay--user-data1604.yaml

              interfaces: *interfaces
              network_config: *network_config

          - name: {{ HOSTNAME_MON03 }}
            role: salt_minion
            params:
              vcpu: !os_env SLAVE_NODE_CPU, 1
              memory: !os_env SLAVE_NODE_MEMORY, 1024
              boot:
                - hd
              cloud_init_volume_name: iso
              cloud_init_iface_up: ens3
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 20
                  backing_store: cloudimage1604
                  format: qcow2
                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.
                  capacity: 1
                  format: raw
                  device: cdrom
                  bus: ide
                  cloudinit_meta_data: !include underlay--meta-data.yaml
                  cloudinit_user_data: !include underlay--user-data1604.yaml

              interfaces: *interfaces
              network_config: *network_config

          - name: {{ HOSTNAME_NTW01 }}
            role: salt_minion
            params:
              vcpu: !os_env SLAVE_NODE_CPU, 4
              memory: !os_env SLAVE_NODE_MEMORY, 8192
              boot:
                - hd
              cloud_init_volume_name: iso
              cloud_init_iface_up: ens3
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 20
                  backing_store: cloudimage1404
                  format: qcow2
                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.
                  capacity: 1
                  format: raw
                  device: cdrom
                  bus: ide
                  cloudinit_meta_data: !include underlay--meta-data.yaml
                  cloudinit_user_data: !include underlay--user-data1404.yaml

              interfaces: *interfaces
              network_config: *network_config

          - name: {{ HOSTNAME_NTW02 }}
            role: salt_minion
            params:
              vcpu: !os_env SLAVE_NODE_CPU, 4
              memory: !os_env SLAVE_NODE_MEMORY, 8192
              boot:
                - hd
              cloud_init_volume_name: iso
              cloud_init_iface_up: ens3
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 20
                  backing_store: cloudimage1404
                  format: qcow2
                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.
                  capacity: 1
                  format: raw
                  device: cdrom
                  bus: ide
                  cloudinit_meta_data: !include underlay--meta-data.yaml
                  cloudinit_user_data: !include underlay--user-data1404.yaml

              interfaces: *interfaces
              network_config: *network_config

          - name: {{ HOSTNAME_NTW03 }}
            role: salt_minion
            params:
              vcpu: !os_env SLAVE_NODE_CPU, 4
              memory: !os_env SLAVE_NODE_MEMORY, 8192
              boot:
                - hd
              cloud_init_volume_name: iso
              cloud_init_iface_up: ens3
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 20
                  backing_store: cloudimage1404
                  format: qcow2
                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.
                  capacity: 1
                  format: raw
                  device: cdrom
                  bus: ide
                  cloudinit_meta_data: !include underlay--meta-data.yaml
                  cloudinit_user_data: !include underlay--user-data1404.yaml

              interfaces: *interfaces
              network_config: *network_config

          - name: {{ HOSTNAME_PRX01 }}
            role: salt_minion
            params:
              vcpu: !os_env SLAVE_NODE_CPU, 2
              memory: !os_env SLAVE_NODE_MEMORY, 1024
              boot:
                - hd
              cloud_init_volume_name: iso
              cloud_init_iface_up: ens3
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 20
                  backing_store: cloudimage1604
                  format: qcow2
                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.
                  capacity: 1
                  format: raw
                  device: cdrom
                  bus: ide
                  cloudinit_meta_data: !include underlay--meta-data.yaml
                  cloudinit_user_data: !include underlay--user-data1604.yaml

              interfaces: *interfaces
              network_config: *network_config

          - name: {{ HOSTNAME_VSRX01 }}
            role: vsrx
            params:
              vcpu: !os_env SLAVE_NODE_CPU, 2
              memory: !os_env SLAVE_NODE_MEMORY, 512
              boot:
                - hd
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 10
                  backing_store: vsrx_image
                  format: qcow2
                  #- name: iso
                  #- capacity: 1
                  #- format: raw
                  #- device: cdrom
                  #- bus: ide
                  #- cloudinit_user_data: !include juniper.conf

              interfaces:
                - label: ge-0/0/0
                  l2_network_device: private
                  interface_model: virtio
                  mac_address: 52:54:00:4e:b4:36
                - label: ge-0/0/1
                  l2_network_device: public
                  interface_model: virtio
                  mac_address: 52:54:00:e1:44:9d
                - label: ge-0/0/2
                  l2_network_device: admin
                  interface_model: virtio
                  mac_address: 52:54:00:72:08:77
