title: Deployment Environment Adapter (DEA)
# DEA API version supported
version:
created:
comment: Config for OPNFV BOX - HA deployment with Ceph
environment:
  name: opnfv_box
  mode: ha
  net_segment_type: tun
wanted_release: Kilo on Ubuntu 14.04
nodes:
- id: 1
  interfaces: interfaces_1
  transformations: transformations_1
  role: ceph-osd,controller
- id: 2
  interfaces: interfaces_1
  transformations: transformations_1
  role: ceph-osd,controller
- id: 3
  interfaces: interfaces_1
  transformations: transformations_1
  role: ceph-osd,controller
- id: 4
  interfaces: interfaces_1
  transformations: transformations_2
  role: ceph-osd,compute
- id: 5
  interfaces: interfaces_1
  transformations: transformations_2
  role: ceph-osd,compute
fuel:
  ADMIN_NETWORK:
    cidr: 10.20.0.0/24
    dhcp_gateway: 10.20.0.2
    dhcp_pool_end: 10.20.0.254
    dhcp_pool_start: 10.20.0.3
    ipaddress: 10.20.0.2
    netmask: 255.255.0.0
  DNS_DOMAIN: domain.tld
  DNS_SEARCH: domain.tld
  DNS_UPSTREAM: 8.8.8.8
  FUEL_ACCESS:
    password: admin
    user: admin
  HOSTNAME: opnfv
  NTP1: 0.pool.ntp.org
  NTP2: 1.pool.ntp.org
  NTP3: 2.pool.ntp.org
interfaces_1:
  eth0:
  - public
  eth1:
  - fuelweb_admin
  - management
  - storage
  - private
transformations_1:
  transformations:
  - action: add-br
    name: br-fw-admin
  - action: add-br
    name: br-mgmt
  - action: add-br
    name: br-storage
  - action: add-br
    name: br-ex
  - action: add-br
    name: br-floating
    provider: ovs
  - action: add-patch
    bridges:
    - br-floating
    - br-ex
    mtu: 65000
    provider: ovs
  - action: add-br
    name: br-mesh
  - action: add-port
    bridge: br-fw-admin
    name: eth0
  - action: add-port
    bridge: br-mgmt
    name: eth1.300
  - action: add-port
    bridge: br-storage
    name: eth1.301
  - action: add-port
    bridge: br-mesh
    name: eth1.302
  - action: add-port
    bridge: br-ex
    name: eth0
transformations_2:
  transformations:
  - action: add-br
    name: br-fw-admin
  - action: add-br
    name: br-mgmt
  - action: add-br
    name: br-storage
  - action: add-br
    name: br-mesh
  - action: add-port
    bridge: br-fw-admin
    name: eth0
  - action: add-port
    bridge: br-mgmt
    name: eth1.300
  - action: add-port
    bridge: br-storage
    name: eth1.301
  - action: add-port
    bridge: br-mesh
    name: eth1.302
network:
  management_vip: 192.168.0.2
  management_vrouter_vip: 192.168.0.1
  networking_parameters:
    base_mac: fa:16:3e:00:00:00
    configuration_template: null
    dns_nameservers:
    - 8.8.4.4
    - 8.8.8.8
    floating_ranges:
    - - 172.30.10.83
      - 172.30.10.92
    gre_id_range:
    - 2
    - 65535
    internal_cidr: 192.168.111.0/24
    internal_gateway: 192.168.111.1
    net_l23_provider: ovs
    segmentation_type: tun
    vlan_range:
    - 1000
    - 1030
  networks:
  - cidr: 172.30.10.0/24
    gateway: 172.30.10.1
    ip_ranges:
    - - 172.30.10.73
      - 172.30.10.82
    meta:
      cidr: 172.16.0.0/24
      configurable: true
      floating_range_var: floating_ranges
      ip_range:
      - 172.16.0.2
      - 172.16.0.126
      map_priority: 1
      name: public
      notation: ip_ranges
      render_addr_mask: public
      render_type: null
      use_gateway: true
      vips:
      - haproxy
      - vrouter
      vlan_start: null
    name: public
    vlan_start: null
  - cidr: 192.168.0.0/24
    gateway: null
    ip_ranges:
    - - 192.168.0.1
      - 192.168.0.254
    meta:
      cidr: 192.168.0.0/24
      configurable: true
      map_priority: 2
      name: management
      notation: cidr
      render_addr_mask: internal
      render_type: cidr
      use_gateway: false
      vips:
      - haproxy
      - vrouter
      vlan_start: 101
    name: management
    vlan_start: 300
  - cidr: 192.168.1.0/24
    gateway: null
    ip_ranges:
    - - 192.168.1.1
      - 192.168.1.254
    meta:
      cidr: 192.168.1.0/24
      configurable: true
      map_priority: 2
      name: storage
      notation: cidr
      render_addr_mask: storage
      render_type: cidr
      use_gateway: false
      vlan_start: 102
    name: storage
    vlan_start: 301
  - cidr: 192.168.2.0/24
    gateway: null
    ip_ranges:
    - - 192.168.2.1
      - 192.168.2.254
    meta:
      cidr: 192.168.2.0/24
      configurable: true
      map_priority: 2
      name: private
      notation: cidr
      render_addr_mask: null
      render_type: cidr
      seg_type: tun
      use_gateway: false
      vlan_start: 103
    name: private
    vlan_start: 302
  - cidr: 10.20.0.0/16
    gateway: 10.20.0.2
    ip_ranges:
    - - 10.20.0.3
      - 10.20.0.254
    meta:
      configurable: false
      map_priority: 0
      notation: ip_ranges
      render_addr_mask: null
      render_type: null
      unmovable: true
      use_gateway: true
    name: fuelweb_admin
    vlan_start: null
  public_vip: 172.30.10.3
  public_vrouter_vip: 172.30.10.2
  vips:
    management:
      ipaddr: 192.168.0.2
      namespace: haproxy
      network_role: mgmt/vip
      node_roles:
      - controller
      - primary-controller
    public:
      ipaddr: 172.30.10.3
      namespace: haproxy
      network_role: public/vip
      node_roles:
      - controller
      - primary-controller
    vrouter:
      ipaddr: 192.168.0.1
      namespace: vrouter
      network_role: mgmt/vip
      node_roles:
      - controller
      - primary-controller
    vrouter_pub:
      ipaddr: 172.30.10.2
      namespace: vrouter
      network_role: public/vip
      node_roles:
      - controller
      - primary-controller
settings:
  editable:
    access:
      email:
        description: Email address for Administrator
        label: Email
        regex:
          error: Invalid email
          source: ^\S+@\S+$
        type: text
        value: admin@localhost
        weight: 40
      metadata:
        label: Access
        weight: 10
      password:
        description: Password for Administrator
        label: Password
        regex:
          error: Empty password
          source: \S
        type: password
        value: admin
        weight: 20
      tenant:
        description: Tenant (project) name for Administrator
        label: Tenant
        regex:
          error: Invalid tenant name
          source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$)(?!.*
            +.*$).+
        type: text
        value: admin
        weight: 30
      user:
        description: Username for Administrator
        label: Username
        regex:
          error: Invalid username
          source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$)(?!.*
            +.*$).+
        type: text
        value: admin
        weight: 10
    additional_components:
      ceilometer:
        description: If selected, Ceilometer component will be installed
        label: Install Ceilometer
        type: checkbox
        value: false
        weight: 40
      heat:
        description: ''
        label: ''
        type: hidden
        value: true
        weight: 30
      metadata:
        label: Additional Components
        weight: 20
      mongo:
        description: If selected, You can use external Mongo DB as ceilometer backend
        label: Use external Mongo DB
        restrictions:
        - settings:additional_components.ceilometer.value == false
        type: checkbox
        value: false
        weight: 40
      murano:
        description: If selected, Murano component will be installed
        label: Install Murano
        type: checkbox
        value: false
        weight: 20
      sahara:
        description: If selected, Sahara component will be installed
        label: Install Sahara
        type: checkbox
        value: false
        weight: 10
    common:
      auth_key:
        description: Public key(s) to include in authorized_keys on deployed nodes
        label: Public Key
        type: textarea
        value: ''
        weight: 70
      auto_assign_floating_ip:
        description: If selected, OpenStack will automatically assign a floating IP
          to a new instance
        label: Auto assign floating IP
        restrictions:
        - action: hide
          condition: cluster:net_provider == 'neutron'
        type: checkbox
        value: false
        weight: 40
      debug:
        description: Debug logging mode provides more information, but requires more
          disk space.
        label: OpenStack debug logging
        type: checkbox
        value: false
        weight: 20
      libvirt_type:
        label: Hypervisor type
        type: radio
        value: kvm
        values:
        - data: kvm
          description: Choose this type of hypervisor if you run OpenStack on hardware
          label: KVM
        - data: qemu
          description: Choose this type of hypervisor if you run OpenStack on virtual
            hosts.
          label: QEMU
        weight: 30
      metadata:
        label: Common
        weight: 30
      nova_quota:
        description: Quotas are used to limit CPU and memory usage for tenants. Enabling
          quotas will increase load on the Nova database.
        label: Nova quotas
        type: checkbox
        value: false
        weight: 25
      puppet_debug:
        description: Debug puppet logging mode provides more information, but requires
          more disk space.
        label: Puppet debug logging
        type: checkbox
        value: true
        weight: 20
      resume_guests_state_on_host_boot:
        description: Whether to resume previous guests state when the host reboots.
          If enabled, this option causes guests assigned to the host to resume their
          previous state. If the guest was running a restart will be attempted when
          nova-compute starts. If the guest was not running previously, a restart will
          not be attempted.
        label: Resume guests state on host boot
        type: checkbox
        value: true
        weight: 60
      use_cow_images:
        description: For most cases you will want qcow format. If it's disabled, raw
          image format will be used to run VMs. OpenStack with raw format currently
          does not support snapshotting.
        label: Use qcow format for images
        type: checkbox
        value: true
        weight: 50
      use_vcenter:
        restrictions:
        - condition: cluster:net_provider == 'nova_network'
        type: hidden
        value: false
        weight: 30
    corosync:
      group:
        description: ''
        label: Group
        type: text
        value: 226.94.1.1
        weight: 10
      metadata:
        label: Corosync
        restrictions:
        - action: hide
          condition: 'true'
        weight: 50
      port:
        description: ''
        label: Port
        type: text
        value: '12000'
        weight: 20
      verified:
        description: Set True only if multicast is configured correctly on router.
        label: Need to pass network verification.
        type: checkbox
        value: false
        weight: 10
    external_dns:
      dns_list:
        description: List of upstream DNS servers, separated by comma
        label: DNS list
        regex:
          error: Invalid IP address list
          source: ^\*$|^(?:\d|1?\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d|1?\d\d|2[0-4]\d|25[0-5])){3}(?:\s*,\s*(?:\d|1?\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d|1?\d\d|2[0-4]\d|25[0-5])){3})*$
        type: text
        value: 8.8.8.8, 8.8.4.4
        weight: 10
      metadata:
        label: Host OS DNS Servers
        weight: 90
    external_mongo:
      hosts_ip:
        description: IP Addresses of MongoDB. Use comma to split IPs
        label: MongoDB hosts IP
        regex:
          error: Invalid hosts ip sequence
          source: ^(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?),)*((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
        type: text
        value: ''
        weight: 30
      metadata:
        label: External MongoDB
        restrictions:
        - action: hide
          condition: settings:additional_components.mongo.value == false
          message: Ceilometer and MongoDB are not enabled on the Additional Components
            section
        weight: 20
      mongo_db_name:
        description: Mongo database name
        label: Database name
        regex:
          error: Invalid database name
          source: ^\w+$
        type: text
        value: ceilometer
        weight: 30
      mongo_password:
        description: Mongo database password
        label: Password
        regex:
          error: Password contains spaces
          source: ^\S*$
        type: password
        value: ceilometer
        weight: 30
      mongo_replset:
        description: Name for Mongo replication set
        label: Replset
        type: text
        value: ''
        weight: 30
      mongo_user:
        description: Mongo database username
        label: Username
        regex:
          error: Empty username
          source: ^\w+$
        type: text
        value: ceilometer
        weight: 30
    external_ntp:
      metadata:
        label: Host OS NTP Servers
        weight: 100
      ntp_list:
        description: List of upstream NTP servers, separated by comma
        label: NTP server list
        regex:
          error: Invalid NTP server list
          source: ^\s*(?:(?:\w+(?:-+\w+)*\.)+[a-z]+|\d{1,3}(?:\.\d{1,3}){3})\s*(?:,\s*(?:(?:\w+(?:-+\w+)*\.)+[a-z]+|\d{1,3}(\.\d{1,3}){3})\s*)*$
        type: text
        value: 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org
        weight: 10
    kernel_params:
      kernel:
        description: Default kernel parameters
        label: Initial parameters
        type: text
        value: console=tty0 net.ifnames=0 biosdevname=0 rootdelay=90 nomodeset
        weight: 45
      metadata:
        label: Kernel parameters
        weight: 40
    murano_settings:
      metadata:
        label: Murano Settings
        restrictions:
        - action: hide
          condition: settings:additional_components.murano.value == false
          message: Murano is not enabled on the Additional Components section
        weight: 20
      murano_repo_url:
        description: ''
        label: Murano Repository URL
        type: text
        value: http://storage.apps.openstack.org/
        weight: 10
    neutron_advanced_configuration:
      metadata:
        label: Neutron Advanced Configuration
        restrictions:
        - action: hide
          condition: cluster:net_provider != 'neutron'
        weight: 45
      neutron_dvr:
        description: Enable Distributed Virtual Routers in Neutron
        label: Neutron DVR
        restrictions:
        - ? networking_parameters:segmentation_type != 'vlan' and settings:neutron_advanced_configuration.neutron_l2_pop.value
            == false
          : DVR requires L2 population to be enabled.
        type: checkbox
        value: false
        weight: 20
      neutron_l2_pop:
        description: Enable L2 population mechanism in Neutron
        label: Neutron L2 population
        restrictions:
        - action: hide
          condition: networking_parameters:segmentation_type == 'vlan'
        type: checkbox
        value: false
        weight: 10
    neutron_mellanox:
      metadata:
        enabled: true
        label: Mellanox Neutron components
        restrictions:
        - action: hide
          condition: not ('experimental' in version:feature_groups)
        toggleable: false
        weight: 50
      plugin:
        label: Mellanox drivers and SR-IOV plugin
        type: radio
        value: disabled
        values:
        - data: disabled
          description: If selected, Mellanox drivers, Neutron and Cinder plugin will
            not be installed.
          label: Mellanox drivers and plugins disabled
          restrictions:
          - settings:storage.iser.value == true
        - data: drivers_only
          description: If selected, Mellanox Ethernet drivers will be installed to support
            networking over Mellanox NIC. Mellanox Neutron plugin will not be installed.
          label: Install only Mellanox drivers
          restrictions:
          - settings:common.libvirt_type.value != 'kvm'
        - data: ethernet
          description: If selected, both Mellanox Ethernet drivers and Mellanox network
            acceleration (Neutron) plugin will be installed.
          label: Install Mellanox drivers and SR-IOV plugin
          restrictions:
          - settings:common.libvirt_type.value != 'kvm' or not (cluster:net_provider
            == 'neutron' and networking_parameters:segmentation_type == 'vlan')
        weight: 60
      vf_num:
        description: Note that one virtual function will be reserved to the storage
          network, in case of choosing iSER.
        label: Number of virtual NICs
        restrictions:
        - settings:neutron_mellanox.plugin.value != 'ethernet'
        type: text
        value: '16'
        weight: 70
    provision:
      metadata:
        label: Provision
        restrictions:
        - action: hide
          condition: 'true'
        weight: 80
      method:
        type: hidden
        value: image
    public_network_assignment:
      assign_to_all_nodes:
        description: When disabled, public network will be assigned to controllers only
        label: Assign public network to all nodes
        type: checkbox
        value: false
        weight: 10
      metadata:
        label: Public network assignment
        restrictions:
        - action: hide
          condition: cluster:net_provider != 'neutron'
        weight: 50
    public_ssl:
      cert_data:
        description: Certificate and private key data, concatenated into a single file
        label: Certificate
        restrictions:
        - action: hide
          condition: (settings:public_ssl.cert_source.value != 'user_uploaded') or (settings:public_ssl.horizon.value
            == false and settings:public_ssl.services.value == false)
        type: file
        value: ''
        weight: 40
      cert_source:
        description: From where we'll get certificate and private key
        label: Select source for certificate
        restrictions:
        - action: hide
          condition: settings:public_ssl.horizon.value == false and settings:public_ssl.services.value
            == false
        type: radio
        value: self_signed
        values:
        - data: self_signed
          description: Generate private key and certificate that will be signed by this
            key
          label: Self-signed
        - data: user_uploaded
          description: Use pre-generated key and certificate
          label: I have my own keypair with certificate
        weight: 30
      horizon:
        description: Secure access to Horizon enabling HTTPS instead of HTTP
        label: HTTPS for Horizon
        type: checkbox
        value: false
        weight: 10
      hostname:
        description: Your DNS entries should point to this name. Self-signed certificates
          also will use this hostname
        label: DNS hostname for public TLS endpoints
        restrictions:
        - action: hide
          condition: settings:public_ssl.horizon.value == false and settings:public_ssl.services.value
            == false
        type: text
        value: public.fuel.local
        weight: 50
      metadata:
        label: Public TLS
        weight: 110
      services:
        description: Enable TLS termination on HAProxy for OpenStack services
        label: TLS for OpenStack public endpoints
        type: checkbox
        value: false
        weight: 20
    repo_setup:
      metadata:
        always_editable: true
        label: Repositories
        weight: 50
      repos:
        description: 'Please note: the first repository will be considered the operating
          system mirror that will be used during node provisioning.

          To create a local repository mirror on the Fuel master node, please follow
          the instructions provided by running "fuel-createmirror --help" on the Fuel
          master node.

          Please make sure your Fuel master node has Internet access to the repository
          before attempting to create a mirror.

          For more details, please refer to the documentation (https://docs.mirantis.com/openstack/fuel/fuel-7.0/operations.html#external-ubuntu-ops).

          '
        extra_priority: null
        type: custom_repo_configuration
        value:
        - name: ubuntu
          priority: null
          section: main universe multiverse
          suite: trusty
          type: deb
          uri: http://archive.ubuntu.com/ubuntu/
        - name: ubuntu-updates
          priority: null
          section: main universe multiverse
          suite: trusty-updates
          type: deb
          uri: http://archive.ubuntu.com/ubuntu/
        - name: ubuntu-security
          priority: null
          section: main universe multiverse
          suite: trusty-security
          type: deb
          uri: http://archive.ubuntu.com/ubuntu/
        - name: mos
          priority: 1050
          section: main restricted
          suite: mos7.0
          type: deb
          uri: http://10.20.0.2:8080/2015.1.0-7.0/ubuntu/x86_64
        - name: mos-updates
          priority: 1050
          section: main restricted
          suite: mos7.0-updates
          type: deb
          uri: http://mirror.fuel-infra.org/mos-repos/ubuntu/7.0/
        - name: mos-security
          priority: 1050
          section: main restricted
          suite: mos7.0-security
          type: deb
          uri: http://mirror.fuel-infra.org/mos-repos/ubuntu/7.0/
        - name: mos-holdback
          priority: 1100
          section: main restricted
          suite: mos7.0-holdback
          type: deb
          uri: http://mirror.fuel-infra.org/mos-repos/ubuntu/7.0/
        - name: Auxiliary
          priority: 1150
          section: main restricted
          suite: auxiliary
          type: deb
          uri: http://10.20.0.2:8080/2015.1.0-7.0/ubuntu/auxiliary
    storage:
      ephemeral_ceph:
        description: Configures Nova to store ephemeral volumes in RBD. This works best
          if Ceph is enabled for volumes and images, too. Enables live migration of
          all types of Ceph backed VMs (without this option, live migration will only
          work with VMs launched from Cinder volumes).
        label: Ceph RBD for ephemeral volumes (Nova)
        type: checkbox
        value: true
        weight: 75
      images_ceph:
        description: Configures Glance to use the Ceph RBD backend to store images.
          If enabled, this option will prevent Swift from installing.
        label: Ceph RBD for images (Glance)
        restrictions:
        - settings:storage.images_vcenter.value == true: Only one Glance backend could
            be selected.
        type: checkbox
        value: true
        weight: 30
      images_vcenter:
        description: Configures Glance to use the vCenter/ESXi backend to store images.
          If enabled, this option will prevent Swift from installing.
        label: VMWare vCenter/ESXi datastore for images (Glance)
        restrictions:
        - action: hide
          condition: settings:common.use_vcenter.value != true
        - condition: settings:storage.images_ceph.value == true
          message: Only one Glance backend could be selected.
        type: checkbox
        value: false
        weight: 35
      iser:
        description: 'High performance block storage: Cinder volumes over iSER protocol
          (iSCSI over RDMA). This feature requires SR-IOV capabilities in the NIC, and
          will use a dedicated virtual function for the storage network.'
        label: iSER protocol for volumes (Cinder)
        restrictions:
        - settings:storage.volumes_lvm.value != true or settings:common.libvirt_type.value
          != 'kvm'
        - action: hide
          condition: not ('experimental' in version:feature_groups)
        type: checkbox
        value: false
        weight: 11
      metadata:
        label: Storage
        weight: 60
      objects_ceph:
        description: Configures RadosGW front end for Ceph RBD. This exposes S3 and
          Swift API Interfaces. If enabled, this option will prevent Swift from installing.
        label: Ceph RadosGW for objects (Swift API)
        restrictions:
        - settings:storage.images_ceph.value == false
        type: checkbox
        value: false
        weight: 80
      osd_pool_size:
        description: Configures the default number of object replicas in Ceph. This
          number must be equal to or lower than the number of deployed 'Storage - Ceph
          OSD' nodes.
        label: Ceph object replication factor
        regex:
          error: Invalid number
          source: ^[1-9]\d*$
        type: text
        value: '2'
        weight: 85
      volumes_ceph:
        description: Configures Cinder to store volumes in Ceph RBD images.
        label: Ceph RBD for volumes (Cinder)
        restrictions:
        - settings:storage.volumes_lvm.value == true
        type: checkbox
        value: true
        weight: 20
      volumes_lvm:
        description: It is recommended to have at least one Storage - Cinder LVM node.
        label: Cinder LVM over iSCSI for volumes
        restrictions:
        - settings:storage.volumes_ceph.value == true
        type: checkbox
        value: false
        weight: 10
    syslog:
      metadata:
        label: Syslog
        weight: 50
      syslog_port:
        description: Remote syslog port
        label: Port
        regex:
          error: Invalid syslog port
          source: ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
        type: text
        value: '514'
        weight: 20
      syslog_server:
        description: Remote syslog hostname
        label: Hostname
        type: text
        value: ''
        weight: 10
      syslog_transport:
        label: Syslog transport protocol
        type: radio
        value: tcp
        values:
        - data: udp
          description: ''
          label: UDP
        - data: tcp
          description: ''
          label: TCP
        weight: 30
    workloads_collector:
      enabled:
        type: hidden
        value: true
      metadata:
        label: Workloads Collector User
        restrictions:
        - action: hide
          condition: 'true'
        weight: 10
      password:
        type: password
        value: sbfn1c8b
      tenant:
        type: text
        value: services
      user:
        type: text
        value: fuel_stats_user