aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbuild.sh1
-rwxr-xr-xci/deploy_ci.sh106
-rw-r--r--deploy/adapters/ansible/openstack_mitaka/roles/ceph-osd/tasks/install_osd.yml5
-rw-r--r--deploy/adapters/ansible/openstack_mitaka/roles/tacker/files/tacker.conf36
-rwxr-xr-xdeploy/adapters/ansible/openstack_mitaka/roles/tacker/tasks/tacker_controller.yml215
-rw-r--r--deploy/adapters/ansible/openstack_mitaka/roles/tacker/templates/config.yaml4
-rw-r--r--deploy/adapters/ansible/openstack_mitaka/roles/tacker/templates/tackerc.sh12
-rw-r--r--deploy/adapters/ansible/openstack_mitaka_xenial/roles/ceph-osd/tasks/install_osd.yml5
-rwxr-xr-xdeploy/adapters/ansible/openstack_mitaka_xenial/roles/dashboard/templates/openstack-dashboard.conf.j22
-rw-r--r--deploy/adapters/ansible/openstack_mitaka_xenial/roles/keystone/templates/wsgi-keystone.conf.j22
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/HA-ansible-multinodes.yml2
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/tasks/aodh_install.yml5
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/templates/aodh.conf.j238
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/templates/api_paste.ini.j222
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/templates/policy.json.j220
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/vars/Debian.yml2
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/vars/RedHat.yml2
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/roles/ceilometer_compute/templates/ceilometer.conf.j27
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/roles/ceilometer_controller/templates/wsgi-ceilometer.conf.j22
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/roles/ceph-osd/tasks/install_osd.yml5
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/roles/cinder-volume/templates/cinder.conf7
-rwxr-xr-xdeploy/adapters/ansible/openstack_newton_xenial/roles/dashboard/templates/openstack-dashboard.conf.j22
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/roles/keystone/tasks/keystone_config.yml7
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/roles/keystone/templates/wsgi-keystone.conf.j22
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/roles/neutron-compute/tasks/main.yml2
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/roles/neutron-compute/templates/neutron.conf105
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/roles/nova-compute/tasks/main.yml8
-rw-r--r--deploy/adapters/ansible/openstack_newton_xenial/roles/nova-compute/templates/nova.conf75
-rwxr-xr-xdeploy/adapters/ansible/openstack_osp9/roles/ceph-osd/tasks/install_osd.yml5
-rwxr-xr-xdeploy/adapters/ansible/roles/ceph-config/tasks/create_config.yml15
-rwxr-xr-xdeploy/adapters/ansible/roles/ceph-openstack/tasks/ceph_openstack_conf.yml4
-rwxr-xr-xdeploy/adapters/ansible/roles/ceph-openstack/tasks/ceph_openstack_pre.yml32
-rw-r--r--deploy/adapters/ansible/roles/ceph-openstack/templates/secret.j22
-rw-r--r--deploy/adapters/ansible/roles/ceph-osd/tasks/install_osd.yml5
-rw-r--r--deploy/adapters/ansible/roles/common/tasks/main.yml6
-rwxr-xr-xdeploy/compass_conf/adapter/ansible_openstack_juno.conf7
-rwxr-xr-xdeploy/compass_conf/adapter/ansible_openstack_kilo.conf7
-rwxr-xr-xdeploy/compass_conf/adapter/ansible_openstack_liberty.conf7
-rwxr-xr-xdeploy/compass_conf/adapter/ansible_openstack_mitaka.conf7
-rwxr-xr-xdeploy/compass_conf/adapter/ansible_openstack_mitaka_xenial.conf7
-rwxr-xr-xdeploy/compass_conf/adapter/ansible_openstack_newton_xenial.conf7
-rwxr-xr-xdeploy/compass_conf/adapter/ansible_openstack_osp9.conf7
-rwxr-xr-xdeploy/compass_conf/adapter/ceph.conf2
-rwxr-xr-xdeploy/compass_conf/adapter/general.conf1
-rwxr-xr-xdeploy/compass_conf/adapter/openstack.conf2
-rwxr-xr-xdeploy/compass_conf/adapter/os_only.conf5
-rwxr-xr-xdeploy/compass_conf/celeryconfig9
-rwxr-xr-xdeploy/compass_conf/distributed_system/ceph.conf3
-rwxr-xr-xdeploy/compass_conf/distributed_system/general.conf2
-rwxr-xr-xdeploy/compass_conf/distributed_system/openstack.conf3
-rwxr-xr-xdeploy/compass_conf/distributed_system/openstack_ceph.conf3
-rwxr-xr-xdeploy/compass_conf/flavor/openstack_juno_ansible.conf32
-rwxr-xr-xdeploy/compass_conf/flavor/openstack_kilo_ansible.conf32
-rwxr-xr-xdeploy/compass_conf/flavor/openstack_liberty_ansible.conf32
-rwxr-xr-xdeploy/compass_conf/flavor/openstack_mitaka.conf32
-rwxr-xr-xdeploy/compass_conf/flavor/openstack_mitaka_xenial.conf32
-rwxr-xr-xdeploy/compass_conf/flavor/openstack_newton_xenial.conf32
-rwxr-xr-xdeploy/compass_conf/flavor/openstack_osp9.conf32
-rwxr-xr-xdeploy/compass_conf/flavor_field/general.conf1
-rwxr-xr-xdeploy/compass_conf/flavor_mapping/HA-ansible-multinodes-juno.conf112
-rwxr-xr-xdeploy/compass_conf/flavor_mapping/HA-ansible-multinodes-kilo.conf104
-rwxr-xr-xdeploy/compass_conf/flavor_mapping/HA-ansible-multinodes-liberty.conf112
-rwxr-xr-xdeploy/compass_conf/flavor_mapping/HA-ansible-multinodes-mitaka.conf124
-rwxr-xr-xdeploy/compass_conf/flavor_mapping/HA-ansible-multinodes-mitaka_xenial.conf120
-rwxr-xr-xdeploy/compass_conf/flavor_mapping/HA-ansible-multinodes-newton_xenial.conf120
-rwxr-xr-xdeploy/compass_conf/flavor_mapping/allinone.conf132
-rwxr-xr-xdeploy/compass_conf/flavor_mapping/ha-multinodes.conf147
-rwxr-xr-xdeploy/compass_conf/flavor_mapping/multinodes.conf132
-rwxr-xr-xdeploy/compass_conf/flavor_mapping/single-contoller-multi-compute.conf132
-rwxr-xr-xdeploy/compass_conf/flavor_metadata/HA-ansible-multinodes-juno.conf19
-rwxr-xr-xdeploy/compass_conf/flavor_metadata/HA-ansible-multinodes-kilo.conf19
-rwxr-xr-xdeploy/compass_conf/flavor_metadata/HA-ansible-multinodes-liberty.conf19
-rwxr-xr-xdeploy/compass_conf/flavor_metadata/HA-ansible-multinodes-mitaka.conf19
-rwxr-xr-xdeploy/compass_conf/flavor_metadata/HA-ansible-multinodes-mitaka_xenial.conf19
-rwxr-xr-xdeploy/compass_conf/flavor_metadata/HA-ansible-multinodes-newton_xenial.conf19
-rwxr-xr-xdeploy/compass_conf/flavor_metadata/HA-ansible-multinodes-osp9.conf19
-rwxr-xr-xdeploy/compass_conf/flavor_metadata/HA-multinodes.conf19
-rwxr-xr-xdeploy/compass_conf/flavor_metadata/allinone.conf3
-rwxr-xr-xdeploy/compass_conf/flavor_metadata/multinodes.conf3
-rwxr-xr-xdeploy/compass_conf/flavor_metadata/single-contoller-multi-compute.conf3
-rwxr-xr-xdeploy/compass_conf/machine_list/machine_list.conf46
-rwxr-xr-xdeploy/compass_conf/os/centos.conf2
-rwxr-xr-xdeploy/compass_conf/os/centos6.5.conf3
-rwxr-xr-xdeploy/compass_conf/os/centos6.6.conf3
-rwxr-xr-xdeploy/compass_conf/os/centos7.0.conf3
-rwxr-xr-xdeploy/compass_conf/os/centos7.2.conf3
-rwxr-xr-xdeploy/compass_conf/os/general.conf2
-rwxr-xr-xdeploy/compass_conf/os/rhel7.2.conf3
-rwxr-xr-xdeploy/compass_conf/os/sles11sp3.conf3
-rwxr-xr-xdeploy/compass_conf/os/suse.conf2
-rwxr-xr-xdeploy/compass_conf/os/ubuntu.conf2
-rwxr-xr-xdeploy/compass_conf/os/ubuntu12.04.conf3
-rwxr-xr-xdeploy/compass_conf/os/ubuntu14.04.3.conf3
-rwxr-xr-xdeploy/compass_conf/os/ubuntu14.04.conf3
-rwxr-xr-xdeploy/compass_conf/os/ubuntu16.04.conf3
-rwxr-xr-xdeploy/compass_conf/os/uvp11sp3.conf3
-rwxr-xr-xdeploy/compass_conf/os_field/dns.conf2
-rwxr-xr-xdeploy/compass_conf/os_field/domain.conf2
-rwxr-xr-xdeploy/compass_conf/os_field/gateway.conf2
-rwxr-xr-xdeploy/compass_conf/os_field/general.conf2
-rwxr-xr-xdeploy/compass_conf/os_field/general_list.conf3
-rwxr-xr-xdeploy/compass_conf/os_field/ip.conf2
-rwxr-xr-xdeploy/compass_conf/os_field/ip_list.conf4
-rwxr-xr-xdeploy/compass_conf/os_field/netmask.conf2
-rwxr-xr-xdeploy/compass_conf/os_field/network.conf2
-rwxr-xr-xdeploy/compass_conf/os_field/password.conf4
-rwxr-xr-xdeploy/compass_conf/os_field/percentage.conf3
-rwxr-xr-xdeploy/compass_conf/os_field/size.conf2
-rwxr-xr-xdeploy/compass_conf/os_field/string.conf1
-rwxr-xr-xdeploy/compass_conf/os_field/url.conf2
-rwxr-xr-xdeploy/compass_conf/os_field/username.conf3
-rwxr-xr-xdeploy/compass_conf/os_installer/cobbler.conf9
-rwxr-xr-xdeploy/compass_conf/os_mapping/os_mapping.conf188
-rwxr-xr-xdeploy/compass_conf/os_metadata/general.conf179
-rwxr-xr-xdeploy/compass_conf/package_field/anytype.conf2
-rwxr-xr-xdeploy/compass_conf/package_field/dns.conf2
-rwxr-xr-xdeploy/compass_conf/package_field/gateway.conf2
-rwxr-xr-xdeploy/compass_conf/package_field/general.conf1
-rwxr-xr-xdeploy/compass_conf/package_field/general_list.conf2
-rwxr-xr-xdeploy/compass_conf/package_field/integer.conf2
-rwxr-xr-xdeploy/compass_conf/package_field/ip.conf2
-rwxr-xr-xdeploy/compass_conf/package_field/netmask.conf2
-rwxr-xr-xdeploy/compass_conf/package_field/network.conf2
-rwxr-xr-xdeploy/compass_conf/package_field/password.conf3
-rwxr-xr-xdeploy/compass_conf/package_field/percentage.conf3
-rwxr-xr-xdeploy/compass_conf/package_field/roles.conf3
-rwxr-xr-xdeploy/compass_conf/package_field/size.conf2
-rwxr-xr-xdeploy/compass_conf/package_field/username.conf3
-rwxr-xr-xdeploy/compass_conf/package_installer/ansible-juno.conf13
-rwxr-xr-xdeploy/compass_conf/package_installer/ansible-kilo.conf13
-rwxr-xr-xdeploy/compass_conf/package_installer/ansible-liberty.conf13
-rwxr-xr-xdeploy/compass_conf/package_installer/ansible-mitaka.conf13
-rwxr-xr-xdeploy/compass_conf/package_installer/ansible-mitaka_xenial.conf13
-rwxr-xr-xdeploy/compass_conf/package_installer/ansible-newton_xenial.conf13
-rwxr-xr-xdeploy/compass_conf/package_installer/ansible-osp9.conf13
-rwxr-xr-xdeploy/compass_conf/package_metadata/openstack.conf437
-rwxr-xr-xdeploy/compass_conf/progress_calculator/progress_calculator.conf558
-rwxr-xr-xdeploy/compass_conf/role/openstack_juno_ansible.conf110
-rwxr-xr-xdeploy/compass_conf/role/openstack_kilo_ansible.conf110
-rwxr-xr-xdeploy/compass_conf/role/openstack_liberty_ansible.conf115
-rwxr-xr-xdeploy/compass_conf/role/openstack_mitaka_ansible.conf115
-rwxr-xr-xdeploy/compass_conf/role/openstack_mitaka_xenial_ansible.conf115
-rwxr-xr-xdeploy/compass_conf/role/openstack_newton_xenial_ansible.conf115
-rwxr-xr-xdeploy/compass_conf/role/openstack_osp9_ansible.conf115
-rwxr-xr-xdeploy/compass_conf/setting31
-rwxr-xr-xdeploy/compass_conf/switch_list/switch_list.conf3
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_juno/ansible_cfg/HA-ansible-multinodes.tmpl7
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_juno/ansible_cfg/allinone.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_juno/ansible_cfg/multinodes.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_juno/ansible_cfg/single-controller.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_juno/hosts/HA-ansible-multinodes.tmpl31
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_juno/hosts/allinone.tmpl10
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_juno/hosts/multinodes.tmpl110
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_juno/hosts/single-controller.tmpl40
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_juno/inventories/HA-ansible-multinodes.tmpl110
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_juno/inventories/allinone.tmpl47
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_juno/inventories/multinodes.tmpl123
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_juno/inventories/single-controller.tmpl67
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_juno/vars/HA-ansible-multinodes.tmpl202
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_juno/vars/allinone.tmpl96
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_juno/vars/multinodes.tmpl165
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_juno/vars/single-controller.tmpl108
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_kilo/ansible_cfg/HA-ansible-multinodes.tmpl7
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_kilo/ansible_cfg/allinone.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_kilo/ansible_cfg/multinodes.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_kilo/ansible_cfg/single-controller.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_kilo/hosts/HA-ansible-multinodes.tmpl31
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_kilo/hosts/allinone.tmpl10
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_kilo/hosts/multinodes.tmpl110
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_kilo/hosts/single-controller.tmpl40
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_kilo/inventories/HA-ansible-multinodes.tmpl109
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_kilo/inventories/allinone.tmpl47
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_kilo/inventories/multinodes.tmpl123
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_kilo/inventories/single-controller.tmpl67
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_kilo/vars/HA-ansible-multinodes.tmpl202
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_kilo/vars/allinone.tmpl96
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_kilo/vars/multinodes.tmpl165
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_kilo/vars/single-controller.tmpl108
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/HA-ansible-multinodes.tmpl7
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/HA-ansible-multinodes.tmplr7
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/allinone.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/allinone.tmplr6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/multinodes.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/multinodes.tmplr6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/single-controller.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/single-controller.tmplr6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/hosts/HA-ansible-multinodes.tmpl31
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/hosts/allinone.tmpl10
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/hosts/multinodes.tmpl110
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/hosts/single-controller.tmpl40
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/inventories/HA-ansible-multinodes.tmpl100
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/inventories/allinone.tmpl47
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/inventories/multinodes.tmpl123
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/inventories/single-controller.tmpl67
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/vars/HA-ansible-multinodes.tmpl203
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/vars/allinone.tmpl96
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/vars/multinodes.tmpl165
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_liberty/vars/single-controller.tmpl108
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka/ansible_cfg/HA-ansible-multinodes.tmpl7
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka/ansible_cfg/allinone.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka/ansible_cfg/multinodes.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka/ansible_cfg/single-controller.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka/hosts/HA-ansible-multinodes.tmpl31
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka/hosts/allinone.tmpl10
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka/hosts/multinodes.tmpl110
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka/hosts/single-controller.tmpl40
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka/inventories/HA-ansible-multinodes.tmpl100
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka/inventories/allinone.tmpl47
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka/inventories/multinodes.tmpl123
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka/inventories/single-controller.tmpl67
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka/vars/HA-ansible-multinodes.tmpl213
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka/vars/allinone.tmpl96
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka/vars/multinodes.tmpl165
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka/vars/single-controller.tmpl108
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/ansible_cfg/HA-ansible-multinodes.tmpl7
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/ansible_cfg/allinone.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/ansible_cfg/multinodes.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/ansible_cfg/single-controller.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/hosts/HA-ansible-multinodes.tmpl31
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/hosts/allinone.tmpl10
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/hosts/multinodes.tmpl110
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/hosts/single-controller.tmpl40
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/inventories/HA-ansible-multinodes.tmpl100
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/inventories/allinone.tmpl47
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/inventories/multinodes.tmpl123
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/inventories/single-controller.tmpl67
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/vars/HA-ansible-multinodes.tmpl209
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/vars/allinone.tmpl96
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/vars/multinodes.tmpl165
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/vars/single-controller.tmpl108
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/ansible_cfg/HA-ansible-multinodes.tmpl7
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/ansible_cfg/allinone.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/ansible_cfg/multinodes.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/ansible_cfg/single-controller.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/hosts/HA-ansible-multinodes.tmpl31
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/hosts/allinone.tmpl10
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/hosts/multinodes.tmpl110
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/hosts/single-controller.tmpl40
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/inventories/HA-ansible-multinodes.tmpl100
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/inventories/allinone.tmpl47
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/inventories/multinodes.tmpl123
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/inventories/single-controller.tmpl67
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/vars/HA-ansible-multinodes.tmpl209
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/vars/allinone.tmpl96
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/vars/multinodes.tmpl165
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/vars/single-controller.tmpl108
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_osp9/ansible_cfg/HA-ansible-multinodes.tmpl7
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_osp9/ansible_cfg/allinone.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_osp9/ansible_cfg/multinodes.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_osp9/ansible_cfg/single-controller.tmpl6
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_osp9/hosts/HA-ansible-multinodes.tmpl31
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_osp9/hosts/allinone.tmpl10
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_osp9/hosts/multinodes.tmpl110
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_osp9/hosts/single-controller.tmpl40
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_osp9/inventories/HA-ansible-multinodes.tmpl100
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_osp9/inventories/allinone.tmpl47
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_osp9/inventories/multinodes.tmpl123
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_osp9/inventories/single-controller.tmpl67
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_osp9/vars/HA-ansible-multinodes.tmpl210
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_osp9/vars/allinone.tmpl96
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_osp9/vars/multinodes.tmpl165
-rwxr-xr-xdeploy/compass_conf/templates/ansible_installer/openstack_osp9/vars/single-controller.tmpl108
-rwxr-xr-xdeploy/compass_conf/templates/cobbler/CentOS-6.5-x86_64/system.tmpl76
-rwxr-xr-xdeploy/compass_conf/templates/cobbler/CentOS-6.6-x86_64/system.tmpl76
-rwxr-xr-xdeploy/compass_conf/templates/cobbler/CentOS-7-Minimal-1511-x86_64/profile.tmpl3
-rwxr-xr-xdeploy/compass_conf/templates/cobbler/CentOS-7-Minimal-1511-x86_64/system.tmpl76
-rwxr-xr-xdeploy/compass_conf/templates/cobbler/CentOS-7.0-x86_64/system.tmpl76
-rwxr-xr-xdeploy/compass_conf/templates/cobbler/Ubuntu-12.04-x86_64/system.tmpl75
-rwxr-xr-xdeploy/compass_conf/templates/cobbler/Ubuntu-14.04-x86_64/system.tmpl75
-rwxr-xr-xdeploy/compass_conf/templates/cobbler/rhel-server-7.2-x86_64/profile.tmpl3
-rwxr-xr-xdeploy/compass_conf/templates/cobbler/rhel-server-7.2-x86_64/system.tmpl76
-rwxr-xr-xdeploy/compass_conf/templates/cobbler/sles-11sp3-x86_64/system.tmpl76
-rwxr-xr-xdeploy/compass_conf/templates/cobbler/ubuntu-14.04.3-server-x86_64/profile.tmpl3
-rwxr-xr-xdeploy/compass_conf/templates/cobbler/ubuntu-14.04.3-server-x86_64/system.tmpl75
-rwxr-xr-xdeploy/compass_conf/templates/cobbler/ubuntu-16.04-server-x86_64/profile.tmpl3
-rwxr-xr-xdeploy/compass_conf/templates/cobbler/ubuntu-16.04-server-x86_64/system.tmpl75
-rwxr-xr-xdeploy/compass_conf/templates/cobbler/uvp-11sp3-x86_64/system.tmpl76
-rwxr-xr-xdeploy/compass_vm.sh26
-rw-r--r--deploy/conf/base.conf4
-rw-r--r--deploy/conf/hardware_environment/huawei-pod5/network.yml22
-rw-r--r--deploy/conf/hardware_environment/huawei-pod5/network_ocl.yml14
-rw-r--r--deploy/conf/hardware_environment/huawei-pod5/network_onos.yml22
-rw-r--r--deploy/conf/hardware_environment/huawei-pod5/os-nosdn-nofeature-ha.yml41
-rw-r--r--deploy/conf/hardware_environment/huawei-pod5/os-ocl-nofeature-ha.yml40
-rw-r--r--deploy/conf/hardware_environment/huawei-pod5/os-odl_l2-moon-ha.yml41
-rw-r--r--deploy/conf/hardware_environment/huawei-pod5/os-odl_l2-nofeature-ha.yml41
-rw-r--r--deploy/conf/hardware_environment/huawei-pod5/os-odl_l3-nofeature-ha.yml41
-rw-r--r--deploy/conf/hardware_environment/huawei-pod5/os-onos-nofeature-ha.yml41
-rw-r--r--deploy/conf/hardware_environment/huawei-pod5/os-onos-sfc-ha.yml40
-rwxr-xr-xdeploy/launch.sh25
-rwxr-xr-xdeploy/prepare.sh8
291 files changed, 13786 insertions, 325 deletions
diff --git a/build.sh b/build.sh
index fa3e01e0..94a8e947 100755
--- a/build.sh
+++ b/build.sh
@@ -187,6 +187,7 @@ function copy_file()
done
cp $COMPASS_PATH/deploy/adapters $new/compass/compass-adapters -rf
+ cp $COMPASS_PATH/deploy/compass_conf/* $new/compass/compass-core/conf -rf
tar -zxvf $CACHE_DIR/`basename $PIP_REPO` -C $new/
tar -zxvf $CACHE_DIR/`basename $PIP_OPENSTACK_REPO` -C $new/
diff --git a/ci/deploy_ci.sh b/ci/deploy_ci.sh
new file mode 100755
index 00000000..b4e8541e
--- /dev/null
+++ b/ci/deploy_ci.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+##############################################################################
+# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# ROOT_BUILD_CAUSE DEPLOY_SCENARIO COMPASS_OS_VERSION got from CI
+
+CI_DIR=$(cd $(dirname ${BASH_SOURCE:-$0});pwd)
+
+if [[ $ROOT_BUILD_CAUSE == MANUALTRIGGER ]]; then
+ # For manual ci trigger build, directly use the value pass from CI
+ if [[ $COMPASS_OPENSTACK_VERSION == newton ]]; then
+ export COMPASS_OS_VERSION=xenial
+ export COMPASS_OPENSTACK_VERSION=newton_xenial
+ else
+ case $DEPLOY_SCENARIO in
+ os-odl_l2-moon-ha)
+ # os-odl_l2-moon-ha scenario supports xenial mitaka only
+ export COMPASS_OS_VERSION=xenial
+ export COMPASS_OPENSTACK_VERSION=mitaka_xenial
+ ;;
+ os-ocl-nofeature-ha)
+ # os-ocl-nofeature-ha scenario supports liberty only
+ export COMPASS_OS_VERSION=trusty
+ export COMPASS_OPENSTACK_VERSION=liberty
+ ;;
+ *)
+ # setup for testing mitaka by default
+ export COMPASS_OS_VERSION=${COMPASS_OS_VERSION:-trusty}
+ export COMPASS_OPENSTACK_VERSION=${COMPASS_OPENSTACK_VERSION:-mitaka}
+ ;;
+ esac
+ fi
+
+else
+ # For daily build or verify build, adjust COMPASS_OS_VERSION and OPENSTACK_VERSION
+ # value according to COMPASS_OS_VERSION and DEPLOY_SCENARIO pass from CI
+
+ if [[ $COMPASS_OS_VERSION == centos7 ]]; then
+ case $DEPLOY_SCENARIO in
+ os-odl_l2-moon-ha)
+ # os-odl_l2-moon-ha scenario supports xenial mitaka only
+ export COMPASS_OS_VERSION=xenial
+ export COMPASS_OPENSTACK_VERSION=mitaka_xenial
+ ;;
+ os-ocl-nofeature-ha)
+ # os-ocl-nofeature-ha scenario supports liberty only
+ export COMPASS_OS_VERSION=centos7
+ export COMPASS_OPENSTACK_VERSION=liberty
+ ;;
+ *)
+ # setup for testing mitaka by default
+ export COMPASS_OS_VERSION=${COMPASS_OS_VERSION:-centos7}
+ export COMPASS_OPENSTACK_VERSION=${COMPASS_OPENSTACK_VERSION:-mitaka}
+ ;;
+ esac
+
+ else
+ case $DEPLOY_SCENARIO in
+ os-nosdn-nofeature-ha)
+ # temporarily setup for testing newton
+ export COMPASS_OS_VERSION=xenial
+ export COMPASS_OPENSTACK_VERSION=newton_xenial
+ ;;
+ os-odl_2-nofeature-ha)
+ # temporarily setup for testing newton
+ export COMPASS_OS_VERSION=xenial
+ export COMPASS_OPENSTACK_VERSION=newton_xenial
+ ;;
+ os-odl_l2-moon-ha)
+ # os-odl_l2-moon-ha scenario supports xenial mitaka only
+ export COMPASS_OS_VERSION=xenial
+ export COMPASS_OPENSTACK_VERSION=mitaka_xenial
+ ;;
+ os-ocl-nofeature-ha)
+ # os-ocl-nofeature-ha scenario supports liberty only
+ export COMPASS_OS_VERSION=trusty
+ export COMPASS_OPENSTACK_VERSION=liberty
+ ;;
+ *)
+ # setup for testing mitaka by default
+ export COMPASS_OS_VERSION=${COMPASS_OS_VERSION:-trusty}
+ export COMPASS_OPENSTACK_VERSION=${COMPASS_OPENSTACK_VERSION:-mitaka}
+ ;;
+ esac
+ fi
+fi
+
+# these variables used by compass
+export OS_VERSION=$COMPASS_OS_VERSION
+export OPENSTACK_VERSION=$COMPASS_OPENSTACK_VERSION
+
+set +x
+echo "#############################################"
+echo 'DEPLOY_SCENARIO='$DEPLOY_SCENARIO
+echo 'OS_VERSION='$OS_VERSION
+echo 'OPENSTACK_VERSION='$OPENSTACK_VERSION
+echo "#############################################"
+set -x
+
+$CI_DIR/../deploy.sh
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/ceph-osd/tasks/install_osd.yml b/deploy/adapters/ansible/openstack_mitaka/roles/ceph-osd/tasks/install_osd.yml
index 0e476085..35e84cf8 100644
--- a/deploy/adapters/ansible/openstack_mitaka/roles/ceph-osd/tasks/install_osd.yml
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/ceph-osd/tasks/install_osd.yml
@@ -11,6 +11,11 @@
- name: create osd lv and mount it on /var/local/osd
script: create_osd.sh
+- name: fetch osd keyring from ceph_adm
+ fetch: src="/var/lib/ceph/bootstrap-osd/ceph.keyring" dest="/tmp/ceph.osd.keyring" flat=yes
+ delegate_to: "{{ public_vip.ip }}"
+ when: compute_expansion
+
- name: copy osd keyring
copy: src="/tmp/ceph.osd.keyring" dest="/var/lib/ceph/bootstrap-osd/ceph.keyring"
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/tacker/files/tacker.conf b/deploy/adapters/ansible/openstack_mitaka/roles/tacker/files/tacker.conf
new file mode 100644
index 00000000..0c90dcb9
--- /dev/null
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/tacker/files/tacker.conf
@@ -0,0 +1,36 @@
+description "OpenStack Tacker Server"
+author "Yifei Xue <xueyifei@huawei.com>"
+
+start on runlevel [2345]
+stop on runlevel [!2345]
+
+chdir /var/run
+
+respawn
+respawn limit 20 5
+limit nofile 65535 65535
+
+pre-start script
+ for i in lock run log lib ; do
+ mkdir -p /var/$i/tacker
+ chown root /var/$i/tacker
+ done
+end script
+
+script
+ [ -x "/usr/local/bin/tacker-server" ] || exit 0
+ DAEMON_ARGS=""
+ CONFIG_FILE="/usr/local/etc/tacker/tacker.conf"
+ USE_SYSLOG=""
+ USE_LOGFILE=""
+ NO_OPENSTACK_CONFIG_FILE_DAEMON_ARG=""
+ [ -r /etc/default/openstack ] && . /etc/default/openstack
+ [ -r /etc/default/$UPSTART_JOB ] && . /etc/default/$UPSTART_JOB
+ [ "x$USE_SYSLOG" = "xyes" ] && DAEMON_ARGS="$DAEMON_ARGS --use-syslog"
+ [ "x$USE_LOGFILE" != "xno" ] && DAEMON_ARGS="$DAEMON_ARGS --log-file=/var/log/tacker/tacker.log"
+ [ -z "$NO_OPENSTACK_CONFIG_FILE_DAEMON_ARG" ] && DAEMON_ARGS="$DAEMON_ARGS --config-file=$CONFIG_FILE"
+
+ exec start-stop-daemon --start --chdir /var/lib/tacker \
+ --chuid root:root --make-pidfile --pidfile /var/run/tacker/tacker.pid \
+ --exec /usr/local/bin/tacker-server -- ${DAEMON_ARGS}
+end script
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/tacker/tasks/tacker_controller.yml b/deploy/adapters/ansible/openstack_mitaka/roles/tacker/tasks/tacker_controller.yml
new file mode 100755
index 00000000..cd3b19e8
--- /dev/null
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/tacker/tasks/tacker_controller.yml
@@ -0,0 +1,215 @@
+##############################################################################
+# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+- name: get http server
+ shell: awk -F'=' '/compass_server/ {print $2}' /etc/compass.conf
+ register: http_server
+
+- name: creat tacker_home, tacker_client_home, tacker_horizon_home
+ shell: >
+ mkdir -p /opt/tacker
+ mkdir -p /opt/tacker_client
+ mkdir -p /opt/tacker_horizon
+
+- name: download tacker package
+ get_url: url="http://{{ http_server.stdout_lines[0] }}/packages/tacker/{{ tacker_pkg_name }}" dest=/opt/{{ tacker_pkg_name }}
+
+- name: download tacker_client package
+ get_url: url="http://{{ http_server.stdout_lines[0] }}/packages/tacker/{{ tacker_client_pkg_name }}" dest=/opt/{{ tacker_client_pkg_name }}
+
+- name: download tacker_horizon package
+ get_url: url="http://{{ http_server.stdout_lines[0] }}/packages/tacker/{{ tacker_horizon_pkg_name }}" dest=/opt/{{ tacker_horizon_pkg_name }}
+
+- name: extract tacker package
+ command: su -s /bin/sh -c "tar xzf /opt/{{ tacker_pkg_name }} -C {{ tacker_home }} --strip-components 1 --no-overwrite-dir -k --skip-old-files"
+
+- name: extract tacker_client package
+ command: su -s /bin/sh -c "tar xzf /opt/{{ tacker_client_pkg_name }} -C {{ tacker_client_home }} --strip-components 1 --no-overwrite-dir -k --skip-old-files"
+
+- name: extract tacker_horizon package
+ command: su -s /bin/sh -c "tar xzf /opt/{{ tacker_horizon_pkg_name }} -C {{ tacker_horizon_home }} --strip-components 1 --no-overwrite-dir -k --skip-old-files"
+
+- name: edit ml2_conf.ini
+ shell: crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 extension_drivers port_security;
+
+- name: Restart neutron-server
+ service: name=neutron-server state=restarted
+
+- name: "create haproxy configuration for tacker"
+ template:
+ src: "haproxy-tacker-cfg.j2"
+ dest: "/tmp/haproxy-tacker.cfg"
+
+- name: get the current haproxy configuration
+ shell: cat /etc/haproxy/haproxy.cfg
+ register: ha_cfg
+
+- name: "combination of the haproxy configuration"
+ shell: "cat /tmp/haproxy-tacker.cfg >> /etc/haproxy/haproxy.cfg"
+ when: ha_cfg.stdout.find('8888') == -1
+
+- name: "delete temporary configuration file"
+ file:
+ dest: "/tmp/haproxy-tacker.cfg"
+ state: "absent"
+
+- name: "restart haproxy"
+ service:
+ name: "haproxy"
+ state: "restarted"
+
+- name: drop and recreate tacker database
+ shell: mysql -e "drop database if exists tacker;";
+ mysql -e "create database tacker character set utf8;";
+ mysql -e "grant all on tacker.* to 'tacker'@'%' identified by 'TACKER_DBPASS';";
+ when: inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: get the openstack user info
+ shell: . /opt/admin-openrc.sh; openstack user list
+ register: user_info
+
+- name: get the openstack service info
+ shell: . /opt/admin-openrc.sh; openstack service list
+ register: service_info
+
+- name: get the openstack endpoint info
+ shell: . /opt/admin-openrc.sh; openstack endpoint list
+ register: endpoint_info
+
+- name: delete the existed tacker endpoint
+ shell: . /opt/admin-openrc.sh; openstack endpoint delete $(openstack endpoint list | grep tacker | awk '{print $2}')
+ when: endpoint_info.stdout.find('tacker') != -1 and inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: delete the existed tacker service
+ shell: . /opt/admin-openrc.sh; openstack service delete tacker
+ when: service_info.stdout.find('tacker') != -1 and inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: delete the existed tacker user
+ shell: . /opt/admin-openrc.sh; openstack user delete tacker
+ when: user_info.stdout.find('tacker') != -1 and inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: create tacker user with admin privileges
+ shell: . /opt/admin-openrc.sh; openstack user create --password console tacker; openstack role add --project service --user tacker admin;
+ when: inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: creat tacker service
+ shell: >
+ . /opt/admin-openrc.sh; openstack service create --name tacker --description "Tacker Project" nfv-orchestration
+ when: inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: provide an endpoint to tacker service
+ shell: >
+ . /opt/admin-openrc.sh; openstack endpoint create --region RegionOne \
+ --publicurl 'http://{{ public_vip.ip }}:8888/' \
+ --adminurl 'http://{{ internal_vip.ip }}:8888/' \
+ --internalurl 'http://{{ internal_vip.ip }}:8888/' tacker
+ when: inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: install pip package
+ pip: name=Babel state=present version=2.3.4
+
+- name: install pip packages
+ shell: >
+ pip install tosca-parser heat-translator oslosphinx;
+
+- name: install tacker
+ shell: >
+ . /opt/admin-openrc.sh; cd {{ tacker_home }}; python setup.py install
+
+- name: create 'tacker' directory in '/var/cache', set ownership and permissions
+ shell: >
+ mkdir -p /var/cache/tacker
+# sudo chown <LOGIN_USER>:root /var/cache/tacker
+# chmod 700 /var/cache/tacker
+
+- name: create 'tacker' directory in '/var/log'
+ shell: mkdir -p /var/log/tacker
+
+- name: copy tacker configs
+ template: src={{ item.src }} dest=/opt/os_templates
+ with_items: "{{ tacker_configs_templates }}"
+
+- name: edit tacker configuration file
+ shell: crudini --merge /usr/local/etc/tacker/tacker.conf < /opt/os_templates/tacker.j2
+
+- name: populate tacker database
+ shell: >
+ . /opt/admin-openrc.sh; /usr/local/bin/tacker-db-manage --config-file /usr/local/etc/tacker/tacker.conf upgrade head
+ when: inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: install tacker client
+ shell: >
+ . /opt/admin-openrc.sh; cd {{ tacker_client_home }}; python setup.py install
+
+- name: install tacker horizon
+ shell: >
+ . /opt/admin-openrc.sh; cd {{ tacker_horizon_home }}; python setup.py install
+
+- name: enable tacker horizon in dashboard
+ shell: >
+ cp {{ tacker_horizon_home }}/openstack_dashboard_extensions/* /usr/share/openstack-dashboard/openstack_dashboard/enabled/
+
+- name: restart apache server
+ shell: service apache2 restart
+
+- name: create tacker service
+ copy: src=tacker.conf dest=/etc/init
+
+- name: create tacker service work dir
+ file: path=/var/lib/tacker state=directory
+
+- name: link the tacker service
+ file:
+ src: /etc/init/tacker.conf
+ dest: /etc/init.d/tacker
+ state: link
+
+- name: start tacker service
+ shell: service tacker start
+
+- name: create tackerc file
+ template: src=tackerc.sh dest=/opt/tackerc.sh mode=777
+
+- name: get the nfv_user info
+ shell: . /opt/tackerc.sh; openstack user list
+ register: nfvuser_info
+
+- name: delete the existed nfv user
+ shell: . /opt/tackerc.sh; openstack user delete nfv_user
+ when: nfvuser_info.stdout.find('nfv') != -1 and inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: get the openstack project info
+ shell: . /opt/tackerc.sh; openstack project list
+ register: nfvproject_info
+
+- name: delete the existed nfv project
+ shell: . /opt/tackerc.sh; openstack project delete $(openstack project list | grep nfv | awk '{print $2}')
+ when: nfvproject_info.stdout.find('nfv') != -1 and inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: create an nfv project
+ shell: . /opt/tackerc.sh; openstack project create --description "NFV Project" nfv
+ when: inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: create nfv user with admin privileges
+ shell: . /opt/tackerc.sh; openstack user create --password console nfv_user; openstack role add --project nfv --user nfv_user admin;
+ when: inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: create config.yml
+ template: src=config.yaml dest=/opt/config.yaml
+
+- name: check if tacker running
+ shell: . /opt/tackerc.sh; while (!(tacker ext-list)); do sleep 30; done
+
+- name: register VIM to tacker
+ shell: . /opt/tackerc.sh; tacker vim-register --config-file /opt/config.yaml --description "OpenStack" --name VIM0
+ when: inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: restart tacker service
+ shell: service tacker stop; service tacker start
+
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/tacker/templates/config.yaml b/deploy/adapters/ansible/openstack_mitaka/roles/tacker/templates/config.yaml
new file mode 100644
index 00000000..8f73e907
--- /dev/null
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/tacker/templates/config.yaml
@@ -0,0 +1,4 @@
+auth_url: 'http://{{ public_vip.ip }}:5000/v2.0'
+username: 'nfv_user'
+password: 'console'
+project_name: 'nfv'
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/tacker/templates/tackerc.sh b/deploy/adapters/ansible/openstack_mitaka/roles/tacker/templates/tackerc.sh
new file mode 100644
index 00000000..c673e7f1
--- /dev/null
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/tacker/templates/tackerc.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+export LC_ALL=C
+export OS_NO_CACHE=true
+export OS_TENANT_NAME=service
+export OS_PROJECT_NAME=service
+export OS_USERNAME=tacker
+export OS_PASSWORD=console
+export OS_AUTH_URL=http://{{ internal_vip.ip }}:5000/v2.0
+export OS_DEFAULT_DOMAIN=default
+export OS_AUTH_STRATEGY=keystone
+export OS_REGION_NAME=RegionOne
+export TACKER_ENDPOINT_TYPE=internalurl
diff --git a/deploy/adapters/ansible/openstack_mitaka_xenial/roles/ceph-osd/tasks/install_osd.yml b/deploy/adapters/ansible/openstack_mitaka_xenial/roles/ceph-osd/tasks/install_osd.yml
index 16f261ef..363e5e6d 100644
--- a/deploy/adapters/ansible/openstack_mitaka_xenial/roles/ceph-osd/tasks/install_osd.yml
+++ b/deploy/adapters/ansible/openstack_mitaka_xenial/roles/ceph-osd/tasks/install_osd.yml
@@ -11,6 +11,11 @@
- name: create osd lv and mount it on /var/local/osd
script: create_osd.sh
+- name: fetch osd keyring from ceph_adm
+ fetch: src="/var/lib/ceph/bootstrap-osd/ceph.keyring" dest="/tmp/ceph.osd.keyring" flat=yes
+ delegate_to: "{{ public_vip.ip }}"
+ when: compute_expansion
+
- name: copy osd keyring
copy: src="/tmp/ceph.osd.keyring" dest="/var/lib/ceph/bootstrap-osd/ceph.keyring"
diff --git a/deploy/adapters/ansible/openstack_mitaka_xenial/roles/dashboard/templates/openstack-dashboard.conf.j2 b/deploy/adapters/ansible/openstack_mitaka_xenial/roles/dashboard/templates/openstack-dashboard.conf.j2
index 89a70686..664af687 100755
--- a/deploy/adapters/ansible/openstack_mitaka_xenial/roles/dashboard/templates/openstack-dashboard.conf.j2
+++ b/deploy/adapters/ansible/openstack_mitaka_xenial/roles/dashboard/templates/openstack-dashboard.conf.j2
@@ -1,6 +1,6 @@
{% set work_threads = (ansible_processor_vcpus + 1) // 2 %}
{% if work_threads > 10 %}
- set work_threads = 10
+{% set work_threads = 10 %}
{% endif %}
<VirtualHost {{ internal_ip }}:80>
diff --git a/deploy/adapters/ansible/openstack_mitaka_xenial/roles/keystone/templates/wsgi-keystone.conf.j2 b/deploy/adapters/ansible/openstack_mitaka_xenial/roles/keystone/templates/wsgi-keystone.conf.j2
index f5f9d339..55c89839 100644
--- a/deploy/adapters/ansible/openstack_mitaka_xenial/roles/keystone/templates/wsgi-keystone.conf.j2
+++ b/deploy/adapters/ansible/openstack_mitaka_xenial/roles/keystone/templates/wsgi-keystone.conf.j2
@@ -1,6 +1,6 @@
{% set work_threads = (ansible_processor_vcpus + 1) // 2 %}
{% if work_threads > 10 %}
- set work_threads = 10
+{% set work_threads = 10 %}
{% endif %}
<VirtualHost {{ internal_ip }}:5000>
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/HA-ansible-multinodes.yml b/deploy/adapters/ansible/openstack_newton_xenial/HA-ansible-multinodes.yml
index 25847ce5..236035e0 100644
--- a/deploy/adapters/ansible/openstack_newton_xenial/HA-ansible-multinodes.yml
+++ b/deploy/adapters/ansible/openstack_newton_xenial/HA-ansible-multinodes.yml
@@ -74,7 +74,7 @@
- ceilometer_controller
- dashboard
- heat
-# - aodh
+ - aodh
- hosts: all
remote_user: root
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/tasks/aodh_install.yml b/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/tasks/aodh_install.yml
index eb51fbea..d8a82270 100644
--- a/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/tasks/aodh_install.yml
+++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/tasks/aodh_install.yml
@@ -14,12 +14,9 @@
with_items: packages | union(packages_noarch)
- name: update aodh conf
- template: src={{ item }} dest=/etc/aodh/aodh.conf
- backup=yes
+ template: src={{ item }} dest=/etc/aodh/aodh.conf backup=yes
with_items:
- aodh.conf.j2
-# - api_paste.ini.j2
-# - policy.json.j2
notify:
- restart aodh services
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/templates/aodh.conf.j2 b/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/templates/aodh.conf.j2
index b580d78c..d9eb0599 100644
--- a/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/templates/aodh.conf.j2
+++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/templates/aodh.conf.j2
@@ -5,17 +5,16 @@
{% set memcached_servers = memcached_servers|join(',') %}
[DEFAULT]
+transport_url = rabbit://{{ RABBIT_USER }}:{{ RABBIT_PASS }}@{{ rabbit_host }}
+rpc_backend = rabbit
+
bind_host = {{ internal_ip }}
bind_port = 8042
-rpc_backend = rabbit
auth_strategy = keystone
debug = True
-[oslo_messaging_rabbit]
-rabbit_hosts = {{ internal_vip.ip }}
-rabbit_userid = {{ RABBIT_USER }}
-rabbit_password = {{ RABBIT_PASS }}
-#rabbit_use_ssl = false
+[api]
+host = {{ internal_ip }}
[database]
connection = mysql://aodh:{{ AODH_DBPASS }}@{{ db_host }}/aodh
@@ -23,25 +22,27 @@ connection = mysql://aodh:{{ AODH_DBPASS }}@{{ db_host }}/aodh
[keystone_authtoken]
auth_uri = http://{{ internal_vip.ip }}:5000
auth_url = http://{{ internal_vip.ip }}:35357
+memcached_servers = {{ memcached_servers }}
+auth_type = password
+project_domain_name = default
+user_domain_name = default
+project_name = service
+username = aodh
+password = {{ AODH_PASS }}
+
identity_uri = http://{{ internal_vip.ip }}:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
-project_name = service
-username = aodh
-password = {{ AODH_PASS }}
-memcached_servers = {{ memcached_servers }}
token_cache_time = 300
revocation_cache_time = 60
-[service_credentials]
-os_auth_url = http://{{ internal_vip.ip }}:5000/v3
-os_username = aodh
-os_tenant_name = service
-os_password = {{ AODH_PASS }}
-os_endpoint_type = internalURL
-os_region_name = RegionOne
+[oslo_messaging_rabbit]
+rabbit_hosts = {{ internal_vip.ip }}
+rabbit_userid = {{ RABBIT_USER }}
+rabbit_password = {{ RABBIT_PASS }}
+[service_credentials]
auth_type = password
auth_url = http://{{ internal_vip.ip }}:5000/v3
project_domain_name = default
@@ -52,5 +53,4 @@ password = {{ AODH_PASS }}
interface = internalURL
region_name = RegionOne
-[api]
-host = {{ internal_ip }}
+endpoint_type = internalURL
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/templates/api_paste.ini.j2 b/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/templates/api_paste.ini.j2
deleted file mode 100644
index 151789c4..00000000
--- a/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/templates/api_paste.ini.j2
+++ /dev/null
@@ -1,22 +0,0 @@
-# aodh API WSGI Pipeline
-# Define the filters that make up the pipeline for processing WSGI requests
-# Note: This pipeline is PasteDeploy's term rather than aodh's pipeline
-# used for processing samples
-
-# Remove authtoken from the pipeline if you don't want to use keystone authentication
-[pipeline:main]
-pipeline = cors request_id authtoken api-server
-
-[app:api-server]
-paste.app_factory = aodh.api.app:app_factory
-
-[filter:authtoken]
-paste.filter_factory = keystonemiddleware.auth_token:filter_factory
-oslo_config_project = aodh
-
-[filter:request_id]
-paste.filter_factory = oslo_middleware:RequestId.factory
-
-[filter:cors]
-paste.filter_factory = oslo_middleware.cors:filter_factory
-oslo_config_project = aodh
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/templates/policy.json.j2 b/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/templates/policy.json.j2
deleted file mode 100644
index 4fd873e9..00000000
--- a/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/templates/policy.json.j2
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "context_is_admin": "role:admin",
- "segregation": "rule:context_is_admin",
- "admin_or_owner": "rule:context_is_admin or project_id:%(project_id)s",
- "default": "rule:admin_or_owner",
-
- "telemetry:get_alarm": "rule:admin_or_owner",
- "telemetry:get_alarms": "rule:admin_or_owner",
- "telemetry:query_alarm": "rule:admin_or_owner",
-
- "telemetry:create_alarm": "",
- "telemetry:change_alarm": "rule:admin_or_owner",
- "telemetry:delete_alarm": "rule:admin_or_owner",
-
- "telemetry:get_alarm_state": "rule:admin_or_owner",
- "telemetry:change_alarm_state": "rule:admin_or_owner",
-
- "telemetry:alarm_history": "rule:admin_or_owner",
- "telemetry:query_alarm_history": "rule:admin_or_owner"
-}
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/vars/Debian.yml b/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/vars/Debian.yml
index bdf4655e..9bf4ad7a 100644
--- a/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/vars/Debian.yml
+++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/vars/Debian.yml
@@ -13,7 +13,7 @@ packages:
- aodh-notifier
- aodh-listener
- aodh-expirer
- - python-ceilometerclient
+ - python-aodhclient
services:
- aodh-api
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/vars/RedHat.yml b/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/vars/RedHat.yml
index a0381c6b..3d25bd6c 100644
--- a/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/vars/RedHat.yml
+++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/aodh/vars/RedHat.yml
@@ -13,7 +13,7 @@ packages:
- openstack-aodh-notifier
- openstack-aodh-listener
- openstack-aodh-expirer
- - python-ceilometerclient
+ - python-aodhclient
services:
- openstack-aodh-api
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/ceilometer_compute/templates/ceilometer.conf.j2 b/deploy/adapters/ansible/openstack_newton_xenial/roles/ceilometer_compute/templates/ceilometer.conf.j2
index f388df41..bffd6068 100644
--- a/deploy/adapters/ansible/openstack_newton_xenial/roles/ceilometer_compute/templates/ceilometer.conf.j2
+++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/ceilometer_compute/templates/ceilometer.conf.j2
@@ -1,9 +1,3 @@
-{% set memcached_servers = [] %}
-{% for host in haproxy_hosts.values() %}
-{% set _ = memcached_servers.append('%s:11211'% host) %}
-{% endfor %}
-{% set memcached_servers = memcached_servers|join(',') %}
-
[DEFAULT]
verbose = True
rpc_backend = rabbit
@@ -15,7 +9,6 @@ metering_secret = {{ metering_secret }}
[keystone_authtoken]
auth_uri = http://{{ internal_vip.ip }}:5000
auth_url = http://{{ internal_vip.ip }}:35357
-memcached_servers = {{ memcached_servers }}
auth_type = password
project_domain_name = default
user_domain_name = default
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/ceilometer_controller/templates/wsgi-ceilometer.conf.j2 b/deploy/adapters/ansible/openstack_newton_xenial/roles/ceilometer_controller/templates/wsgi-ceilometer.conf.j2
index a6fd6840..9909f800 100644
--- a/deploy/adapters/ansible/openstack_newton_xenial/roles/ceilometer_controller/templates/wsgi-ceilometer.conf.j2
+++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/ceilometer_controller/templates/wsgi-ceilometer.conf.j2
@@ -1,6 +1,6 @@
{% set work_threads = (ansible_processor_vcpus + 1) // 2 %}
{% if work_threads > 10 %}
- set work_threads = 10
+{% set work_threads = 10 %}
{% endif %}
<VirtualHost {{ internal_ip }}:8777>
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/ceph-osd/tasks/install_osd.yml b/deploy/adapters/ansible/openstack_newton_xenial/roles/ceph-osd/tasks/install_osd.yml
index 16f261ef..363e5e6d 100644
--- a/deploy/adapters/ansible/openstack_newton_xenial/roles/ceph-osd/tasks/install_osd.yml
+++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/ceph-osd/tasks/install_osd.yml
@@ -11,6 +11,11 @@
- name: create osd lv and mount it on /var/local/osd
script: create_osd.sh
+- name: fetch osd keyring from ceph_adm
+ fetch: src="/var/lib/ceph/bootstrap-osd/ceph.keyring" dest="/tmp/ceph.osd.keyring" flat=yes
+ delegate_to: "{{ public_vip.ip }}"
+ when: compute_expansion
+
- name: copy osd keyring
copy: src="/tmp/ceph.osd.keyring" dest="/var/lib/ceph/bootstrap-osd/ceph.keyring"
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/cinder-volume/templates/cinder.conf b/deploy/adapters/ansible/openstack_newton_xenial/roles/cinder-volume/templates/cinder.conf
index e4f98e82..e7946b5c 100644
--- a/deploy/adapters/ansible/openstack_newton_xenial/roles/cinder-volume/templates/cinder.conf
+++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/cinder-volume/templates/cinder.conf
@@ -1,9 +1,3 @@
-{% set memcached_servers = [] %}
-{% for host in haproxy_hosts.values() %}
-{% set _ = memcached_servers.append('%s:11211'% host) %}
-{% endfor %}
-{% set memcached_servers = memcached_servers|join(',') %}
-
[DEFAULT]
rootwrap_config = /etc/cinder/rootwrap.conf
api_paste_confg = /etc/cinder/api-paste.ini
@@ -59,7 +53,6 @@ idle_timeout = 30
[keystone_authtoken]
auth_uri = http://{{ internal_vip.ip }}:5000
auth_url = http://{{ internal_vip.ip }}:35357
-memcached_servers = {{ memcached_servers }}
auth_type = password
project_domain_name = default
user_domain_name = default
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/dashboard/templates/openstack-dashboard.conf.j2 b/deploy/adapters/ansible/openstack_newton_xenial/roles/dashboard/templates/openstack-dashboard.conf.j2
index 89a70686..664af687 100755
--- a/deploy/adapters/ansible/openstack_newton_xenial/roles/dashboard/templates/openstack-dashboard.conf.j2
+++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/dashboard/templates/openstack-dashboard.conf.j2
@@ -1,6 +1,6 @@
{% set work_threads = (ansible_processor_vcpus + 1) // 2 %}
{% if work_threads > 10 %}
- set work_threads = 10
+{% set work_threads = 10 %}
{% endif %}
<VirtualHost {{ internal_ip }}:80>
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/keystone/tasks/keystone_config.yml b/deploy/adapters/ansible/openstack_newton_xenial/roles/keystone/tasks/keystone_config.yml
index 3fea6e28..ea211470 100644
--- a/deploy/adapters/ansible/openstack_newton_xenial/roles/keystone/tasks/keystone_config.yml
+++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/keystone/tasks/keystone_config.yml
@@ -92,10 +92,5 @@
- meta: flush_handlers
- name: wait for keystone ready
- wait_for: port=35357 delay=10 timeout=60 host={{ internal_ip }}
+ wait_for: port=35357 delay=15 timeout=60 host={{ internal_ip }}
-- name: cron job to purge expired tokens hourly
- cron:
- name: 'purge expired tokens'
- special_time: hourly
- job: '/usr/bin/keystone-manage token_flush > /var/log/keystone/keystone-tokenflush.log 2>&1'
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/keystone/templates/wsgi-keystone.conf.j2 b/deploy/adapters/ansible/openstack_newton_xenial/roles/keystone/templates/wsgi-keystone.conf.j2
index f5f9d339..55c89839 100644
--- a/deploy/adapters/ansible/openstack_newton_xenial/roles/keystone/templates/wsgi-keystone.conf.j2
+++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/keystone/templates/wsgi-keystone.conf.j2
@@ -1,6 +1,6 @@
{% set work_threads = (ansible_processor_vcpus + 1) // 2 %}
{% if work_threads > 10 %}
- set work_threads = 10
+{% set work_threads = 10 %}
{% endif %}
<VirtualHost {{ internal_ip }}:5000>
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/neutron-compute/tasks/main.yml b/deploy/adapters/ansible/openstack_newton_xenial/roles/neutron-compute/tasks/main.yml
index fd3e51d3..375e325d 100644
--- a/deploy/adapters/ansible/openstack_newton_xenial/roles/neutron-compute/tasks/main.yml
+++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/neutron-compute/tasks/main.yml
@@ -63,7 +63,7 @@
file: src=/etc/neutron/plugins/ml2/ml2_conf.ini dest=/etc/neutron/plugin.ini state=link
- name: config neutron
- template: src=templates/neutron.conf
+ template: src=neutron.conf
dest=/etc/neutron/neutron.conf backup=yes
notify:
- restart neutron compute service
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/neutron-compute/templates/neutron.conf b/deploy/adapters/ansible/openstack_newton_xenial/roles/neutron-compute/templates/neutron.conf
new file mode 100644
index 00000000..a676e951
--- /dev/null
+++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/neutron-compute/templates/neutron.conf
@@ -0,0 +1,105 @@
+[DEFAULT]
+verbose = {{ VERBOSE }}
+debug = {{ VERBOSE }}
+state_path = /var/lib/neutron
+lock_path = $state_path/lock
+notify_nova_on_port_status_changes = True
+notify_nova_on_port_data_changes = True
+log_dir = /var/log/neutron
+bind_host = {{ network_server_host }}
+bind_port = 9696
+core_plugin = ml2
+service_plugins = router
+api_paste_config = api-paste.ini
+auth_strategy = keystone
+dhcp_lease_duration = 86400
+allow_overlapping_ips = True
+rpc_backend = rabbit
+rpc_thread_pool_size = 240
+rpc_conn_pool_size = 100
+rpc_response_timeout = 300
+rpc_cast_timeout = 300
+notification_driver = neutron.openstack.common.notifier.rpc_notifier
+default_notification_level = INFO
+notification_topics = notifications
+agent_down_time = 75
+network_scheduler_driver = neutron.scheduler.dhcp_agent_scheduler.ChanceScheduler
+router_scheduler_driver = neutron.scheduler.l3_agent_scheduler.ChanceScheduler
+api_workers = 8
+rpc_workers = 8
+notify_nova_on_port_status_changes = True
+notify_nova_on_port_data_changes = True
+nova_url = http://{{ internal_vip.ip }}:8774/v3
+nova_region_name = RegionOne
+nova_admin_username = nova
+nova_admin_password = {{ NOVA_PASS }}
+nova_admin_auth_url = http://{{ internal_vip.ip }}:35357/v3
+send_events_interval = 2
+
+[quotas]
+quota_driver = neutron.db.quota_db.DbQuotaDriver
+quota_items = network,subnet,port
+default_quota = -1
+quota_network = 100
+quota_subnet = 100
+quota_port = 8000
+quota_security_group = 1000
+quota_security_group_rule = 1000
+
+[agent]
+root_helper = "sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf"
+report_interval = 30
+
+[keystone_authtoken]
+auth_uri = http://{{ internal_vip.ip }}:5000
+auth_url = http://{{ internal_vip.ip }}:35357
+auth_type = password
+project_domain_name = default
+user_domain_name = default
+project_name = service
+username = neutron
+password = {{ NEUTRON_PASS }}
+
+identity_uri = http://{{ internal_vip.ip }}:35357
+admin_tenant_name = service
+admin_user = neutron
+admin_password = {{ NEUTRON_PASS }}
+signing_dir = $state_path/keystone-signing
+
+[database]
+connection = mysql://neutron:{{ NEUTRON_DBPASS }}@{{ db_host }}/neutron
+slave_connection =
+max_retries = 10
+retry_interval = 10
+min_pool_size = 1
+max_pool_size = 100
+idle_timeout = 30
+use_db_reconnect = True
+max_overflow = 100
+connection_debug = 0
+connection_trace = False
+pool_timeout = 10
+
+[service_providers]
+service_provider=FIREWALL:Iptables:neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewllDriver:default
+
+{% if enable_fwaas %}
+[fwaas]
+driver = neutron_fwaas.services.firewall.drivers.linux.iptables_fwaas.IptablesFwaasDriver
+enabled = True
+{% endif %}
+
+[nova]
+auth_url = http://{{ internal_vip.ip }}:35357
+auth_type = password
+project_domain_name = default
+user_domain_name = default
+project_name = service
+username = nova
+password = {{ NOVA_PASS }}
+
+[oslo_messaging_rabbit]
+rabbit_host = {{ rabbit_host }}
+rabbit_password = {{ RABBIT_PASS }}
+rabbit_port = 5672
+rabbit_userid = {{ RABBIT_USER }}
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/nova-compute/tasks/main.yml b/deploy/adapters/ansible/openstack_newton_xenial/roles/nova-compute/tasks/main.yml
index 7bb4f347..16315b36 100644
--- a/deploy/adapters/ansible/openstack_newton_xenial/roles/nova-compute/tasks/main.yml
+++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/nova-compute/tasks/main.yml
@@ -30,13 +30,6 @@
state=absent
when: ansible_os_family == "Debian"
-- name: update nova-compute conf
- template: src=templates/{{ item }} dest=/etc/nova/{{ item }}
- with_items:
- - nova.conf
- notify:
- - restart nova-compute services
-
- name: get number of cpu support virtualization
shell: egrep -c '(vmx|svm)' /proc/cpuinfo
register: kvm_cpu_num
@@ -44,6 +37,7 @@
- name: update nova-compute conf
template: src={{ item }} dest=/etc/nova/{{ item }}
with_items:
+ - nova.conf
- nova-compute.conf
notify:
- restart nova-compute services
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/nova-compute/templates/nova.conf b/deploy/adapters/ansible/openstack_newton_xenial/roles/nova-compute/templates/nova.conf
index 5f8fb887..8d7e9a5f 100644
--- a/deploy/adapters/ansible/openstack_newton_xenial/roles/nova-compute/templates/nova.conf
+++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/nova-compute/templates/nova.conf
@@ -1,10 +1,10 @@
-{% set memcached_servers = [] %}
-{% for host in haproxy_hosts.values() %}
-{% set _ = memcached_servers.append('%s:11211'% host) %}
-{% endfor %}
-{% set memcached_servers = memcached_servers|join(',') %}
-
[DEFAULT]
+transport_url = rabbit://{{ RABBIT_USER }}:{{ RABBIT_PASS }}@{{ rabbit_host }}
+auth_strategy = keystone
+my_ip = {{ internal_ip }}
+use_neutron = True
+firewall_driver = nova.virt.firewall.NoopFirewallDriver
+
dhcpbridge_flagfile=/etc/nova/nova.conf
dhcpbridge=/usr/bin/nova-dhcpbridge
log-dir=/var/log/nova
@@ -13,25 +13,15 @@ force_dhcp_release=True
verbose={{ VERBOSE }}
ec2_private_dns_show_ip=True
enabled_apis=osapi_compute,metadata
-
-auth_strategy = keystone
-my_ip = {{ internal_ip }}
-use_neutron = True
-firewall_driver = nova.virt.firewall.NoopFirewallDriver
-transport_url = rabbit://openstack:{{ RABBIT_PASS }}@{{ rabbit_host }}
default_floating_pool={{ public_net_info.network }}
metadata_listen={{ internal_ip }}
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
-
iscsi_helper=tgtadm
connection_type=libvirt
root_helper=sudo nova-rootwrap /etc/nova/rootwrap.conf
debug={{ DEBUG }}
volumes_path=/var/lib/nova/volumes
rpc_backend = rabbit
-rabbit_host = {{ rabbit_host }}
-rabbit_userid = {{ RABBIT_USER }}
-rabbit_password = {{ RABBIT_PASS }}
osapi_compute_listen={{ internal_ip }}
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
@@ -40,34 +30,26 @@ instance_usage_audit_period = hour
notify_on_state_change = vm_and_task_state
notification_driver = nova.openstack.common.notifier.rpc_notifier
notification_driver = ceilometer.compute.nova_notifier
-memcached_servers = {{ memcached_servers }}
-[database]
-# The SQLAlchemy connection string used to connect to the database
-connection = mysql://nova:{{ NOVA_DBPASS }}@{{ db_host }}/nova
+[api_database]
+connection = mysql://nova:{{ NOVA_DBPASS }}@{{ db_host }}/nova_api
idle_timeout = 30
pool_timeout = 10
use_db_reconnect = True
-[api_database]
-connection = mysql://nova:{{ NOVA_DBPASS }}@{{ db_host }}/nova_api
+[database]
+connection = mysql://nova:{{ NOVA_DBPASS }}@{{ db_host }}/nova
idle_timeout = 30
pool_timeout = 10
use_db_reconnect = True
-[oslo_concurrency]
-lock_path=/var/lib/nova/tmp
-
-[libvirt]
-use_virtio_for_bridges=True
-
-[wsgi]
-api_paste_config=/etc/nova/api-paste.ini
+[glance]
+api_servers = http://{{ internal_vip.ip }}:9292
+host = {{ internal_vip.ip }}
[keystone_authtoken]
auth_uri = http://{{ internal_vip.ip }}:5000
auth_url = http://{{ internal_vip.ip }}:35357
-memcached_servers = {{ memcached_servers }}
auth_type = password
project_domain_name = default
user_domain_name = default
@@ -80,17 +62,8 @@ admin_tenant_name = service
admin_user = nova
admin_password = {{ NOVA_PASS }}
-[vnc]
-enabled = True
-vncserver_listen = {{ internal_ip }}
-vncserver_proxyclient_address = {{ internal_ip }}
-novncproxy_base_url = http://{{ public_vip.ip }}:6080/vnc_auto.html
-novncproxy_host = {{ internal_ip }}
-novncproxy_port = 6080
-
-[glance]
-api_servers = http://{{ internal_vip.ip }}:9292
-host = {{ internal_vip.ip }}
+[libvirt]
+use_virtio_for_bridges=True
[neutron]
url = http://{{ internal_vip.ip }}:9696
@@ -111,3 +84,21 @@ admin_username = neutron
admin_password = {{ NEUTRON_PASS }}
admin_auth_url = http://{{ internal_vip.ip }}:35357/v3
+[oslo_concurrency]
+lock_path=/var/lib/nova/tmp
+
+[oslo_messaging_rabbit]
+rabbit_host = {{ rabbit_host }}
+rabbit_userid = {{ RABBIT_USER }}
+rabbit_password = {{ RABBIT_PASS }}
+
+[vnc]
+enabled = True
+vncserver_listen = {{ internal_ip }}
+vncserver_proxyclient_address = {{ internal_ip }}
+novncproxy_base_url = http://{{ public_vip.ip }}:6080/vnc_auto.html
+novncproxy_host = {{ internal_ip }}
+novncproxy_port = 6080
+
+[wsgi]
+api_paste_config=/etc/nova/api-paste.ini
diff --git a/deploy/adapters/ansible/openstack_osp9/roles/ceph-osd/tasks/install_osd.yml b/deploy/adapters/ansible/openstack_osp9/roles/ceph-osd/tasks/install_osd.yml
index 0e476085..35e84cf8 100755
--- a/deploy/adapters/ansible/openstack_osp9/roles/ceph-osd/tasks/install_osd.yml
+++ b/deploy/adapters/ansible/openstack_osp9/roles/ceph-osd/tasks/install_osd.yml
@@ -11,6 +11,11 @@
- name: create osd lv and mount it on /var/local/osd
script: create_osd.sh
+- name: fetch osd keyring from ceph_adm
+ fetch: src="/var/lib/ceph/bootstrap-osd/ceph.keyring" dest="/tmp/ceph.osd.keyring" flat=yes
+ delegate_to: "{{ public_vip.ip }}"
+ when: compute_expansion
+
- name: copy osd keyring
copy: src="/tmp/ceph.osd.keyring" dest="/var/lib/ceph/bootstrap-osd/ceph.keyring"
diff --git a/deploy/adapters/ansible/roles/ceph-config/tasks/create_config.yml b/deploy/adapters/ansible/roles/ceph-config/tasks/create_config.yml
index 891e23e0..771fb6ab 100755
--- a/deploy/adapters/ansible/roles/ceph-config/tasks/create_config.yml
+++ b/deploy/adapters/ansible/roles/ceph-config/tasks/create_config.yml
@@ -18,6 +18,11 @@
dest: "/tmp/ceph.conf"
when: inventory_hostname in groups['ceph_adm']
+- name: fetch ceph conf from ceph_adm
+ fetch: src="/etc/ceph/ceph.conf" dest="/tmp/ceph.conf" flat=yes
+ delegate_to: "{{ public_vip.ip }}"
+ when: compute_expansion
+
- name: "make directory for ceph config file"
file: path="/etc/ceph" state="directory"
@@ -53,10 +58,20 @@
fetch: src="/tmp/ceph.mon.keyring" dest="/tmp/ceph.mon.keyring" flat=yes
when: inventory_hostname in groups['ceph_adm']
+- name: fetch mon.keyring from ceph_adm
+ fetch: src="/tmp/ceph.mon.keyring" dest="/tmp/ceph.mon.keyring" flat=yes
+ delegate_to: "{{ public_vip.ip }}"
+ when: compute_expansion
+
- name: fetch client.admin.keyring to local
fetch: src="/etc/ceph/ceph.client.admin.keyring" dest="/tmp/ceph.client.admin.keyring" flat=yes
when: inventory_hostname in groups['ceph_adm']
+- name: fetch mon.keyring from ceph_adm
+ fetch: src="/etc/ceph/ceph.client.admin.keyring" dest="/tmp/ceph.client.admin.keyring" flat=yes
+ delegate_to: "{{ public_vip.ip }}"
+ when: compute_expansion
+
- name: copy mon.keyring to remote nodes
copy: src="/tmp/ceph.mon.keyring" dest="/tmp/ceph.mon.keyring"
diff --git a/deploy/adapters/ansible/roles/ceph-openstack/tasks/ceph_openstack_conf.yml b/deploy/adapters/ansible/roles/ceph-openstack/tasks/ceph_openstack_conf.yml
index d7c414ee..0496ba97 100755
--- a/deploy/adapters/ansible/roles/ceph-openstack/tasks/ceph_openstack_conf.yml
+++ b/deploy/adapters/ansible/roles/ceph-openstack/tasks/ceph_openstack_conf.yml
@@ -28,13 +28,13 @@
ignore_errors: True
- name: modify cinder.conf for ceph
- shell: sed -i 's/^\(volume_driver\).*/\1 = cinder.volume.drivers.rbd.RBDDriver/g' /etc/cinder/cinder.conf && sed -i 's/^\(rbd_secret_uuid\).*/\1 = {{ ceph_uuid.stdout_lines[0] }}/g' /etc/cinder/cinder.conf && sed -i '/^\[DEFAULT/a rbd_pool = volumes\nrbd_ceph_conf = /etc/ceph/ceph.conf\nrbd_flatten_volume_from_snapshot = false\nrbd_max_clone_depth = 5\nrbd_store_chunk_size = 4\nrados_connect_timeout = -1\nglance_api_version = 2\nrbd_user = cinder\nrbd_secret_uuid = {{ ceph_uuid.stdout_lines[0] }}' /etc/cinder/cinder.conf && service {{ cinder_service }} restart
+ shell: sed -i 's/^\(volume_driver\).*/\1 = cinder.volume.drivers.rbd.RBDDriver/g' /etc/cinder/cinder.conf && sed -i 's/^\(rbd_secret_uuid\).*/\1 = {{ ceph_uuid }}/g' /etc/cinder/cinder.conf && sed -i '/^\[DEFAULT/a rbd_pool = volumes\nrbd_ceph_conf = /etc/ceph/ceph.conf\nrbd_flatten_volume_from_snapshot = false\nrbd_max_clone_depth = 5\nrbd_store_chunk_size = 4\nrados_connect_timeout = -1\nglance_api_version = 2\nrbd_user = cinder\nrbd_secret_uuid = {{ ceph_uuid }}' /etc/cinder/cinder.conf && service {{ cinder_service }} restart
when: inventory_hostname in groups['compute']
tags:
- ceph_conf_cinder
- name: modify nova.conf for ceph
- shell: sed -i 's/^\(images_type\).*/\1 = rbd/g' /etc/nova/nova-compute.conf && sed -i 's/^\(rbd_secret_uuid\).*/\1 = {{ ceph_uuid.stdout_lines[0] }}/g' /etc/nova/nova-compute.conf && sed -i '/^\[libvirt/a images_rbd_pool = vms\nimages_rbd_ceph_conf = /etc/ceph/ceph.conf\nrbd_user = cinder\nrbd_secret_uuid = {{ ceph_uuid.stdout_lines[0] }}\ndisk_cachemodes=\"network=writeback\"\nlive_migration_flag=\"VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED\"' /etc/nova/nova-compute.conf && service {{ nova_service }} restart
+ shell: sed -i 's/^\(images_type\).*/\1 = rbd/g' /etc/nova/nova-compute.conf && sed -i 's/^\(rbd_secret_uuid\).*/\1 = {{ ceph_uuid }}/g' /etc/nova/nova-compute.conf && sed -i '/^\[libvirt/a images_rbd_pool = vms\nimages_rbd_ceph_conf = /etc/ceph/ceph.conf\nrbd_user = cinder\nrbd_secret_uuid = {{ ceph_uuid }}\ndisk_cachemodes=\"network=writeback\"\nlive_migration_flag=\"VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED\"' /etc/nova/nova-compute.conf && service {{ nova_service }} restart
when: inventory_hostname in groups['compute']
tags:
- ceph_conf_nova
diff --git a/deploy/adapters/ansible/roles/ceph-openstack/tasks/ceph_openstack_pre.yml b/deploy/adapters/ansible/roles/ceph-openstack/tasks/ceph_openstack_pre.yml
index 78b71ec0..ece4154f 100755
--- a/deploy/adapters/ansible/roles/ceph-openstack/tasks/ceph_openstack_pre.yml
+++ b/deploy/adapters/ansible/roles/ceph-openstack/tasks/ceph_openstack_pre.yml
@@ -9,11 +9,39 @@
---
- name: gen ceph uuid
shell: uuidgen
- register: ceph_uuid
+ register: ceph_uuid_out
run_once: true
tags:
- ceph_copy_secret
+- name: set ceph uuid var
+ set_fact:
+ ceph_uuid: "{{ ceph_uuid_out.stdout_lines[0] }}"
+ when: not compute_expansion
+ tags:
+ - ceph_copy_secret
+
+- name: save ceph uuid for expansion
+ copy: content="{{ ceph_uuid }}" dest=/etc/ceph/ceph.uuid.libvirt
+ when: not compute_expansion and inventory_hostname in groups['controller']
+ tags:
+ - ceph_copy_secret
+
+- name: fetch ceph uuid from controller node for expansion
+ shell: cat /etc/ceph/ceph.uuid.libvirt
+ register: ceph_uuid_out
+ delegate_to: "{{ public_vip.ip }}"
+ when: compute_expansion and inventory_hostname in groups['compute']
+ tags:
+ - ceph_copy_secret
+
+- name: set ceph uuid var for expansion
+ set_fact:
+ ceph_uuid: "{{ ceph_uuid_out.stdout_lines[0] }}"
+ when: compute_expansion and inventory_hostname in groups['compute']
+ tags:
+ - ceph_copy_secret
+
- name: gen template secret.xml
local_action:
module: "template"
@@ -68,7 +96,7 @@
- name: create key for libvirt on compute nodes
- shell: "virsh secret-define --file ~/secret.xml && virsh secret-set-value --secret {{ ceph_uuid.stdout_lines[0] }} --base64 $(cat client.cinder.key)"
+ shell: "virsh secret-define --file ~/secret.xml && virsh secret-set-value --secret {{ ceph_uuid }} --base64 $(cat client.cinder.key)"
when: inventory_hostname in groups['compute']
tags:
- ceph_copy_secret
diff --git a/deploy/adapters/ansible/roles/ceph-openstack/templates/secret.j2 b/deploy/adapters/ansible/roles/ceph-openstack/templates/secret.j2
index a0ffc6e3..0195e099 100644
--- a/deploy/adapters/ansible/roles/ceph-openstack/templates/secret.j2
+++ b/deploy/adapters/ansible/roles/ceph-openstack/templates/secret.j2
@@ -1,5 +1,5 @@
<secret ephemeral='no' private='no'>
- <uuid>{{ ceph_uuid.stdout_lines[0] }}</uuid>
+ <uuid>{{ ceph_uuid }}</uuid>
<usage type='ceph'>
<name>client.cinder secret</name>
</usage>
diff --git a/deploy/adapters/ansible/roles/ceph-osd/tasks/install_osd.yml b/deploy/adapters/ansible/roles/ceph-osd/tasks/install_osd.yml
index e7e4a242..ff99d68a 100644
--- a/deploy/adapters/ansible/roles/ceph-osd/tasks/install_osd.yml
+++ b/deploy/adapters/ansible/roles/ceph-osd/tasks/install_osd.yml
@@ -11,6 +11,11 @@
- name: create osd lv and mount it on /var/local/osd
script: create_osd.sh
+- name: fetch osd keyring from ceph_adm
+ fetch: src="/var/lib/ceph/bootstrap-osd/ceph.keyring" dest="/tmp/ceph.osd.keyring" flat=yes
+ delegate_to: "{{ public_vip.ip }}"
+ when: compute_expansion
+
- name: copy osd keyring
copy: src="/tmp/ceph.osd.keyring" dest="/var/lib/ceph/bootstrap-osd/ceph.keyring"
diff --git a/deploy/adapters/ansible/roles/common/tasks/main.yml b/deploy/adapters/ansible/roles/common/tasks/main.yml
index 8da5603c..1fa0de84 100644
--- a/deploy/adapters/ansible/roles/common/tasks/main.yml
+++ b/deploy/adapters/ansible/roles/common/tasks/main.yml
@@ -46,15 +46,15 @@
- name: make config template dir exist
file: path=/opt/os_templates state=directory mode=0755
-- name: upgrade pip
- pip: name=pip state=latest
-
- name: create pip config directory
file: path=~/.pip state=directory
- name: update pip.conf
template: src=pip.conf dest=~/.pip/{{ pip_conf }}
+- name: upgrade pip
+ pip: name=pip state=latest
+
- name: install pip packages
pip: name={{ item }} state=present extra_args='--pre'
with_items: pip_packages
diff --git a/deploy/compass_conf/adapter/ansible_openstack_juno.conf b/deploy/compass_conf/adapter/ansible_openstack_juno.conf
new file mode 100755
index 00000000..6d36cd55
--- /dev/null
+++ b/deploy/compass_conf/adapter/ansible_openstack_juno.conf
@@ -0,0 +1,7 @@
+NAME = 'openstack_juno'
+DISPLAY_NAME = 'Openstack Juno'
+PARENT = 'openstack'
+PACKAGE_INSTALLER = 'ansible_installer_juno'
+OS_INSTALLER = 'cobbler'
+SUPPORTED_OS_PATTERNS = ['(?i)ubuntu-14\.04.*', '(?i)ubuntu-14\.04\.3.*', '(?i)CentOS-7.*15.*']
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/adapter/ansible_openstack_kilo.conf b/deploy/compass_conf/adapter/ansible_openstack_kilo.conf
new file mode 100755
index 00000000..943453ad
--- /dev/null
+++ b/deploy/compass_conf/adapter/ansible_openstack_kilo.conf
@@ -0,0 +1,7 @@
+NAME = 'openstack_kilo'
+DISPLAY_NAME = 'Openstack kilo'
+PARENT = 'openstack'
+PACKAGE_INSTALLER = 'ansible_installer_kilo'
+OS_INSTALLER = 'cobbler'
+SUPPORTED_OS_PATTERNS = ['(?i)ubuntu-14\.04.*', '(?i)ubuntu-14\.04\.3.*', '(?i)CentOS-7.*15.*']
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/adapter/ansible_openstack_liberty.conf b/deploy/compass_conf/adapter/ansible_openstack_liberty.conf
new file mode 100755
index 00000000..d181d1c7
--- /dev/null
+++ b/deploy/compass_conf/adapter/ansible_openstack_liberty.conf
@@ -0,0 +1,7 @@
+NAME = 'openstack_liberty'
+DISPLAY_NAME = 'Openstack Liberty'
+PARENT = 'openstack'
+PACKAGE_INSTALLER = 'ansible_installer_liberty'
+OS_INSTALLER = 'cobbler'
+SUPPORTED_OS_PATTERNS = ['(?i)ubuntu-14\.04.*', '(?i)ubuntu-14\.04\.3.*', '(?i)CentOS-7.*15.*']
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/adapter/ansible_openstack_mitaka.conf b/deploy/compass_conf/adapter/ansible_openstack_mitaka.conf
new file mode 100755
index 00000000..0e53829b
--- /dev/null
+++ b/deploy/compass_conf/adapter/ansible_openstack_mitaka.conf
@@ -0,0 +1,7 @@
+NAME = 'openstack_mitaka'
+DISPLAY_NAME = 'Openstack Mitaka'
+PARENT = 'openstack'
+PACKAGE_INSTALLER = 'ansible_installer_mitaka'
+OS_INSTALLER = 'cobbler'
+SUPPORTED_OS_PATTERNS = ['(?i)ubuntu-14\.04.*', '(?i)ubuntu-14\.04\.3.*', '(?i)ubuntu-16\.04', '(?i)CentOS-7.*15.*']
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/adapter/ansible_openstack_mitaka_xenial.conf b/deploy/compass_conf/adapter/ansible_openstack_mitaka_xenial.conf
new file mode 100755
index 00000000..691ce930
--- /dev/null
+++ b/deploy/compass_conf/adapter/ansible_openstack_mitaka_xenial.conf
@@ -0,0 +1,7 @@
+NAME = 'openstack_mitaka_xenial'
+DISPLAY_NAME = 'Openstack Mitaka Xenial'
+PARENT = 'openstack'
+PACKAGE_INSTALLER = 'ansible_installer_mitaka_xenial'
+OS_INSTALLER = 'cobbler'
+SUPPORTED_OS_PATTERNS = ['(?i)ubuntu-14\.04.*', '(?i)ubuntu-14\.04\.3.*', '(?i)ubuntu-16\.04', '(?i)CentOS-7.*15.*']
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/adapter/ansible_openstack_newton_xenial.conf b/deploy/compass_conf/adapter/ansible_openstack_newton_xenial.conf
new file mode 100755
index 00000000..cd8d2deb
--- /dev/null
+++ b/deploy/compass_conf/adapter/ansible_openstack_newton_xenial.conf
@@ -0,0 +1,7 @@
+NAME = 'openstack_newton_xenial'
+DISPLAY_NAME = 'Openstack Mitaka Xenial'
+PARENT = 'openstack'
+PACKAGE_INSTALLER = 'ansible_installer_newton_xenial'
+OS_INSTALLER = 'cobbler'
+SUPPORTED_OS_PATTERNS = ['(?i)ubuntu-14\.04.*', '(?i)ubuntu-14\.04\.3.*', '(?i)ubuntu-16\.04', '(?i)CentOS-7.*15.*']
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/adapter/ansible_openstack_osp9.conf b/deploy/compass_conf/adapter/ansible_openstack_osp9.conf
new file mode 100755
index 00000000..81c00a0f
--- /dev/null
+++ b/deploy/compass_conf/adapter/ansible_openstack_osp9.conf
@@ -0,0 +1,7 @@
+NAME = 'openstack_osp9'
+DISPLAY_NAME = 'RedHat OSP 9'
+PARENT = 'openstack'
+PACKAGE_INSTALLER = 'ansible_installer_osp9'
+OS_INSTALLER = 'cobbler'
+SUPPORTED_OS_PATTERNS = ['(?i)rhel-server-7\.2.*']
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/adapter/ceph.conf b/deploy/compass_conf/adapter/ceph.conf
new file mode 100755
index 00000000..d63ecf13
--- /dev/null
+++ b/deploy/compass_conf/adapter/ceph.conf
@@ -0,0 +1,2 @@
+NAME = 'ceph'
+PARENT = 'general'
diff --git a/deploy/compass_conf/adapter/general.conf b/deploy/compass_conf/adapter/general.conf
new file mode 100755
index 00000000..4d8cb371
--- /dev/null
+++ b/deploy/compass_conf/adapter/general.conf
@@ -0,0 +1 @@
+NAME = 'general'
diff --git a/deploy/compass_conf/adapter/openstack.conf b/deploy/compass_conf/adapter/openstack.conf
new file mode 100755
index 00000000..66bdd8bb
--- /dev/null
+++ b/deploy/compass_conf/adapter/openstack.conf
@@ -0,0 +1,2 @@
+NAME = 'openstack'
+PARENT = 'general'
diff --git a/deploy/compass_conf/adapter/os_only.conf b/deploy/compass_conf/adapter/os_only.conf
new file mode 100755
index 00000000..253ff84c
--- /dev/null
+++ b/deploy/compass_conf/adapter/os_only.conf
@@ -0,0 +1,5 @@
+NAME = 'os_only'
+PARENT = 'general'
+OS_INSTALLER = 'cobbler'
+SUPPORTED_OS_PATTERNS = ['(?i)centos.*', '(?i)ubuntu.*', '(?i)sles.*', '(?i)uvp.*']
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/celeryconfig b/deploy/compass_conf/celeryconfig
new file mode 100755
index 00000000..f4911279
--- /dev/null
+++ b/deploy/compass_conf/celeryconfig
@@ -0,0 +1,9 @@
+## Celery related setting: this is the default setting once we install RabbitMQ
+
+CELERY_RESULT_BACKEND ="amqp://"
+
+BROKER_URL = "amqp://guest:guest@localhost:5672//"
+
+CELERY_IMPORTS=("compass.tasks.tasks",)
+CELERY_ACCEPT_CONTENT = ['pickle', 'json', 'msgpack', 'yaml']
+C_FORCE_ROOT = 1
diff --git a/deploy/compass_conf/distributed_system/ceph.conf b/deploy/compass_conf/distributed_system/ceph.conf
new file mode 100755
index 00000000..674b8248
--- /dev/null
+++ b/deploy/compass_conf/distributed_system/ceph.conf
@@ -0,0 +1,3 @@
+NAME = 'ceph'
+PARENT = 'general'
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/distributed_system/general.conf b/deploy/compass_conf/distributed_system/general.conf
new file mode 100755
index 00000000..655beb06
--- /dev/null
+++ b/deploy/compass_conf/distributed_system/general.conf
@@ -0,0 +1,2 @@
+NAME = 'general'
+PARENT = ''
diff --git a/deploy/compass_conf/distributed_system/openstack.conf b/deploy/compass_conf/distributed_system/openstack.conf
new file mode 100755
index 00000000..d4a14a2e
--- /dev/null
+++ b/deploy/compass_conf/distributed_system/openstack.conf
@@ -0,0 +1,3 @@
+NAME ='openstack'
+PARENT = 'general'
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/distributed_system/openstack_ceph.conf b/deploy/compass_conf/distributed_system/openstack_ceph.conf
new file mode 100755
index 00000000..1f59eb8c
--- /dev/null
+++ b/deploy/compass_conf/distributed_system/openstack_ceph.conf
@@ -0,0 +1,3 @@
+NAME ='openstack_ceph'
+PARENT = 'general'
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/flavor/openstack_juno_ansible.conf b/deploy/compass_conf/flavor/openstack_juno_ansible.conf
new file mode 100755
index 00000000..53724b58
--- /dev/null
+++ b/deploy/compass_conf/flavor/openstack_juno_ansible.conf
@@ -0,0 +1,32 @@
+ADAPTER_NAME = 'openstack_juno'
+FLAVORS = [{
+ 'flavor': 'allinone',
+ 'display_name': 'All-In-One',
+ 'template': 'allinone.tmpl',
+ 'roles': ['allinone-compute'],
+}, {
+ 'flavor': 'single-controller',
+ 'display_name': 'Single Controller',
+ 'template': 'single-controller.tmpl',
+ 'roles': [
+ 'controller', 'compute', 'network', 'storage', 'odl', 'onos'
+ ],
+}, {
+ 'flavor': 'multinodes',
+ 'display_name': 'Multi-nodes',
+ 'template': 'multinodes.tmpl',
+ 'roles': [
+ 'compute-controller', 'compute-worker', 'network-server',
+ 'network-worker', 'database', 'messaging', 'image', 'odl',
+ 'dashboard', 'identity', 'storage-controller', 'storage-volume'
+ ],
+}, {
+ 'flavor': 'HA-ansible-multinodes-juno',
+ 'display_name': 'HA-ansible-multinodes-juno',
+ 'template': 'HA-ansible-multinodes.tmpl',
+ 'roles': [
+ 'controller', 'compute', 'ha', 'odl', 'onos', 'ceph', 'ceph-adm', 'ceph-mon', 'ceph-osd', 'sec-patch', 'ceph-osd-node'
+ ],
+}]
+
+
diff --git a/deploy/compass_conf/flavor/openstack_kilo_ansible.conf b/deploy/compass_conf/flavor/openstack_kilo_ansible.conf
new file mode 100755
index 00000000..d8d93fec
--- /dev/null
+++ b/deploy/compass_conf/flavor/openstack_kilo_ansible.conf
@@ -0,0 +1,32 @@
+ADAPTER_NAME = 'openstack_kilo'
+FLAVORS = [{
+ 'flavor': 'allinone',
+ 'display_name': 'All-In-One',
+ 'template': 'allinone.tmpl',
+ 'roles': ['allinone-compute'],
+}, {
+ 'flavor': 'single-controller',
+ 'display_name': 'Single Controller',
+ 'template': 'single-controller.tmpl',
+ 'roles': [
+ 'controller', 'compute', 'network', 'storage', 'odl', 'onos'
+ ],
+}, {
+ 'flavor': 'multinodes',
+ 'display_name': 'Multi-nodes',
+ 'template': 'multinodes.tmpl',
+ 'roles': [
+ 'compute-controller', 'compute-worker', 'network-server',
+ 'network-worker', 'database', 'messaging', 'image', 'odl',
+ 'dashboard', 'identity', 'storage-controller', 'storage-volume'
+ ],
+}, {
+ 'flavor': 'HA-ansible-multinodes-kilo',
+ 'display_name': 'HA-ansible-multinodes-kilo',
+ 'template': 'HA-ansible-multinodes.tmpl',
+ 'roles': [
+ 'controller', 'compute', 'ha', 'odl', 'onos', 'ceph', 'ceph-adm', 'ceph-mon', 'ceph-osd'
+ ],
+}]
+
+
diff --git a/deploy/compass_conf/flavor/openstack_liberty_ansible.conf b/deploy/compass_conf/flavor/openstack_liberty_ansible.conf
new file mode 100755
index 00000000..21aaa51e
--- /dev/null
+++ b/deploy/compass_conf/flavor/openstack_liberty_ansible.conf
@@ -0,0 +1,32 @@
+ADAPTER_NAME = 'openstack_liberty'
+FLAVORS = [{
+ 'flavor': 'allinone',
+ 'display_name': 'All-In-One',
+ 'template': 'allinone.tmpl',
+ 'roles': ['allinone-compute'],
+}, {
+ 'flavor': 'single-controller',
+ 'display_name': 'Single Controller',
+ 'template': 'single-controller.tmpl',
+ 'roles': [
+ 'controller', 'compute', 'network', 'storage', 'odl', 'onos'
+ ],
+}, {
+ 'flavor': 'multinodes',
+ 'display_name': 'Multi-nodes',
+ 'template': 'multinodes.tmpl',
+ 'roles': [
+ 'compute-controller', 'compute-worker', 'network-server',
+ 'network-worker', 'database', 'messaging', 'image', 'odl',
+ 'dashboard', 'identity', 'storage-controller', 'storage-volume'
+ ],
+}, {
+ 'flavor': 'HA-ansible-multinodes-liberty',
+ 'display_name': 'HA-ansible-multinodes-liberty',
+ 'template': 'HA-ansible-multinodes.tmpl',
+ 'roles': [
+ 'controller', 'compute', 'ha', 'odl', 'onos', 'opencontrail', 'ceph', 'ceph-adm', 'ceph-mon', 'ceph-osd', 'sec-patch', 'ceph-osd-node'
+ ],
+}]
+
+
diff --git a/deploy/compass_conf/flavor/openstack_mitaka.conf b/deploy/compass_conf/flavor/openstack_mitaka.conf
new file mode 100755
index 00000000..ffa2e2bd
--- /dev/null
+++ b/deploy/compass_conf/flavor/openstack_mitaka.conf
@@ -0,0 +1,32 @@
+ADAPTER_NAME = 'openstack_mitaka'
+FLAVORS = [{
+ 'flavor': 'allinone',
+ 'display_name': 'All-In-One',
+ 'template': 'allinone.tmpl',
+ 'roles': ['allinone-compute'],
+}, {
+ 'flavor': 'single-controller',
+ 'display_name': 'Single Controller',
+ 'template': 'single-controller.tmpl',
+ 'roles': [
+ 'controller', 'compute', 'network', 'storage', 'odl', 'onos'
+ ],
+}, {
+ 'flavor': 'multinodes',
+ 'display_name': 'Multi-nodes',
+ 'template': 'multinodes.tmpl',
+ 'roles': [
+ 'compute-controller', 'compute-worker', 'network-server',
+ 'network-worker', 'database', 'messaging', 'image', 'odl',
+ 'dashboard', 'identity', 'storage-controller', 'storage-volume'
+ ],
+}, {
+ 'flavor': 'HA-ansible-multinodes-mitaka',
+ 'display_name': 'HA-ansible-multinodes-mitaka',
+ 'template': 'HA-ansible-multinodes.tmpl',
+ 'roles': [
+ 'controller', 'compute', 'ha', 'odl', 'onos', 'opencontrail', 'ceph', 'ceph-adm', 'ceph-mon', 'ceph-osd', 'sec-patch', 'ceph-osd-node'
+ ],
+}]
+
+
diff --git a/deploy/compass_conf/flavor/openstack_mitaka_xenial.conf b/deploy/compass_conf/flavor/openstack_mitaka_xenial.conf
new file mode 100755
index 00000000..9f3bf0f4
--- /dev/null
+++ b/deploy/compass_conf/flavor/openstack_mitaka_xenial.conf
@@ -0,0 +1,32 @@
+ADAPTER_NAME = 'openstack_mitaka_xenial'
+FLAVORS = [{
+ 'flavor': 'allinone',
+ 'display_name': 'All-In-One',
+ 'template': 'allinone.tmpl',
+ 'roles': ['allinone-compute'],
+}, {
+ 'flavor': 'single-controller',
+ 'display_name': 'Single Controller',
+ 'template': 'single-controller.tmpl',
+ 'roles': [
+ 'controller', 'compute', 'network', 'storage', 'odl', 'onos'
+ ],
+}, {
+ 'flavor': 'multinodes',
+ 'display_name': 'Multi-nodes',
+ 'template': 'multinodes.tmpl',
+ 'roles': [
+ 'compute-controller', 'compute-worker', 'network-server',
+ 'network-worker', 'database', 'messaging', 'image', 'odl',
+ 'dashboard', 'identity', 'storage-controller', 'storage-volume'
+ ],
+}, {
+ 'flavor': 'HA-ansible-multinodes-mitaka_xenial',
+ 'display_name': 'HA-ansible-multinodes-mitaka_xenial',
+ 'template': 'HA-ansible-multinodes.tmpl',
+ 'roles': [
+ 'controller', 'compute', 'ha', 'odl', 'onos', 'opencontrail', 'ceph', 'ceph-adm', 'ceph-mon', 'ceph-osd', 'sec-patch', 'ceph-osd-node'
+ ],
+}]
+
+
diff --git a/deploy/compass_conf/flavor/openstack_newton_xenial.conf b/deploy/compass_conf/flavor/openstack_newton_xenial.conf
new file mode 100755
index 00000000..3566acee
--- /dev/null
+++ b/deploy/compass_conf/flavor/openstack_newton_xenial.conf
@@ -0,0 +1,32 @@
+ADAPTER_NAME = 'openstack_newton_xenial'
+FLAVORS = [{
+ 'flavor': 'allinone',
+ 'display_name': 'All-In-One',
+ 'template': 'allinone.tmpl',
+ 'roles': ['allinone-compute'],
+}, {
+ 'flavor': 'single-controller',
+ 'display_name': 'Single Controller',
+ 'template': 'single-controller.tmpl',
+ 'roles': [
+ 'controller', 'compute', 'network', 'storage', 'odl', 'onos'
+ ],
+}, {
+ 'flavor': 'multinodes',
+ 'display_name': 'Multi-nodes',
+ 'template': 'multinodes.tmpl',
+ 'roles': [
+ 'compute-controller', 'compute-worker', 'network-server',
+ 'network-worker', 'database', 'messaging', 'image', 'odl',
+ 'dashboard', 'identity', 'storage-controller', 'storage-volume'
+ ],
+}, {
+ 'flavor': 'HA-ansible-multinodes-newton_xenial',
+ 'display_name': 'HA-ansible-multinodes-newton_xenial',
+ 'template': 'HA-ansible-multinodes.tmpl',
+ 'roles': [
+ 'controller', 'compute', 'ha', 'odl', 'onos', 'opencontrail', 'ceph', 'ceph-adm', 'ceph-mon', 'ceph-osd', 'sec-patch', 'ceph-osd-node'
+ ],
+}]
+
+
diff --git a/deploy/compass_conf/flavor/openstack_osp9.conf b/deploy/compass_conf/flavor/openstack_osp9.conf
new file mode 100755
index 00000000..b627c6fb
--- /dev/null
+++ b/deploy/compass_conf/flavor/openstack_osp9.conf
@@ -0,0 +1,32 @@
+ADAPTER_NAME = 'openstack_osp9'
+FLAVORS = [{
+ 'flavor': 'allinone',
+ 'display_name': 'All-In-One',
+ 'template': 'allinone.tmpl',
+ 'roles': ['allinone-compute'],
+}, {
+ 'flavor': 'single-controller',
+ 'display_name': 'Single Controller',
+ 'template': 'single-controller.tmpl',
+ 'roles': [
+ 'controller', 'compute', 'network', 'storage', 'odl', 'onos'
+ ],
+}, {
+ 'flavor': 'multinodes',
+ 'display_name': 'Multi-nodes',
+ 'template': 'multinodes.tmpl',
+ 'roles': [
+ 'compute-controller', 'compute-worker', 'network-server',
+ 'network-worker', 'database', 'messaging', 'image', 'odl',
+ 'dashboard', 'identity', 'storage-controller', 'storage-volume'
+ ],
+}, {
+ 'flavor': 'HA-ansible-multinodes-osp9',
+ 'display_name': 'HA-ansible-multinodes-osp9',
+ 'template': 'HA-ansible-multinodes.tmpl',
+ 'roles': [
+ 'controller', 'compute', 'ha', 'odl', 'onos', 'opencontrail', 'ceph', 'ceph-adm', 'ceph-mon', 'ceph-osd', 'sec-patch', 'ceph-osd-node'
+ ],
+}]
+
+
diff --git a/deploy/compass_conf/flavor_field/general.conf b/deploy/compass_conf/flavor_field/general.conf
new file mode 100755
index 00000000..4d8cb371
--- /dev/null
+++ b/deploy/compass_conf/flavor_field/general.conf
@@ -0,0 +1 @@
+NAME = 'general'
diff --git a/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-juno.conf b/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-juno.conf
new file mode 100755
index 00000000..ec69a418
--- /dev/null
+++ b/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-juno.conf
@@ -0,0 +1,112 @@
+ADAPTER = 'openstack_juno'
+FLAVOR = 'HA-ansible-multinodes-juno'
+CONFIG_MAPPING = {
+ "mapped_name": "flavor_config",
+ "mapped_children": [{
+ "security": {
+ "accordion_heading": "OpenStack Database and Queue Credentials",
+ "category": "service_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config": {
+ "rabbitmq": {
+ "username": "guest",
+ "password": "guest"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "network": {
+ "username": "network",
+ "password": "network"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "mysql": {
+ "username": "root",
+ "password": "root"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ },
+ "heat": {
+ "username": "heat",
+ "password": "heat"
+ }
+ }
+ }
+ },{
+ "security": {
+ "accordion_heading": "OpenStack Keystone User Credentials",
+ "category": "console_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config":{
+ "admin": {
+ "username": "admin",
+ "password": "admin"
+ },
+ "demo": {
+ "username": "demo",
+ "password": "demo"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "network": {
+ "username": "quantum",
+ "password": "quantum"
+ },
+ "object-store": {
+ "username": "swift",
+ "password": "swift"
+ },
+ "heat": {
+ "username": "heat",
+ "password": "heat"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ }
+ }
+ }]
+}
diff --git a/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-kilo.conf b/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-kilo.conf
new file mode 100755
index 00000000..20be0239
--- /dev/null
+++ b/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-kilo.conf
@@ -0,0 +1,104 @@
+ADAPTER = 'openstack_kilo'
+FLAVOR = 'HA-ansible-multinodes-kilo'
+CONFIG_MAPPING = {
+ "mapped_name": "flavor_config",
+ "mapped_children": [{
+ "security": {
+ "accordion_heading": "OpenStack Database and Queue Credentials",
+ "category": "service_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config": {
+ "rabbitmq": {
+ "username": "guest",
+ "password": "guest"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "network": {
+ "username": "neutron",
+ "password": "neutron"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "mysql": {
+ "username": "root",
+ "password": "root"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ }
+ }
+ },{
+ "security": {
+ "accordion_heading": "OpenStack Keystone User Credentials",
+ "category": "console_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config":{
+ "admin": {
+ "username": "admin",
+ "password": "admin"
+ },
+ "demo": {
+ "username": "demo",
+ "password": "demo"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "network": {
+ "username": "quantum",
+ "password": "quantum"
+ },
+ "object-store": {
+ "username": "swift",
+ "password": "swift"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ }
+ }
+ }]
+}
diff --git a/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-liberty.conf b/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-liberty.conf
new file mode 100755
index 00000000..87843ed4
--- /dev/null
+++ b/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-liberty.conf
@@ -0,0 +1,112 @@
+ADAPTER = 'openstack_liberty'
+FLAVOR = 'HA-ansible-multinodes-liberty'
+CONFIG_MAPPING = {
+ "mapped_name": "flavor_config",
+ "mapped_children": [{
+ "security": {
+ "accordion_heading": "OpenStack Database and Queue Credentials",
+ "category": "service_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config": {
+ "rabbitmq": {
+ "username": "guest",
+ "password": "guest"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "network": {
+ "username": "neutron",
+ "password": "neutron"
+ },
+ "mysql": {
+ "username": "root",
+ "password": "root"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ },
+ "heat": {
+ "username": "heat",
+ "password": "heat"
+ }
+ }
+ }
+ },{
+ "security": {
+ "accordion_heading": "OpenStack Keystone User Credentials",
+ "category": "console_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config":{
+ "admin": {
+ "username": "admin",
+ "password": "admin"
+ },
+ "demo": {
+ "username": "demo",
+ "password": "demo"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "network": {
+ "username": "quantum",
+ "password": "quantum"
+ },
+ "object-store": {
+ "username": "swift",
+ "password": "swift"
+ },
+ "heat": {
+ "username": "heat",
+ "password": "heat"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ }
+ }
+ }]
+}
diff --git a/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-mitaka.conf b/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-mitaka.conf
new file mode 100755
index 00000000..5339be43
--- /dev/null
+++ b/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-mitaka.conf
@@ -0,0 +1,124 @@
+ADAPTER = 'openstack_mitaka'
+FLAVOR = 'HA-ansible-multinodes-mitaka'
+CONFIG_MAPPING = {
+ "mapped_name": "flavor_config",
+ "mapped_children": [{
+ "security": {
+ "accordion_heading": "OpenStack Database and Queue Credentials",
+ "category": "service_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config": {
+ "rabbitmq": {
+ "username": "guest",
+ "password": "guest"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "alarming": {
+ "username": "aodh",
+ "password": "aodh"
+ },
+ "network": {
+ "username": "neutron",
+ "password": "neutron"
+ },
+ "mysql": {
+ "username": "root",
+ "password": "root"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ },
+ "heat": {
+ "username": "heat",
+ "password": "heat"
+ },
+ "policy": {
+ "username": "congress",
+ "password": "congress"
+ }
+ }
+ }
+ },{
+ "security": {
+ "accordion_heading": "OpenStack Keystone User Credentials",
+ "category": "console_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config":{
+ "admin": {
+ "username": "admin",
+ "password": "admin"
+ },
+ "demo": {
+ "username": "demo",
+ "password": "demo"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "alarming": {
+ "username": "aodh",
+ "password": "aodh"
+ },
+ "network": {
+ "username": "quantum",
+ "password": "quantum"
+ },
+ "object-store": {
+ "username": "swift",
+ "password": "swift"
+ },
+ "heat": {
+ "username": "heat",
+ "password": "heat"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ }
+ }
+ }]
+}
diff --git a/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-mitaka_xenial.conf b/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-mitaka_xenial.conf
new file mode 100755
index 00000000..37195736
--- /dev/null
+++ b/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-mitaka_xenial.conf
@@ -0,0 +1,120 @@
+ADAPTER = 'openstack_mitaka_xenial'
+FLAVOR = 'HA-ansible-multinodes-mitaka_xenial'
+CONFIG_MAPPING = {
+ "mapped_name": "flavor_config",
+ "mapped_children": [{
+ "security": {
+ "accordion_heading": "OpenStack Database and Queue Credentials",
+ "category": "service_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config": {
+ "rabbitmq": {
+ "username": "guest",
+ "password": "guest"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "alarming": {
+ "username": "aodh",
+ "password": "aodh"
+ },
+ "network": {
+ "username": "neutron",
+ "password": "neutron"
+ },
+ "mysql": {
+ "username": "root",
+ "password": "root"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ },
+ "heat": {
+ "username": "heat",
+ "password": "heat"
+ }
+ }
+ }
+ },{
+ "security": {
+ "accordion_heading": "OpenStack Keystone User Credentials",
+ "category": "console_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config":{
+ "admin": {
+ "username": "admin",
+ "password": "admin"
+ },
+ "demo": {
+ "username": "demo",
+ "password": "demo"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "alarming": {
+ "username": "aodh",
+ "password": "aodh"
+ },
+ "network": {
+ "username": "quantum",
+ "password": "quantum"
+ },
+ "object-store": {
+ "username": "swift",
+ "password": "swift"
+ },
+ "heat": {
+ "username": "heat",
+ "password": "heat"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ }
+ }
+ }]
+}
diff --git a/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-newton_xenial.conf b/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-newton_xenial.conf
new file mode 100755
index 00000000..5095b203
--- /dev/null
+++ b/deploy/compass_conf/flavor_mapping/HA-ansible-multinodes-newton_xenial.conf
@@ -0,0 +1,120 @@
+ADAPTER = 'openstack_newton_xenial'
+FLAVOR = 'HA-ansible-multinodes-newton_xenial'
+CONFIG_MAPPING = {
+ "mapped_name": "flavor_config",
+ "mapped_children": [{
+ "security": {
+ "accordion_heading": "OpenStack Database and Queue Credentials",
+ "category": "service_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config": {
+ "rabbitmq": {
+ "username": "guest",
+ "password": "guest"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "alarming": {
+ "username": "aodh",
+ "password": "aodh"
+ },
+ "network": {
+ "username": "neutron",
+ "password": "neutron"
+ },
+ "mysql": {
+ "username": "root",
+ "password": "root"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ },
+ "heat": {
+ "username": "heat",
+ "password": "heat"
+ }
+ }
+ }
+ },{
+ "security": {
+ "accordion_heading": "OpenStack Keystone User Credentials",
+ "category": "console_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config":{
+ "admin": {
+ "username": "admin",
+ "password": "admin"
+ },
+ "demo": {
+ "username": "demo",
+ "password": "demo"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "alarming": {
+ "username": "aodh",
+ "password": "aodh"
+ },
+ "network": {
+ "username": "quantum",
+ "password": "quantum"
+ },
+ "object-store": {
+ "username": "swift",
+ "password": "swift"
+ },
+ "heat": {
+ "username": "heat",
+ "password": "heat"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ }
+ }
+ }]
+}
diff --git a/deploy/compass_conf/flavor_mapping/allinone.conf b/deploy/compass_conf/flavor_mapping/allinone.conf
new file mode 100755
index 00000000..4752a805
--- /dev/null
+++ b/deploy/compass_conf/flavor_mapping/allinone.conf
@@ -0,0 +1,132 @@
+ADAPTER = 'openstack-icehouse'
+FLAVOR = 'allinone'
+CONFIG_MAPPING = {
+ "mapped_name": "flavor_config",
+ "mapped_children": [{
+ "security": {
+ "accordion_heading": "OpenStack Database and Queue Credentials",
+ "category": "service_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config": {
+ "rabbitmq": {
+ "username": "guest",
+ "password": "guest"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "mysql": {
+ "username": "root",
+ "password": "root"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ }
+ }
+ },{
+ "security": {
+ "accordion_heading": "OpenStack Keystone User Credentials",
+ "category": "console_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config":{
+ "admin": {
+ "username": "admin",
+ "password": "admin"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "network": {
+ "username": "quantum",
+ "password": "quantum"
+ },
+ "object-store": {
+ "username": "swift",
+ "password": "swift"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ }
+ }
+ },{
+ "neutron_config": {
+ "accordion_heading": "Neutron Configurations",
+ "data_structure": "form",
+ "category": "neutron_config",
+ "form_name": "neutronForm",
+ "data": {
+ "openvswitch": {
+ "tenant_network_type": {
+ "label": "Tenant Network Type",
+ "input_type": "dropdown",
+ "mapped_key": [
+ "name", "is_required", "options", "default_value"
+ ],
+ "content_data": {
+ "gre": [{
+ "label": "Tunnel ID Ranges",
+ "is_required": "true",
+ "display_type": "dropdown_text_multiple",
+ "name": "tunnel_id_ranges",
+ "hint": "1:1000",
+ }],
+ "vlan": [{
+ "label": "Network Vlan Ranges",
+ "is_required": "true",
+ "display_type": "dropdown_text_multiple",
+ "name": "network_vlan_ranges",
+ "hint": "physnet1:2700:2999"
+ }, {
+ "label": "Bridge Mapping",
+ "is_required": "true",
+ "display_type": "dropdown_text_multiple",
+ "name": "bridge_mappings",
+ "hint": "physnet1:br-eth1"
+ }]
+ }
+ }
+ }
+ }
+ }
+ }]
+}
diff --git a/deploy/compass_conf/flavor_mapping/ha-multinodes.conf b/deploy/compass_conf/flavor_mapping/ha-multinodes.conf
new file mode 100755
index 00000000..34d76be1
--- /dev/null
+++ b/deploy/compass_conf/flavor_mapping/ha-multinodes.conf
@@ -0,0 +1,147 @@
+ADAPTER = 'openstack-icehouse'
+FLAVOR = 'HA-multinodes'
+CONFIG_MAPPING = {
+ "mapped_name": "flavor_config",
+ "mapped_children": [{
+ "security": {
+ "accordion_heading": "OpenStack Database and Queue Credentials",
+ "category": "service_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config": {
+ "rabbitmq": {
+ "username": "guest",
+ "password": "guest"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "mysql": {
+ "username": "root",
+ "password": "root"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ }
+ }
+ },{
+ "security": {
+ "accordion_heading": "OpenStack Keystone User Credentials",
+ "category": "console_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config":{
+ "admin": {
+ "username": "admin",
+ "password": "admin"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "network": {
+ "username": "quantum",
+ "password": "quantum"
+ },
+ "object-store": {
+ "username": "swift",
+ "password": "swift"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ }
+ }
+ },{
+ "neutron_config": {
+ "accordion_heading": "Neutron Configurations",
+ "data_structure": "form",
+ "category": "neutron_config",
+ "form_name": "neutronForm",
+ "data": {
+ "openvswitch": {
+ "tenant_network_type": {
+ "label": "Tenant Network Type",
+ "input_type": "dropdown",
+ "mapped_key": [
+ "name", "is_required", "options", "default_value"
+ ],
+ "content_data": {
+ "gre": [{
+ "label": "Tunnel ID Ranges",
+ "is_required": "true",
+ "display_type": "dropdown_text_multiple",
+ "name": "tunnel_id_ranges",
+ "hint": "1:1000",
+ }],
+ "vlan": [{
+ "label": "Network Vlan Ranges",
+ "is_required": "true",
+ "display_type": "dropdown_text_multiple",
+ "name": "network_vlan_ranges",
+ "hint": "physnet1:2700:2999"
+ }, {
+ "label": "Bridge Mapping",
+ "is_required": "true",
+ "display_type": "dropdown_text_multiple",
+ "name": "bridge_mappings",
+ "hint": "physnet1:br-eth1"
+ }]
+ }
+ }
+ }
+ }
+ }
+ },{
+ "ha_proxy": {
+ "accordion_heading": "High Availability Configurations",
+ "data_structure": "form",
+ "category": "ha_proxy",
+ "form_name": "haForm",
+ "data": {
+ "vip": {
+ "label": "VIP",
+ "mapped_key": [
+ "name", "is_required", "display_type"
+ ]
+ }
+ }
+ }
+ }]
+}
diff --git a/deploy/compass_conf/flavor_mapping/multinodes.conf b/deploy/compass_conf/flavor_mapping/multinodes.conf
new file mode 100755
index 00000000..bed52f06
--- /dev/null
+++ b/deploy/compass_conf/flavor_mapping/multinodes.conf
@@ -0,0 +1,132 @@
+ADAPTER = 'openstack-icehouse'
+FLAVOR = 'multinodes'
+CONFIG_MAPPING = {
+ "mapped_name": "flavor_config",
+ "mapped_children": [{
+ "security": {
+ "accordion_heading": "OpenStack Database and Queue Credentials",
+ "category": "service_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config": {
+ "rabbitmq": {
+ "username": "guest",
+ "password": "guest"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "mysql": {
+ "username": "root",
+ "password": "root"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ }
+ }
+ },{
+ "security": {
+ "accordion_heading": "OpenStack Keystone User Credentials",
+ "category": "console_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config":{
+ "admin": {
+ "username": "admin",
+ "password": "admin"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "network": {
+ "username": "quantum",
+ "password": "quantum"
+ },
+ "object-store": {
+ "username": "swift",
+ "password": "swift"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ }
+ }
+ },{
+ "neutron_config": {
+ "accordion_heading": "Neutron Configurations",
+ "data_structure": "form",
+ "category": "neutron_config",
+ "form_name": "neutronForm",
+ "data": {
+ "openvswitch": {
+ "tenant_network_type": {
+ "label": "Tenant Network Type",
+ "input_type": "dropdown",
+ "mapped_key": [
+ "name", "is_required", "options", "default_value"
+ ],
+ "content_data": {
+ "gre": [{
+ "label": "Tunnel ID Ranges",
+ "is_required": "true",
+ "display_type": "dropdown_text_multiple",
+ "name": "tunnel_id_ranges",
+ "hint": "1:1000",
+ }],
+ "vlan": [{
+ "label": "Network Vlan Ranges",
+ "is_required": "true",
+ "display_type": "dropdown_text_multiple",
+ "name": "network_vlan_ranges",
+ "hint": "physnet1:2700:2999"
+ }, {
+ "label": "Bridge Mapping",
+ "is_required": "true",
+ "display_type": "dropdown_text_multiple",
+ "name": "bridge_mappings",
+ "hint": "physnet1:br-eth1"
+ }]
+ }
+ }
+ }
+ }
+ }
+ }]
+}
diff --git a/deploy/compass_conf/flavor_mapping/single-contoller-multi-compute.conf b/deploy/compass_conf/flavor_mapping/single-contoller-multi-compute.conf
new file mode 100755
index 00000000..c7bbff73
--- /dev/null
+++ b/deploy/compass_conf/flavor_mapping/single-contoller-multi-compute.conf
@@ -0,0 +1,132 @@
+ADAPTER = 'openstack-icehouse'
+FLAVOR = 'single-contoller-multi-compute'
+CONFIG_MAPPING = {
+ "mapped_name": "flavor_config",
+ "mapped_children": [{
+ "security": {
+ "accordion_heading": "OpenStack Database and Queue Credentials",
+ "category": "service_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config": {
+ "rabbitmq": {
+ "username": "guest",
+ "password": "guest"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "identity": {
+ "username": "keystone",
+ "password": "keystone"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "mysql": {
+ "username": "root",
+ "password": "root"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ }
+ }
+ },{
+ "security": {
+ "accordion_heading": "OpenStack Keystone User Credentials",
+ "category": "console_credentials",
+ "data_structure": "table",
+ "action": "true",
+ "modifiable_data": ["username", "password"],
+ "table_display_header": ["Service", "UserName", "Password", "Action"],
+ "config":{
+ "admin": {
+ "username": "admin",
+ "password": "admin"
+ },
+ "compute": {
+ "username": "nova",
+ "password": "nova"
+ },
+ "dashboard": {
+ "username": "dashboard",
+ "password": "dashboard"
+ },
+ "image": {
+ "username": "glance",
+ "password": "glance"
+ },
+ "metering": {
+ "username": "ceilometer",
+ "password": "ceilometer"
+ },
+ "network": {
+ "username": "quantum",
+ "password": "quantum"
+ },
+ "object-store": {
+ "username": "swift",
+ "password": "swift"
+ },
+ "volume": {
+ "username": "cinder",
+ "password": "cinder"
+ }
+ }
+ }
+ },{
+ "neutron_config": {
+ "accordion_heading": "Neutron Configurations",
+ "data_structure": "form",
+ "category": "neutron_config",
+ "form_name": "neutronForm",
+ "data": {
+ "openvswitch": {
+ "tenant_network_type": {
+ "label": "Tenant Network Type",
+ "input_type": "dropdown",
+ "mapped_key": [
+ "name", "is_required", "options"
+ ],
+ "content_data": {
+ "gre": [{
+ "label": "Tunnel ID Ranges",
+ "is_required": "true",
+ "display_type": "dropdown_text_multiple",
+ "name": "tunnel_id_ranges",
+ "hint": "1:1000"
+ }],
+ "vlan": [{
+ "label": "Network Vlan Ranges",
+ "is_required": "true",
+ "display_type": "dropdown_text_multiple",
+ "name": "network_vlan_ranges",
+ "hint": "physnet1:2700:2999"
+ }, {
+ "label": "Bridge Mapping",
+ "is_required": "true",
+ "display_type": "dropdown_text_multiple",
+ "name": "bridge_mappings",
+ "hint": "physnet1:br-eth1"
+ }]
+ }
+ }
+ }
+ }
+ }
+ }]
+}
diff --git a/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-juno.conf b/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-juno.conf
new file mode 100755
index 00000000..e3ff468b
--- /dev/null
+++ b/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-juno.conf
@@ -0,0 +1,19 @@
+ADAPTER = 'openstack_juno'
+FLAVOR = 'HA-ansible-multinodes-juno'
+METADATA = {
+ 'ha_proxy': {
+ '_self': {
+ },
+ 'vip': {
+ '_self': {
+ 'is_required': True,
+ 'field': 'general',
+ 'mapping_to': 'ha_vip'
+ }
+ },
+ 'test': {
+ '_self': {
+ },
+ }
+ }
+}
diff --git a/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-kilo.conf b/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-kilo.conf
new file mode 100755
index 00000000..c944c0dc
--- /dev/null
+++ b/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-kilo.conf
@@ -0,0 +1,19 @@
+ADAPTER = 'openstack_kilo'
+FLAVOR = 'HA-ansible-multinodes-kilo'
+METADATA = {
+ 'ha_proxy': {
+ '_self': {
+ },
+ 'vip': {
+ '_self': {
+ 'is_required': True,
+ 'field': 'general',
+ 'mapping_to': 'ha_vip'
+ }
+ },
+ 'test': {
+ '_self': {
+ },
+ }
+ }
+}
diff --git a/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-liberty.conf b/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-liberty.conf
new file mode 100755
index 00000000..2d1cc7d3
--- /dev/null
+++ b/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-liberty.conf
@@ -0,0 +1,19 @@
+ADAPTER = 'openstack_liberty'
+FLAVOR = 'HA-ansible-multinodes-liberty'
+METADATA = {
+ 'ha_proxy': {
+ '_self': {
+ },
+ 'vip': {
+ '_self': {
+ 'is_required': True,
+ 'field': 'general',
+ 'mapping_to': 'ha_vip'
+ }
+ },
+ 'test': {
+ '_self': {
+ },
+ }
+ }
+}
diff --git a/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-mitaka.conf b/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-mitaka.conf
new file mode 100755
index 00000000..1558b516
--- /dev/null
+++ b/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-mitaka.conf
@@ -0,0 +1,19 @@
+ADAPTER = 'openstack_mitaka'
+FLAVOR = 'HA-ansible-multinodes-mitaka'
+METADATA = {
+ 'ha_proxy': {
+ '_self': {
+ },
+ 'vip': {
+ '_self': {
+ 'is_required': True,
+ 'field': 'general',
+ 'mapping_to': 'ha_vip'
+ }
+ },
+ 'test': {
+ '_self': {
+ },
+ }
+ }
+}
diff --git a/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-mitaka_xenial.conf b/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-mitaka_xenial.conf
new file mode 100755
index 00000000..e844e162
--- /dev/null
+++ b/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-mitaka_xenial.conf
@@ -0,0 +1,19 @@
+ADAPTER = 'openstack_mitaka_xenial'
+FLAVOR = 'HA-ansible-multinodes-mitaka_xenial'
+METADATA = {
+ 'ha_proxy': {
+ '_self': {
+ },
+ 'vip': {
+ '_self': {
+ 'is_required': True,
+ 'field': 'general',
+ 'mapping_to': 'ha_vip'
+ }
+ },
+ 'test': {
+ '_self': {
+ },
+ }
+ }
+}
diff --git a/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-newton_xenial.conf b/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-newton_xenial.conf
new file mode 100755
index 00000000..c6466577
--- /dev/null
+++ b/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-newton_xenial.conf
@@ -0,0 +1,19 @@
+ADAPTER = 'openstack_newton_xenial'
+FLAVOR = 'HA-ansible-multinodes-newton_xenial'
+METADATA = {
+ 'ha_proxy': {
+ '_self': {
+ },
+ 'vip': {
+ '_self': {
+ 'is_required': True,
+ 'field': 'general',
+ 'mapping_to': 'ha_vip'
+ }
+ },
+ 'test': {
+ '_self': {
+ },
+ }
+ }
+}
diff --git a/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-osp9.conf b/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-osp9.conf
new file mode 100755
index 00000000..20e9f901
--- /dev/null
+++ b/deploy/compass_conf/flavor_metadata/HA-ansible-multinodes-osp9.conf
@@ -0,0 +1,19 @@
+ADAPTER = 'openstack_osp9'
+FLAVOR = 'HA-ansible-multinodes-osp9'
+METADATA = {
+ 'ha_proxy': {
+ '_self': {
+ },
+ 'vip': {
+ '_self': {
+ 'is_required': True,
+ 'field': 'general',
+ 'mapping_to': 'ha_vip'
+ }
+ },
+ 'test': {
+ '_self': {
+ },
+ }
+ }
+}
diff --git a/deploy/compass_conf/flavor_metadata/HA-multinodes.conf b/deploy/compass_conf/flavor_metadata/HA-multinodes.conf
new file mode 100755
index 00000000..c859c93f
--- /dev/null
+++ b/deploy/compass_conf/flavor_metadata/HA-multinodes.conf
@@ -0,0 +1,19 @@
+ADAPTER = 'openstack_icehouse'
+FLAVOR = 'HA-multinodes'
+METADATA = {
+ 'ha_proxy': {
+ '_self': {
+ },
+ 'vip': {
+ '_self': {
+ 'is_required': True,
+ 'field': 'general',
+ 'mapping_to': 'ha_vip'
+ }
+ },
+ 'test': {
+ '_self': {
+ },
+ }
+ }
+}
diff --git a/deploy/compass_conf/flavor_metadata/allinone.conf b/deploy/compass_conf/flavor_metadata/allinone.conf
new file mode 100755
index 00000000..7d248ecf
--- /dev/null
+++ b/deploy/compass_conf/flavor_metadata/allinone.conf
@@ -0,0 +1,3 @@
+ADAPTER = 'openstack_icehouse'
+FLAVOR = 'allinone'
+METADATA = {}
diff --git a/deploy/compass_conf/flavor_metadata/multinodes.conf b/deploy/compass_conf/flavor_metadata/multinodes.conf
new file mode 100755
index 00000000..7fb835f8
--- /dev/null
+++ b/deploy/compass_conf/flavor_metadata/multinodes.conf
@@ -0,0 +1,3 @@
+ADAPTER = 'openstack_icehouse'
+FLAVOR = 'multinodes'
+METADATA = {}
diff --git a/deploy/compass_conf/flavor_metadata/single-contoller-multi-compute.conf b/deploy/compass_conf/flavor_metadata/single-contoller-multi-compute.conf
new file mode 100755
index 00000000..69faf5d2
--- /dev/null
+++ b/deploy/compass_conf/flavor_metadata/single-contoller-multi-compute.conf
@@ -0,0 +1,3 @@
+ADAPTER = 'openstack_icehouse'
+FLAVOR = 'single-contoller-multi-compute'
+METADATA = {}
diff --git a/deploy/compass_conf/machine_list/machine_list.conf b/deploy/compass_conf/machine_list/machine_list.conf
new file mode 100755
index 00000000..a07ce517
--- /dev/null
+++ b/deploy/compass_conf/machine_list/machine_list.conf
@@ -0,0 +1,46 @@
+MACHINE_LIST = [
+ {
+ '127.0.0.1': [
+ {
+ 'port': '200',
+ 'mac': '80:fb:06:35:8c:85',
+ 'vlan': 0,
+ },
+ {
+ 'port': '201',
+ 'mac': '70:7b:e8:75:71:dc',
+ 'vlan': 0,
+ },
+ {
+ 'port': '202',
+ 'mac': '80:fb:06:35:8c:a0',
+ 'vlan': 0,
+ },
+ {
+ 'port': '203',
+ 'mac': '70:7b:e8:75:71:d3',
+ 'vlan': 0,
+ },
+ {
+ 'port': '204',
+ 'mac': '70:7b:e8:75:72:21',
+ 'vlan': 0,
+ },
+ {
+ 'port': '205',
+ 'mac': '70:7b:e8:75:71:37',
+ 'vlan': 0,
+ },
+ {
+ 'port': '206',
+ 'mac': '70:fb:e8:75:71:d6',
+ 'vlan': 0,
+ },
+ {
+ 'port': '207',
+ 'mac': '70:7b:e8:75:71:d9',
+ 'vlan': 0,
+ }
+ ]
+ },
+]
diff --git a/deploy/compass_conf/os/centos.conf b/deploy/compass_conf/os/centos.conf
new file mode 100755
index 00000000..d67f12a1
--- /dev/null
+++ b/deploy/compass_conf/os/centos.conf
@@ -0,0 +1,2 @@
+NAME = 'CentOS'
+PARENT = 'general'
diff --git a/deploy/compass_conf/os/centos6.5.conf b/deploy/compass_conf/os/centos6.5.conf
new file mode 100755
index 00000000..75d4eb17
--- /dev/null
+++ b/deploy/compass_conf/os/centos6.5.conf
@@ -0,0 +1,3 @@
+NAME = 'CentOS-6.5-x86_64'
+PARENT = 'CentOS'
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/os/centos6.6.conf b/deploy/compass_conf/os/centos6.6.conf
new file mode 100755
index 00000000..0f072786
--- /dev/null
+++ b/deploy/compass_conf/os/centos6.6.conf
@@ -0,0 +1,3 @@
+NAME = 'CentOS-6.6-x86_64'
+PARENT = 'CentOS'
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/os/centos7.0.conf b/deploy/compass_conf/os/centos7.0.conf
new file mode 100755
index 00000000..9dcdf753
--- /dev/null
+++ b/deploy/compass_conf/os/centos7.0.conf
@@ -0,0 +1,3 @@
+NAME = 'CentOS-7.0-x86_64'
+PARENT = 'CentOS'
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/os/centos7.2.conf b/deploy/compass_conf/os/centos7.2.conf
new file mode 100755
index 00000000..9cc8d329
--- /dev/null
+++ b/deploy/compass_conf/os/centos7.2.conf
@@ -0,0 +1,3 @@
+NAME = 'CentOS-7-Minimal-1511-x86_64'
+PARENT = 'CentOS'
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/os/general.conf b/deploy/compass_conf/os/general.conf
new file mode 100755
index 00000000..655beb06
--- /dev/null
+++ b/deploy/compass_conf/os/general.conf
@@ -0,0 +1,2 @@
+NAME = 'general'
+PARENT = ''
diff --git a/deploy/compass_conf/os/rhel7.2.conf b/deploy/compass_conf/os/rhel7.2.conf
new file mode 100755
index 00000000..bcb5f581
--- /dev/null
+++ b/deploy/compass_conf/os/rhel7.2.conf
@@ -0,0 +1,3 @@
+NAME = 'rhel-server-7.2-x86_64'
+PARENT = 'CentOS'
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/os/sles11sp3.conf b/deploy/compass_conf/os/sles11sp3.conf
new file mode 100755
index 00000000..2c1218d2
--- /dev/null
+++ b/deploy/compass_conf/os/sles11sp3.conf
@@ -0,0 +1,3 @@
+NAME = 'sles-11sp3-x86_64'
+PARENT = 'suse'
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/os/suse.conf b/deploy/compass_conf/os/suse.conf
new file mode 100755
index 00000000..af891b31
--- /dev/null
+++ b/deploy/compass_conf/os/suse.conf
@@ -0,0 +1,2 @@
+NAME = 'suse'
+PARENT = 'general'
diff --git a/deploy/compass_conf/os/ubuntu.conf b/deploy/compass_conf/os/ubuntu.conf
new file mode 100755
index 00000000..2207329e
--- /dev/null
+++ b/deploy/compass_conf/os/ubuntu.conf
@@ -0,0 +1,2 @@
+NAME = 'Ubuntu'
+PARENT = 'general'
diff --git a/deploy/compass_conf/os/ubuntu12.04.conf b/deploy/compass_conf/os/ubuntu12.04.conf
new file mode 100755
index 00000000..db810061
--- /dev/null
+++ b/deploy/compass_conf/os/ubuntu12.04.conf
@@ -0,0 +1,3 @@
+NAME = 'Ubuntu-12.04-x86_64'
+PARENT = 'Ubuntu'
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/os/ubuntu14.04.3.conf b/deploy/compass_conf/os/ubuntu14.04.3.conf
new file mode 100755
index 00000000..54b94a7c
--- /dev/null
+++ b/deploy/compass_conf/os/ubuntu14.04.3.conf
@@ -0,0 +1,3 @@
+NAME = 'ubuntu-14.04.3-server-x86_64'
+PARENT = 'Ubuntu'
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/os/ubuntu14.04.conf b/deploy/compass_conf/os/ubuntu14.04.conf
new file mode 100755
index 00000000..0fa90fb3
--- /dev/null
+++ b/deploy/compass_conf/os/ubuntu14.04.conf
@@ -0,0 +1,3 @@
+NAME = 'Ubuntu-14.04-x86_64'
+PARENT = 'Ubuntu'
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/os/ubuntu16.04.conf b/deploy/compass_conf/os/ubuntu16.04.conf
new file mode 100755
index 00000000..f3605026
--- /dev/null
+++ b/deploy/compass_conf/os/ubuntu16.04.conf
@@ -0,0 +1,3 @@
+NAME = 'ubuntu-16.04-server-x86_64'
+PARENT = 'Ubuntu'
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/os/uvp11sp3.conf b/deploy/compass_conf/os/uvp11sp3.conf
new file mode 100755
index 00000000..41a99b15
--- /dev/null
+++ b/deploy/compass_conf/os/uvp11sp3.conf
@@ -0,0 +1,3 @@
+NAME = 'uvp-11sp3-x86_64'
+PARENT = 'suse'
+DEPLOYABLE = True
diff --git a/deploy/compass_conf/os_field/dns.conf b/deploy/compass_conf/os_field/dns.conf
new file mode 100755
index 00000000..b97b1544
--- /dev/null
+++ b/deploy/compass_conf/os_field/dns.conf
@@ -0,0 +1,2 @@
+NAME = 'dns'
+VALIDATOR = is_valid_dns
diff --git a/deploy/compass_conf/os_field/domain.conf b/deploy/compass_conf/os_field/domain.conf
new file mode 100755
index 00000000..fdf74289
--- /dev/null
+++ b/deploy/compass_conf/os_field/domain.conf
@@ -0,0 +1,2 @@
+NAME = 'domain'
+VALIDATOR = is_valid_domain
diff --git a/deploy/compass_conf/os_field/gateway.conf b/deploy/compass_conf/os_field/gateway.conf
new file mode 100755
index 00000000..f9a3139e
--- /dev/null
+++ b/deploy/compass_conf/os_field/gateway.conf
@@ -0,0 +1,2 @@
+NAME = 'gateway'
+VALIDATOR = is_valid_gateway
diff --git a/deploy/compass_conf/os_field/general.conf b/deploy/compass_conf/os_field/general.conf
new file mode 100755
index 00000000..8ca13a3e
--- /dev/null
+++ b/deploy/compass_conf/os_field/general.conf
@@ -0,0 +1,2 @@
+NAME = 'general'
+DISPLAY_TYPE = 'dropdown'
diff --git a/deploy/compass_conf/os_field/general_list.conf b/deploy/compass_conf/os_field/general_list.conf
new file mode 100755
index 00000000..8cd77837
--- /dev/null
+++ b/deploy/compass_conf/os_field/general_list.conf
@@ -0,0 +1,3 @@
+NAME = 'general_list'
+FIELD_TYPE = list
+DISPLAY_TYPE = 'multitext'
diff --git a/deploy/compass_conf/os_field/ip.conf b/deploy/compass_conf/os_field/ip.conf
new file mode 100755
index 00000000..4f532098
--- /dev/null
+++ b/deploy/compass_conf/os_field/ip.conf
@@ -0,0 +1,2 @@
+NAME = 'ip'
+VALIDATOR = is_valid_ip
diff --git a/deploy/compass_conf/os_field/ip_list.conf b/deploy/compass_conf/os_field/ip_list.conf
new file mode 100755
index 00000000..718ffa13
--- /dev/null
+++ b/deploy/compass_conf/os_field/ip_list.conf
@@ -0,0 +1,4 @@
+NAME = 'ip_list'
+FIELD_TYPE = list
+VALIDATOR = is_valid_ip
+DISPLAY_TYPE = 'multitext'
diff --git a/deploy/compass_conf/os_field/netmask.conf b/deploy/compass_conf/os_field/netmask.conf
new file mode 100755
index 00000000..2dab8690
--- /dev/null
+++ b/deploy/compass_conf/os_field/netmask.conf
@@ -0,0 +1,2 @@
+NAME = 'netmask'
+VALIDATOR = is_valid_netmask
diff --git a/deploy/compass_conf/os_field/network.conf b/deploy/compass_conf/os_field/network.conf
new file mode 100755
index 00000000..c7f627f3
--- /dev/null
+++ b/deploy/compass_conf/os_field/network.conf
@@ -0,0 +1,2 @@
+NAME = 'network'
+VALIDATOR = is_valid_network
diff --git a/deploy/compass_conf/os_field/password.conf b/deploy/compass_conf/os_field/password.conf
new file mode 100755
index 00000000..5cf7c3d6
--- /dev/null
+++ b/deploy/compass_conf/os_field/password.conf
@@ -0,0 +1,4 @@
+NAME = 'password'
+VALIDATOR = is_valid_password
+DESCRIPTION = 'password'
+DISPLAY_TYPE = 'password'
diff --git a/deploy/compass_conf/os_field/percentage.conf b/deploy/compass_conf/os_field/percentage.conf
new file mode 100755
index 00000000..2e61c899
--- /dev/null
+++ b/deploy/compass_conf/os_field/percentage.conf
@@ -0,0 +1,3 @@
+NAME = 'percentage'
+FIELD_TYPE = int
+VALIDATOR = is_valid_percentage
diff --git a/deploy/compass_conf/os_field/size.conf b/deploy/compass_conf/os_field/size.conf
new file mode 100755
index 00000000..b3b686e8
--- /dev/null
+++ b/deploy/compass_conf/os_field/size.conf
@@ -0,0 +1,2 @@
+NAME = 'size'
+VALIDATOR = is_valid_size
diff --git a/deploy/compass_conf/os_field/string.conf b/deploy/compass_conf/os_field/string.conf
new file mode 100755
index 00000000..48b6673b
--- /dev/null
+++ b/deploy/compass_conf/os_field/string.conf
@@ -0,0 +1 @@
+NAME = 'string'
diff --git a/deploy/compass_conf/os_field/url.conf b/deploy/compass_conf/os_field/url.conf
new file mode 100755
index 00000000..b6a74f35
--- /dev/null
+++ b/deploy/compass_conf/os_field/url.conf
@@ -0,0 +1,2 @@
+NAME = 'url'
+VALIDATOR = is_valid_url
diff --git a/deploy/compass_conf/os_field/username.conf b/deploy/compass_conf/os_field/username.conf
new file mode 100755
index 00000000..79907b1a
--- /dev/null
+++ b/deploy/compass_conf/os_field/username.conf
@@ -0,0 +1,3 @@
+NAME = 'username'
+VALIDATOR = is_valid_username
+DESCRIPTION = 'username'
diff --git a/deploy/compass_conf/os_installer/cobbler.conf b/deploy/compass_conf/os_installer/cobbler.conf
new file mode 100755
index 00000000..fb2043af
--- /dev/null
+++ b/deploy/compass_conf/os_installer/cobbler.conf
@@ -0,0 +1,9 @@
+NAME = 'cobbler'
+INSTANCE_NAME = 'cobbler'
+SETTINGS = {
+ 'cobbler_url': 'http://$cobbler_ip/cobbler_api',
+ 'credentials': {
+ 'username': 'cobbler',
+ 'password': 'cobbler'
+ }
+}
diff --git a/deploy/compass_conf/os_mapping/os_mapping.conf b/deploy/compass_conf/os_mapping/os_mapping.conf
new file mode 100755
index 00000000..cf7b1c85
--- /dev/null
+++ b/deploy/compass_conf/os_mapping/os_mapping.conf
@@ -0,0 +1,188 @@
+OS = 'general'
+CONFIG_MAPPING = {
+ "mapped_name": "os_global_config",
+ "mapped_children": [{
+ "server_credentials":{
+ "name": "server_credentials",
+ "title": "Server Credentials",
+ "order": 2,
+ "data": {
+ "username": {
+ "placeholder": "Username",
+ "display_name": "User name",
+ "order": 1,
+ "mapped_key": [
+ "name", "is_required", "display_type", "default_value"
+ ]
+ },
+ "password": {
+ "placeholder": "Password",
+ "display_name": "Password",
+ "order": 2,
+ "mapped_key": [
+ "name", "is_required", "display_type"
+ ]
+ },
+ "confirm_password": {
+ "placeholder": "Confirm Password",
+ "name": "confirmPassword",
+ "display_name": "Confirm Password",
+ "display_type": "password",
+ "is_required": "true",
+ "datamatch": "password",
+ "order": 3
+ }
+ }
+ }
+ },{
+ "general": {
+ "name": "general",
+ "title": "",
+ "order": 1,
+ "data": {
+ "language": {
+ "display_name": "Language",
+ "order": 1,
+ "default_value": "en",
+ "mapped_key": [
+ "name", "is_required", "display_type"
+ ],
+ "options": [{
+ "name": "English",
+ "value": "en"
+ },{
+ "name": "Chinese",
+ "value": "cn"
+ }],
+ },
+ "timezone": {
+ "display_name": "Timezone",
+ "order": 2,
+ "default_value": "America/Los_Angeles",
+ "mapped_key": [
+ "name", "is_required", "display_type"
+ ],
+ "options": [{
+ "name": "Los Angeles",
+ "value": "America/Los_Angeles"
+ },{
+ "name": "Chicago",
+ "value": "America/Chicago"
+ },{
+ "name": "Hong_Kong",
+ "value": "Asia/Hong Kong"
+ },{
+ "name": "Shanghai",
+ "value": "Asia/Shanghai"
+ },{
+ "name": "London",
+ "value": "Europe/London"
+ },{
+ "name": "Paris",
+ "value": "Europe/Paris"
+ },{
+ "name": "New York",
+ "value": "America/New_York"
+ },],
+ },
+ "http_proxy": {
+ "placeholder": "HTTP Proxy",
+ "display_name": "HTTP Proxy",
+ "order": 3,
+ "mapped_key": [
+ "name", "is_required", "display_type"
+ ]
+ },
+ "https_proxy": {
+ "placeholder": "HTTPS Proxy",
+ "display_name": "HTTPS Proxy",
+ "order": 4,
+ "mapped_key": [
+ "name", "is_required", "display_type"
+ ]
+ },
+ "no_proxy": {
+ "placeholder": "No Proxy",
+ "display_name": "No Proxy",
+ "order": 5,
+ "mapped_key": [
+ "name", "is_required", "display_type"
+ ]
+ },
+ "ntp_server": {
+ "placeholder": "NTP Server",
+ "display_name": "NTP Server",
+ "order": 6,
+ "mapped_key": [
+ "name", "is_required", "display_type"
+ ]
+ },
+ "dns_servers": {
+ "placeholder": "DNS Server",
+ "display_name": "DNS Server",
+ "order": 7,
+ "mapped_key": [
+ "name", "is_required", "display_type"
+ ]
+ },
+ "search_path": {
+ "placeholder": "Search Path",
+ "display_name": "Search Path",
+ "order": 8,
+ "mapped_key": [
+ "name", "is_required", "display_type", "default_value"
+ ]
+ },
+ "domain": {
+ "placeholder": "Domain",
+ "display_name": "Domain",
+ "order": 9,
+ "mapped_key": [
+ "name", "is_required", "display_type", "default_value"
+ ]
+ },
+ "default_gateway": {
+ "placeholder": "Gateway",
+ "display_name": "Default Gateway",
+ "order": 10,
+ "mapped_key": [
+ "name", "is_required", "display_type", "default_value"
+ ]
+ },
+ "local_repo": {
+ "placeholder": "Local Repo",
+ "display_name": "Local Repository",
+ "order": 11,
+ "mapped_key": [
+ "name", "is_required", "display_type"
+ ]
+ },
+ "repo_name": {
+ "placeholder": "Repo Name",
+ "display_name": "Repository",
+ "default_value": "trusty-juno-ppa",
+ "order": 12,
+ "mapped_key": [
+ "name", "is_required", "display_type"
+ ]
+ },
+ "deploy_type": {
+ "placeholder": "Deploy Type",
+ "display_name": "Deploy Type",
+ "default_value": "virtual",
+ "order": 13,
+ "mapped_key": [
+ "name", "is_required", "display_type"
+ ],
+ "options": [{
+ "name": "virtual",
+ "value": "virtual"
+ },{
+ "name": "baremetal",
+ "value": "baremetal"
+ }],
+ }
+ }
+ }
+ }]
+}
diff --git a/deploy/compass_conf/os_metadata/general.conf b/deploy/compass_conf/os_metadata/general.conf
new file mode 100755
index 00000000..e6e6431d
--- /dev/null
+++ b/deploy/compass_conf/os_metadata/general.conf
@@ -0,0 +1,179 @@
+OS = 'general'
+METADATA = {
+ 'general': {
+ '_self': {
+ 'required_in_whole_config': True
+ },
+ 'language': {
+ '_self': {
+ 'field': 'general',
+ 'is_required': True,
+ 'default_value': 'EN',
+ 'options': ['EN', 'CN'],
+ 'mapping_to': 'language'
+ }
+ },
+ 'timezone': {
+ '_self': {
+ 'field': 'general',
+ 'is_required': True,
+ 'default_value': 'UTC',
+ 'options': [
+ 'America/New_York', 'America/Chicago',
+ 'America/Los_Angeles', 'Asia/Shanghai',
+ 'Asia/Tokyo', 'Europe/Paris',
+ 'Europe/London', 'Europe/Moscow',
+ 'Europe/Rome', 'Europe/Madrid',
+ 'Europe/Berlin', 'UTC'
+ ],
+ 'mapping_to': 'timezone'
+ }
+ },
+ 'http_proxy': {
+ '_self': {
+ 'field': 'url',
+ 'default_callback': default_proxy,
+ 'options_callback': proxy_options,
+ 'mapping_to': 'http_proxy'
+ }
+ },
+ 'https_proxy': {
+ '_self': {
+ 'field': 'url',
+ 'default_callback': default_proxy,
+ 'options_callback': proxy_options,
+ 'mapping_to': 'https_proxy'
+ }
+ },
+ 'no_proxy': {
+ '_self': {
+ 'field': 'general_list',
+ 'default_callback': default_noproxy,
+ 'options_callback': noproxy_options,
+ 'autofill_callback': autofill_no_proxy,
+ 'mapping_to': 'no_proxy'
+ }
+ },
+ 'ntp_server': {
+ '_self': {
+ 'is_required': True,
+ 'field': 'string',
+ 'default_callback': default_ntp_server,
+ 'options_callback': ntp_server_options,
+ 'mapping_to': 'ntp_server'
+ }
+ },
+ 'dns_servers': {
+ '_self': {
+ 'is_required': True,
+ 'field': 'ip_list',
+ 'default_callback': default_dns_servers,
+ 'options_callback': dns_servers_options,
+ 'mapping_to': 'nameservers'
+ }
+ },
+ 'domain': {
+ '_self': {
+ 'field': 'domain',
+ 'is_required' : True,
+ 'default_callback': default_domain,
+ 'options_callback': domain_options,
+ }
+ },
+ 'search_path': {
+ '_self': {
+ 'field': 'general_list',
+ 'default_callback': default_search_path,
+ 'options_callback': search_path_options,
+ 'mapping_to': 'search_path'
+ }
+ },
+ 'default_gateway': {
+ '_self': {
+ 'is_required': True,
+ 'field': 'ip',
+ 'default_callback': default_gateway,
+ 'mapping_to': 'gateway'
+ }
+ },
+ 'local_repo': {
+ '_self': {
+ 'field': 'url',
+ 'default_callback': default_localrepo,
+ 'mapping_to': 'local_repo'
+ }
+ },
+ 'repo_name': {
+ '_self': {
+ 'field': 'string',
+ 'mapping_to': 'repo_name'
+ }
+ },
+ 'deploy_type': {
+ '_self': {
+ 'field': 'general',
+ 'is_required': True,
+ 'default_value': 'baremetal',
+ 'options': [
+ 'baremetal', 'virtual'
+ ],
+ 'mapping_to': 'deploy_type'
+ }
+ },
+ },
+ 'server_credentials': {
+ '_self': {
+ 'required_in_whole_config': True,
+ 'mapping_to': 'server_credentials'
+ },
+ 'username': {
+ '_self': {
+ 'is_required': True,
+ 'default_value': 'root',
+ 'field': 'username',
+ 'mapping_to': 'username'
+ }
+ },
+ 'password': {
+ '_self': {
+ 'is_required': True,
+ 'default_value': 'root',
+ 'field': 'password',
+ 'mapping_to': 'password'
+ }
+ }
+ },
+ 'partition': {
+ '_self': {
+ 'required_in_whole_config': True,
+ 'options': ['/boot', 'swap', '/var', '/home'],
+ 'mapping_to': 'partition'
+ },
+ '$partition': {
+ '_self': {
+ 'validator': is_valid_partition,
+ 'mapping_to': '$partition'
+ },
+ 'max_size': {
+ '_self': {
+ 'field': 'size',
+ 'mapping_to': 'max_vol_size'
+ },
+ },
+ 'percentage': {
+ '_self': {
+ 'field': 'percentage',
+ 'default_value': 10,
+ 'mapping_to': 'vol_percentage'
+ }
+ },
+ 'size': {
+ '_self': {
+ 'field': 'size',
+ 'default_value': '1G',
+ 'mapping_to': 'vol_size'
+ },
+ }
+ }
+ }
+}
diff --git a/deploy/compass_conf/package_field/anytype.conf b/deploy/compass_conf/package_field/anytype.conf
new file mode 100755
index 00000000..dd65c593
--- /dev/null
+++ b/deploy/compass_conf/package_field/anytype.conf
@@ -0,0 +1,2 @@
+NAME = 'anytype'
+FIELD_TYPE = object
diff --git a/deploy/compass_conf/package_field/dns.conf b/deploy/compass_conf/package_field/dns.conf
new file mode 100755
index 00000000..b97b1544
--- /dev/null
+++ b/deploy/compass_conf/package_field/dns.conf
@@ -0,0 +1,2 @@
+NAME = 'dns'
+VALIDATOR = is_valid_dns
diff --git a/deploy/compass_conf/package_field/gateway.conf b/deploy/compass_conf/package_field/gateway.conf
new file mode 100755
index 00000000..f9a3139e
--- /dev/null
+++ b/deploy/compass_conf/package_field/gateway.conf
@@ -0,0 +1,2 @@
+NAME = 'gateway'
+VALIDATOR = is_valid_gateway
diff --git a/deploy/compass_conf/package_field/general.conf b/deploy/compass_conf/package_field/general.conf
new file mode 100755
index 00000000..4d8cb371
--- /dev/null
+++ b/deploy/compass_conf/package_field/general.conf
@@ -0,0 +1 @@
+NAME = 'general'
diff --git a/deploy/compass_conf/package_field/general_list.conf b/deploy/compass_conf/package_field/general_list.conf
new file mode 100755
index 00000000..9b37cb99
--- /dev/null
+++ b/deploy/compass_conf/package_field/general_list.conf
@@ -0,0 +1,2 @@
+NAME = 'general_list'
+FIELD_TYPE = list
diff --git a/deploy/compass_conf/package_field/integer.conf b/deploy/compass_conf/package_field/integer.conf
new file mode 100755
index 00000000..45f000e3
--- /dev/null
+++ b/deploy/compass_conf/package_field/integer.conf
@@ -0,0 +1,2 @@
+NAME = 'integer'
+FIELD_TYPE = int
diff --git a/deploy/compass_conf/package_field/ip.conf b/deploy/compass_conf/package_field/ip.conf
new file mode 100755
index 00000000..0389cef9
--- /dev/null
+++ b/deploy/compass_conf/package_field/ip.conf
@@ -0,0 +1,2 @@
+NAME = 'ip address'
+VALIDATOR = is_valid_ip
diff --git a/deploy/compass_conf/package_field/netmask.conf b/deploy/compass_conf/package_field/netmask.conf
new file mode 100755
index 00000000..2dab8690
--- /dev/null
+++ b/deploy/compass_conf/package_field/netmask.conf
@@ -0,0 +1,2 @@
+NAME = 'netmask'
+VALIDATOR = is_valid_netmask
diff --git a/deploy/compass_conf/package_field/network.conf b/deploy/compass_conf/package_field/network.conf
new file mode 100755
index 00000000..c7f627f3
--- /dev/null
+++ b/deploy/compass_conf/package_field/network.conf
@@ -0,0 +1,2 @@
+NAME = 'network'
+VALIDATOR = is_valid_network
diff --git a/deploy/compass_conf/package_field/password.conf b/deploy/compass_conf/package_field/password.conf
new file mode 100755
index 00000000..bdb026e5
--- /dev/null
+++ b/deploy/compass_conf/package_field/password.conf
@@ -0,0 +1,3 @@
+NAME = 'password'
+VALIDATOR = is_valid_password
+DESCRIPTION = 'password'
diff --git a/deploy/compass_conf/package_field/percentage.conf b/deploy/compass_conf/package_field/percentage.conf
new file mode 100755
index 00000000..2e61c899
--- /dev/null
+++ b/deploy/compass_conf/package_field/percentage.conf
@@ -0,0 +1,3 @@
+NAME = 'percentage'
+FIELD_TYPE = int
+VALIDATOR = is_valid_percentage
diff --git a/deploy/compass_conf/package_field/roles.conf b/deploy/compass_conf/package_field/roles.conf
new file mode 100755
index 00000000..a0319ed2
--- /dev/null
+++ b/deploy/compass_conf/package_field/roles.conf
@@ -0,0 +1,3 @@
+NAME = 'roles'
+FIELD_TYPE = list
+DESCRIPTION = 'roles'
diff --git a/deploy/compass_conf/package_field/size.conf b/deploy/compass_conf/package_field/size.conf
new file mode 100755
index 00000000..b3b686e8
--- /dev/null
+++ b/deploy/compass_conf/package_field/size.conf
@@ -0,0 +1,2 @@
+NAME = 'size'
+VALIDATOR = is_valid_size
diff --git a/deploy/compass_conf/package_field/username.conf b/deploy/compass_conf/package_field/username.conf
new file mode 100755
index 00000000..79907b1a
--- /dev/null
+++ b/deploy/compass_conf/package_field/username.conf
@@ -0,0 +1,3 @@
+NAME = 'username'
+VALIDATOR = is_valid_username
+DESCRIPTION = 'username'
diff --git a/deploy/compass_conf/package_installer/ansible-juno.conf b/deploy/compass_conf/package_installer/ansible-juno.conf
new file mode 100755
index 00000000..0c74b2ed
--- /dev/null
+++ b/deploy/compass_conf/package_installer/ansible-juno.conf
@@ -0,0 +1,13 @@
+NAME = 'ansible_installer'
+INSTANCE_NAME = 'ansible_installer_juno'
+SETTINGS = {
+ 'ansible_dir': '/var/ansible',
+ 'ansible_run_dir': '/var/ansible/run',
+ 'ansible_config': 'ansible.cfg',
+ 'playbook_file': 'site.yml',
+ 'inventory_file': 'inventory.yml',
+ 'group_variable': 'all',
+ 'etc_hosts_path': 'roles/common/templates/hosts',
+ 'runner_dirs': ['roles','openstack_juno/templates','openstack_juno/roles']
+}
+
diff --git a/deploy/compass_conf/package_installer/ansible-kilo.conf b/deploy/compass_conf/package_installer/ansible-kilo.conf
new file mode 100755
index 00000000..cfe21478
--- /dev/null
+++ b/deploy/compass_conf/package_installer/ansible-kilo.conf
@@ -0,0 +1,13 @@
+NAME = 'ansible_installer'
+INSTANCE_NAME = 'ansible_installer_kilo'
+SETTINGS = {
+ 'ansible_dir': '/var/ansible',
+ 'ansible_run_dir': '/var/ansible/run',
+ 'ansible_config': 'ansible.cfg',
+ 'playbook_file': 'site.yml',
+ 'inventory_file': 'inventory.yml',
+ 'group_variable': 'all',
+ 'etc_hosts_path': 'roles/common/templates/hosts',
+ 'runner_dirs': ['roles','openstack_kilo/templates','openstack_kilo/roles']
+}
+
diff --git a/deploy/compass_conf/package_installer/ansible-liberty.conf b/deploy/compass_conf/package_installer/ansible-liberty.conf
new file mode 100755
index 00000000..f0c8fb39
--- /dev/null
+++ b/deploy/compass_conf/package_installer/ansible-liberty.conf
@@ -0,0 +1,13 @@
+NAME = 'ansible_installer'
+INSTANCE_NAME = 'ansible_installer_liberty'
+SETTINGS = {
+ 'ansible_dir': '/var/ansible',
+ 'ansible_run_dir': '/var/ansible/run',
+ 'ansible_config': 'ansible.cfg',
+ 'playbook_file': 'site.yml',
+ 'inventory_file': 'inventory.yml',
+ 'group_variable': 'all',
+ 'etc_hosts_path': 'roles/common/templates/hosts',
+ 'runner_dirs': ['roles','openstack_liberty/templates','openstack_liberty/roles']
+}
+
diff --git a/deploy/compass_conf/package_installer/ansible-mitaka.conf b/deploy/compass_conf/package_installer/ansible-mitaka.conf
new file mode 100755
index 00000000..e83f8886
--- /dev/null
+++ b/deploy/compass_conf/package_installer/ansible-mitaka.conf
@@ -0,0 +1,13 @@
+NAME = 'ansible_installer'
+INSTANCE_NAME = 'ansible_installer_mitaka'
+SETTINGS = {
+ 'ansible_dir': '/var/ansible',
+ 'ansible_run_dir': '/var/ansible/run',
+ 'ansible_config': 'ansible.cfg',
+ 'playbook_file': 'site.yml',
+ 'inventory_file': 'inventory.yml',
+ 'group_variable': 'all',
+ 'etc_hosts_path': 'roles/common/templates/hosts',
+ 'runner_dirs': ['roles','openstack_mitaka/templates','openstack_mitaka/roles']
+}
+
diff --git a/deploy/compass_conf/package_installer/ansible-mitaka_xenial.conf b/deploy/compass_conf/package_installer/ansible-mitaka_xenial.conf
new file mode 100755
index 00000000..03c3b3bb
--- /dev/null
+++ b/deploy/compass_conf/package_installer/ansible-mitaka_xenial.conf
@@ -0,0 +1,13 @@
+NAME = 'ansible_installer'
+INSTANCE_NAME = 'ansible_installer_mitaka_xenial'
+SETTINGS = {
+ 'ansible_dir': '/var/ansible',
+ 'ansible_run_dir': '/var/ansible/run',
+ 'ansible_config': 'ansible.cfg',
+ 'playbook_file': 'site.yml',
+ 'inventory_file': 'inventory.yml',
+ 'group_variable': 'all',
+ 'etc_hosts_path': 'roles/common/templates/hosts',
+ 'runner_dirs': ['roles','openstack_mitaka_xenial/templates','openstack_mitaka_xenial/roles']
+}
+
diff --git a/deploy/compass_conf/package_installer/ansible-newton_xenial.conf b/deploy/compass_conf/package_installer/ansible-newton_xenial.conf
new file mode 100755
index 00000000..d51f167d
--- /dev/null
+++ b/deploy/compass_conf/package_installer/ansible-newton_xenial.conf
@@ -0,0 +1,13 @@
+NAME = 'ansible_installer'
+INSTANCE_NAME = 'ansible_installer_newton_xenial'
+SETTINGS = {
+ 'ansible_dir': '/var/ansible',
+ 'ansible_run_dir': '/var/ansible/run',
+ 'ansible_config': 'ansible.cfg',
+ 'playbook_file': 'site.yml',
+ 'inventory_file': 'inventory.yml',
+ 'group_variable': 'all',
+ 'etc_hosts_path': 'roles/common/templates/hosts',
+ 'runner_dirs': ['roles','openstack_newton_xenial/templates','openstack_newton_xenial/roles']
+}
+
diff --git a/deploy/compass_conf/package_installer/ansible-osp9.conf b/deploy/compass_conf/package_installer/ansible-osp9.conf
new file mode 100755
index 00000000..65f83515
--- /dev/null
+++ b/deploy/compass_conf/package_installer/ansible-osp9.conf
@@ -0,0 +1,13 @@
+NAME = 'ansible_installer'
+INSTANCE_NAME = 'ansible_installer_osp9'
+SETTINGS = {
+ 'ansible_dir': '/var/ansible',
+ 'ansible_run_dir': '/var/ansible/run',
+ 'ansible_config': 'ansible.cfg',
+ 'playbook_file': 'site.yml',
+ 'inventory_file': 'inventory.yml',
+ 'group_variable': 'all',
+ 'etc_hosts_path': 'roles/common/templates/hosts',
+ 'runner_dirs': ['roles','openstack_osp9/templates','openstack_osp9/roles']
+}
+
diff --git a/deploy/compass_conf/package_metadata/openstack.conf b/deploy/compass_conf/package_metadata/openstack.conf
new file mode 100755
index 00000000..000c1a29
--- /dev/null
+++ b/deploy/compass_conf/package_metadata/openstack.conf
@@ -0,0 +1,437 @@
+ADAPTER = 'openstack'
+METADATA = {
+ 'security': {
+ '_self': {
+ 'required_in_whole_config': True,
+ },
+ 'service_credentials': {
+ '_self': {
+ 'required_in_whole_config': True,
+ 'key_extensions': {
+ '$service': ['image', 'compute', 'dashboard', 'identity', 'metering', 'network', 'rabbitmq', 'volume', 'mysql', 'heat', 'alarming', 'policy']
+ },
+ 'mapping_to': 'service_credentials'
+ },
+ '$service': {
+ '_self': {
+ 'required_in_whole_config': True,
+ 'mapping_to': '$service'
+ },
+ 'username': {
+ '_self': {
+ 'is_required': True,
+ 'field': 'username',
+ 'mapping_to': 'username'
+ }
+ },
+ 'password': {
+ '_self': {
+ 'is_required': True,
+ 'field': 'password',
+ 'mapping_to': 'password'
+ }
+ }
+ }
+ },
+ 'console_credentials': {
+ '_self': {
+ 'required_in_whole_config': True,
+ 'key_extensions': {
+ '$console': ['admin', 'demo', 'compute', 'dashboard', 'image', 'identity', 'metering', 'network', 'object-store', 'volume', 'heat', 'alarming', 'policy']
+ },
+ 'mapping_to': 'console_credentials'
+ },
+ '$console': {
+ '_self': {
+ 'required_in_whole_config': True,
+ 'mapping_to': '$console'
+ },
+ 'username': {
+ '_self': {
+ 'is_required': True,
+ 'field': 'username',
+ 'mapping_to': 'username'
+ }
+ },
+ 'password': {
+ '_self': {
+ 'is_required': True,
+ 'field': 'password',
+ 'mapping_to': 'password'
+ }
+ }
+ }
+ }
+ },
+
+ 'enable_secgroup': {
+ '_self': {
+ 'mapping_to': 'enable_secgroup',
+ 'field': 'anytype',
+ 'is_required':False,
+ 'default_value': True
+ }
+ },
+
+ 'enable_fwaas': {
+ '_self': {
+ 'mapping_to': 'enable_fwaas',
+ 'field': 'anytype',
+ 'is_required':False,
+ 'default_value': True
+ }
+ },
+ 'enable_vpnaas': {
+ '_self': {
+ 'mapping_to': 'enable_vpnaas',
+ 'field': 'anytype',
+ 'is_required':False,
+ 'default_value': True
+ }
+ },
+ 'odl_l3_agent': {
+ '_self': {
+ 'mapping_to': 'odl_l3_agent',
+ 'field': 'anytype',
+ 'is_required':False,
+ 'default_value': 'Disable'
+ }
+ },
+ 'onos_sfc': {
+ '_self': {
+ 'mapping_to': 'onos_sfc',
+ 'field': 'anytype',
+ 'is_required':False,
+ 'default_value': 'Disable'
+ }
+ },
+ 'odl_sfc': {
+ '_self': {
+ 'mapping_to': 'odl_sfc',
+ 'field': 'anytype',
+ 'is_required':False,
+ 'default_value': 'Disable'
+ }
+ },
+ 'moon': {
+ '_self': {
+ 'mapping_to': 'moon',
+ 'field': 'anytype',
+ 'is_required':False,
+ 'default_value': 'Disable'
+ }
+ },
+ 'ha_network': {
+ '_self': {
+ 'mapping_to': 'ha_network',
+ 'field': 'anytype',
+ 'is_required':False,
+ 'default_value': 'Disable'
+ }
+ },
+ 'network_cfg': {
+ '_self': {
+ 'mapping_to': 'network_cfg'
+ },
+
+ 'nic_mappings': {
+ '_self': {
+ 'mapping_to': 'nic_mappings',
+ 'field': 'general_list'
+ }
+ },
+
+ 'bond_mappings': {
+ '_self': {
+ 'mapping_to': 'bond_mappings',
+ 'field': 'general_list'
+ }
+ },
+
+ 'sys_intf_mappings': {
+ '_self': {
+ 'mapping_to': 'sys_intf_mappings',
+ 'field': 'general_list'
+ }
+ },
+
+ 'ip_settings': {
+ '_self': {
+ 'mapping_to': 'ip_settings',
+ 'field': 'general_list'
+ }
+ },
+
+ 'provider_net_mappings': {
+ '_self': {
+ 'mapping_to': 'provider_net_mappings',
+ 'field': 'general_list'
+ }
+ },
+
+ 'ceph_disk': {
+ '_self': {
+ 'mapping_to': 'ceph_disk',
+ 'field': 'general',
+ 'is_required':False
+ }
+ },
+
+ 'public_vip': {
+ '_self': {
+ 'mapping_to': 'public_vip',
+ 'is_required': False
+ },
+
+ 'ip': {
+ '_self': {
+ 'mapping_to': 'ip',
+ 'is_required': True,
+ 'field': 'general',
+ }
+ },
+ 'netmask': {
+ '_self': {
+ 'mapping_to': 'netmask',
+ 'is_required': True,
+ 'field': 'general',
+ }
+ },
+ 'interface': {
+ '_self': {
+ 'mapping_to': 'interface',
+ 'is_required': True,
+ 'field': 'general',
+ }
+ }
+ },
+
+ 'internal_vip': {
+ '_self': {
+ 'mapping_to': 'internal_vip',
+ 'is_required': False
+ },
+
+ 'ip': {
+ '_self': {
+ 'mapping_to': 'ip',
+ 'is_required': True,
+ 'field': 'general',
+ }
+ },
+ 'netmask': {
+ '_self': {
+ 'mapping_to': 'netmask',
+ 'is_required': True,
+ 'field': 'general',
+ }
+ },
+ 'interface': {
+ '_self': {
+ 'mapping_to': 'interface',
+ 'is_required': True,
+ 'field': 'general',
+ }
+ }
+ },
+
+ 'onos_nic': {
+ '_self': {
+ 'mapping_to': 'onos_nic',
+ 'is_required': False,
+ 'field': 'general',
+ 'default_value': 'eth2'
+ }
+ },
+
+ 'public_net_info': {
+ '_self': {
+ 'mapping_to': 'public_net_info'
+ },
+
+ 'enable': {
+ '_self': {
+ 'mapping_to': 'enable',
+ 'is_required': False,
+ 'field': 'anytype',
+ 'default_value': True
+ }
+ },
+
+ 'network': {
+ '_self': {
+ 'mapping_to': 'network',
+ 'is_required': True,
+ 'field': 'general',
+ 'default_value': 'ext-net'
+ }
+ },
+
+ 'type': {
+ '_self': {
+ 'mapping_to': 'type',
+ 'is_required': True,
+ 'field': 'general',
+ 'options': ['flat', 'vlan'],
+ 'default_value': 'vlan'
+ }
+ },
+
+ 'segment_id': {
+ '_self': {
+ 'mapping_to': 'segment_id',
+ 'is_required': False,
+ 'field': 'anytype'
+ }
+ },
+
+ 'subnet': {
+ '_self': {
+ 'mapping_to': 'subnet',
+ 'is_required': True,
+ 'field': 'general',
+ 'default_value': 'ext-subnet'
+ }
+ },
+
+ 'provider_network': {
+ '_self': {
+ 'mapping_to': 'provider_network',
+ 'is_required': True,
+ 'field': 'general',
+ 'default_value': 'physnet'
+ }
+ },
+
+ 'router': {
+ '_self': {
+ 'mapping_to': 'router',
+ 'is_required': True,
+ 'field': 'general',
+ 'default_value': 'ext-router'
+ }
+ },
+
+ 'enable_dhcp': {
+ '_self': {
+ 'mapping_to': 'enable_dhcp',
+ 'is_required': True,
+ 'field': 'anytype'
+ }
+ },
+
+ 'no_gateway': {
+ '_self': {
+ 'mapping_to': 'no_gateway',
+ 'is_required': True,
+ 'field': 'anytype'
+ }
+ },
+
+ 'external_gw': {
+ '_self': {
+ 'mapping_to': 'external_gw',
+ 'is_required': False,
+ 'field': 'general'
+ }
+ },
+
+ 'floating_ip_cidr': {
+ '_self': {
+ 'mapping_to': 'floating_ip_cidr',
+ 'is_required': True,
+ 'field': 'general'
+ }
+ },
+
+ 'floating_ip_start': {
+ '_self': {
+ 'mapping_to': 'floating_ip_start',
+ 'is_required': True,
+ 'field': 'general'
+ }
+ },
+
+ 'floating_ip_end': {
+ '_self': {
+ 'mapping_to': 'floating_ip_end',
+ 'is_required': True,
+ 'field': 'general'
+ }
+ }
+ },
+ },
+ 'neutron_config': {
+ '_self': {
+ 'mapping_to': 'neutron_config'
+ },
+ 'openvswitch': {
+ '_self': {
+ 'mapping_to': 'openvswitch',
+ 'required_in_whole_config': True
+ },
+ 'tenant_network_type': {
+ '_self': {
+ 'mapping_to': 'tenant_network_type',
+ 'is_required': True,
+ 'field': 'general',
+ 'options': ['gre', 'vlan'],
+ 'default_value': 'gre'
+ }
+ },
+ 'network_vlan_ranges': {
+ '_self': {
+ 'mapping_to': 'vlan_ranges',
+ 'is_required': False,
+ 'field': 'general_list',
+ 'default_value': ['physnet1:2700:2999']
+ }
+ },
+ 'bridge_mappings': {
+ '_self': {
+ 'mapping_to': 'bridge_mappings',
+ 'is_required': False,
+ 'field': 'general_list',
+ 'default_value': ['physnet1:br-eth1']
+ }
+ },
+ 'tunnel_id_ranges': {
+ '_self': {
+ 'mapping_to': 'tunnel_id_ranges',
+ 'is_required': False,
+ 'field': 'general_list',
+ 'default_value': ['1:1000']
+ }
+ }
+ }
+ },
+ 'network_mapping': {
+ '_self': {
+ 'required_in_whole_config': True,
+ 'key_extensions': {
+ '$interface_type': ['install']
+ }
+ },
+ '$interface_type': {
+ '_self': {
+ 'required_in_whole_config': True,
+ 'field': 'anytype',
+ 'autofill_callback': autofill_network_mapping,
+ 'mapping_to': '$interface_type'
+ },
+ 'interface': {
+ '_self': {
+ 'is_required': True,
+ 'field': 'general',
+ }
+ },
+ 'subnet': {
+ '_self': {
+ 'is_required': False,
+ 'field': 'general'
+ }
+ }
+ }
+ },
+
+}
diff --git a/deploy/compass_conf/progress_calculator/progress_calculator.conf b/deploy/compass_conf/progress_calculator/progress_calculator.conf
new file mode 100755
index 00000000..f4f991e4
--- /dev/null
+++ b/deploy/compass_conf/progress_calculator/progress_calculator.conf
@@ -0,0 +1,558 @@
+OS_INSTALLER_CONFIGURATIONS = {
+ 'cobbler': {
+ 'Ubuntu': AdapterItemMatcher(
+ file_matchers=[
+ FileMatcher(
+ filename='syslog',
+ min_progress=0.0,
+ max_progress=1.0,
+ line_matchers={
+ 'start': LineMatcher(
+ pattern=r'.*',
+ progress=.05,
+ message_template='start installing',
+ unmatch_nextline_next_matcher_name='start',
+ match_nextline_next_matcher_name='ethdetect'
+ ),
+ 'ethdetect': LineMatcher(
+ pattern=r'Menu.*item.*\'ethdetect\'.*selected',
+ progress=.1,
+ message_template='ethdetect selected',
+ unmatch_nextline_next_matcher_name='ethdetect',
+ match_nextline_next_matcher_name='netcfg'
+ ),
+ 'netcfg': LineMatcher(
+ pattern=r'Menu.*item.*\'netcfg\'.*selected',
+ progress=.12,
+ message_template='netcfg selected',
+ unmatch_nextline_next_matcher_name='netcfg',
+ match_nextline_next_matcher_name='network-preseed'
+ ),
+ 'network-preseed': LineMatcher(
+ pattern=(
+ r'Menu.*item.*\'network-preseed\'.*selected'
+ ),
+ progress=.15,
+ message_template='network-preseed selected',
+ unmatch_nextline_next_matcher_name=(
+ 'network-preseed'
+ ),
+ match_nextline_next_matcher_name='localechooser'
+ ),
+ 'localechooser': LineMatcher(
+ pattern=r'Menu.*item.*\'localechooser\'.*selected',
+ progress=.18,
+ message_template='localechooser selected',
+ unmatch_nextline_next_matcher_name='localechooser',
+ match_nextline_next_matcher_name=(
+ 'download-installer'
+ )
+ ),
+ 'download-installer': LineMatcher(
+ pattern=(
+ r'Menu.*item.*\'download-installer\'.*selected'
+ ),
+ progress=.2,
+ message_template='download installer selected',
+ unmatch_nextline_next_matcher_name=(
+ 'download-installer'),
+ match_nextline_next_matcher_name='clock-setup'
+ ),
+ 'clock-setup': LineMatcher(
+ pattern=r'Menu.*item.*\'clock-setup\'.*selected',
+ progress=.3,
+ message_template='clock-setup selected',
+ unmatch_nextline_next_matcher_name='clock-setup',
+ match_nextline_next_matcher_name='disk-detect'
+ ),
+ 'disk-detect': LineMatcher(
+ pattern=r'Menu.*item.*\'disk-detect\'.*selected',
+ progress=.32,
+ message_template='disk-detect selected',
+ unmatch_nextline_next_matcher_name='disk-detect',
+ match_nextline_next_matcher_name='partman-base'
+ ),
+ 'partman-base': LineMatcher(
+ pattern=(
+ r'Menu.*item.*\'partman-base\'.*selected'
+ ),
+ progress=.35,
+ message_template='partman-base selected',
+ unmatch_nextline_next_matcher_name='partman-base',
+ match_nextline_next_matcher_name='apt-setup-udeb'
+ ),
+ 'apt-setup-udeb': LineMatcher(
+ pattern=(
+ r'Menu.*item.*\'apt-setup-udeb\'.*selected'
+ ),
+ progress=.45,
+ message_template='apt-setup-udeb selected',
+ unmatch_nextline_next_matcher_name=(
+ 'apt-setup-udeb'
+ ),
+ match_nextline_next_matcher_name='pkgsel'
+ ),
+ 'pkgsel': LineMatcher(
+ pattern=r'Menu.*item.*\'pkgsel\'.*selected',
+ progress=.5,
+ message_template='pkgsel selected',
+ unmatch_nextline_next_matcher_name='pkgsel',
+ match_nextline_next_matcher_name='grub-installer'
+ ),
+ 'grub-installer': LineMatcher(
+ pattern=(
+ r'Menu.*item.*\'grub-installer\'.*selected'
+ ),
+ progress=.9,
+ message_template='grub-installer selected',
+ unmatch_nextline_next_matcher_name=(
+ 'grub-installer'
+ ),
+ match_nextline_next_matcher_name='finish-install'
+ ),
+ 'finish-install': LineMatcher(
+ pattern=(
+ r'Menu.*item.*\'finish-install\'.*selected'
+ ),
+ progress=.95,
+ message_template='finish-install selected',
+ unmatch_nextline_next_matcher_name=(
+ 'finish-install'
+ ),
+ match_nextline_next_matcher_name=(
+ 'finish-install-done'
+ )
+ ),
+ 'finish-install-done': LineMatcher(
+ pattern=(
+ r'Running.*finish-install.d/.*save-logs'
+ ),
+ progress=1.0,
+ message_template='finish-install is done',
+ unmatch_nextline_next_matcher_name=(
+ 'finish-install-done'
+ ),
+ match_nextline_next_matcher_name='exit'
+ ),
+ }
+ ),
+ FileMatcher(
+ filename='status',
+ min_progress=.2,
+ max_progress=.3,
+ line_matchers={
+ 'start': LineMatcher(
+ pattern=r'Package: (?P<package>.*)',
+ progress=IncrementalProgress(0.0, 0.99, 0.05),
+ message_template='Installing udeb %(package)s',
+ unmatch_nextline_next_matcher_name='start',
+ match_nextline_next_matcher_name='start'
+ )
+ }
+ ),
+ FileMatcher(
+ filename='initial-status',
+ min_progress=.5,
+ max_progress=.9,
+ line_matchers={
+ 'start': LineMatcher(
+ pattern=r'Package: (?P<package>.*)',
+ progress=IncrementalProgress(0.0, 0.99, 0.01),
+ message_template='Installing deb %(package)s',
+ unmatch_nextline_next_matcher_name='start',
+ match_nextline_next_matcher_name='start'
+ )
+ }
+ ),
+ ]
+ ),
+ 'CentOS6': AdapterItemMatcher(
+ file_matchers=[
+ FileMatcher(
+ filename='sys.log',
+ min_progress=0.0,
+ max_progress=0.1,
+ line_matchers={
+ 'start': LineMatcher(
+ pattern=r'NOTICE (?P<message>.*)',
+ progress=IncrementalProgress(.1, .9, .1),
+ message_template='%(message)s',
+ unmatch_nextline_next_matcher_name='start',
+ match_nextline_next_matcher_name='exit'
+ ),
+ }
+ ),
+ FileMatcher(
+ filename='anaconda.log',
+ min_progress=0.1,
+ max_progress=1.0,
+ line_matchers={
+ 'start': LineMatcher(
+ pattern=r'setting.*up.*kickstart',
+ progress=.1,
+ message_template=(
+ 'Setting up kickstart configurations'),
+ unmatch_nextline_next_matcher_name='start',
+ match_nextline_next_matcher_name='STEP_STAGE2'
+ ),
+ 'STEP_STAGE2': LineMatcher(
+ pattern=r'starting.*STEP_STAGE2',
+ progress=.15,
+ message_template=(
+ 'Downloading installation '
+ 'images from server'),
+ unmatch_nextline_next_matcher_name='STEP_STAGE2',
+ match_nextline_next_matcher_name='start_anaconda'
+ ),
+ 'start_anaconda': LineMatcher(
+ pattern=r'Running.*anaconda.*script',
+ progress=.2,
+ unmatch_nextline_next_matcher_name=(
+ 'start_anaconda'),
+ match_nextline_next_matcher_name=(
+ 'start_kickstart_pre')
+ ),
+ 'start_kickstart_pre': LineMatcher(
+ pattern=r'Running.*kickstart.*pre.*script',
+ progress=.25,
+ unmatch_nextline_next_matcher_name=(
+ 'start_kickstart_pre'),
+ match_nextline_next_matcher_name=(
+ 'kickstart_pre_done')
+ ),
+ 'kickstart_pre_done': LineMatcher(
+ pattern=(
+ r'All.*kickstart.*pre'
+ '.*script.*have.*been.*run'
+ ),
+ progress=.3,
+ unmatch_nextline_next_matcher_name=(
+ 'kickstart_pre_done'),
+ match_nextline_next_matcher_name=(
+ 'start_enablefilesystem')
+ ),
+ 'start_enablefilesystem': LineMatcher(
+ pattern=(
+ r'moving.*step.*enablefilesystems'
+ ),
+ progress=0.3,
+ message_template=(
+ 'Performing hard-disk partitioning and '
+ 'enabling filesystems'
+ ),
+ unmatch_nextline_next_matcher_name=(
+ 'start_enablefilesystem'),
+ match_nextline_next_matcher_name=(
+ 'enablefilesystem_done')
+ ),
+ 'enablefilesystem_done': LineMatcher(
+ pattern=(
+ r'leaving.*step.*enablefilesystems'
+ ),
+ progress=.35,
+ message_template='Filesystems are enabled',
+ unmatch_nextline_next_matcher_name=(
+ 'enablefilesystem_done'),
+ match_nextline_next_matcher_name=(
+ 'setup_repositories')
+ ),
+ 'setup_repositories': LineMatcher(
+ pattern=r'moving.*step.*reposetup',
+ progress=0.35,
+ message_template=(
+ 'Setting up Customized Repositories'
+ ),
+ unmatch_nextline_next_matcher_name=(
+ 'setup_repositories'),
+ match_nextline_next_matcher_name=(
+ 'repositories_ready')
+ ),
+ 'repositories_ready': LineMatcher(
+ pattern=r'leaving.*step.*reposetup',
+ progress=0.4,
+ message_template=(
+ 'Customized Repositories setting up are done'
+ ),
+ unmatch_nextline_next_matcher_name=(
+ 'repositories_ready'),
+ match_nextline_next_matcher_name='checking_dud'
+ ),
+ 'checking_dud': LineMatcher(
+ pattern=r'moving.*step.*postselection',
+ progress=0.4,
+ message_template='Checking DUD modules',
+ unmatch_nextline_next_matcher_name='checking_dud',
+ match_nextline_next_matcher_name='dud_checked'
+ ),
+ 'dud_checked': LineMatcher(
+ pattern=r'leaving.*step.*postselection',
+ progress=0.5,
+ message_template='Checking DUD modules are done',
+ unmatch_nextline_next_matcher_name='dud_checked',
+ match_nextline_next_matcher_name=(
+ 'installing_packages'
+ )
+ ),
+ 'installing_packages': LineMatcher(
+ pattern=r'moving.*step.*installpackages',
+ progress=0.5,
+ message_template='Installing packages',
+ unmatch_nextline_next_matcher_name=(
+ 'installing_packages'),
+ match_nextline_next_matcher_name=(
+ 'packages_installed')
+ ),
+ 'packages_installed': LineMatcher(
+ pattern=r'leaving.*step.*installpackages',
+ progress=0.8,
+ message_template='Packages are installed',
+ unmatch_nextline_next_matcher_name=(
+ 'packages_installed'),
+ match_nextline_next_matcher_name=(
+ 'installing_bootloader')
+ ),
+ 'installing_bootloader': LineMatcher(
+ pattern=r'moving.*step.*instbootloader',
+ progress=0.9,
+ message_template='Installing bootloaders',
+ unmatch_nextline_next_matcher_name=(
+ 'installing_bootloader'),
+ match_nextline_next_matcher_name=(
+ 'bootloader_installed'),
+ ),
+ 'bootloader_installed': LineMatcher(
+ pattern=r'leaving.*step.*instbootloader',
+ progress=1.0,
+ message_template='bootloaders is installed',
+ unmatch_nextline_next_matcher_name=(
+ 'bootloader_installed'),
+ match_nextline_next_matcher_name='exit'
+ ),
+ }
+ ),
+ FileMatcher(
+ filename='install.log',
+ min_progress=0.56,
+ max_progress=0.80,
+ line_matchers={
+ 'start': LineMatcher(
+ pattern=r'Installing (?P<package>.*)',
+ progress=IncrementalProgress(0.0, 0.99, 0.005),
+ message_template='Installing %(package)s',
+ unmatch_sameline_next_matcher_name=(
+ 'package_complete'
+ ),
+ unmatch_nextline_next_matcher_name='start',
+ match_nextline_next_matcher_name='start'
+ ),
+ 'package_complete': LineMatcher(
+ pattern='FINISHED.*INSTALLING.*PACKAGES',
+ progress=1.0,
+ message_template='installing packages finished',
+ unmatch_nextline_next_matcher_name='start',
+ match_nextline_next_matcher_name='exit'
+ ),
+ }
+ ),
+ ]
+ ),
+ 'CentOS7': AdapterItemMatcher(
+ file_matchers=[
+ FileMatcher(
+ filename='syslog',
+ min_progress=0.0,
+ max_progress=0.1,
+ line_matchers={
+ 'start': LineMatcher(
+ pattern=r'NOTICE (?P<message>.*)',
+ progress=IncrementalProgress(.1, .9, .1),
+ message_template='%(message)s',
+ unmatch_nextline_next_matcher_name='start',
+ match_nextline_next_matcher_name='exit'
+ ),
+ }
+ ),
+ FileMatcher(
+ filename='anaconda.log',
+ min_progress=0.1,
+ max_progress=1.0,
+ line_matchers={
+ 'start': LineMatcher(
+ pattern=r'Running.*kickstart.*pre.*script',
+ progress=.15,
+ unmatch_nextline_next_matcher_name=(
+ 'start'),
+ match_nextline_next_matcher_name=(
+ 'kickstart_pre_done')
+ ),
+ 'kickstart_pre_done': LineMatcher(
+ pattern=(
+ r'All.*kickstart.*pre'
+ '.*script.*have.*been.*run'
+ ),
+ progress=.2,
+ unmatch_nextline_next_matcher_name=(
+ 'kickstart_pre_done'),
+ match_nextline_next_matcher_name=(
+ 'geolocation_lookup')
+ ),
+ 'geolocation_lookup': LineMatcher(
+ pattern=r'Starting.*geolocation.*lookup',
+ progress=0.3,
+ message_template=(
+ 'Setting up Customized Repositories'
+ ),
+ unmatch_nextline_next_matcher_name=(
+ 'geolocation_lookup'),
+ match_nextline_next_matcher_name=(
+ 'geolocation_done')
+ ),
+ 'geolocation_done': LineMatcher(
+ pattern=r'Geolocation.*lookup.*finished',
+ progress=0.4,
+ message_template=(
+ 'Geolocation lookup are done'
+ ),
+ unmatch_nextline_next_matcher_name=(
+ 'geolocation_done'),
+ match_nextline_next_matcher_name='setup_environment'
+ ),
+ 'setup_environment': LineMatcher(
+ pattern=r'Setting.*installation.*environment',
+ progress=0.5,
+ message_template='Setting up installation environment',
+ unmatch_nextline_next_matcher_name='setup_environment',
+ match_nextline_next_matcher_name='installing_packages'
+ ),
+ 'installing_packages': LineMatcher(
+ pattern=(
+ r'Creating.*biosboot.*on'
+ ),
+ progress=.5,
+ message_template=(
+ 'Installing packages'
+ ),
+ unmatch_nextline_next_matcher_name=(
+ 'installing_packages'),
+ match_nextline_next_matcher_name=(
+ 'packages_installed')
+ ),
+ 'packages_installed': LineMatcher(
+ pattern=(
+ r'bootloader.*args'
+ ),
+ progress=.8,
+ message_template='Packages are installed',
+ unmatch_nextline_next_matcher_name=(
+ 'packages_installed'),
+ match_nextline_next_matcher_name=(
+ 'installing_bootloader')
+ ),
+ 'installing_bootloader': LineMatcher(
+ pattern=r'setting.*installation.*environment',
+ progress=0.9,
+ message_template='Setup installation environment',
+ unmatch_nextline_next_matcher_name=(
+ 'installing_bootloader'),
+ match_nextline_next_matcher_name=(
+ 'post_installation'),
+ ),
+ 'post_installation': LineMatcher(
+ pattern=r'Running.*post-installation.*scripts',
+ progress=1.0,
+ message_template='Ran post-nstallation scripts',
+ unmatch_nextline_next_matcher_name=(
+ 'post_installation'),
+ match_nextline_next_matcher_name='exit'
+ ),
+ }
+ ),
+ FileMatcher(
+ filename='packaging.log',
+ min_progress=0.56,
+ max_progress=0.80,
+ line_matchers={
+ 'start': LineMatcher(
+ pattern=r'Installing (?P<package>.*)',
+ progress=IncrementalProgress(0.0, 0.99, 0.005),
+ message_template='Installing %(package)s',
+ unmatch_sameline_next_matcher_name=(
+ 'package_complete'
+ ),
+ unmatch_nextline_next_matcher_name='start',
+ match_nextline_next_matcher_name='start'
+ ),
+ 'package_complete': LineMatcher(
+ pattern='end.*rpm.*scriptlet',
+ progress=1.0,
+ message_template='installing packages finished',
+ unmatch_nextline_next_matcher_name='start',
+ match_nextline_next_matcher_name='exit'
+ ),
+ }
+ ),
+ ]
+ ),
+ }
+}
+
+OS_LOG_CONFIGURATIONS = [{
+ 'os_installer_name': 'cobbler',
+ 'os_pattern': 'CentOS-6.*',
+ 'item_matcher': OS_INSTALLER_CONFIGURATIONS['cobbler']['CentOS6'],
+ 'logdir': setting.INSTALLATION_LOGDIR['CobblerInstaller']
+}, {
+ 'os_installer_name': 'cobbler',
+ 'os_pattern': 'CentOS-7.*',
+ 'item_matcher': OS_INSTALLER_CONFIGURATIONS['cobbler']['CentOS7'],
+ 'logdir': setting.INSTALLATION_LOGDIR['CobblerInstaller']
+}, {
+ 'os_installer_name': 'cobbler',
+ 'os_pattern': 'Ubuntu.*',
+ 'item_matcher': OS_INSTALLER_CONFIGURATIONS['cobbler']['Ubuntu'],
+ 'logdir': setting.INSTALLATION_LOGDIR['CobblerInstaller']
+}]
+
+PACKAGE_INSTALLER_CONFIGURATIONS = {
+ 'chef_installer': {
+ 'default': AdapterItemMatcher(
+ file_matchers=[
+ FileMatcher(
+ filename='chef-client.log',
+ min_progress=0.1,
+ max_progress=1.0,
+ line_matchers={
+ 'start': LineMatcher(
+ pattern=(
+ r'Processing\s*(?P<install_type>.*)'
+ r'\[(?P<package>.*)\].*'),
+ progress=IncrementalProgress(0.0, .90, 0.005),
+ message_template=(
+ 'Processing %(install_type)s %(package)s'),
+ unmatch_sameline_next_matcher_name=(
+ 'chef_complete'),
+ unmatch_nextline_next_matcher_name='start',
+ match_nextline_next_matcher_name='start'
+ ),
+ 'chef_complete': LineMatcher(
+ pattern=r'Chef.*Run.*complete',
+ progress=1.0,
+ message_template='Chef run complete',
+ unmatch_nextline_next_matcher_name='start',
+ match_nextline_next_matcher_name='exit'
+ ),
+ }
+ ),
+ ]
+ ),
+ }
+}
+
+ADAPTER_LOG_CONFIGURATIONS = [{
+ 'package_installer_name': 'chef_installer',
+ 'adapter_pattern': '.*',
+ 'item_matcher': PACKAGE_INSTALLER_CONFIGURATIONS['chef_installer']['default'],
+ 'logdir': setting.INSTALLATION_LOGDIR['ChefInstaller']
+}]
+
+
diff --git a/deploy/compass_conf/role/openstack_juno_ansible.conf b/deploy/compass_conf/role/openstack_juno_ansible.conf
new file mode 100755
index 00000000..48c171cf
--- /dev/null
+++ b/deploy/compass_conf/role/openstack_juno_ansible.conf
@@ -0,0 +1,110 @@
+ADAPTER_NAME = 'openstack_juno'
+ROLES = [{
+ 'role': 'allinone-compute',
+ 'display_name': 'all in one',
+ 'description': 'All in One'
+}, {
+ 'role': 'controller',
+ 'display_name': 'controller node',
+ 'description': 'Controller Node'
+}, {
+ 'role': 'compute',
+ 'display_name': 'compute node',
+ 'description': 'Compute Node'
+}, {
+ 'role': 'storage',
+ 'display_name': 'storage node',
+ 'description': 'Storage Node'
+}, {
+ 'role': 'network',
+ 'display_name': 'network node',
+ 'description': 'Network Node'
+}, {
+ 'role': 'compute-worker',
+ 'display_name': 'Compute worker node',
+ 'description': 'Compute worker node'
+}, {
+ 'role': 'compute-controller',
+ 'display_name': 'Compute controller node',
+ 'description': 'Compute controller node'
+}, {
+ 'role': 'network-server',
+ 'display_name': 'Network server node',
+ 'description': 'Network server node'
+}, {
+ 'role': 'database',
+ 'display_name': 'Database node',
+ 'description': 'Database node'
+}, {
+ 'role': 'messaging',
+ 'display_name': 'Messaging queue node',
+ 'description': 'Messaging queue node'
+}, {
+ 'role': 'image',
+ 'display': 'Image node',
+ 'description': 'Image node'
+}, {
+ 'role': 'dashboard',
+ 'display': 'Dashboard node',
+ 'description': 'Dashboard node'
+}, {
+ 'role': 'identity',
+ 'display': 'Identity node',
+ 'description': 'Identity node'
+}, {
+ 'role': 'storage-controller',
+ 'display': 'Storage controller node',
+ 'description': 'Storage controller node'
+}, {
+ 'role': 'storage-volume',
+ 'display': 'Storage volume node',
+ 'description': 'Storage volume node'
+}, {
+ 'role': 'network-worker',
+ 'display': 'Network worker node',
+ 'description': 'Network worker node'
+}, {
+ 'role': 'odl',
+ 'display': 'open day light',
+ 'description': 'odl node',
+ 'optional': True
+}, {
+ 'role': 'onos',
+ 'display': 'open network operating system',
+ 'description': 'onos node',
+ 'optional': True
+}, {
+ 'role': 'ha',
+ 'display': 'Cluster with HA',
+ 'description': 'Cluster with HA node'
+}, {
+ 'role': 'ceph-adm',
+ 'display': 'Ceph Admin Node',
+ 'description': 'Ceph Admin Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-mon',
+ 'display': 'Ceph Monitor Node',
+ 'description': 'Ceph Monitor Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-osd',
+ 'display': 'Ceph Storage Node',
+ 'description': 'Ceph Storage Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-osd-node',
+ 'display': 'Ceph osd install from node',
+ 'description': '',
+ 'optional': True
+}, {
+ 'role': 'ceph',
+ 'display': 'ceph node',
+ 'description': 'ceph node',
+ 'optional': True
+}, {
+ 'role': 'sec-patch',
+ 'display': 'sec-patch node',
+ 'description': 'Security Patch Node',
+ 'optional': True
+}]
diff --git a/deploy/compass_conf/role/openstack_kilo_ansible.conf b/deploy/compass_conf/role/openstack_kilo_ansible.conf
new file mode 100755
index 00000000..ac3af5a3
--- /dev/null
+++ b/deploy/compass_conf/role/openstack_kilo_ansible.conf
@@ -0,0 +1,110 @@
+ADAPTER_NAME = 'openstack_kilo'
+ROLES = [{
+ 'role': 'allinone-compute',
+ 'display_name': 'all in one',
+ 'description': 'All in One'
+}, {
+ 'role': 'controller',
+ 'display_name': 'controller node',
+ 'description': 'Controller Node'
+}, {
+ 'role': 'compute',
+ 'display_name': 'compute node',
+ 'description': 'Compute Node'
+}, {
+ 'role': 'storage',
+ 'display_name': 'storage node',
+ 'description': 'Storage Node'
+}, {
+ 'role': 'network',
+ 'display_name': 'network node',
+ 'description': 'Network Node'
+}, {
+ 'role': 'compute-worker',
+ 'display_name': 'Compute worker node',
+ 'description': 'Compute worker node'
+}, {
+ 'role': 'compute-controller',
+ 'display_name': 'Compute controller node',
+ 'description': 'Compute controller node'
+}, {
+ 'role': 'network-server',
+ 'display_name': 'Network server node',
+ 'description': 'Network server node'
+}, {
+ 'role': 'database',
+ 'display_name': 'Database node',
+ 'description': 'Database node'
+}, {
+ 'role': 'messaging',
+ 'display_name': 'Messaging queue node',
+ 'description': 'Messaging queue node'
+}, {
+ 'role': 'image',
+ 'display': 'Image node',
+ 'description': 'Image node'
+}, {
+ 'role': 'dashboard',
+ 'display': 'Dashboard node',
+ 'description': 'Dashboard node'
+}, {
+ 'role': 'identity',
+ 'display': 'Identity node',
+ 'description': 'Identity node'
+}, {
+ 'role': 'storage-controller',
+ 'display': 'Storage controller node',
+ 'description': 'Storage controller node'
+}, {
+ 'role': 'storage-volume',
+ 'display': 'Storage volume node',
+ 'description': 'Storage volume node'
+}, {
+ 'role': 'network-worker',
+ 'display': 'Network worker node',
+ 'description': 'Network worker node'
+}, {
+ 'role': 'odl',
+ 'display': 'open day light',
+ 'description': 'odl node',
+ 'optional': True
+}, {
+ 'role': 'onos',
+ 'display': 'open network operating system',
+ 'description': 'onos node',
+ 'optional': True
+}, {
+ 'role': 'ha',
+ 'display': 'Cluster with HA',
+ 'description': 'Cluster with HA node'
+}, {
+ 'role': 'ceph-adm',
+ 'display': 'Ceph Admin Node',
+ 'description': 'Ceph Admin Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-mon',
+ 'display': 'Ceph Monitor Node',
+ 'description': 'Ceph Monitor Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-osd',
+ 'display': 'Ceph Storage Node',
+ 'description': 'Ceph Storage Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-osd-node',
+ 'display': 'Ceph osd install from node',
+ 'description': '',
+ 'optional': True
+}, {
+ 'role': 'ceph',
+ 'display': 'ceph node',
+ 'description': 'ceph node',
+ 'optional': True
+}, {
+ 'role': 'sec-patch',
+ 'display': 'sec-patch node',
+ 'description': 'Security Patch Node',
+ 'optional': True
+}]
diff --git a/deploy/compass_conf/role/openstack_liberty_ansible.conf b/deploy/compass_conf/role/openstack_liberty_ansible.conf
new file mode 100755
index 00000000..c481c8a7
--- /dev/null
+++ b/deploy/compass_conf/role/openstack_liberty_ansible.conf
@@ -0,0 +1,115 @@
+ADAPTER_NAME = 'openstack_liberty'
+ROLES = [{
+ 'role': 'allinone-compute',
+ 'display_name': 'all in one',
+ 'description': 'All in One'
+}, {
+ 'role': 'controller',
+ 'display_name': 'controller node',
+ 'description': 'Controller Node'
+}, {
+ 'role': 'compute',
+ 'display_name': 'compute node',
+ 'description': 'Compute Node'
+}, {
+ 'role': 'storage',
+ 'display_name': 'storage node',
+ 'description': 'Storage Node'
+}, {
+ 'role': 'network',
+ 'display_name': 'network node',
+ 'description': 'Network Node'
+}, {
+ 'role': 'compute-worker',
+ 'display_name': 'Compute worker node',
+ 'description': 'Compute worker node'
+}, {
+ 'role': 'compute-controller',
+ 'display_name': 'Compute controller node',
+ 'description': 'Compute controller node'
+}, {
+ 'role': 'network-server',
+ 'display_name': 'Network server node',
+ 'description': 'Network server node'
+}, {
+ 'role': 'database',
+ 'display_name': 'Database node',
+ 'description': 'Database node'
+}, {
+ 'role': 'messaging',
+ 'display_name': 'Messaging queue node',
+ 'description': 'Messaging queue node'
+}, {
+ 'role': 'image',
+ 'display': 'Image node',
+ 'description': 'Image node'
+}, {
+ 'role': 'dashboard',
+ 'display': 'Dashboard node',
+ 'description': 'Dashboard node'
+}, {
+ 'role': 'identity',
+ 'display': 'Identity node',
+ 'description': 'Identity node'
+}, {
+ 'role': 'storage-controller',
+ 'display': 'Storage controller node',
+ 'description': 'Storage controller node'
+}, {
+ 'role': 'storage-volume',
+ 'display': 'Storage volume node',
+ 'description': 'Storage volume node'
+}, {
+ 'role': 'network-worker',
+ 'display': 'Network worker node',
+ 'description': 'Network worker node'
+}, {
+ 'role': 'odl',
+ 'display': 'open day light',
+ 'description': 'odl node',
+ 'optional': True
+}, {
+ 'role': 'onos',
+ 'display': 'open network operating system',
+ 'description': 'onos node',
+ 'optional': True
+}, {
+ 'role': 'opencontrail',
+ 'display': 'open contrail',
+ 'description': 'opencontrail node',
+ 'optional': True
+}, {
+ 'role': 'ha',
+ 'display': 'Cluster with HA',
+ 'description': 'Cluster with HA node'
+}, {
+ 'role': 'ceph-adm',
+ 'display': 'Ceph Admin Node',
+ 'description': 'Ceph Admin Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-mon',
+ 'display': 'Ceph Monitor Node',
+ 'description': 'Ceph Monitor Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-osd',
+ 'display': 'Ceph Storage Node',
+ 'description': 'Ceph Storage Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-osd-node',
+ 'display': 'Ceph osd install from node',
+ 'description': '',
+ 'optional': True
+}, {
+ 'role': 'ceph',
+ 'display': 'ceph node',
+ 'description': 'ceph node',
+ 'optional': True
+}, {
+ 'role': 'sec-patch',
+ 'display': 'sec-patch node',
+ 'description': 'Security Patch Node',
+ 'optional': True
+}]
diff --git a/deploy/compass_conf/role/openstack_mitaka_ansible.conf b/deploy/compass_conf/role/openstack_mitaka_ansible.conf
new file mode 100755
index 00000000..4ab8dac5
--- /dev/null
+++ b/deploy/compass_conf/role/openstack_mitaka_ansible.conf
@@ -0,0 +1,115 @@
+ADAPTER_NAME = 'openstack_mitaka'
+ROLES = [{
+ 'role': 'allinone-compute',
+ 'display_name': 'all in one',
+ 'description': 'All in One'
+}, {
+ 'role': 'controller',
+ 'display_name': 'controller node',
+ 'description': 'Controller Node'
+}, {
+ 'role': 'compute',
+ 'display_name': 'compute node',
+ 'description': 'Compute Node'
+}, {
+ 'role': 'storage',
+ 'display_name': 'storage node',
+ 'description': 'Storage Node'
+}, {
+ 'role': 'network',
+ 'display_name': 'network node',
+ 'description': 'Network Node'
+}, {
+ 'role': 'compute-worker',
+ 'display_name': 'Compute worker node',
+ 'description': 'Compute worker node'
+}, {
+ 'role': 'compute-controller',
+ 'display_name': 'Compute controller node',
+ 'description': 'Compute controller node'
+}, {
+ 'role': 'network-server',
+ 'display_name': 'Network server node',
+ 'description': 'Network server node'
+}, {
+ 'role': 'database',
+ 'display_name': 'Database node',
+ 'description': 'Database node'
+}, {
+ 'role': 'messaging',
+ 'display_name': 'Messaging queue node',
+ 'description': 'Messaging queue node'
+}, {
+ 'role': 'image',
+ 'display': 'Image node',
+ 'description': 'Image node'
+}, {
+ 'role': 'dashboard',
+ 'display': 'Dashboard node',
+ 'description': 'Dashboard node'
+}, {
+ 'role': 'identity',
+ 'display': 'Identity node',
+ 'description': 'Identity node'
+}, {
+ 'role': 'storage-controller',
+ 'display': 'Storage controller node',
+ 'description': 'Storage controller node'
+}, {
+ 'role': 'storage-volume',
+ 'display': 'Storage volume node',
+ 'description': 'Storage volume node'
+}, {
+ 'role': 'network-worker',
+ 'display': 'Network worker node',
+ 'description': 'Network worker node'
+}, {
+ 'role': 'odl',
+ 'display': 'open day light',
+ 'description': 'odl node',
+ 'optional': True
+}, {
+ 'role': 'onos',
+ 'display': 'open network operating system',
+ 'description': 'onos node',
+ 'optional': True
+}, {
+ 'role': 'opencontrail',
+ 'display': 'open contrail',
+ 'description': 'opencontrail node',
+ 'optional': True
+}, {
+ 'role': 'ha',
+ 'display': 'Cluster with HA',
+ 'description': 'Cluster with HA node'
+}, {
+ 'role': 'ceph-adm',
+ 'display': 'Ceph Admin Node',
+ 'description': 'Ceph Admin Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-mon',
+ 'display': 'Ceph Monitor Node',
+ 'description': 'Ceph Monitor Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-osd',
+ 'display': 'Ceph Storage Node',
+ 'description': 'Ceph Storage Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-osd-node',
+ 'display': 'Ceph osd install from node',
+ 'description': '',
+ 'optional': True
+}, {
+ 'role': 'ceph',
+ 'display': 'ceph node',
+ 'description': 'ceph node',
+ 'optional': True
+}, {
+ 'role': 'sec-patch',
+ 'display': 'sec-patch node',
+ 'description': 'Security Patch Node',
+ 'optional': True
+}]
diff --git a/deploy/compass_conf/role/openstack_mitaka_xenial_ansible.conf b/deploy/compass_conf/role/openstack_mitaka_xenial_ansible.conf
new file mode 100755
index 00000000..3448eb75
--- /dev/null
+++ b/deploy/compass_conf/role/openstack_mitaka_xenial_ansible.conf
@@ -0,0 +1,115 @@
+ADAPTER_NAME = 'openstack_mitaka_xenial'
+ROLES = [{
+ 'role': 'allinone-compute',
+ 'display_name': 'all in one',
+ 'description': 'All in One'
+}, {
+ 'role': 'controller',
+ 'display_name': 'controller node',
+ 'description': 'Controller Node'
+}, {
+ 'role': 'compute',
+ 'display_name': 'compute node',
+ 'description': 'Compute Node'
+}, {
+ 'role': 'storage',
+ 'display_name': 'storage node',
+ 'description': 'Storage Node'
+}, {
+ 'role': 'network',
+ 'display_name': 'network node',
+ 'description': 'Network Node'
+}, {
+ 'role': 'compute-worker',
+ 'display_name': 'Compute worker node',
+ 'description': 'Compute worker node'
+}, {
+ 'role': 'compute-controller',
+ 'display_name': 'Compute controller node',
+ 'description': 'Compute controller node'
+}, {
+ 'role': 'network-server',
+ 'display_name': 'Network server node',
+ 'description': 'Network server node'
+}, {
+ 'role': 'database',
+ 'display_name': 'Database node',
+ 'description': 'Database node'
+}, {
+ 'role': 'messaging',
+ 'display_name': 'Messaging queue node',
+ 'description': 'Messaging queue node'
+}, {
+ 'role': 'image',
+ 'display': 'Image node',
+ 'description': 'Image node'
+}, {
+ 'role': 'dashboard',
+ 'display': 'Dashboard node',
+ 'description': 'Dashboard node'
+}, {
+ 'role': 'identity',
+ 'display': 'Identity node',
+ 'description': 'Identity node'
+}, {
+ 'role': 'storage-controller',
+ 'display': 'Storage controller node',
+ 'description': 'Storage controller node'
+}, {
+ 'role': 'storage-volume',
+ 'display': 'Storage volume node',
+ 'description': 'Storage volume node'
+}, {
+ 'role': 'network-worker',
+ 'display': 'Network worker node',
+ 'description': 'Network worker node'
+}, {
+ 'role': 'odl',
+ 'display': 'open day light',
+ 'description': 'odl node',
+ 'optional': True
+}, {
+ 'role': 'onos',
+ 'display': 'open network operating system',
+ 'description': 'onos node',
+ 'optional': True
+}, {
+ 'role': 'opencontrail',
+ 'display': 'open contrail',
+ 'description': 'opencontrail node',
+ 'optional': True
+}, {
+ 'role': 'ha',
+ 'display': 'Cluster with HA',
+ 'description': 'Cluster with HA node'
+}, {
+ 'role': 'ceph-adm',
+ 'display': 'Ceph Admin Node',
+ 'description': 'Ceph Admin Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-mon',
+ 'display': 'Ceph Monitor Node',
+ 'description': 'Ceph Monitor Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-osd',
+ 'display': 'Ceph Storage Node',
+ 'description': 'Ceph Storage Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-osd-node',
+ 'display': 'Ceph osd install from node',
+ 'description': '',
+ 'optional': True
+}, {
+ 'role': 'ceph',
+ 'display': 'ceph node',
+ 'description': 'ceph node',
+ 'optional': True
+}, {
+ 'role': 'sec-patch',
+ 'display': 'sec-patch node',
+ 'description': 'Security Patch Node',
+ 'optional': True
+}]
diff --git a/deploy/compass_conf/role/openstack_newton_xenial_ansible.conf b/deploy/compass_conf/role/openstack_newton_xenial_ansible.conf
new file mode 100755
index 00000000..385f025f
--- /dev/null
+++ b/deploy/compass_conf/role/openstack_newton_xenial_ansible.conf
@@ -0,0 +1,115 @@
+ADAPTER_NAME = 'openstack_newton_xenial'
+ROLES = [{
+ 'role': 'allinone-compute',
+ 'display_name': 'all in one',
+ 'description': 'All in One'
+}, {
+ 'role': 'controller',
+ 'display_name': 'controller node',
+ 'description': 'Controller Node'
+}, {
+ 'role': 'compute',
+ 'display_name': 'compute node',
+ 'description': 'Compute Node'
+}, {
+ 'role': 'storage',
+ 'display_name': 'storage node',
+ 'description': 'Storage Node'
+}, {
+ 'role': 'network',
+ 'display_name': 'network node',
+ 'description': 'Network Node'
+}, {
+ 'role': 'compute-worker',
+ 'display_name': 'Compute worker node',
+ 'description': 'Compute worker node'
+}, {
+ 'role': 'compute-controller',
+ 'display_name': 'Compute controller node',
+ 'description': 'Compute controller node'
+}, {
+ 'role': 'network-server',
+ 'display_name': 'Network server node',
+ 'description': 'Network server node'
+}, {
+ 'role': 'database',
+ 'display_name': 'Database node',
+ 'description': 'Database node'
+}, {
+ 'role': 'messaging',
+ 'display_name': 'Messaging queue node',
+ 'description': 'Messaging queue node'
+}, {
+ 'role': 'image',
+ 'display': 'Image node',
+ 'description': 'Image node'
+}, {
+ 'role': 'dashboard',
+ 'display': 'Dashboard node',
+ 'description': 'Dashboard node'
+}, {
+ 'role': 'identity',
+ 'display': 'Identity node',
+ 'description': 'Identity node'
+}, {
+ 'role': 'storage-controller',
+ 'display': 'Storage controller node',
+ 'description': 'Storage controller node'
+}, {
+ 'role': 'storage-volume',
+ 'display': 'Storage volume node',
+ 'description': 'Storage volume node'
+}, {
+ 'role': 'network-worker',
+ 'display': 'Network worker node',
+ 'description': 'Network worker node'
+}, {
+ 'role': 'odl',
+ 'display': 'open day light',
+ 'description': 'odl node',
+ 'optional': True
+}, {
+ 'role': 'onos',
+ 'display': 'open network operating system',
+ 'description': 'onos node',
+ 'optional': True
+}, {
+ 'role': 'opencontrail',
+ 'display': 'open contrail',
+ 'description': 'opencontrail node',
+ 'optional': True
+}, {
+ 'role': 'ha',
+ 'display': 'Cluster with HA',
+ 'description': 'Cluster with HA node'
+}, {
+ 'role': 'ceph-adm',
+ 'display': 'Ceph Admin Node',
+ 'description': 'Ceph Admin Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-mon',
+ 'display': 'Ceph Monitor Node',
+ 'description': 'Ceph Monitor Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-osd',
+ 'display': 'Ceph Storage Node',
+ 'description': 'Ceph Storage Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-osd-node',
+ 'display': 'Ceph osd install from node',
+ 'description': '',
+ 'optional': True
+}, {
+ 'role': 'ceph',
+ 'display': 'ceph node',
+ 'description': 'ceph node',
+ 'optional': True
+}, {
+ 'role': 'sec-patch',
+ 'display': 'sec-patch node',
+ 'description': 'Security Patch Node',
+ 'optional': True
+}]
diff --git a/deploy/compass_conf/role/openstack_osp9_ansible.conf b/deploy/compass_conf/role/openstack_osp9_ansible.conf
new file mode 100755
index 00000000..0a5f67b3
--- /dev/null
+++ b/deploy/compass_conf/role/openstack_osp9_ansible.conf
@@ -0,0 +1,115 @@
+ADAPTER_NAME = 'openstack_osp9'
+ROLES = [{
+ 'role': 'allinone-compute',
+ 'display_name': 'all in one',
+ 'description': 'All in One'
+}, {
+ 'role': 'controller',
+ 'display_name': 'controller node',
+ 'description': 'Controller Node'
+}, {
+ 'role': 'compute',
+ 'display_name': 'compute node',
+ 'description': 'Compute Node'
+}, {
+ 'role': 'storage',
+ 'display_name': 'storage node',
+ 'description': 'Storage Node'
+}, {
+ 'role': 'network',
+ 'display_name': 'network node',
+ 'description': 'Network Node'
+}, {
+ 'role': 'compute-worker',
+ 'display_name': 'Compute worker node',
+ 'description': 'Compute worker node'
+}, {
+ 'role': 'compute-controller',
+ 'display_name': 'Compute controller node',
+ 'description': 'Compute controller node'
+}, {
+ 'role': 'network-server',
+ 'display_name': 'Network server node',
+ 'description': 'Network server node'
+}, {
+ 'role': 'database',
+ 'display_name': 'Database node',
+ 'description': 'Database node'
+}, {
+ 'role': 'messaging',
+ 'display_name': 'Messaging queue node',
+ 'description': 'Messaging queue node'
+}, {
+ 'role': 'image',
+ 'display': 'Image node',
+ 'description': 'Image node'
+}, {
+ 'role': 'dashboard',
+ 'display': 'Dashboard node',
+ 'description': 'Dashboard node'
+}, {
+ 'role': 'identity',
+ 'display': 'Identity node',
+ 'description': 'Identity node'
+}, {
+ 'role': 'storage-controller',
+ 'display': 'Storage controller node',
+ 'description': 'Storage controller node'
+}, {
+ 'role': 'storage-volume',
+ 'display': 'Storage volume node',
+ 'description': 'Storage volume node'
+}, {
+ 'role': 'network-worker',
+ 'display': 'Network worker node',
+ 'description': 'Network worker node'
+}, {
+ 'role': 'odl',
+ 'display': 'open day light',
+ 'description': 'odl node',
+ 'optional': True
+}, {
+ 'role': 'onos',
+ 'display': 'open network operating system',
+ 'description': 'onos node',
+ 'optional': True
+}, {
+ 'role': 'opencontrail',
+ 'display': 'open contrail',
+ 'description': 'opencontrail node',
+ 'optional': True
+}, {
+ 'role': 'ha',
+ 'display': 'Cluster with HA',
+ 'description': 'Cluster with HA node'
+}, {
+ 'role': 'ceph-adm',
+ 'display': 'Ceph Admin Node',
+ 'description': 'Ceph Admin Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-mon',
+ 'display': 'Ceph Monitor Node',
+ 'description': 'Ceph Monitor Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-osd',
+ 'display': 'Ceph Storage Node',
+ 'description': 'Ceph Storage Node',
+ 'optional': True
+}, {
+ 'role': 'ceph-osd-node',
+ 'display': 'Ceph osd install from node',
+ 'description': '',
+ 'optional': True
+}, {
+ 'role': 'ceph',
+ 'display': 'ceph node',
+ 'description': 'ceph node',
+ 'optional': True
+}, {
+ 'role': 'sec-patch',
+ 'display': 'sec-patch node',
+ 'description': 'Security Patch Node',
+ 'optional': True
+}]
diff --git a/deploy/compass_conf/setting b/deploy/compass_conf/setting
new file mode 100755
index 00000000..a1e9bff2
--- /dev/null
+++ b/deploy/compass_conf/setting
@@ -0,0 +1,31 @@
+CONFIG_DIR = '/etc/compass'
+DATABASE_TYPE = 'mysql'
+DATABASE_USER = 'root'
+DATABASE_PASSWORD = 'root'
+DATABASE_SERVER = '127.0.0.1:3306'
+DATABASE_NAME = 'compass'
+SQLALCHEMY_DATABASE_URI = '%s://%s:%s@%s/%s' % (DATABASE_TYPE, DATABASE_USER, DATABASE_PASSWORD, DATABASE_SERVER, DATABASE_NAME)
+SQLALCHEMY_DATABASE_POOL_TYPE = 'instant'
+COBBLER_INSTALLATION_LOGDIR = '/var/log/cobbler/anamon'
+CHEF_INSTALLATION_LOGDIR = '/var/log/chef'
+DEFAULT_LOGLEVEL = 'info'
+DEFAULT_LOGDIR = '/var/log/compass'
+DEFAULT_LOGINTERVAL = 6
+DEFAULT_LOGINTERVAL_UNIT = 'h'
+DEFAULT_LOGFORMAT = '%(asctime)s - %(filename)s - %(lineno)d - %(levelname)s - %(message)s'
+WEB_LOGFILE = 'compass_web.log'
+CELERY_LOGFILE = 'celery.log'
+CELERYCONFIG_DIR = '/etc/compass'
+CELERYCONFIG_FILE = 'celeryconfig'
+PROGRESS_UPDATE_INTERVAL=30
+POLLSWITCH_INTERVAL=60
+SWITCHES = [
+]
+TMPL_DIR = '/etc/compass/templates'
+COMPASS_SUPPORTED_PROXY = 'http://$ipaddr:3128'
+COMPASS_SUPPORTED_DEFAULT_NOPROXY = ['127.0.0.1','$ipaddr','$hostname']
+COMPASS_SUPPORTED_NTP_SERVER = '$ipaddr'
+COMPASS_SUPPORTED_DNS_SERVERS = ['$ipaddr']
+COMPASS_SUPPORTED_DOMAINS = ['$domains']
+COMPASS_SUPPORTED_DEFAULT_GATEWAY = '$gateway'
+COMPASS_SUPPORTED_LOCAL_REPO = 'http://$ipaddr'
diff --git a/deploy/compass_conf/switch_list/switch_list.conf b/deploy/compass_conf/switch_list/switch_list.conf
new file mode 100755
index 00000000..21c46c0a
--- /dev/null
+++ b/deploy/compass_conf/switch_list/switch_list.conf
@@ -0,0 +1,3 @@
+SWITCH_LIST = [
+ '127.0.0.1'
+]
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_juno/ansible_cfg/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_juno/ansible_cfg/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..264d4397
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_juno/ansible_cfg/HA-ansible-multinodes.tmpl
@@ -0,0 +1,7 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_juno-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
+library = /opt/openstack-ansible-modules
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_juno/ansible_cfg/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_juno/ansible_cfg/allinone.tmpl
new file mode 100755
index 00000000..35b8e0e4
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_juno/ansible_cfg/allinone.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_juno-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_juno/ansible_cfg/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_juno/ansible_cfg/multinodes.tmpl
new file mode 100755
index 00000000..35b8e0e4
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_juno/ansible_cfg/multinodes.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_juno-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_juno/ansible_cfg/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_juno/ansible_cfg/single-controller.tmpl
new file mode 100755
index 00000000..35b8e0e4
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_juno/ansible_cfg/single-controller.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_juno-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_juno/hosts/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_juno/hosts/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..9d628b5e
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_juno/hosts/HA-ansible-multinodes.tmpl
@@ -0,0 +1,31 @@
+#set ip_settings={}
+#for k,v in $getVar('ip_settings', {}).items()
+#set host_ip_settings={}
+#for intf in v
+#set $host_ip_settings[$intf["alias"]]=intf
+#end for
+#set $ip_settings[$k]=$host_ip_settings
+#end for
+
+# localhost
+127.0.0.1 localhost
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($compute, list)
+ #set computes = [$computes]
+#end if
+# controller
+#for worker in $controllers
+ #set worker_hostname = $worker.hostname
+ #set worker_ip = $ip_settings[$worker_hostname].mgmt.ip
+$worker_ip $worker_hostname
+#end for
+# compute
+#for worker in $computes
+ #set worker_hostname = $worker.hostname
+ #set worker_ip = $ip_settings[$worker_hostname].mgmt.ip
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_juno/hosts/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_juno/hosts/allinone.tmpl
new file mode 100755
index 00000000..b777815e
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_juno/hosts/allinone.tmpl
@@ -0,0 +1,10 @@
+#set controllers = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+# allinone
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_ip $controller_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_juno/hosts/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_juno/hosts/multinodes.tmpl
new file mode 100755
index 00000000..ca8c793f
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_juno/hosts/multinodes.tmpl
@@ -0,0 +1,110 @@
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+# compute-controller
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# database
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# messaging
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage-controller
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# image
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# identity
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network-server
+#for worker in $network_servers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# dashboard
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage-volume
+#for worker in $storage_volumes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network-worker
+#for worker in $network_workers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# compute-worker
+#for worker in $compute_workers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_juno/hosts/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_juno/hosts/single-controller.tmpl
new file mode 100755
index 00000000..3ed94694
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_juno/hosts/single-controller.tmpl
@@ -0,0 +1,40 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set storages = $getVar('storage', [])
+#set networks = $getVar('network', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+# controller
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_ip $controller_hostname
+#end for
+# compute
+#for worker in $computes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage
+#for worker in $storages
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network
+#for worker in $networks
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_juno/inventories/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_juno/inventories/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..9197f501
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_juno/inventories/HA-ansible-multinodes.tmpl
@@ -0,0 +1,110 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set has = $getVar('ha', [])
+#set odls = $getVar('odl', [])
+#set onoss = $getVar('onos', [])
+#set ceph_adm_list = $getVar('ceph_adm',[])
+#set ceph_mon_list = $getVar('ceph_mon',[])
+#set ceph_osd_list = $getVar('ceph_osd',[])
+#set sec_patch_list = $getVar('sec_patch',[])
+#set ceph_osd_node_list = $getVar('ceph_osd_node',[])
+
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance(has, list)
+ #set has = [has]
+#end if
+#if not $isinstance(odls, list)
+ #set odls = [odls]
+#end if
+#if not $isinstance(onoss, list)
+ #set onoss = [onoss]
+#end if
+#if not $isinstance(ceph_adm_list, list)
+ #set ceph_adm_list = [ceph_adm_list]
+#end if
+#if not $isinstance(ceph_mon_list, list)
+ #set ceph_mon_list = [ceph_mon_list]
+#end if
+#if not $isinstance(ceph_osd_list, list)
+ #set ceph_osd_list = [ceph_osd_list]
+#end if
+#if not $isinstance(sec_patch_list, list)
+ #set sec_patch_list = [sec_patch_list]
+#end if
+#if not $isinstance(ceph_osd_node_list, list)
+ #set ceph_osd_node_list = [ceph_osd_node_list]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.install.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.install.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ha]
+#for ha in $has
+ #set ha_ip = $ha.install.ip
+ #set ha_hostname = $ha.hostname
+$ha_hostname ansible_ssh_host=$ha_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[odl]
+#for odl in $odls
+ #set odl_ip = $odl.install.ip
+ #set odl_hostname = $odl.hostname
+$odl_hostname ansible_ssh_host=$odl_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[onos]
+#for onos in $onoss
+ #set onos_ip = $onos.install.ip
+ #set onos_hostname = $onos.hostname
+$onos_hostname ansible_ssh_host=$onos_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_adm]
+#for ceph_adm in $ceph_adm_list
+ #set ceph_adm_ip = $ceph_adm.install.ip
+ #set ceph_adm_hostname = $ceph_adm.hostname
+$ceph_adm_hostname ansible_ssh_host=$ceph_adm_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_mon]
+#for ceph_mon in $ceph_mon_list
+ #set ceph_mon_ip = $ceph_mon.install.ip
+ #set ceph_mon_hostname = $ceph_mon.hostname
+$ceph_mon_hostname ansible_ssh_host=$ceph_mon_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_osd]
+#for ceph_osd in $ceph_osd_list
+ #set ceph_osd_ip = $ceph_osd.install.ip
+ #set ceph_osd_hostname = $ceph_osd.hostname
+$ceph_osd_hostname ansible_ssh_host=$ceph_osd_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[sec_patch]
+#for sec_patch in $sec_patch_list
+ #set sec_patch_ip = $sec_patch.install.ip
+ #set sec_patch_hostname = $sec_patch.hostname
+$sec_patch_hostname ansible_ssh_host=$sec_patch_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_osd_node]
+#for ceph_osd_node in $ceph_osd_node_list
+ #set ceph_osd_node_ip = $ceph_osd_node.install.ip
+ #set ceph_osd_node_hostname = $ceph_osd_node.hostname
+$ceph_osd_node_hostname ansible_ssh_host=$ceph_osd_node_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[ceph:children]
+ceph_adm
+ceph_mon
+ceph_osd
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_juno/inventories/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_juno/inventories/allinone.tmpl
new file mode 100755
index 00000000..38e0038b
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_juno/inventories/allinone.tmpl
@@ -0,0 +1,47 @@
+#set controllers = $getVar('allinone_compute', [])
+#set computes = $getVar('allinone_compute', [])
+#set storages = $getVar('allinone_compute', [])
+#set networks = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network]
+#for network in $networks
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_juno/inventories/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_juno/inventories/multinodes.tmpl
new file mode 100755
index 00000000..7cdfbef3
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_juno/inventories/multinodes.tmpl
@@ -0,0 +1,123 @@
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[compute-controller]
+#for controller in $compute_controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute-worker]
+#for compute in $compute_workers
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network-server]
+#for network in $network_servers
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network-worker]
+#for network in $network_workers
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[database]
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[messaging]
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[image]
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[dashboard]
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[identity]
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage-controller]
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage-volume]
+#for worker in $storage_volumes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_juno/inventories/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_juno/inventories/single-controller.tmpl
new file mode 100755
index 00000000..e1bf72c4
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_juno/inventories/single-controller.tmpl
@@ -0,0 +1,67 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set storages = $getVar('storage', [])
+#set networks = $getVar('network', [])
+#set odls = $getVar('odl', [])
+#set onoss = $getVar('onos', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+#if not $isinstance($odls, list)
+ #set odls = [$odls]
+#end if
+#if not $isinstance($onoss, list)
+ #set onoss = [$onoss]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network]
+#for network in $networks
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[odl]
+#for odl in odls
+ #set odl_ip = $odl.management.ip
+ #set odl_hostname = $odl.hostname
+$odl_hostname ansible_ssh_host=$odl_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_juno/vars/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_juno/vars/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..5987f44d
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_juno/vars/HA-ansible-multinodes.tmpl
@@ -0,0 +1,202 @@
+#from random import randint
+#set cluster_name = $getVar('name', '')
+#set network_cfg = $getVar('network_cfg', {})
+#set ntp_server = $getVar('ntp_server', "")
+#set ceph_disk = $getVar('ceph_disk',"")
+#set $sys_intf_mappings= {}
+#for $intf_info in $network_cfg.sys_intf_mappings
+#set $sys_intf_mappings[$intf_info["name"]] = $intf_info
+#end for
+
+#set ip_settings={}
+#for k,v in $getVar('ip_settings', {}).items()
+#set host_ip_settings={}
+#for intf in v
+#set $host_ip_settings[$intf["alias"]]=intf
+#end for
+#set $ip_settings[$k]=$host_ip_settings
+#end for
+
+#set neutron_cfg = $getVar('neutron_config', {})
+#set ovs_config = $neutron_cfg.openvswitch
+
+#set has = $getVar('ha', [])
+#set ha_vip = $getVar('ha_vip', [])
+
+#set controllers = $getVar('controller', [])
+#set computers = $getVar('compute', [])
+
+enable_secgroup: $getVar('enable_secgroup', True)
+enable_fwaas: $getVar('enable_fwaas', True)
+enable_vpnaas: $getVar('enable_vpnaas', True)
+onos_nic: $getVar('onos_nic', 'eth2')
+ip_settings: $ip_settings
+network_cfg: $network_cfg
+sys_intf_mappings: $sys_intf_mappings
+deploy_type: $getVar('deploy_type', 'virtual')
+
+public_cidr: $computers[0]['install']['subnet']
+storage_cidr: "{{ ip_settings[inventory_hostname]['storage']['cidr'] }}"
+mgmt_cidr: "{{ ip_settings[inventory_hostname]['mgmt']['cidr'] }}"
+
+public_net_info: "{{ network_cfg.public_net_info }}"
+host_ip_settings: "{{ ip_settings[inventory_hostname] }}"
+
+ntp_server: $ntp_server
+internal_vip:
+ ip: $network_cfg["internal_vip"]["ip"]
+ netmask: $network_cfg["internal_vip"]["netmask"]
+#if "vlan_tag" in $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]
+ interface: $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]["name"]
+#else
+ interface: $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]["interface"]
+#end if
+
+public_vip:
+ ip: $network_cfg["public_vip"]["ip"]
+ netmask: $network_cfg["public_vip"]["netmask"]
+#if "vlan_tag" in $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]
+ interface: $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]["name"]
+#else
+ interface: $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]["interface"]
+#end if
+
+db_host: "{{ internal_vip.ip }}"
+rabbit_host: "{{ internal_vip.ip }}"
+
+internal_ip: "{{ ip_settings[inventory_hostname]['mgmt']['ip'] }}"
+internal_nic: mgmt
+
+#set random_id = randint(1, 255)
+vrouter_id_internal: $random_id
+vrouter_id_public: $random_id
+
+identity_host: "{{ internal_ip }}"
+controllers_host: "{{ internal_ip }}"
+storage_controller_host: "{{ internal_ip }}"
+compute_controller_host: "{{ internal_ip }}"
+image_host: "{{ internal_ip }}"
+network_server_host: "{{ internal_ip }}"
+dashboard_host: "{{ internal_ip }}"
+
+haproxy_hosts:
+#for $item in $has
+#set $hostname=$item["hostname"]
+ $hostname: $ip_settings[$hostname]["mgmt"]["ip"]
+#end for
+
+host_index:
+#for $index, $item in enumerate($has)
+ $item["hostname"]: $index
+#end for
+
+ERLANG_TOKEN: YOWSJSJIGGAUFZTIBRAD
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set keystone_pass = $console_credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set heat_dbpass = $credentials.heat.password
+#set heat_pass = $console_credentials.heat.password
+#set neutron_dbpass = $credentials.network.password
+#set neutron_pass = $console_credentials.network.password
+#set ceilometer_dbpass = $credentials.metering.password
+#set ceilometer_pass = $console_credentials.metering.password
+#set admin_pass = $console_credentials.admin.password
+#set demo_pass = $console_credentials.demo.password
+
+cluster_name: $cluster_name
+
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controllers_host }}"
+DB_HOST: "{{ db_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-juno.list
+juno_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/juno main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+erlang.cookie: DJJVECFMCJPVYQTJTDWG
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+KEYSTONE_PASS: $keystone_pass
+CEILOMETER_DBPASS: $ceilometer_dbpass
+CEILOMETER_PASS: $ceilometer_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_dbpass
+NEUTRON_PASS: $neutron_pass
+HEAT_DBPASS: $heat_dbpass
+HEAT_PASS: $heat_pass
+DEMO_PASS: $demo_pass
+ADMIN_PASS: $admin_pass
+
+#set neutron_service_plugins=['router']
+
+#if $getVar('enable_fwaas', True)
+#neutron_service_plugins.append('firewall')
+#end if
+
+#if $getVar('enable_vpnaas', True)
+#neutron_service_plugins.append('vpnaas')
+#end if
+
+NEUTRON_SERVICE_PLUGINS: $neutron_service_plugins
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan', 'vlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['$ovs_config["tenant_network_type"]']
+NEUTRON_OVS_BRIDGE_MAPPINGS: $ovs_config['bridge_mappings']
+#if 'vlan_ranges' in $ovs_config
+NEUTRON_VLAN_RANGES: $ovs_config['vlan_ranges']
+#else
+NEUTRON_VLAN_RANGES: []
+#end if
+#if 'tunnel_id_ranges' in $ovs_config
+NEUTRON_TUNNEL_ID_RANGES: $ovs_config['tunnel_id_ranges']
+#else
+NEUTRON_TUNNEL_ID_RANGES: []
+#end if
+
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+WSREP_SST_USER: wsrep_sst
+WSREP_SST_PASS: wsrep_sst_sercet
+
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: "{{ internal_ip }}"
+
+#build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image: http://192.168.121.12:9999/img/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
+
+odl_pkg_url: https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.2-Helium-SR2/distribution-karaf-0.2.2-Helium-SR2.tar.gz
+odl_pkg_name: karaf.tar.gz
+odl_home: "/opt/opendaylight-0.2.2/"
+odl_base_features: ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management', 'http', 'odl-base-all','odl-aaa-authn','odl-restconf','odl-nsf-all','odl-adsal-northbound','odl-mdsal-apidocs', 'odl-openflowplugin-all']
+odl_extra_features: ['odl-l2switch-switch', 'odl-ovsdb-plugin', 'odl-ovsdb-openstack', 'odl-ovsdb-northbound','odl-dlux-core', 'odl-restconf-all', 'odl-mdsal-clustering', 'odl-openflowplugin-flow-services', 'odl-netconf-connector', 'odl-netconf-connector-ssh', 'jolokia-osgi']
+odl_features: "{{ odl_base_features + odl_extra_features }}"
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_juno/vars/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_juno/vars/allinone.tmpl
new file mode 100755
index 00000000..740397ca
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_juno/vars/allinone.tmpl
@@ -0,0 +1,96 @@
+#set cluster_name = $getVar('name', '')
+#set controllers = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+controller_host: $controller_ip
+#end for
+#for network in $controllers
+ #set network_external_nic = $network.external.interface
+ #set network_external_subnet = $network.external.subnet
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+compute_controller_host: "{{ controller_host }}"
+db_host: "{{ controller_host }}"
+rabbit_host: "{{ controller_host }}"
+storage_controller_host: "{{ controller_host }}"
+image_host: "{{ controller_host }}"
+identity_host: "{{ controller_host }}"
+network_server_host: "{{ controller_host }}"
+dashboard_host: "{{ controller_host }}"
+
+cluster_name: $cluster_name
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controller_host }}"
+DB_HOST: "{{ controller_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-juno.list
+juno_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/juno main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_juno/vars/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_juno/vars/multinodes.tmpl
new file mode 100755
index 00000000..da266a79
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_juno/vars/multinodes.tmpl
@@ -0,0 +1,165 @@
+#set cluster_name = $getVar('name', '')
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+compute_controller_host: $worker_ip
+#end for
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+db_host: $worker_ip
+#end for
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+rabbit_host: $worker_ip
+#end for
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+storage_controller_host: $worker_ip
+#end for
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+image_host: $worker_ip
+#end for
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+identity_host: $worker_ip
+#end for
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+compute_controller_host: $worker_ip
+#end for
+#for worker in $network_servers
+ #set worker_ip = $worker.management.ip
+network_server_host: $worker_ip
+#end for
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+dashboard_host: $worker_ip
+#end for
+#for network in $network_workers
+ #set network_external_nic = $network.external.interface
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+cluster_name: $cluster_name
+
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ compute_controller_host }}"
+DB_HOST: "{{ db_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-juno.list
+juno_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/juno main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
+
+odl_pkg_url: https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.2-Helium-SR2/distribution-karaf-0.2.2-Helium-SR2.tar.gz
+odl_pkg_name: karaf.tar.gz
+odl_home: "/opt/opendaylight-0.2.2/"
+odl_base_features: ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management', 'http', 'odl-base-all','odl-aaa-authn','odl-restconf','odl-nsf-all','odl-adsal-northbound','odl-mdsal-apidocs', 'odl-openflowplugin-all']
+odl_extra_features: ['odl-l2switch-switch', 'odl-ovsdb-plugin', 'odl-ovsdb-openstack', 'odl-ovsdb-northbound','odl-dlux-core', 'odl-restconf-all', 'odl-mdsal-clustering', 'odl-openflowplugin-flow-services', 'odl-netconf-connector', 'odl-netconf-connector-ssh', 'jolokia-osgi']
+odl_features: "{{ odl_base_features + odl_extra_features }}"
+odl_api_port: 8080
+
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_juno/vars/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_juno/vars/single-controller.tmpl
new file mode 100755
index 00000000..b24bc811
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_juno/vars/single-controller.tmpl
@@ -0,0 +1,108 @@
+#set cluster_name = $getVar('name', '')
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set networks = $getVar('network', [])
+#set storages = $getVar('storage', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+controller_host: $controller_ip
+#end for
+#for network in $networks
+ #set network_external_nic = $network.external.interface
+ #set network_external_subnet = $network.external.subnet
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+cluster_name: $cluster_name
+deploy_type: $getVar('deploy_type', 'virtual')
+compute_controller_host: "{{ controller_host }}"
+db_host: "{{ controller_host }}"
+rabbit_host: "{{ controller_host }}"
+storage_controller_host: "{{ controller_host }}"
+image_host: "{{ controller_host }}"
+identity_host: "{{ controller_host }}"
+network_server_host: "{{ controller_host }}"
+dashboard_host: "{{ controller_host }}"
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controller_host }}"
+DB_HOST: "{{ controller_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-juno.list
+juno_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/juno main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+# EXTERNAL_NETWORK_CIDR: $network_external_subnet
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_kilo/ansible_cfg/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/ansible_cfg/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..81f55aba
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/ansible_cfg/HA-ansible-multinodes.tmpl
@@ -0,0 +1,7 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_kilo-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
+library = /opt/openstack-ansible-modules
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_kilo/ansible_cfg/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/ansible_cfg/allinone.tmpl
new file mode 100755
index 00000000..35b8e0e4
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/ansible_cfg/allinone.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_juno-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_kilo/ansible_cfg/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/ansible_cfg/multinodes.tmpl
new file mode 100755
index 00000000..35b8e0e4
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/ansible_cfg/multinodes.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_juno-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_kilo/ansible_cfg/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/ansible_cfg/single-controller.tmpl
new file mode 100755
index 00000000..35b8e0e4
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/ansible_cfg/single-controller.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_juno-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_kilo/hosts/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/hosts/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..9d628b5e
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/hosts/HA-ansible-multinodes.tmpl
@@ -0,0 +1,31 @@
+#set ip_settings={}
+#for k,v in $getVar('ip_settings', {}).items()
+#set host_ip_settings={}
+#for intf in v
+#set $host_ip_settings[$intf["alias"]]=intf
+#end for
+#set $ip_settings[$k]=$host_ip_settings
+#end for
+
+# localhost
+127.0.0.1 localhost
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($compute, list)
+ #set computes = [$computes]
+#end if
+# controller
+#for worker in $controllers
+ #set worker_hostname = $worker.hostname
+ #set worker_ip = $ip_settings[$worker_hostname].mgmt.ip
+$worker_ip $worker_hostname
+#end for
+# compute
+#for worker in $computes
+ #set worker_hostname = $worker.hostname
+ #set worker_ip = $ip_settings[$worker_hostname].mgmt.ip
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_kilo/hosts/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/hosts/allinone.tmpl
new file mode 100755
index 00000000..b777815e
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/hosts/allinone.tmpl
@@ -0,0 +1,10 @@
+#set controllers = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+# allinone
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_ip $controller_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_kilo/hosts/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/hosts/multinodes.tmpl
new file mode 100755
index 00000000..ca8c793f
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/hosts/multinodes.tmpl
@@ -0,0 +1,110 @@
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+# compute-controller
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# database
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# messaging
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage-controller
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# image
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# identity
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network-server
+#for worker in $network_servers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# dashboard
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage-volume
+#for worker in $storage_volumes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network-worker
+#for worker in $network_workers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# compute-worker
+#for worker in $compute_workers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_kilo/hosts/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/hosts/single-controller.tmpl
new file mode 100755
index 00000000..3ed94694
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/hosts/single-controller.tmpl
@@ -0,0 +1,40 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set storages = $getVar('storage', [])
+#set networks = $getVar('network', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+# controller
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_ip $controller_hostname
+#end for
+# compute
+#for worker in $computes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage
+#for worker in $storages
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network
+#for worker in $networks
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_kilo/inventories/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/inventories/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..277b4521
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/inventories/HA-ansible-multinodes.tmpl
@@ -0,0 +1,109 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set has = $getVar('ha', [])
+#set odls = $getVar('odl', [])
+#set onoss = $getVar('onos', [])
+#set ceph_adm_list = $getVar('ceph_adm',[])
+#set ceph_mon_list = $getVar('ceph_mon',[])
+#set ceph_osd_list = $getVar('ceph_osd',[])
+#set sec_patch_list = $getVar('sec_patch',[])
+#set ceph_osd_node_list = $getVar('ceph_osd_node',[])
+
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance(has, list)
+ #set has = [has]
+#end if
+#if not $isinstance(odls, list)
+ #set odls = [odls]
+#end if
+#if not $isinstance(onoss, list)
+ #set onoss = [onoss]
+#end if
+#if not $isinstance(ceph_adm_list, list)
+ #set ceph_adm_list = [ceph_adm_list]
+#end if
+#if not $isinstance(ceph_mon_list, list)
+ #set ceph_mon_list = [ceph_mon_list]
+#end if
+#if not $isinstance(ceph_osd_list, list)
+ #set ceph_osd_list = [ceph_osd_list]
+#end if
+#if not $isinstance(sec_patch_list, list)
+ #set sec_patch_list = [sec_patch_list]
+#end if
+#if not $isinstance(ceph_osd_node_list, list)
+ #set ceph_osd_node_list = [ceph_osd_node_list]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.install.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.install.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ha]
+#for ha in $has
+ #set ha_ip = $ha.install.ip
+ #set ha_hostname = $ha.hostname
+$ha_hostname ansible_ssh_host=$ha_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[odl]
+#for odl in $odls
+ #set odl_ip = $odl.install.ip
+ #set odl_hostname = $odl.hostname
+$odl_hostname ansible_ssh_host=$odl_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[onos]
+#for onos in $onoss
+ #set onos_ip = $onos.install.ip
+ #set onos_hostname = $onos.hostname
+$onos_hostname ansible_ssh_host=$onos_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_adm]
+#for ceph_adm in $ceph_adm_list
+ #set ceph_adm_ip = $ceph_adm.install.ip
+ #set ceph_adm_hostname = $ceph_adm.hostname
+$ceph_adm_hostname ansible_ssh_host=$ceph_adm_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_mon]
+#for ceph_mon in $ceph_mon_list
+ #set ceph_mon_ip = $ceph_mon.install.ip
+ #set ceph_mon_hostname = $ceph_mon.hostname
+$ceph_mon_hostname ansible_ssh_host=$ceph_mon_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_osd]
+#for ceph_osd in $ceph_osd_list
+ #set ceph_osd_ip = $ceph_osd.install.ip
+ #set ceph_osd_hostname = $ceph_osd.hostname
+$ceph_osd_hostname ansible_ssh_host=$ceph_osd_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[sec_patch]
+#for sec_patch in $sec_patch_list
+ #set sec_patch_ip = $sec_patch.install.ip
+ #set sec_patch_hostname = $sec_patch.hostname
+$sec_patch_hostname ansible_ssh_host=$sec_patch_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_osd_node]
+#for ceph_osd_node in $ceph_osd_node_list
+ #set ceph_osd_node_ip = $ceph_osd_node.install.ip
+ #set ceph_osd_node_hostname = $ceph_osd_node.hostname
+$ceph_osd_node_hostname ansible_ssh_host=$ceph_osd_node_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph:children]
+ceph_adm
+ceph_mon
+ceph_osd
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_kilo/inventories/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/inventories/allinone.tmpl
new file mode 100755
index 00000000..38e0038b
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/inventories/allinone.tmpl
@@ -0,0 +1,47 @@
+#set controllers = $getVar('allinone_compute', [])
+#set computes = $getVar('allinone_compute', [])
+#set storages = $getVar('allinone_compute', [])
+#set networks = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network]
+#for network in $networks
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_kilo/inventories/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/inventories/multinodes.tmpl
new file mode 100755
index 00000000..7cdfbef3
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/inventories/multinodes.tmpl
@@ -0,0 +1,123 @@
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[compute-controller]
+#for controller in $compute_controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute-worker]
+#for compute in $compute_workers
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network-server]
+#for network in $network_servers
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network-worker]
+#for network in $network_workers
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[database]
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[messaging]
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[image]
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[dashboard]
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[identity]
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage-controller]
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage-volume]
+#for worker in $storage_volumes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_kilo/inventories/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/inventories/single-controller.tmpl
new file mode 100755
index 00000000..e1bf72c4
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/inventories/single-controller.tmpl
@@ -0,0 +1,67 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set storages = $getVar('storage', [])
+#set networks = $getVar('network', [])
+#set odls = $getVar('odl', [])
+#set onoss = $getVar('onos', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+#if not $isinstance($odls, list)
+ #set odls = [$odls]
+#end if
+#if not $isinstance($onoss, list)
+ #set onoss = [$onoss]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network]
+#for network in $networks
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[odl]
+#for odl in odls
+ #set odl_ip = $odl.management.ip
+ #set odl_hostname = $odl.hostname
+$odl_hostname ansible_ssh_host=$odl_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_kilo/vars/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/vars/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..5987f44d
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/vars/HA-ansible-multinodes.tmpl
@@ -0,0 +1,202 @@
+#from random import randint
+#set cluster_name = $getVar('name', '')
+#set network_cfg = $getVar('network_cfg', {})
+#set ntp_server = $getVar('ntp_server', "")
+#set ceph_disk = $getVar('ceph_disk',"")
+#set $sys_intf_mappings= {}
+#for $intf_info in $network_cfg.sys_intf_mappings
+#set $sys_intf_mappings[$intf_info["name"]] = $intf_info
+#end for
+
+#set ip_settings={}
+#for k,v in $getVar('ip_settings', {}).items()
+#set host_ip_settings={}
+#for intf in v
+#set $host_ip_settings[$intf["alias"]]=intf
+#end for
+#set $ip_settings[$k]=$host_ip_settings
+#end for
+
+#set neutron_cfg = $getVar('neutron_config', {})
+#set ovs_config = $neutron_cfg.openvswitch
+
+#set has = $getVar('ha', [])
+#set ha_vip = $getVar('ha_vip', [])
+
+#set controllers = $getVar('controller', [])
+#set computers = $getVar('compute', [])
+
+enable_secgroup: $getVar('enable_secgroup', True)
+enable_fwaas: $getVar('enable_fwaas', True)
+enable_vpnaas: $getVar('enable_vpnaas', True)
+onos_nic: $getVar('onos_nic', 'eth2')
+ip_settings: $ip_settings
+network_cfg: $network_cfg
+sys_intf_mappings: $sys_intf_mappings
+deploy_type: $getVar('deploy_type', 'virtual')
+
+public_cidr: $computers[0]['install']['subnet']
+storage_cidr: "{{ ip_settings[inventory_hostname]['storage']['cidr'] }}"
+mgmt_cidr: "{{ ip_settings[inventory_hostname]['mgmt']['cidr'] }}"
+
+public_net_info: "{{ network_cfg.public_net_info }}"
+host_ip_settings: "{{ ip_settings[inventory_hostname] }}"
+
+ntp_server: $ntp_server
+internal_vip:
+ ip: $network_cfg["internal_vip"]["ip"]
+ netmask: $network_cfg["internal_vip"]["netmask"]
+#if "vlan_tag" in $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]
+ interface: $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]["name"]
+#else
+ interface: $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]["interface"]
+#end if
+
+public_vip:
+ ip: $network_cfg["public_vip"]["ip"]
+ netmask: $network_cfg["public_vip"]["netmask"]
+#if "vlan_tag" in $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]
+ interface: $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]["name"]
+#else
+ interface: $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]["interface"]
+#end if
+
+db_host: "{{ internal_vip.ip }}"
+rabbit_host: "{{ internal_vip.ip }}"
+
+internal_ip: "{{ ip_settings[inventory_hostname]['mgmt']['ip'] }}"
+internal_nic: mgmt
+
+#set random_id = randint(1, 255)
+vrouter_id_internal: $random_id
+vrouter_id_public: $random_id
+
+identity_host: "{{ internal_ip }}"
+controllers_host: "{{ internal_ip }}"
+storage_controller_host: "{{ internal_ip }}"
+compute_controller_host: "{{ internal_ip }}"
+image_host: "{{ internal_ip }}"
+network_server_host: "{{ internal_ip }}"
+dashboard_host: "{{ internal_ip }}"
+
+haproxy_hosts:
+#for $item in $has
+#set $hostname=$item["hostname"]
+ $hostname: $ip_settings[$hostname]["mgmt"]["ip"]
+#end for
+
+host_index:
+#for $index, $item in enumerate($has)
+ $item["hostname"]: $index
+#end for
+
+ERLANG_TOKEN: YOWSJSJIGGAUFZTIBRAD
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set keystone_pass = $console_credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set heat_dbpass = $credentials.heat.password
+#set heat_pass = $console_credentials.heat.password
+#set neutron_dbpass = $credentials.network.password
+#set neutron_pass = $console_credentials.network.password
+#set ceilometer_dbpass = $credentials.metering.password
+#set ceilometer_pass = $console_credentials.metering.password
+#set admin_pass = $console_credentials.admin.password
+#set demo_pass = $console_credentials.demo.password
+
+cluster_name: $cluster_name
+
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controllers_host }}"
+DB_HOST: "{{ db_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-juno.list
+juno_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/juno main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+erlang.cookie: DJJVECFMCJPVYQTJTDWG
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+KEYSTONE_PASS: $keystone_pass
+CEILOMETER_DBPASS: $ceilometer_dbpass
+CEILOMETER_PASS: $ceilometer_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_dbpass
+NEUTRON_PASS: $neutron_pass
+HEAT_DBPASS: $heat_dbpass
+HEAT_PASS: $heat_pass
+DEMO_PASS: $demo_pass
+ADMIN_PASS: $admin_pass
+
+#set neutron_service_plugins=['router']
+
+#if $getVar('enable_fwaas', True)
+#neutron_service_plugins.append('firewall')
+#end if
+
+#if $getVar('enable_vpnaas', True)
+#neutron_service_plugins.append('vpnaas')
+#end if
+
+NEUTRON_SERVICE_PLUGINS: $neutron_service_plugins
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan', 'vlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['$ovs_config["tenant_network_type"]']
+NEUTRON_OVS_BRIDGE_MAPPINGS: $ovs_config['bridge_mappings']
+#if 'vlan_ranges' in $ovs_config
+NEUTRON_VLAN_RANGES: $ovs_config['vlan_ranges']
+#else
+NEUTRON_VLAN_RANGES: []
+#end if
+#if 'tunnel_id_ranges' in $ovs_config
+NEUTRON_TUNNEL_ID_RANGES: $ovs_config['tunnel_id_ranges']
+#else
+NEUTRON_TUNNEL_ID_RANGES: []
+#end if
+
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+WSREP_SST_USER: wsrep_sst
+WSREP_SST_PASS: wsrep_sst_sercet
+
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: "{{ internal_ip }}"
+
+#build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image: http://192.168.121.12:9999/img/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
+
+odl_pkg_url: https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.2-Helium-SR2/distribution-karaf-0.2.2-Helium-SR2.tar.gz
+odl_pkg_name: karaf.tar.gz
+odl_home: "/opt/opendaylight-0.2.2/"
+odl_base_features: ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management', 'http', 'odl-base-all','odl-aaa-authn','odl-restconf','odl-nsf-all','odl-adsal-northbound','odl-mdsal-apidocs', 'odl-openflowplugin-all']
+odl_extra_features: ['odl-l2switch-switch', 'odl-ovsdb-plugin', 'odl-ovsdb-openstack', 'odl-ovsdb-northbound','odl-dlux-core', 'odl-restconf-all', 'odl-mdsal-clustering', 'odl-openflowplugin-flow-services', 'odl-netconf-connector', 'odl-netconf-connector-ssh', 'jolokia-osgi']
+odl_features: "{{ odl_base_features + odl_extra_features }}"
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_kilo/vars/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/vars/allinone.tmpl
new file mode 100755
index 00000000..740397ca
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/vars/allinone.tmpl
@@ -0,0 +1,96 @@
+#set cluster_name = $getVar('name', '')
+#set controllers = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+controller_host: $controller_ip
+#end for
+#for network in $controllers
+ #set network_external_nic = $network.external.interface
+ #set network_external_subnet = $network.external.subnet
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+compute_controller_host: "{{ controller_host }}"
+db_host: "{{ controller_host }}"
+rabbit_host: "{{ controller_host }}"
+storage_controller_host: "{{ controller_host }}"
+image_host: "{{ controller_host }}"
+identity_host: "{{ controller_host }}"
+network_server_host: "{{ controller_host }}"
+dashboard_host: "{{ controller_host }}"
+
+cluster_name: $cluster_name
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controller_host }}"
+DB_HOST: "{{ controller_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-juno.list
+juno_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/juno main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_kilo/vars/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/vars/multinodes.tmpl
new file mode 100755
index 00000000..da266a79
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/vars/multinodes.tmpl
@@ -0,0 +1,165 @@
+#set cluster_name = $getVar('name', '')
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+compute_controller_host: $worker_ip
+#end for
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+db_host: $worker_ip
+#end for
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+rabbit_host: $worker_ip
+#end for
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+storage_controller_host: $worker_ip
+#end for
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+image_host: $worker_ip
+#end for
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+identity_host: $worker_ip
+#end for
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+compute_controller_host: $worker_ip
+#end for
+#for worker in $network_servers
+ #set worker_ip = $worker.management.ip
+network_server_host: $worker_ip
+#end for
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+dashboard_host: $worker_ip
+#end for
+#for network in $network_workers
+ #set network_external_nic = $network.external.interface
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+cluster_name: $cluster_name
+
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ compute_controller_host }}"
+DB_HOST: "{{ db_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-juno.list
+juno_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/juno main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
+
+odl_pkg_url: https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.2-Helium-SR2/distribution-karaf-0.2.2-Helium-SR2.tar.gz
+odl_pkg_name: karaf.tar.gz
+odl_home: "/opt/opendaylight-0.2.2/"
+odl_base_features: ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management', 'http', 'odl-base-all','odl-aaa-authn','odl-restconf','odl-nsf-all','odl-adsal-northbound','odl-mdsal-apidocs', 'odl-openflowplugin-all']
+odl_extra_features: ['odl-l2switch-switch', 'odl-ovsdb-plugin', 'odl-ovsdb-openstack', 'odl-ovsdb-northbound','odl-dlux-core', 'odl-restconf-all', 'odl-mdsal-clustering', 'odl-openflowplugin-flow-services', 'odl-netconf-connector', 'odl-netconf-connector-ssh', 'jolokia-osgi']
+odl_features: "{{ odl_base_features + odl_extra_features }}"
+odl_api_port: 8080
+
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_kilo/vars/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/vars/single-controller.tmpl
new file mode 100755
index 00000000..b24bc811
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_kilo/vars/single-controller.tmpl
@@ -0,0 +1,108 @@
+#set cluster_name = $getVar('name', '')
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set networks = $getVar('network', [])
+#set storages = $getVar('storage', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+controller_host: $controller_ip
+#end for
+#for network in $networks
+ #set network_external_nic = $network.external.interface
+ #set network_external_subnet = $network.external.subnet
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+cluster_name: $cluster_name
+deploy_type: $getVar('deploy_type', 'virtual')
+compute_controller_host: "{{ controller_host }}"
+db_host: "{{ controller_host }}"
+rabbit_host: "{{ controller_host }}"
+storage_controller_host: "{{ controller_host }}"
+image_host: "{{ controller_host }}"
+identity_host: "{{ controller_host }}"
+network_server_host: "{{ controller_host }}"
+dashboard_host: "{{ controller_host }}"
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controller_host }}"
+DB_HOST: "{{ controller_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-juno.list
+juno_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/juno main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+# EXTERNAL_NETWORK_CIDR: $network_external_subnet
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..f8dbfa1b
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/HA-ansible-multinodes.tmpl
@@ -0,0 +1,7 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_liberty-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
+library = /opt/openstack-ansible-modules
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/HA-ansible-multinodes.tmplr b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/HA-ansible-multinodes.tmplr
new file mode 100755
index 00000000..f8dbfa1b
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/HA-ansible-multinodes.tmplr
@@ -0,0 +1,7 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_liberty-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
+library = /opt/openstack-ansible-modules
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/allinone.tmpl
new file mode 100755
index 00000000..550a2ff0
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/allinone.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_liberty-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/allinone.tmplr b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/allinone.tmplr
new file mode 100755
index 00000000..550a2ff0
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/allinone.tmplr
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_liberty-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/multinodes.tmpl
new file mode 100755
index 00000000..550a2ff0
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/multinodes.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_liberty-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/multinodes.tmplr b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/multinodes.tmplr
new file mode 100755
index 00000000..550a2ff0
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/multinodes.tmplr
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_liberty-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/single-controller.tmpl
new file mode 100755
index 00000000..550a2ff0
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/single-controller.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_liberty-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/single-controller.tmplr b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/single-controller.tmplr
new file mode 100755
index 00000000..550a2ff0
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/ansible_cfg/single-controller.tmplr
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_liberty-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/hosts/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/hosts/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..9d628b5e
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/hosts/HA-ansible-multinodes.tmpl
@@ -0,0 +1,31 @@
+#set ip_settings={}
+#for k,v in $getVar('ip_settings', {}).items()
+#set host_ip_settings={}
+#for intf in v
+#set $host_ip_settings[$intf["alias"]]=intf
+#end for
+#set $ip_settings[$k]=$host_ip_settings
+#end for
+
+# localhost
+127.0.0.1 localhost
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($compute, list)
+ #set computes = [$computes]
+#end if
+# controller
+#for worker in $controllers
+ #set worker_hostname = $worker.hostname
+ #set worker_ip = $ip_settings[$worker_hostname].mgmt.ip
+$worker_ip $worker_hostname
+#end for
+# compute
+#for worker in $computes
+ #set worker_hostname = $worker.hostname
+ #set worker_ip = $ip_settings[$worker_hostname].mgmt.ip
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/hosts/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/hosts/allinone.tmpl
new file mode 100755
index 00000000..b777815e
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/hosts/allinone.tmpl
@@ -0,0 +1,10 @@
+#set controllers = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+# allinone
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_ip $controller_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/hosts/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/hosts/multinodes.tmpl
new file mode 100755
index 00000000..ca8c793f
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/hosts/multinodes.tmpl
@@ -0,0 +1,110 @@
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+# compute-controller
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# database
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# messaging
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage-controller
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# image
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# identity
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network-server
+#for worker in $network_servers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# dashboard
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage-volume
+#for worker in $storage_volumes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network-worker
+#for worker in $network_workers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# compute-worker
+#for worker in $compute_workers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/hosts/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/hosts/single-controller.tmpl
new file mode 100755
index 00000000..3ed94694
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/hosts/single-controller.tmpl
@@ -0,0 +1,40 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set storages = $getVar('storage', [])
+#set networks = $getVar('network', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+# controller
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_ip $controller_hostname
+#end for
+# compute
+#for worker in $computes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage
+#for worker in $storages
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network
+#for worker in $networks
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/inventories/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/inventories/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..94a6a153
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/inventories/HA-ansible-multinodes.tmpl
@@ -0,0 +1,100 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set has = $getVar('ha', [])
+#set odls = $getVar('odl', [])
+#set onoss = $getVar('onos', [])
+#set opencontrails = $getVar('opencontrail', [])
+#set ceph_adm_list = $getVar('ceph_adm',[])
+#set ceph_mon_list = $getVar('ceph_mon',[])
+#set ceph_osd_list = $getVar('ceph_osd',[])
+
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance(has, list)
+ #set has = [has]
+#end if
+#if not $isinstance(odls, list)
+ #set odls = [odls]
+#end if
+#if not $isinstance(onoss, list)
+ #set onoss = [onoss]
+#end if
+#if not $isinstance(opencontrails, list)
+ #set opencontrails = [opencontrails]
+#end if
+#if not $isinstance(ceph_adm_list, list)
+ #set ceph_adm_list = [ceph_adm_list]
+#end if
+#if not $isinstance(ceph_mon_list, list)
+ #set ceph_mon_list = [ceph_mon_list]
+#end if
+#if not $isinstance(ceph_osd_list, list)
+ #set ceph_osd_list = [ceph_osd_list]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.install.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.install.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ha]
+#for ha in $has
+ #set ha_ip = $ha.install.ip
+ #set ha_hostname = $ha.hostname
+$ha_hostname ansible_ssh_host=$ha_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[odl]
+#for odl in $odls
+ #set odl_ip = $odl.install.ip
+ #set odl_hostname = $odl.hostname
+$odl_hostname ansible_ssh_host=$odl_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[onos]
+#for onos in $onoss
+ #set onos_ip = $onos.install.ip
+ #set onos_hostname = $onos.hostname
+$onos_hostname ansible_ssh_host=$onos_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[opencontrail]
+#for opencontrail in $opencontrails
+ #set opencontrail_ip = $opencontrail.install.ip
+ #set opencontrail_hostname = $opencontrail.hostname
+$opencontrail_hostname ansible_ssh_host=$opencontrail_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_adm]
+#for ceph_adm in $ceph_adm_list
+ #set ceph_adm_ip = $ceph_adm.install.ip
+ #set ceph_adm_hostname = $ceph_adm.hostname
+$ceph_adm_hostname ansible_ssh_host=$ceph_adm_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_mon]
+#for ceph_mon in $ceph_mon_list
+ #set ceph_mon_ip = $ceph_mon.install.ip
+ #set ceph_mon_hostname = $ceph_mon.hostname
+$ceph_mon_hostname ansible_ssh_host=$ceph_mon_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_osd]
+#for ceph_osd in $ceph_osd_list
+ #set ceph_osd_ip = $ceph_osd.install.ip
+ #set ceph_osd_hostname = $ceph_osd.hostname
+$ceph_osd_hostname ansible_ssh_host=$ceph_osd_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph:children]
+ceph_adm
+ceph_mon
+ceph_osd
+
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/inventories/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/inventories/allinone.tmpl
new file mode 100755
index 00000000..38e0038b
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/inventories/allinone.tmpl
@@ -0,0 +1,47 @@
+#set controllers = $getVar('allinone_compute', [])
+#set computes = $getVar('allinone_compute', [])
+#set storages = $getVar('allinone_compute', [])
+#set networks = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network]
+#for network in $networks
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/inventories/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/inventories/multinodes.tmpl
new file mode 100755
index 00000000..7cdfbef3
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/inventories/multinodes.tmpl
@@ -0,0 +1,123 @@
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[compute-controller]
+#for controller in $compute_controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute-worker]
+#for compute in $compute_workers
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network-server]
+#for network in $network_servers
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network-worker]
+#for network in $network_workers
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[database]
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[messaging]
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[image]
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[dashboard]
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[identity]
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage-controller]
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage-volume]
+#for worker in $storage_volumes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/inventories/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/inventories/single-controller.tmpl
new file mode 100755
index 00000000..e1bf72c4
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/inventories/single-controller.tmpl
@@ -0,0 +1,67 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set storages = $getVar('storage', [])
+#set networks = $getVar('network', [])
+#set odls = $getVar('odl', [])
+#set onoss = $getVar('onos', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+#if not $isinstance($odls, list)
+ #set odls = [$odls]
+#end if
+#if not $isinstance($onoss, list)
+ #set onoss = [$onoss]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network]
+#for network in $networks
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[odl]
+#for odl in odls
+ #set odl_ip = $odl.management.ip
+ #set odl_hostname = $odl.hostname
+$odl_hostname ansible_ssh_host=$odl_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/vars/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/vars/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..154cd444
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/vars/HA-ansible-multinodes.tmpl
@@ -0,0 +1,203 @@
+#from random import randint
+#set cluster_name = $getVar('name', '')
+#set network_cfg = $getVar('network_cfg', {})
+#set ntp_server = $getVar('ntp_server', "")
+#set ceph_disk = $getVar('ceph_disk',"")
+#set $sys_intf_mappings= {}
+#for $intf_info in $network_cfg.sys_intf_mappings
+#set $sys_intf_mappings[$intf_info["name"]] = $intf_info
+#end for
+
+#set ip_settings={}
+#for k,v in $getVar('ip_settings', {}).items()
+#set host_ip_settings={}
+#for intf in v
+#set $host_ip_settings[$intf["alias"]]=intf
+#end for
+#set $ip_settings[$k]=$host_ip_settings
+#end for
+
+#set neutron_cfg = $getVar('neutron_config', {})
+#set ovs_config = $neutron_cfg.openvswitch
+
+#set has = $getVar('ha', [])
+#set ha_vip = $getVar('ha_vip', [])
+
+#set controllers = $getVar('controller', [])
+#set computers = $getVar('compute', [])
+
+enable_secgroup: $getVar('enable_secgroup', True)
+enable_fwaas: $getVar('enable_fwaas', True)
+enable_vpnaas: $getVar('enable_vpnaas', True)
+odl_l3_agent: $getVar('odl_l3_agent', 'Disable')
+onos_nic: $getVar('onos_nic', 'eth2')
+ip_settings: $ip_settings
+network_cfg: $network_cfg
+sys_intf_mappings: $sys_intf_mappings
+deploy_type: $getVar('deploy_type', 'virtual')
+
+public_cidr: $computers[0]['install']['subnet']
+storage_cidr: "{{ ip_settings[inventory_hostname]['storage']['cidr'] }}"
+mgmt_cidr: "{{ ip_settings[inventory_hostname]['mgmt']['cidr'] }}"
+
+public_net_info: "{{ network_cfg.public_net_info }}"
+host_ip_settings: "{{ ip_settings[inventory_hostname] }}"
+
+ntp_server: $ntp_server
+internal_vip:
+ ip: $network_cfg["internal_vip"]["ip"]
+ netmask: $network_cfg["internal_vip"]["netmask"]
+#if "vlan_tag" in $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]
+ interface: $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]["name"]
+#else
+ interface: $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]["interface"]
+#end if
+
+public_vip:
+ ip: $network_cfg["public_vip"]["ip"]
+ netmask: $network_cfg["public_vip"]["netmask"]
+#if "vlan_tag" in $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]
+ interface: $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]["name"]
+#else
+ interface: $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]["interface"]
+#end if
+
+db_host: "{{ internal_vip.ip }}"
+rabbit_host: "{{ internal_vip.ip }}"
+
+internal_ip: "{{ ip_settings[inventory_hostname]['mgmt']['ip'] }}"
+internal_nic: mgmt
+
+#set random_id = randint(1, 255)
+vrouter_id_internal: $random_id
+vrouter_id_public: $random_id
+
+identity_host: "{{ internal_ip }}"
+controllers_host: "{{ internal_ip }}"
+storage_controller_host: "{{ internal_ip }}"
+compute_controller_host: "{{ internal_ip }}"
+image_host: "{{ internal_ip }}"
+network_server_host: "{{ internal_ip }}"
+dashboard_host: "{{ internal_ip }}"
+
+haproxy_hosts:
+#for $item in $has
+#set $hostname=$item["hostname"]
+ $hostname: $ip_settings[$hostname]["mgmt"]["ip"]
+#end for
+
+host_index:
+#for $index, $item in enumerate($has)
+ $item["hostname"]: $index
+#end for
+
+ERLANG_TOKEN: YOWSJSJIGGAUFZTIBRAD
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set keystone_pass = $console_credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set heat_dbpass = $credentials.heat.password
+#set heat_pass = $console_credentials.heat.password
+#set neutron_dbpass = $credentials.network.password
+#set neutron_pass = $console_credentials.network.password
+#set ceilometer_dbpass = $credentials.metering.password
+#set ceilometer_pass = $console_credentials.metering.password
+#set admin_pass = $console_credentials.admin.password
+#set demo_pass = $console_credentials.demo.password
+
+cluster_name: $cluster_name
+
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controllers_host }}"
+DB_HOST: "{{ db_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-juno.list
+juno_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/juno main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+erlang.cookie: DJJVECFMCJPVYQTJTDWG
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+KEYSTONE_PASS: $keystone_pass
+CEILOMETER_DBPASS: $ceilometer_dbpass
+CEILOMETER_PASS: $ceilometer_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_dbpass
+NEUTRON_PASS: $neutron_pass
+HEAT_DBPASS: $heat_dbpass
+HEAT_PASS: $heat_pass
+DEMO_PASS: $demo_pass
+ADMIN_PASS: $admin_pass
+
+#set neutron_service_plugins=['router']
+
+#if $getVar('enable_fwaas', True)
+#neutron_service_plugins.append('firewall')
+#end if
+
+#if $getVar('enable_vpnaas', True)
+#neutron_service_plugins.append('vpnaas')
+#end if
+
+NEUTRON_SERVICE_PLUGINS: $neutron_service_plugins
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan', 'vlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['$ovs_config["tenant_network_type"]']
+NEUTRON_OVS_BRIDGE_MAPPINGS: $ovs_config['bridge_mappings']
+#if 'vlan_ranges' in $ovs_config
+NEUTRON_VLAN_RANGES: $ovs_config['vlan_ranges']
+#else
+NEUTRON_VLAN_RANGES: []
+#end if
+#if 'tunnel_id_ranges' in $ovs_config
+NEUTRON_TUNNEL_ID_RANGES: $ovs_config['tunnel_id_ranges']
+#else
+NEUTRON_TUNNEL_ID_RANGES: []
+#end if
+
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+WSREP_SST_USER: wsrep_sst
+WSREP_SST_PASS: wsrep_sst_sercet
+
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: "{{ internal_ip }}"
+
+#build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image: http://192.168.121.12:9999/img/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
+
+odl_pkg_url: https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.2-Helium-SR2/distribution-karaf-0.2.2-Helium-SR2.tar.gz
+odl_pkg_name: karaf.tar.gz
+odl_home: "/opt/opendaylight-0.2.2/"
+odl_base_features: ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management', 'http', 'odl-base-all','odl-aaa-authn','odl-restconf','odl-nsf-all','odl-adsal-northbound','odl-mdsal-apidocs', 'odl-openflowplugin-all']
+odl_extra_features: ['odl-l2switch-switch', 'odl-ovsdb-plugin', 'odl-ovsdb-openstack', 'odl-ovsdb-northbound','odl-dlux-core', 'odl-restconf-all', 'odl-mdsal-clustering', 'odl-openflowplugin-flow-services', 'odl-netconf-connector', 'odl-netconf-connector-ssh', 'jolokia-osgi']
+odl_features: "{{ odl_base_features + odl_extra_features }}"
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/vars/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/vars/allinone.tmpl
new file mode 100755
index 00000000..09e4808d
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/vars/allinone.tmpl
@@ -0,0 +1,96 @@
+#set cluster_name = $getVar('name', '')
+#set controllers = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+controller_host: $controller_ip
+#end for
+#for network in $controllers
+ #set network_external_nic = $network.external.interface
+ #set network_external_subnet = $network.external.subnet
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+compute_controller_host: "{{ controller_host }}"
+db_host: "{{ controller_host }}"
+rabbit_host: "{{ controller_host }}"
+storage_controller_host: "{{ controller_host }}"
+image_host: "{{ controller_host }}"
+identity_host: "{{ controller_host }}"
+network_server_host: "{{ controller_host }}"
+dashboard_host: "{{ controller_host }}"
+
+cluster_name: $cluster_name
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controller_host }}"
+DB_HOST: "{{ controller_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-liberty.list
+liberty_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/liberty main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/vars/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/vars/multinodes.tmpl
new file mode 100755
index 00000000..eab6401f
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/vars/multinodes.tmpl
@@ -0,0 +1,165 @@
+#set cluster_name = $getVar('name', '')
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+compute_controller_host: $worker_ip
+#end for
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+db_host: $worker_ip
+#end for
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+rabbit_host: $worker_ip
+#end for
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+storage_controller_host: $worker_ip
+#end for
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+image_host: $worker_ip
+#end for
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+identity_host: $worker_ip
+#end for
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+compute_controller_host: $worker_ip
+#end for
+#for worker in $network_servers
+ #set worker_ip = $worker.management.ip
+network_server_host: $worker_ip
+#end for
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+dashboard_host: $worker_ip
+#end for
+#for network in $network_workers
+ #set network_external_nic = $network.external.interface
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+cluster_name: $cluster_name
+
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ compute_controller_host }}"
+DB_HOST: "{{ db_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-liberty.list
+liberty_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/liberty main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
+
+odl_pkg_url: https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.2-Helium-SR2/distribution-karaf-0.2.2-Helium-SR2.tar.gz
+odl_pkg_name: karaf.tar.gz
+odl_home: "/opt/opendaylight-0.2.2/"
+odl_base_features: ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management', 'http', 'odl-base-all','odl-aaa-authn','odl-restconf','odl-nsf-all','odl-adsal-northbound','odl-mdsal-apidocs', 'odl-openflowplugin-all']
+odl_extra_features: ['odl-l2switch-switch', 'odl-ovsdb-plugin', 'odl-ovsdb-openstack', 'odl-ovsdb-northbound','odl-dlux-core', 'odl-restconf-all', 'odl-mdsal-clustering', 'odl-openflowplugin-flow-services', 'odl-netconf-connector', 'odl-netconf-connector-ssh', 'jolokia-osgi']
+odl_features: "{{ odl_base_features + odl_extra_features }}"
+odl_api_port: 8080
+
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_liberty/vars/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/vars/single-controller.tmpl
new file mode 100755
index 00000000..fe176047
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_liberty/vars/single-controller.tmpl
@@ -0,0 +1,108 @@
+#set cluster_name = $getVar('name', '')
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set networks = $getVar('network', [])
+#set storages = $getVar('storage', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+controller_host: $controller_ip
+#end for
+#for network in $networks
+ #set network_external_nic = $network.external.interface
+ #set network_external_subnet = $network.external.subnet
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+cluster_name: $cluster_name
+deploy_type: $getVar('deploy_type', 'virtual')
+compute_controller_host: "{{ controller_host }}"
+db_host: "{{ controller_host }}"
+rabbit_host: "{{ controller_host }}"
+storage_controller_host: "{{ controller_host }}"
+image_host: "{{ controller_host }}"
+identity_host: "{{ controller_host }}"
+network_server_host: "{{ controller_host }}"
+dashboard_host: "{{ controller_host }}"
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controller_host }}"
+DB_HOST: "{{ controller_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-liberty.list
+liberty_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/liberty main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+# EXTERNAL_NETWORK_CIDR: $network_external_subnet
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/ansible_cfg/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/ansible_cfg/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..ec9adb6d
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/ansible_cfg/HA-ansible-multinodes.tmpl
@@ -0,0 +1,7 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_mitaka-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
+library = /opt/openstack-ansible-modules
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/ansible_cfg/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/ansible_cfg/allinone.tmpl
new file mode 100755
index 00000000..ab1a0d71
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/ansible_cfg/allinone.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_mitaka-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/ansible_cfg/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/ansible_cfg/multinodes.tmpl
new file mode 100755
index 00000000..ab1a0d71
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/ansible_cfg/multinodes.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_mitaka-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/ansible_cfg/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/ansible_cfg/single-controller.tmpl
new file mode 100755
index 00000000..ab1a0d71
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/ansible_cfg/single-controller.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_mitaka-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/hosts/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/hosts/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..9d628b5e
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/hosts/HA-ansible-multinodes.tmpl
@@ -0,0 +1,31 @@
+#set ip_settings={}
+#for k,v in $getVar('ip_settings', {}).items()
+#set host_ip_settings={}
+#for intf in v
+#set $host_ip_settings[$intf["alias"]]=intf
+#end for
+#set $ip_settings[$k]=$host_ip_settings
+#end for
+
+# localhost
+127.0.0.1 localhost
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($compute, list)
+ #set computes = [$computes]
+#end if
+# controller
+#for worker in $controllers
+ #set worker_hostname = $worker.hostname
+ #set worker_ip = $ip_settings[$worker_hostname].mgmt.ip
+$worker_ip $worker_hostname
+#end for
+# compute
+#for worker in $computes
+ #set worker_hostname = $worker.hostname
+ #set worker_ip = $ip_settings[$worker_hostname].mgmt.ip
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/hosts/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/hosts/allinone.tmpl
new file mode 100755
index 00000000..b777815e
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/hosts/allinone.tmpl
@@ -0,0 +1,10 @@
+#set controllers = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+# allinone
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_ip $controller_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/hosts/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/hosts/multinodes.tmpl
new file mode 100755
index 00000000..ca8c793f
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/hosts/multinodes.tmpl
@@ -0,0 +1,110 @@
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+# compute-controller
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# database
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# messaging
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage-controller
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# image
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# identity
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network-server
+#for worker in $network_servers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# dashboard
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage-volume
+#for worker in $storage_volumes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network-worker
+#for worker in $network_workers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# compute-worker
+#for worker in $compute_workers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/hosts/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/hosts/single-controller.tmpl
new file mode 100755
index 00000000..3ed94694
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/hosts/single-controller.tmpl
@@ -0,0 +1,40 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set storages = $getVar('storage', [])
+#set networks = $getVar('network', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+# controller
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_ip $controller_hostname
+#end for
+# compute
+#for worker in $computes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage
+#for worker in $storages
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network
+#for worker in $networks
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/inventories/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/inventories/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..94a6a153
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/inventories/HA-ansible-multinodes.tmpl
@@ -0,0 +1,100 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set has = $getVar('ha', [])
+#set odls = $getVar('odl', [])
+#set onoss = $getVar('onos', [])
+#set opencontrails = $getVar('opencontrail', [])
+#set ceph_adm_list = $getVar('ceph_adm',[])
+#set ceph_mon_list = $getVar('ceph_mon',[])
+#set ceph_osd_list = $getVar('ceph_osd',[])
+
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance(has, list)
+ #set has = [has]
+#end if
+#if not $isinstance(odls, list)
+ #set odls = [odls]
+#end if
+#if not $isinstance(onoss, list)
+ #set onoss = [onoss]
+#end if
+#if not $isinstance(opencontrails, list)
+ #set opencontrails = [opencontrails]
+#end if
+#if not $isinstance(ceph_adm_list, list)
+ #set ceph_adm_list = [ceph_adm_list]
+#end if
+#if not $isinstance(ceph_mon_list, list)
+ #set ceph_mon_list = [ceph_mon_list]
+#end if
+#if not $isinstance(ceph_osd_list, list)
+ #set ceph_osd_list = [ceph_osd_list]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.install.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.install.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ha]
+#for ha in $has
+ #set ha_ip = $ha.install.ip
+ #set ha_hostname = $ha.hostname
+$ha_hostname ansible_ssh_host=$ha_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[odl]
+#for odl in $odls
+ #set odl_ip = $odl.install.ip
+ #set odl_hostname = $odl.hostname
+$odl_hostname ansible_ssh_host=$odl_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[onos]
+#for onos in $onoss
+ #set onos_ip = $onos.install.ip
+ #set onos_hostname = $onos.hostname
+$onos_hostname ansible_ssh_host=$onos_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[opencontrail]
+#for opencontrail in $opencontrails
+ #set opencontrail_ip = $opencontrail.install.ip
+ #set opencontrail_hostname = $opencontrail.hostname
+$opencontrail_hostname ansible_ssh_host=$opencontrail_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_adm]
+#for ceph_adm in $ceph_adm_list
+ #set ceph_adm_ip = $ceph_adm.install.ip
+ #set ceph_adm_hostname = $ceph_adm.hostname
+$ceph_adm_hostname ansible_ssh_host=$ceph_adm_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_mon]
+#for ceph_mon in $ceph_mon_list
+ #set ceph_mon_ip = $ceph_mon.install.ip
+ #set ceph_mon_hostname = $ceph_mon.hostname
+$ceph_mon_hostname ansible_ssh_host=$ceph_mon_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_osd]
+#for ceph_osd in $ceph_osd_list
+ #set ceph_osd_ip = $ceph_osd.install.ip
+ #set ceph_osd_hostname = $ceph_osd.hostname
+$ceph_osd_hostname ansible_ssh_host=$ceph_osd_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph:children]
+ceph_adm
+ceph_mon
+ceph_osd
+
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/inventories/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/inventories/allinone.tmpl
new file mode 100755
index 00000000..38e0038b
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/inventories/allinone.tmpl
@@ -0,0 +1,47 @@
+#set controllers = $getVar('allinone_compute', [])
+#set computes = $getVar('allinone_compute', [])
+#set storages = $getVar('allinone_compute', [])
+#set networks = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network]
+#for network in $networks
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/inventories/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/inventories/multinodes.tmpl
new file mode 100755
index 00000000..7cdfbef3
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/inventories/multinodes.tmpl
@@ -0,0 +1,123 @@
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[compute-controller]
+#for controller in $compute_controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute-worker]
+#for compute in $compute_workers
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network-server]
+#for network in $network_servers
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network-worker]
+#for network in $network_workers
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[database]
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[messaging]
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[image]
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[dashboard]
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[identity]
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage-controller]
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage-volume]
+#for worker in $storage_volumes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/inventories/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/inventories/single-controller.tmpl
new file mode 100755
index 00000000..e1bf72c4
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/inventories/single-controller.tmpl
@@ -0,0 +1,67 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set storages = $getVar('storage', [])
+#set networks = $getVar('network', [])
+#set odls = $getVar('odl', [])
+#set onoss = $getVar('onos', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+#if not $isinstance($odls, list)
+ #set odls = [$odls]
+#end if
+#if not $isinstance($onoss, list)
+ #set onoss = [$onoss]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network]
+#for network in $networks
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[odl]
+#for odl in odls
+ #set odl_ip = $odl.management.ip
+ #set odl_hostname = $odl.hostname
+$odl_hostname ansible_ssh_host=$odl_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/vars/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/vars/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..605106ba
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/vars/HA-ansible-multinodes.tmpl
@@ -0,0 +1,213 @@
+#from random import randint
+#set cluster_name = $getVar('name', '')
+#set network_cfg = $getVar('network_cfg', {})
+#set ntp_server = $getVar('ntp_server', "")
+#set ceph_disk = $getVar('ceph_disk',"")
+#set $sys_intf_mappings= {}
+#for $intf_info in $network_cfg.sys_intf_mappings
+#set $sys_intf_mappings[$intf_info["name"]] = $intf_info
+#end for
+
+#set ip_settings={}
+#for k,v in $getVar('ip_settings', {}).items()
+#set host_ip_settings={}
+#for intf in v
+#set $host_ip_settings[$intf["alias"]]=intf
+#end for
+#set $ip_settings[$k]=$host_ip_settings
+#end for
+
+#set neutron_cfg = $getVar('neutron_config', {})
+#set ovs_config = $neutron_cfg.openvswitch
+
+#set has = $getVar('ha', [])
+#set ha_vip = $getVar('ha_vip', [])
+
+#set controllers = $getVar('controller', [])
+#set computers = $getVar('compute', [])
+
+enable_secgroup: $getVar('enable_secgroup', True)
+enable_fwaas: $getVar('enable_fwaas', True)
+enable_vpnaas: $getVar('enable_vpnaas', True)
+odl_l3_agent: $getVar('odl_l3_agent', 'Disable')
+onos_sfc: $getVar('onos_sfc', 'Disable')
+onos_nic: $getVar('onos_nic', 'eth2')
+odl_sfc: $getVar('odl_sfc', 'Disable')
+ip_settings: $ip_settings
+network_cfg: $network_cfg
+sys_intf_mappings: $sys_intf_mappings
+deploy_type: $getVar('deploy_type', 'virtual')
+
+public_cidr: $computers[0]['install']['subnet']
+storage_cidr: "{{ ip_settings[inventory_hostname]['storage']['cidr'] }}"
+mgmt_cidr: "{{ ip_settings[inventory_hostname]['mgmt']['cidr'] }}"
+
+public_net_info: "{{ network_cfg.public_net_info }}"
+host_ip_settings: "{{ ip_settings[inventory_hostname] }}"
+
+ntp_server: $ntp_server
+internal_vip:
+ ip: $network_cfg["internal_vip"]["ip"]
+ netmask: $network_cfg["internal_vip"]["netmask"]
+#if "vlan_tag" in $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]
+ interface: $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]["name"]
+#else
+ interface: $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]["interface"]
+#end if
+
+public_vip:
+ ip: $network_cfg["public_vip"]["ip"]
+ netmask: $network_cfg["public_vip"]["netmask"]
+#if "vlan_tag" in $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]
+ interface: $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]["name"]
+#else
+ interface: $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]["interface"]
+#end if
+
+db_host: "{{ internal_vip.ip }}"
+rabbit_host: "{{ internal_vip.ip }}"
+
+internal_ip: "{{ ip_settings[inventory_hostname]['mgmt']['ip'] }}"
+internal_nic: mgmt
+
+#set random_id = randint(1, 255)
+vrouter_id_internal: $random_id
+vrouter_id_public: $random_id
+
+identity_host: "{{ internal_ip }}"
+controllers_host: "{{ internal_ip }}"
+storage_controller_host: "{{ internal_ip }}"
+compute_controller_host: "{{ internal_ip }}"
+image_host: "{{ internal_ip }}"
+network_server_host: "{{ internal_ip }}"
+dashboard_host: "{{ internal_ip }}"
+
+haproxy_hosts:
+#for $item in $has
+#set $hostname=$item["hostname"]
+ $hostname: $ip_settings[$hostname]["mgmt"]["ip"]
+#end for
+
+host_index:
+#for $index, $item in enumerate($has)
+ $item["hostname"]: $index
+#end for
+
+ERLANG_TOKEN: YOWSJSJIGGAUFZTIBRAD
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set keystone_pass = $console_credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set heat_dbpass = $credentials.heat.password
+#set heat_pass = $console_credentials.heat.password
+#set neutron_dbpass = $credentials.network.password
+#set neutron_pass = $console_credentials.network.password
+#set ceilometer_dbpass = $credentials.metering.password
+#set ceilometer_pass = $console_credentials.metering.password
+#set aodh_dbpass = $credentials.alarming.password
+#set aodh_pass = $console_credentials.alarming.password
+#set congress_dbpass = $credentials.policy.password
+#set congress_pass = $console_credentials.policy.password
+#set admin_pass = $console_credentials.admin.password
+#set demo_pass = $console_credentials.demo.password
+
+cluster_name: $cluster_name
+
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controllers_host }}"
+DB_HOST: "{{ db_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-mitaka.list
+mitaka_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/mitaka main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+erlang.cookie: DJJVECFMCJPVYQTJTDWG
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+KEYSTONE_PASS: $keystone_pass
+CEILOMETER_DBPASS: $ceilometer_dbpass
+CEILOMETER_PASS: $ceilometer_pass
+AODH_DBPASS: $aodh_dbpass
+AODH_PASS: $aodh_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_dbpass
+NEUTRON_PASS: $neutron_pass
+HEAT_DBPASS: $heat_dbpass
+HEAT_PASS: $heat_pass
+CONGRESS_DBPASS: $congress_dbpass
+CONGRESS_PASS: $congress_pass
+DEMO_PASS: $demo_pass
+ADMIN_PASS: $admin_pass
+
+#set neutron_service_plugins=['router']
+
+#if $getVar('enable_fwaas', True)
+#neutron_service_plugins.append('firewall')
+#end if
+
+#if $getVar('enable_vpnaas', True)
+#neutron_service_plugins.append('vpnaas')
+#end if
+
+NEUTRON_SERVICE_PLUGINS: $neutron_service_plugins
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan', 'vlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['$ovs_config["tenant_network_type"]']
+NEUTRON_OVS_BRIDGE_MAPPINGS: $ovs_config['bridge_mappings']
+#if 'vlan_ranges' in $ovs_config
+NEUTRON_VLAN_RANGES: $ovs_config['vlan_ranges']
+#else
+NEUTRON_VLAN_RANGES: []
+#end if
+#if 'tunnel_id_ranges' in $ovs_config
+NEUTRON_TUNNEL_ID_RANGES: $ovs_config['tunnel_id_ranges']
+#else
+NEUTRON_TUNNEL_ID_RANGES: []
+#end if
+
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+WSREP_SST_USER: wsrep_sst
+WSREP_SST_PASS: wsrep_sst_sercet
+
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: "{{ internal_ip }}"
+
+#build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image: http://192.168.121.12:9999/img/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
+
+odl_pkg_url: https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.2-Helium-SR2/distribution-karaf-0.2.2-Helium-SR2.tar.gz
+odl_pkg_name: karaf.tar.gz
+odl_home: "/opt/opendaylight-0.2.2/"
+odl_base_features: ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management', 'http', 'odl-base-all','odl-aaa-authn','odl-restconf','odl-nsf-all','odl-adsal-northbound','odl-mdsal-apidocs', 'odl-openflowplugin-all']
+odl_extra_features: ['odl-l2switch-switch', 'odl-ovsdb-plugin', 'odl-ovsdb-openstack', 'odl-ovsdb-northbound','odl-dlux-core', 'odl-restconf-all', 'odl-mdsal-clustering', 'odl-openflowplugin-flow-services', 'odl-netconf-connector', 'odl-netconf-connector-ssh', 'jolokia-osgi']
+odl_features: "{{ odl_base_features + odl_extra_features }}"
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/vars/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/vars/allinone.tmpl
new file mode 100755
index 00000000..b13973d7
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/vars/allinone.tmpl
@@ -0,0 +1,96 @@
+#set cluster_name = $getVar('name', '')
+#set controllers = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+controller_host: $controller_ip
+#end for
+#for network in $controllers
+ #set network_external_nic = $network.external.interface
+ #set network_external_subnet = $network.external.subnet
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+compute_controller_host: "{{ controller_host }}"
+db_host: "{{ controller_host }}"
+rabbit_host: "{{ controller_host }}"
+storage_controller_host: "{{ controller_host }}"
+image_host: "{{ controller_host }}"
+identity_host: "{{ controller_host }}"
+network_server_host: "{{ controller_host }}"
+dashboard_host: "{{ controller_host }}"
+
+cluster_name: $cluster_name
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controller_host }}"
+DB_HOST: "{{ controller_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-mitaka.list
+mitaka_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/mitaka main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/vars/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/vars/multinodes.tmpl
new file mode 100755
index 00000000..3828c0d6
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/vars/multinodes.tmpl
@@ -0,0 +1,165 @@
+#set cluster_name = $getVar('name', '')
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+compute_controller_host: $worker_ip
+#end for
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+db_host: $worker_ip
+#end for
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+rabbit_host: $worker_ip
+#end for
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+storage_controller_host: $worker_ip
+#end for
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+image_host: $worker_ip
+#end for
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+identity_host: $worker_ip
+#end for
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+compute_controller_host: $worker_ip
+#end for
+#for worker in $network_servers
+ #set worker_ip = $worker.management.ip
+network_server_host: $worker_ip
+#end for
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+dashboard_host: $worker_ip
+#end for
+#for network in $network_workers
+ #set network_external_nic = $network.external.interface
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+cluster_name: $cluster_name
+
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ compute_controller_host }}"
+DB_HOST: "{{ db_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-mitaka.list
+mitaka_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/mitaka main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
+
+odl_pkg_url: https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.2-Helium-SR2/distribution-karaf-0.2.2-Helium-SR2.tar.gz
+odl_pkg_name: karaf.tar.gz
+odl_home: "/opt/opendaylight-0.2.2/"
+odl_base_features: ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management', 'http', 'odl-base-all','odl-aaa-authn','odl-restconf','odl-nsf-all','odl-adsal-northbound','odl-mdsal-apidocs', 'odl-openflowplugin-all']
+odl_extra_features: ['odl-l2switch-switch', 'odl-ovsdb-plugin', 'odl-ovsdb-openstack', 'odl-ovsdb-northbound','odl-dlux-core', 'odl-restconf-all', 'odl-mdsal-clustering', 'odl-openflowplugin-flow-services', 'odl-netconf-connector', 'odl-netconf-connector-ssh', 'jolokia-osgi']
+odl_features: "{{ odl_base_features + odl_extra_features }}"
+odl_api_port: 8080
+
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/vars/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/vars/single-controller.tmpl
new file mode 100755
index 00000000..99860224
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka/vars/single-controller.tmpl
@@ -0,0 +1,108 @@
+#set cluster_name = $getVar('name', '')
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set networks = $getVar('network', [])
+#set storages = $getVar('storage', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+controller_host: $controller_ip
+#end for
+#for network in $networks
+ #set network_external_nic = $network.external.interface
+ #set network_external_subnet = $network.external.subnet
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+cluster_name: $cluster_name
+deploy_type: $getVar('deploy_type', 'virtual')
+compute_controller_host: "{{ controller_host }}"
+db_host: "{{ controller_host }}"
+rabbit_host: "{{ controller_host }}"
+storage_controller_host: "{{ controller_host }}"
+image_host: "{{ controller_host }}"
+identity_host: "{{ controller_host }}"
+network_server_host: "{{ controller_host }}"
+dashboard_host: "{{ controller_host }}"
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controller_host }}"
+DB_HOST: "{{ controller_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-mitaka.list
+mitaka_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/mitaka main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+# EXTERNAL_NETWORK_CIDR: $network_external_subnet
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/ansible_cfg/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/ansible_cfg/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..4f9fd710
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/ansible_cfg/HA-ansible-multinodes.tmpl
@@ -0,0 +1,7 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_mitaka_xenial-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
+library = /opt/openstack-ansible-modules
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/ansible_cfg/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/ansible_cfg/allinone.tmpl
new file mode 100755
index 00000000..60c0946f
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/ansible_cfg/allinone.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_mitaka_xenial-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/ansible_cfg/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/ansible_cfg/multinodes.tmpl
new file mode 100755
index 00000000..60c0946f
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/ansible_cfg/multinodes.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_mitaka_xenial-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/ansible_cfg/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/ansible_cfg/single-controller.tmpl
new file mode 100755
index 00000000..60c0946f
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/ansible_cfg/single-controller.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_mitaka_xenial-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/hosts/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/hosts/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..9d628b5e
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/hosts/HA-ansible-multinodes.tmpl
@@ -0,0 +1,31 @@
+#set ip_settings={}
+#for k,v in $getVar('ip_settings', {}).items()
+#set host_ip_settings={}
+#for intf in v
+#set $host_ip_settings[$intf["alias"]]=intf
+#end for
+#set $ip_settings[$k]=$host_ip_settings
+#end for
+
+# localhost
+127.0.0.1 localhost
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($compute, list)
+ #set computes = [$computes]
+#end if
+# controller
+#for worker in $controllers
+ #set worker_hostname = $worker.hostname
+ #set worker_ip = $ip_settings[$worker_hostname].mgmt.ip
+$worker_ip $worker_hostname
+#end for
+# compute
+#for worker in $computes
+ #set worker_hostname = $worker.hostname
+ #set worker_ip = $ip_settings[$worker_hostname].mgmt.ip
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/hosts/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/hosts/allinone.tmpl
new file mode 100755
index 00000000..b777815e
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/hosts/allinone.tmpl
@@ -0,0 +1,10 @@
+#set controllers = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+# allinone
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_ip $controller_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/hosts/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/hosts/multinodes.tmpl
new file mode 100755
index 00000000..ca8c793f
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/hosts/multinodes.tmpl
@@ -0,0 +1,110 @@
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+# compute-controller
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# database
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# messaging
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage-controller
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# image
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# identity
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network-server
+#for worker in $network_servers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# dashboard
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage-volume
+#for worker in $storage_volumes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network-worker
+#for worker in $network_workers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# compute-worker
+#for worker in $compute_workers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/hosts/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/hosts/single-controller.tmpl
new file mode 100755
index 00000000..3ed94694
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/hosts/single-controller.tmpl
@@ -0,0 +1,40 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set storages = $getVar('storage', [])
+#set networks = $getVar('network', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+# controller
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_ip $controller_hostname
+#end for
+# compute
+#for worker in $computes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage
+#for worker in $storages
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network
+#for worker in $networks
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/inventories/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/inventories/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..94a6a153
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/inventories/HA-ansible-multinodes.tmpl
@@ -0,0 +1,100 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set has = $getVar('ha', [])
+#set odls = $getVar('odl', [])
+#set onoss = $getVar('onos', [])
+#set opencontrails = $getVar('opencontrail', [])
+#set ceph_adm_list = $getVar('ceph_adm',[])
+#set ceph_mon_list = $getVar('ceph_mon',[])
+#set ceph_osd_list = $getVar('ceph_osd',[])
+
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance(has, list)
+ #set has = [has]
+#end if
+#if not $isinstance(odls, list)
+ #set odls = [odls]
+#end if
+#if not $isinstance(onoss, list)
+ #set onoss = [onoss]
+#end if
+#if not $isinstance(opencontrails, list)
+ #set opencontrails = [opencontrails]
+#end if
+#if not $isinstance(ceph_adm_list, list)
+ #set ceph_adm_list = [ceph_adm_list]
+#end if
+#if not $isinstance(ceph_mon_list, list)
+ #set ceph_mon_list = [ceph_mon_list]
+#end if
+#if not $isinstance(ceph_osd_list, list)
+ #set ceph_osd_list = [ceph_osd_list]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.install.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.install.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ha]
+#for ha in $has
+ #set ha_ip = $ha.install.ip
+ #set ha_hostname = $ha.hostname
+$ha_hostname ansible_ssh_host=$ha_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[odl]
+#for odl in $odls
+ #set odl_ip = $odl.install.ip
+ #set odl_hostname = $odl.hostname
+$odl_hostname ansible_ssh_host=$odl_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[onos]
+#for onos in $onoss
+ #set onos_ip = $onos.install.ip
+ #set onos_hostname = $onos.hostname
+$onos_hostname ansible_ssh_host=$onos_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[opencontrail]
+#for opencontrail in $opencontrails
+ #set opencontrail_ip = $opencontrail.install.ip
+ #set opencontrail_hostname = $opencontrail.hostname
+$opencontrail_hostname ansible_ssh_host=$opencontrail_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_adm]
+#for ceph_adm in $ceph_adm_list
+ #set ceph_adm_ip = $ceph_adm.install.ip
+ #set ceph_adm_hostname = $ceph_adm.hostname
+$ceph_adm_hostname ansible_ssh_host=$ceph_adm_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_mon]
+#for ceph_mon in $ceph_mon_list
+ #set ceph_mon_ip = $ceph_mon.install.ip
+ #set ceph_mon_hostname = $ceph_mon.hostname
+$ceph_mon_hostname ansible_ssh_host=$ceph_mon_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_osd]
+#for ceph_osd in $ceph_osd_list
+ #set ceph_osd_ip = $ceph_osd.install.ip
+ #set ceph_osd_hostname = $ceph_osd.hostname
+$ceph_osd_hostname ansible_ssh_host=$ceph_osd_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph:children]
+ceph_adm
+ceph_mon
+ceph_osd
+
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/inventories/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/inventories/allinone.tmpl
new file mode 100755
index 00000000..38e0038b
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/inventories/allinone.tmpl
@@ -0,0 +1,47 @@
+#set controllers = $getVar('allinone_compute', [])
+#set computes = $getVar('allinone_compute', [])
+#set storages = $getVar('allinone_compute', [])
+#set networks = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network]
+#for network in $networks
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/inventories/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/inventories/multinodes.tmpl
new file mode 100755
index 00000000..7cdfbef3
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/inventories/multinodes.tmpl
@@ -0,0 +1,123 @@
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[compute-controller]
+#for controller in $compute_controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute-worker]
+#for compute in $compute_workers
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network-server]
+#for network in $network_servers
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network-worker]
+#for network in $network_workers
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[database]
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[messaging]
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[image]
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[dashboard]
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[identity]
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage-controller]
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage-volume]
+#for worker in $storage_volumes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/inventories/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/inventories/single-controller.tmpl
new file mode 100755
index 00000000..e1bf72c4
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/inventories/single-controller.tmpl
@@ -0,0 +1,67 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set storages = $getVar('storage', [])
+#set networks = $getVar('network', [])
+#set odls = $getVar('odl', [])
+#set onoss = $getVar('onos', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+#if not $isinstance($odls, list)
+ #set odls = [$odls]
+#end if
+#if not $isinstance($onoss, list)
+ #set onoss = [$onoss]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network]
+#for network in $networks
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[odl]
+#for odl in odls
+ #set odl_ip = $odl.management.ip
+ #set odl_hostname = $odl.hostname
+$odl_hostname ansible_ssh_host=$odl_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/vars/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/vars/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..3e9a684a
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/vars/HA-ansible-multinodes.tmpl
@@ -0,0 +1,209 @@
+#from random import randint
+#set cluster_name = $getVar('name', '')
+#set network_cfg = $getVar('network_cfg', {})
+#set ntp_server = $getVar('ntp_server', "")
+#set ceph_disk = $getVar('ceph_disk',"")
+#set $sys_intf_mappings= {}
+#for $intf_info in $network_cfg.sys_intf_mappings
+#set $sys_intf_mappings[$intf_info["name"]] = $intf_info
+#end for
+
+#set ip_settings={}
+#for k,v in $getVar('ip_settings', {}).items()
+#set host_ip_settings={}
+#for intf in v
+#set $host_ip_settings[$intf["alias"]]=intf
+#end for
+#set $ip_settings[$k]=$host_ip_settings
+#end for
+
+#set neutron_cfg = $getVar('neutron_config', {})
+#set ovs_config = $neutron_cfg.openvswitch
+
+#set has = $getVar('ha', [])
+#set ha_vip = $getVar('ha_vip', [])
+
+#set controllers = $getVar('controller', [])
+#set computers = $getVar('compute', [])
+
+enable_secgroup: $getVar('enable_secgroup', True)
+enable_fwaas: $getVar('enable_fwaas', True)
+enable_vpnaas: $getVar('enable_vpnaas', True)
+odl_l3_agent: $getVar('odl_l3_agent', 'Disable')
+moon: $getVar('moon', 'Disable')
+ha_network: $getVar('ha_network', 'Disable')
+onos_nic: $getVar('onos_nic', 'eth2')
+ip_settings: $ip_settings
+network_cfg: $network_cfg
+sys_intf_mappings: $sys_intf_mappings
+deploy_type: $getVar('deploy_type', 'virtual')
+
+public_cidr: $computers[0]['install']['subnet']
+storage_cidr: "{{ ip_settings[inventory_hostname]['storage']['cidr'] }}"
+mgmt_cidr: "{{ ip_settings[inventory_hostname]['mgmt']['cidr'] }}"
+
+public_net_info: "{{ network_cfg.public_net_info }}"
+host_ip_settings: "{{ ip_settings[inventory_hostname] }}"
+
+ntp_server: $ntp_server
+internal_vip:
+ ip: $network_cfg["internal_vip"]["ip"]
+ netmask: $network_cfg["internal_vip"]["netmask"]
+#if "vlan_tag" in $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]
+ interface: $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]["name"]
+#else
+ interface: $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]["interface"]
+#end if
+
+public_vip:
+ ip: $network_cfg["public_vip"]["ip"]
+ netmask: $network_cfg["public_vip"]["netmask"]
+#if "vlan_tag" in $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]
+ interface: $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]["name"]
+#else
+ interface: $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]["interface"]
+#end if
+
+db_host: "{{ internal_vip.ip }}"
+rabbit_host: "{{ internal_vip.ip }}"
+
+internal_ip: "{{ ip_settings[inventory_hostname]['mgmt']['ip'] }}"
+internal_nic: mgmt
+
+#set random_id = randint(1, 255)
+vrouter_id_internal: $random_id
+vrouter_id_public: $random_id
+
+identity_host: "{{ internal_ip }}"
+controllers_host: "{{ internal_ip }}"
+storage_controller_host: "{{ internal_ip }}"
+compute_controller_host: "{{ internal_ip }}"
+image_host: "{{ internal_ip }}"
+network_server_host: "{{ internal_ip }}"
+dashboard_host: "{{ internal_ip }}"
+
+haproxy_hosts:
+#for $item in $has
+#set $hostname=$item["hostname"]
+ $hostname: $ip_settings[$hostname]["mgmt"]["ip"]
+#end for
+
+host_index:
+#for $index, $item in enumerate($has)
+ $item["hostname"]: $index
+#end for
+
+ERLANG_TOKEN: YOWSJSJIGGAUFZTIBRAD
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set keystone_pass = $console_credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set heat_dbpass = $credentials.heat.password
+#set heat_pass = $console_credentials.heat.password
+#set neutron_dbpass = $credentials.network.password
+#set neutron_pass = $console_credentials.network.password
+#set ceilometer_dbpass = $credentials.metering.password
+#set ceilometer_pass = $console_credentials.metering.password
+#set aodh_dbpass = $credentials.alarming.password
+#set aodh_pass = $console_credentials.alarming.password
+#set admin_pass = $console_credentials.admin.password
+#set demo_pass = $console_credentials.demo.password
+
+cluster_name: $cluster_name
+
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controllers_host }}"
+DB_HOST: "{{ db_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-mitaka.list
+mitaka_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/mitaka main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+erlang.cookie: DJJVECFMCJPVYQTJTDWG
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+KEYSTONE_PASS: $keystone_pass
+CEILOMETER_DBPASS: $ceilometer_dbpass
+CEILOMETER_PASS: $ceilometer_pass
+AODH_DBPASS: $aodh_dbpass
+AODH_PASS: $aodh_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_dbpass
+NEUTRON_PASS: $neutron_pass
+HEAT_DBPASS: $heat_dbpass
+HEAT_PASS: $heat_pass
+DEMO_PASS: $demo_pass
+ADMIN_PASS: $admin_pass
+
+#set neutron_service_plugins=['router']
+
+#if $getVar('enable_fwaas', True)
+#neutron_service_plugins.append('firewall')
+#end if
+
+#if $getVar('enable_vpnaas', True)
+#neutron_service_plugins.append('vpnaas')
+#end if
+
+NEUTRON_SERVICE_PLUGINS: $neutron_service_plugins
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan', 'vlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['$ovs_config["tenant_network_type"]']
+NEUTRON_OVS_BRIDGE_MAPPINGS: $ovs_config['bridge_mappings']
+#if 'vlan_ranges' in $ovs_config
+NEUTRON_VLAN_RANGES: $ovs_config['vlan_ranges']
+#else
+NEUTRON_VLAN_RANGES: []
+#end if
+#if 'tunnel_id_ranges' in $ovs_config
+NEUTRON_TUNNEL_ID_RANGES: $ovs_config['tunnel_id_ranges']
+#else
+NEUTRON_TUNNEL_ID_RANGES: []
+#end if
+
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+WSREP_SST_USER: wsrep_sst
+WSREP_SST_PASS: wsrep_sst_sercet
+
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: "{{ internal_ip }}"
+
+#build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image: http://192.168.121.12:9999/img/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
+
+odl_pkg_url: https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.2-Helium-SR2/distribution-karaf-0.2.2-Helium-SR2.tar.gz
+odl_pkg_name: karaf.tar.gz
+odl_home: "/opt/opendaylight-0.2.2/"
+odl_base_features: ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management', 'http', 'odl-base-all','odl-aaa-authn','odl-restconf','odl-nsf-all','odl-adsal-northbound','odl-mdsal-apidocs', 'odl-openflowplugin-all']
+odl_extra_features: ['odl-l2switch-switch', 'odl-ovsdb-plugin', 'odl-ovsdb-openstack', 'odl-ovsdb-northbound','odl-dlux-core', 'odl-restconf-all', 'odl-mdsal-clustering', 'odl-openflowplugin-flow-services', 'odl-netconf-connector', 'odl-netconf-connector-ssh', 'jolokia-osgi']
+odl_features: "{{ odl_base_features + odl_extra_features }}"
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/vars/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/vars/allinone.tmpl
new file mode 100755
index 00000000..b13973d7
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/vars/allinone.tmpl
@@ -0,0 +1,96 @@
+#set cluster_name = $getVar('name', '')
+#set controllers = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+controller_host: $controller_ip
+#end for
+#for network in $controllers
+ #set network_external_nic = $network.external.interface
+ #set network_external_subnet = $network.external.subnet
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+compute_controller_host: "{{ controller_host }}"
+db_host: "{{ controller_host }}"
+rabbit_host: "{{ controller_host }}"
+storage_controller_host: "{{ controller_host }}"
+image_host: "{{ controller_host }}"
+identity_host: "{{ controller_host }}"
+network_server_host: "{{ controller_host }}"
+dashboard_host: "{{ controller_host }}"
+
+cluster_name: $cluster_name
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controller_host }}"
+DB_HOST: "{{ controller_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-mitaka.list
+mitaka_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/mitaka main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/vars/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/vars/multinodes.tmpl
new file mode 100755
index 00000000..3828c0d6
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/vars/multinodes.tmpl
@@ -0,0 +1,165 @@
+#set cluster_name = $getVar('name', '')
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+compute_controller_host: $worker_ip
+#end for
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+db_host: $worker_ip
+#end for
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+rabbit_host: $worker_ip
+#end for
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+storage_controller_host: $worker_ip
+#end for
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+image_host: $worker_ip
+#end for
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+identity_host: $worker_ip
+#end for
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+compute_controller_host: $worker_ip
+#end for
+#for worker in $network_servers
+ #set worker_ip = $worker.management.ip
+network_server_host: $worker_ip
+#end for
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+dashboard_host: $worker_ip
+#end for
+#for network in $network_workers
+ #set network_external_nic = $network.external.interface
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+cluster_name: $cluster_name
+
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ compute_controller_host }}"
+DB_HOST: "{{ db_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-mitaka.list
+mitaka_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/mitaka main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
+
+odl_pkg_url: https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.2-Helium-SR2/distribution-karaf-0.2.2-Helium-SR2.tar.gz
+odl_pkg_name: karaf.tar.gz
+odl_home: "/opt/opendaylight-0.2.2/"
+odl_base_features: ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management', 'http', 'odl-base-all','odl-aaa-authn','odl-restconf','odl-nsf-all','odl-adsal-northbound','odl-mdsal-apidocs', 'odl-openflowplugin-all']
+odl_extra_features: ['odl-l2switch-switch', 'odl-ovsdb-plugin', 'odl-ovsdb-openstack', 'odl-ovsdb-northbound','odl-dlux-core', 'odl-restconf-all', 'odl-mdsal-clustering', 'odl-openflowplugin-flow-services', 'odl-netconf-connector', 'odl-netconf-connector-ssh', 'jolokia-osgi']
+odl_features: "{{ odl_base_features + odl_extra_features }}"
+odl_api_port: 8080
+
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/vars/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/vars/single-controller.tmpl
new file mode 100755
index 00000000..99860224
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_mitaka_xenial/vars/single-controller.tmpl
@@ -0,0 +1,108 @@
+#set cluster_name = $getVar('name', '')
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set networks = $getVar('network', [])
+#set storages = $getVar('storage', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+controller_host: $controller_ip
+#end for
+#for network in $networks
+ #set network_external_nic = $network.external.interface
+ #set network_external_subnet = $network.external.subnet
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+cluster_name: $cluster_name
+deploy_type: $getVar('deploy_type', 'virtual')
+compute_controller_host: "{{ controller_host }}"
+db_host: "{{ controller_host }}"
+rabbit_host: "{{ controller_host }}"
+storage_controller_host: "{{ controller_host }}"
+image_host: "{{ controller_host }}"
+identity_host: "{{ controller_host }}"
+network_server_host: "{{ controller_host }}"
+dashboard_host: "{{ controller_host }}"
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controller_host }}"
+DB_HOST: "{{ controller_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-mitaka.list
+mitaka_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/mitaka main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+# EXTERNAL_NETWORK_CIDR: $network_external_subnet
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/ansible_cfg/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/ansible_cfg/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..aece7ae3
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/ansible_cfg/HA-ansible-multinodes.tmpl
@@ -0,0 +1,7 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_newton_xenial-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
+library = /opt/openstack-ansible-modules
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/ansible_cfg/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/ansible_cfg/allinone.tmpl
new file mode 100755
index 00000000..82657135
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/ansible_cfg/allinone.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_newton_xenial-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/ansible_cfg/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/ansible_cfg/multinodes.tmpl
new file mode 100755
index 00000000..82657135
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/ansible_cfg/multinodes.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_newton_xenial-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/ansible_cfg/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/ansible_cfg/single-controller.tmpl
new file mode 100755
index 00000000..82657135
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/ansible_cfg/single-controller.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_newton_xenial-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/hosts/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/hosts/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..9d628b5e
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/hosts/HA-ansible-multinodes.tmpl
@@ -0,0 +1,31 @@
+#set ip_settings={}
+#for k,v in $getVar('ip_settings', {}).items()
+#set host_ip_settings={}
+#for intf in v
+#set $host_ip_settings[$intf["alias"]]=intf
+#end for
+#set $ip_settings[$k]=$host_ip_settings
+#end for
+
+# localhost
+127.0.0.1 localhost
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($compute, list)
+ #set computes = [$computes]
+#end if
+# controller
+#for worker in $controllers
+ #set worker_hostname = $worker.hostname
+ #set worker_ip = $ip_settings[$worker_hostname].mgmt.ip
+$worker_ip $worker_hostname
+#end for
+# compute
+#for worker in $computes
+ #set worker_hostname = $worker.hostname
+ #set worker_ip = $ip_settings[$worker_hostname].mgmt.ip
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/hosts/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/hosts/allinone.tmpl
new file mode 100755
index 00000000..b777815e
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/hosts/allinone.tmpl
@@ -0,0 +1,10 @@
+#set controllers = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+# allinone
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_ip $controller_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/hosts/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/hosts/multinodes.tmpl
new file mode 100755
index 00000000..ca8c793f
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/hosts/multinodes.tmpl
@@ -0,0 +1,110 @@
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+# compute-controller
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# database
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# messaging
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage-controller
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# image
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# identity
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network-server
+#for worker in $network_servers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# dashboard
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage-volume
+#for worker in $storage_volumes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network-worker
+#for worker in $network_workers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# compute-worker
+#for worker in $compute_workers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/hosts/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/hosts/single-controller.tmpl
new file mode 100755
index 00000000..3ed94694
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/hosts/single-controller.tmpl
@@ -0,0 +1,40 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set storages = $getVar('storage', [])
+#set networks = $getVar('network', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+# controller
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_ip $controller_hostname
+#end for
+# compute
+#for worker in $computes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage
+#for worker in $storages
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network
+#for worker in $networks
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/inventories/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/inventories/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..94a6a153
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/inventories/HA-ansible-multinodes.tmpl
@@ -0,0 +1,100 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set has = $getVar('ha', [])
+#set odls = $getVar('odl', [])
+#set onoss = $getVar('onos', [])
+#set opencontrails = $getVar('opencontrail', [])
+#set ceph_adm_list = $getVar('ceph_adm',[])
+#set ceph_mon_list = $getVar('ceph_mon',[])
+#set ceph_osd_list = $getVar('ceph_osd',[])
+
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance(has, list)
+ #set has = [has]
+#end if
+#if not $isinstance(odls, list)
+ #set odls = [odls]
+#end if
+#if not $isinstance(onoss, list)
+ #set onoss = [onoss]
+#end if
+#if not $isinstance(opencontrails, list)
+ #set opencontrails = [opencontrails]
+#end if
+#if not $isinstance(ceph_adm_list, list)
+ #set ceph_adm_list = [ceph_adm_list]
+#end if
+#if not $isinstance(ceph_mon_list, list)
+ #set ceph_mon_list = [ceph_mon_list]
+#end if
+#if not $isinstance(ceph_osd_list, list)
+ #set ceph_osd_list = [ceph_osd_list]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.install.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.install.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ha]
+#for ha in $has
+ #set ha_ip = $ha.install.ip
+ #set ha_hostname = $ha.hostname
+$ha_hostname ansible_ssh_host=$ha_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[odl]
+#for odl in $odls
+ #set odl_ip = $odl.install.ip
+ #set odl_hostname = $odl.hostname
+$odl_hostname ansible_ssh_host=$odl_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[onos]
+#for onos in $onoss
+ #set onos_ip = $onos.install.ip
+ #set onos_hostname = $onos.hostname
+$onos_hostname ansible_ssh_host=$onos_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[opencontrail]
+#for opencontrail in $opencontrails
+ #set opencontrail_ip = $opencontrail.install.ip
+ #set opencontrail_hostname = $opencontrail.hostname
+$opencontrail_hostname ansible_ssh_host=$opencontrail_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_adm]
+#for ceph_adm in $ceph_adm_list
+ #set ceph_adm_ip = $ceph_adm.install.ip
+ #set ceph_adm_hostname = $ceph_adm.hostname
+$ceph_adm_hostname ansible_ssh_host=$ceph_adm_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_mon]
+#for ceph_mon in $ceph_mon_list
+ #set ceph_mon_ip = $ceph_mon.install.ip
+ #set ceph_mon_hostname = $ceph_mon.hostname
+$ceph_mon_hostname ansible_ssh_host=$ceph_mon_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_osd]
+#for ceph_osd in $ceph_osd_list
+ #set ceph_osd_ip = $ceph_osd.install.ip
+ #set ceph_osd_hostname = $ceph_osd.hostname
+$ceph_osd_hostname ansible_ssh_host=$ceph_osd_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph:children]
+ceph_adm
+ceph_mon
+ceph_osd
+
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/inventories/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/inventories/allinone.tmpl
new file mode 100755
index 00000000..38e0038b
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/inventories/allinone.tmpl
@@ -0,0 +1,47 @@
+#set controllers = $getVar('allinone_compute', [])
+#set computes = $getVar('allinone_compute', [])
+#set storages = $getVar('allinone_compute', [])
+#set networks = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network]
+#for network in $networks
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/inventories/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/inventories/multinodes.tmpl
new file mode 100755
index 00000000..7cdfbef3
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/inventories/multinodes.tmpl
@@ -0,0 +1,123 @@
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[compute-controller]
+#for controller in $compute_controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute-worker]
+#for compute in $compute_workers
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network-server]
+#for network in $network_servers
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network-worker]
+#for network in $network_workers
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[database]
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[messaging]
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[image]
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[dashboard]
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[identity]
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage-controller]
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage-volume]
+#for worker in $storage_volumes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/inventories/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/inventories/single-controller.tmpl
new file mode 100755
index 00000000..e1bf72c4
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/inventories/single-controller.tmpl
@@ -0,0 +1,67 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set storages = $getVar('storage', [])
+#set networks = $getVar('network', [])
+#set odls = $getVar('odl', [])
+#set onoss = $getVar('onos', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+#if not $isinstance($odls, list)
+ #set odls = [$odls]
+#end if
+#if not $isinstance($onoss, list)
+ #set onoss = [$onoss]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network]
+#for network in $networks
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[odl]
+#for odl in odls
+ #set odl_ip = $odl.management.ip
+ #set odl_hostname = $odl.hostname
+$odl_hostname ansible_ssh_host=$odl_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/vars/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/vars/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..2205431b
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/vars/HA-ansible-multinodes.tmpl
@@ -0,0 +1,209 @@
+#from random import randint
+#set cluster_name = $getVar('name', '')
+#set network_cfg = $getVar('network_cfg', {})
+#set ntp_server = $getVar('ntp_server', "")
+#set ceph_disk = $getVar('ceph_disk',"")
+#set $sys_intf_mappings= {}
+#for $intf_info in $network_cfg.sys_intf_mappings
+#set $sys_intf_mappings[$intf_info["name"]] = $intf_info
+#end for
+
+#set ip_settings={}
+#for k,v in $getVar('ip_settings', {}).items()
+#set host_ip_settings={}
+#for intf in v
+#set $host_ip_settings[$intf["alias"]]=intf
+#end for
+#set $ip_settings[$k]=$host_ip_settings
+#end for
+
+#set neutron_cfg = $getVar('neutron_config', {})
+#set ovs_config = $neutron_cfg.openvswitch
+
+#set has = $getVar('ha', [])
+#set ha_vip = $getVar('ha_vip', [])
+
+#set controllers = $getVar('controller', [])
+#set computers = $getVar('compute', [])
+
+enable_secgroup: $getVar('enable_secgroup', True)
+enable_fwaas: $getVar('enable_fwaas', True)
+enable_vpnaas: $getVar('enable_vpnaas', True)
+odl_l3_agent: $getVar('odl_l3_agent', 'Disable')
+moon: $getVar('moon', 'Disable')
+ha_network: $getVar('ha_network', 'Disable')
+onos_nic: $getVar('onos_nic', 'eth2')
+ip_settings: $ip_settings
+network_cfg: $network_cfg
+sys_intf_mappings: $sys_intf_mappings
+deploy_type: $getVar('deploy_type', 'virtual')
+
+public_cidr: $computers[0]['install']['subnet']
+storage_cidr: "{{ ip_settings[inventory_hostname]['storage']['cidr'] }}"
+mgmt_cidr: "{{ ip_settings[inventory_hostname]['mgmt']['cidr'] }}"
+
+public_net_info: "{{ network_cfg.public_net_info }}"
+host_ip_settings: "{{ ip_settings[inventory_hostname] }}"
+
+ntp_server: $ntp_server
+internal_vip:
+ ip: $network_cfg["internal_vip"]["ip"]
+ netmask: $network_cfg["internal_vip"]["netmask"]
+#if "vlan_tag" in $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]
+ interface: $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]["name"]
+#else
+ interface: $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]["interface"]
+#end if
+
+public_vip:
+ ip: $network_cfg["public_vip"]["ip"]
+ netmask: $network_cfg["public_vip"]["netmask"]
+#if "vlan_tag" in $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]
+ interface: $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]["name"]
+#else
+ interface: $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]["interface"]
+#end if
+
+db_host: "{{ internal_vip.ip }}"
+rabbit_host: "{{ internal_vip.ip }}"
+
+internal_ip: "{{ ip_settings[inventory_hostname]['mgmt']['ip'] }}"
+internal_nic: mgmt
+
+#set random_id = randint(1, 255)
+vrouter_id_internal: $random_id
+vrouter_id_public: $random_id
+
+identity_host: "{{ internal_ip }}"
+controllers_host: "{{ internal_ip }}"
+storage_controller_host: "{{ internal_ip }}"
+compute_controller_host: "{{ internal_ip }}"
+image_host: "{{ internal_ip }}"
+network_server_host: "{{ internal_ip }}"
+dashboard_host: "{{ internal_ip }}"
+
+haproxy_hosts:
+#for $item in $has
+#set $hostname=$item["hostname"]
+ $hostname: $ip_settings[$hostname]["mgmt"]["ip"]
+#end for
+
+host_index:
+#for $index, $item in enumerate($has)
+ $item["hostname"]: $index
+#end for
+
+ERLANG_TOKEN: YOWSJSJIGGAUFZTIBRAD
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set keystone_pass = $console_credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set heat_dbpass = $credentials.heat.password
+#set heat_pass = $console_credentials.heat.password
+#set neutron_dbpass = $credentials.network.password
+#set neutron_pass = $console_credentials.network.password
+#set ceilometer_dbpass = $credentials.metering.password
+#set ceilometer_pass = $console_credentials.metering.password
+#set aodh_dbpass = $credentials.alarming.password
+#set aodh_pass = $console_credentials.alarming.password
+#set admin_pass = $console_credentials.admin.password
+#set demo_pass = $console_credentials.demo.password
+
+cluster_name: $cluster_name
+
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controllers_host }}"
+DB_HOST: "{{ db_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-newton.list
+newton_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu xenial-updates/newton main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+erlang.cookie: DJJVECFMCJPVYQTJTDWG
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+KEYSTONE_PASS: $keystone_pass
+CEILOMETER_DBPASS: $ceilometer_dbpass
+CEILOMETER_PASS: $ceilometer_pass
+AODH_DBPASS: $aodh_dbpass
+AODH_PASS: $aodh_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_dbpass
+NEUTRON_PASS: $neutron_pass
+HEAT_DBPASS: $heat_dbpass
+HEAT_PASS: $heat_pass
+DEMO_PASS: $demo_pass
+ADMIN_PASS: $admin_pass
+
+#set neutron_service_plugins=['router']
+
+#if $getVar('enable_fwaas', True)
+#neutron_service_plugins.append('firewall')
+#end if
+
+#if $getVar('enable_vpnaas', True)
+#neutron_service_plugins.append('vpnaas')
+#end if
+
+NEUTRON_SERVICE_PLUGINS: $neutron_service_plugins
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan', 'vlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['$ovs_config["tenant_network_type"]']
+NEUTRON_OVS_BRIDGE_MAPPINGS: $ovs_config['bridge_mappings']
+#if 'vlan_ranges' in $ovs_config
+NEUTRON_VLAN_RANGES: $ovs_config['vlan_ranges']
+#else
+NEUTRON_VLAN_RANGES: []
+#end if
+#if 'tunnel_id_ranges' in $ovs_config
+NEUTRON_TUNNEL_ID_RANGES: $ovs_config['tunnel_id_ranges']
+#else
+NEUTRON_TUNNEL_ID_RANGES: []
+#end if
+
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+WSREP_SST_USER: wsrep_sst
+WSREP_SST_PASS: wsrep_sst_sercet
+
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: "{{ internal_ip }}"
+
+#build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image: http://192.168.121.12:9999/img/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
+
+odl_pkg_url: https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.2-Helium-SR2/distribution-karaf-0.2.2-Helium-SR2.tar.gz
+odl_pkg_name: karaf.tar.gz
+odl_home: "/opt/opendaylight-0.2.2/"
+odl_base_features: ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management', 'http', 'odl-base-all','odl-aaa-authn','odl-restconf','odl-nsf-all','odl-adsal-northbound','odl-mdsal-apidocs', 'odl-openflowplugin-all']
+odl_extra_features: ['odl-l2switch-switch', 'odl-ovsdb-plugin', 'odl-ovsdb-openstack', 'odl-ovsdb-northbound','odl-dlux-core', 'odl-restconf-all', 'odl-mdsal-clustering', 'odl-openflowplugin-flow-services', 'odl-netconf-connector', 'odl-netconf-connector-ssh', 'jolokia-osgi']
+odl_features: "{{ odl_base_features + odl_extra_features }}"
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/vars/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/vars/allinone.tmpl
new file mode 100755
index 00000000..a28897b3
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/vars/allinone.tmpl
@@ -0,0 +1,96 @@
+#set cluster_name = $getVar('name', '')
+#set controllers = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+controller_host: $controller_ip
+#end for
+#for network in $controllers
+ #set network_external_nic = $network.external.interface
+ #set network_external_subnet = $network.external.subnet
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+compute_controller_host: "{{ controller_host }}"
+db_host: "{{ controller_host }}"
+rabbit_host: "{{ controller_host }}"
+storage_controller_host: "{{ controller_host }}"
+image_host: "{{ controller_host }}"
+identity_host: "{{ controller_host }}"
+network_server_host: "{{ controller_host }}"
+dashboard_host: "{{ controller_host }}"
+
+cluster_name: $cluster_name
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controller_host }}"
+DB_HOST: "{{ controller_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-newton.list
+newton_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu xenial-updates/newton main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/vars/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/vars/multinodes.tmpl
new file mode 100755
index 00000000..16134e71
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/vars/multinodes.tmpl
@@ -0,0 +1,165 @@
+#set cluster_name = $getVar('name', '')
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+compute_controller_host: $worker_ip
+#end for
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+db_host: $worker_ip
+#end for
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+rabbit_host: $worker_ip
+#end for
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+storage_controller_host: $worker_ip
+#end for
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+image_host: $worker_ip
+#end for
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+identity_host: $worker_ip
+#end for
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+compute_controller_host: $worker_ip
+#end for
+#for worker in $network_servers
+ #set worker_ip = $worker.management.ip
+network_server_host: $worker_ip
+#end for
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+dashboard_host: $worker_ip
+#end for
+#for network in $network_workers
+ #set network_external_nic = $network.external.interface
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+cluster_name: $cluster_name
+
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ compute_controller_host }}"
+DB_HOST: "{{ db_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-newton.list
+newton_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu xenial-updates/newton main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
+
+odl_pkg_url: https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.2-Helium-SR2/distribution-karaf-0.2.2-Helium-SR2.tar.gz
+odl_pkg_name: karaf.tar.gz
+odl_home: "/opt/opendaylight-0.2.2/"
+odl_base_features: ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management', 'http', 'odl-base-all','odl-aaa-authn','odl-restconf','odl-nsf-all','odl-adsal-northbound','odl-mdsal-apidocs', 'odl-openflowplugin-all']
+odl_extra_features: ['odl-l2switch-switch', 'odl-ovsdb-plugin', 'odl-ovsdb-openstack', 'odl-ovsdb-northbound','odl-dlux-core', 'odl-restconf-all', 'odl-mdsal-clustering', 'odl-openflowplugin-flow-services', 'odl-netconf-connector', 'odl-netconf-connector-ssh', 'jolokia-osgi']
+odl_features: "{{ odl_base_features + odl_extra_features }}"
+odl_api_port: 8080
+
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/vars/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/vars/single-controller.tmpl
new file mode 100755
index 00000000..70b01813
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_newton_xenial/vars/single-controller.tmpl
@@ -0,0 +1,108 @@
+#set cluster_name = $getVar('name', '')
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set networks = $getVar('network', [])
+#set storages = $getVar('storage', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+controller_host: $controller_ip
+#end for
+#for network in $networks
+ #set network_external_nic = $network.external.interface
+ #set network_external_subnet = $network.external.subnet
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+cluster_name: $cluster_name
+deploy_type: $getVar('deploy_type', 'virtual')
+compute_controller_host: "{{ controller_host }}"
+db_host: "{{ controller_host }}"
+rabbit_host: "{{ controller_host }}"
+storage_controller_host: "{{ controller_host }}"
+image_host: "{{ controller_host }}"
+identity_host: "{{ controller_host }}"
+network_server_host: "{{ controller_host }}"
+dashboard_host: "{{ controller_host }}"
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controller_host }}"
+DB_HOST: "{{ controller_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-newton.list
+newton_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu xenial-updates/newton main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+# EXTERNAL_NETWORK_CIDR: $network_external_subnet
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_osp9/ansible_cfg/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/ansible_cfg/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..55d80ae1
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/ansible_cfg/HA-ansible-multinodes.tmpl
@@ -0,0 +1,7 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_osp9-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
+library = /opt/openstack-ansible-modules
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_osp9/ansible_cfg/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/ansible_cfg/allinone.tmpl
new file mode 100755
index 00000000..ab1a0d71
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/ansible_cfg/allinone.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_mitaka-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_osp9/ansible_cfg/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/ansible_cfg/multinodes.tmpl
new file mode 100755
index 00000000..ab1a0d71
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/ansible_cfg/multinodes.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_mitaka-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_osp9/ansible_cfg/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/ansible_cfg/single-controller.tmpl
new file mode 100755
index 00000000..ab1a0d71
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/ansible_cfg/single-controller.tmpl
@@ -0,0 +1,6 @@
+#set cluster_name = $getVar('name', '')
+[defaults]
+log_path = /var/ansible/run/openstack_mitaka-$cluster_name/ansible.log
+host_key_checking = False
+callback_plugins = /opt/compass/bin/ansible_callbacks
+pipelining=True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_osp9/hosts/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/hosts/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..9d628b5e
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/hosts/HA-ansible-multinodes.tmpl
@@ -0,0 +1,31 @@
+#set ip_settings={}
+#for k,v in $getVar('ip_settings', {}).items()
+#set host_ip_settings={}
+#for intf in v
+#set $host_ip_settings[$intf["alias"]]=intf
+#end for
+#set $ip_settings[$k]=$host_ip_settings
+#end for
+
+# localhost
+127.0.0.1 localhost
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($compute, list)
+ #set computes = [$computes]
+#end if
+# controller
+#for worker in $controllers
+ #set worker_hostname = $worker.hostname
+ #set worker_ip = $ip_settings[$worker_hostname].mgmt.ip
+$worker_ip $worker_hostname
+#end for
+# compute
+#for worker in $computes
+ #set worker_hostname = $worker.hostname
+ #set worker_ip = $ip_settings[$worker_hostname].mgmt.ip
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_osp9/hosts/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/hosts/allinone.tmpl
new file mode 100755
index 00000000..b777815e
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/hosts/allinone.tmpl
@@ -0,0 +1,10 @@
+#set controllers = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+# allinone
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_ip $controller_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_osp9/hosts/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/hosts/multinodes.tmpl
new file mode 100755
index 00000000..ca8c793f
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/hosts/multinodes.tmpl
@@ -0,0 +1,110 @@
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+# compute-controller
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# database
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# messaging
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage-controller
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# image
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# identity
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network-server
+#for worker in $network_servers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# dashboard
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage-volume
+#for worker in $storage_volumes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network-worker
+#for worker in $network_workers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# compute-worker
+#for worker in $compute_workers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_osp9/hosts/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/hosts/single-controller.tmpl
new file mode 100755
index 00000000..3ed94694
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/hosts/single-controller.tmpl
@@ -0,0 +1,40 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set storages = $getVar('storage', [])
+#set networks = $getVar('network', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+# controller
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_ip $controller_hostname
+#end for
+# compute
+#for worker in $computes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# storage
+#for worker in $storages
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
+# network
+#for worker in $networks
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_ip $worker_hostname
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_osp9/inventories/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/inventories/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..94a6a153
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/inventories/HA-ansible-multinodes.tmpl
@@ -0,0 +1,100 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set has = $getVar('ha', [])
+#set odls = $getVar('odl', [])
+#set onoss = $getVar('onos', [])
+#set opencontrails = $getVar('opencontrail', [])
+#set ceph_adm_list = $getVar('ceph_adm',[])
+#set ceph_mon_list = $getVar('ceph_mon',[])
+#set ceph_osd_list = $getVar('ceph_osd',[])
+
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance(has, list)
+ #set has = [has]
+#end if
+#if not $isinstance(odls, list)
+ #set odls = [odls]
+#end if
+#if not $isinstance(onoss, list)
+ #set onoss = [onoss]
+#end if
+#if not $isinstance(opencontrails, list)
+ #set opencontrails = [opencontrails]
+#end if
+#if not $isinstance(ceph_adm_list, list)
+ #set ceph_adm_list = [ceph_adm_list]
+#end if
+#if not $isinstance(ceph_mon_list, list)
+ #set ceph_mon_list = [ceph_mon_list]
+#end if
+#if not $isinstance(ceph_osd_list, list)
+ #set ceph_osd_list = [ceph_osd_list]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.install.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.install.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ha]
+#for ha in $has
+ #set ha_ip = $ha.install.ip
+ #set ha_hostname = $ha.hostname
+$ha_hostname ansible_ssh_host=$ha_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[odl]
+#for odl in $odls
+ #set odl_ip = $odl.install.ip
+ #set odl_hostname = $odl.hostname
+$odl_hostname ansible_ssh_host=$odl_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[onos]
+#for onos in $onoss
+ #set onos_ip = $onos.install.ip
+ #set onos_hostname = $onos.hostname
+$onos_hostname ansible_ssh_host=$onos_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[opencontrail]
+#for opencontrail in $opencontrails
+ #set opencontrail_ip = $opencontrail.install.ip
+ #set opencontrail_hostname = $opencontrail.hostname
+$opencontrail_hostname ansible_ssh_host=$opencontrail_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_adm]
+#for ceph_adm in $ceph_adm_list
+ #set ceph_adm_ip = $ceph_adm.install.ip
+ #set ceph_adm_hostname = $ceph_adm.hostname
+$ceph_adm_hostname ansible_ssh_host=$ceph_adm_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_mon]
+#for ceph_mon in $ceph_mon_list
+ #set ceph_mon_ip = $ceph_mon.install.ip
+ #set ceph_mon_hostname = $ceph_mon.hostname
+$ceph_mon_hostname ansible_ssh_host=$ceph_mon_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph_osd]
+#for ceph_osd in $ceph_osd_list
+ #set ceph_osd_ip = $ceph_osd.install.ip
+ #set ceph_osd_hostname = $ceph_osd.hostname
+$ceph_osd_hostname ansible_ssh_host=$ceph_osd_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[ceph:children]
+ceph_adm
+ceph_mon
+ceph_osd
+
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_osp9/inventories/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/inventories/allinone.tmpl
new file mode 100755
index 00000000..38e0038b
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/inventories/allinone.tmpl
@@ -0,0 +1,47 @@
+#set controllers = $getVar('allinone_compute', [])
+#set computes = $getVar('allinone_compute', [])
+#set storages = $getVar('allinone_compute', [])
+#set networks = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network]
+#for network in $networks
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_osp9/inventories/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/inventories/multinodes.tmpl
new file mode 100755
index 00000000..7cdfbef3
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/inventories/multinodes.tmpl
@@ -0,0 +1,123 @@
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[compute-controller]
+#for controller in $compute_controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute-worker]
+#for compute in $compute_workers
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network-server]
+#for network in $network_servers
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network-worker]
+#for network in $network_workers
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[database]
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[messaging]
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[image]
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[dashboard]
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[identity]
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage-controller]
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage-volume]
+#for worker in $storage_volumes
+ #set worker_ip = $worker.management.ip
+ #set worker_hostname = $worker.hostname
+$worker_hostname ansible_ssh_host=$worker_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_osp9/inventories/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/inventories/single-controller.tmpl
new file mode 100755
index 00000000..e1bf72c4
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/inventories/single-controller.tmpl
@@ -0,0 +1,67 @@
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set storages = $getVar('storage', [])
+#set networks = $getVar('network', [])
+#set odls = $getVar('odl', [])
+#set onoss = $getVar('onos', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+#if not $isinstance($odls, list)
+ #set odls = [$odls]
+#end if
+#if not $isinstance($onoss, list)
+ #set onoss = [$onoss]
+#end if
+
+#set credentials = $getVar('server_credentials', {})
+#set username = $credentials.get('username', 'root')
+#set password = $credentials.get('password', 'root')
+[controller]
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+$controller_hostname ansible_ssh_host=$controller_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[compute]
+#for compute in $computes
+ #set compute_ip = $compute.management.ip
+ #set compute_hostname = $compute.hostname
+$compute_hostname ansible_ssh_host=$compute_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[network]
+#for network in $networks
+ #set network_ip = $network.management.ip
+ #set network_hostname = $network.hostname
+$network_hostname ansible_ssh_host=$network_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[odl]
+#for odl in odls
+ #set odl_ip = $odl.management.ip
+ #set odl_hostname = $odl.hostname
+$odl_hostname ansible_ssh_host=$odl_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
+[storage]
+#for storage in storages
+ #set storage_ip = $storage.management.ip
+ #set storage_hostname = $storage.hostname
+$storage_hostname ansible_ssh_host=$storage_ip ansible_ssh_user=$username ansible_ssh_password=$password
+#end for
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_osp9/vars/HA-ansible-multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/vars/HA-ansible-multinodes.tmpl
new file mode 100755
index 00000000..b5b63e69
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/vars/HA-ansible-multinodes.tmpl
@@ -0,0 +1,210 @@
+#from random import randint
+#set cluster_name = $getVar('name', '')
+#set network_cfg = $getVar('network_cfg', {})
+#set ntp_server = $getVar('ntp_server', "")
+#set ceph_disk = $getVar('ceph_disk',"")
+#set $sys_intf_mappings= {}
+#for $intf_info in $network_cfg.sys_intf_mappings
+#set $sys_intf_mappings[$intf_info["name"]] = $intf_info
+#end for
+
+#set ip_settings={}
+#for k,v in $getVar('ip_settings', {}).items()
+#set host_ip_settings={}
+#for intf in v
+#set $host_ip_settings[$intf["alias"]]=intf
+#end for
+#set $ip_settings[$k]=$host_ip_settings
+#end for
+
+#set neutron_cfg = $getVar('neutron_config', {})
+#set ovs_config = $neutron_cfg.openvswitch
+
+#set has = $getVar('ha', [])
+#set ha_vip = $getVar('ha_vip', [])
+
+#set controllers = $getVar('controller', [])
+#set computers = $getVar('compute', [])
+
+enable_secgroup: $getVar('enable_secgroup', True)
+enable_fwaas: $getVar('enable_fwaas', True)
+enable_vpnaas: $getVar('enable_vpnaas', True)
+odl_l3_agent: $getVar('odl_l3_agent', 'Disable')
+onos_sfc: $getVar('onos_sfc', 'Disable')
+onos_nic: $getVar('onos_nic', 'eth2')
+odl_sfc: $getVar('odl_sfc', 'Disable')
+ip_settings: $ip_settings
+network_cfg: $network_cfg
+sys_intf_mappings: $sys_intf_mappings
+deploy_type: $getVar('deploy_type', 'virtual')
+
+public_cidr: $computers[0]['install']['subnet']
+storage_cidr: "{{ ip_settings[inventory_hostname]['storage']['cidr'] }}"
+mgmt_cidr: "{{ ip_settings[inventory_hostname]['mgmt']['cidr'] }}"
+
+public_net_info: "{{ network_cfg.public_net_info }}"
+host_ip_settings: "{{ ip_settings[inventory_hostname] }}"
+
+ntp_server: $ntp_server
+internal_vip:
+ ip: $network_cfg["internal_vip"]["ip"]
+ netmask: $network_cfg["internal_vip"]["netmask"]
+#if "vlan_tag" in $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]
+ interface: $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]["name"]
+#else
+ interface: $sys_intf_mappings[$network_cfg["internal_vip"]["interface"]]["interface"]
+#end if
+
+public_vip:
+ ip: $network_cfg["public_vip"]["ip"]
+ netmask: $network_cfg["public_vip"]["netmask"]
+#if "vlan_tag" in $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]
+ interface: $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]["name"]
+#else
+ interface: $sys_intf_mappings[$network_cfg["public_vip"]["interface"]]["interface"]
+#end if
+
+db_host: "{{ internal_vip.ip }}"
+rabbit_host: "{{ internal_vip.ip }}"
+
+internal_ip: "{{ ip_settings[inventory_hostname]['mgmt']['ip'] }}"
+internal_nic: mgmt
+
+#set random_id = randint(1, 255)
+vrouter_id_internal: $random_id
+vrouter_id_public: $random_id
+
+identity_host: "{{ internal_ip }}"
+controllers_host: "{{ internal_ip }}"
+storage_controller_host: "{{ internal_ip }}"
+compute_controller_host: "{{ internal_ip }}"
+image_host: "{{ internal_ip }}"
+network_server_host: "{{ internal_ip }}"
+dashboard_host: "{{ internal_ip }}"
+
+haproxy_hosts:
+#for $item in $has
+#set $hostname=$item["hostname"]
+ $hostname: $ip_settings[$hostname]["mgmt"]["ip"]
+#end for
+
+host_index:
+#for $index, $item in enumerate($has)
+ $item["hostname"]: $index
+#end for
+
+ERLANG_TOKEN: YOWSJSJIGGAUFZTIBRAD
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set keystone_pass = $console_credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set heat_dbpass = $credentials.heat.password
+#set heat_pass = $console_credentials.heat.password
+#set neutron_dbpass = $credentials.network.password
+#set neutron_pass = $console_credentials.network.password
+#set ceilometer_dbpass = $credentials.metering.password
+#set ceilometer_pass = $console_credentials.metering.password
+#set aodh_dbpass = $credentials.alarming.password
+#set aodh_pass = $console_credentials.alarming.password
+#set admin_pass = $console_credentials.admin.password
+#set demo_pass = $console_credentials.demo.password
+
+cluster_name: $cluster_name
+
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controllers_host }}"
+DB_HOST: "{{ db_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-mitaka.list
+mitaka_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/mitaka main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+erlang.cookie: DJJVECFMCJPVYQTJTDWG
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+KEYSTONE_PASS: $keystone_pass
+CEILOMETER_DBPASS: $ceilometer_dbpass
+CEILOMETER_PASS: $ceilometer_pass
+AODH_DBPASS: $aodh_dbpass
+AODH_PASS: $aodh_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_dbpass
+NEUTRON_PASS: $neutron_pass
+HEAT_DBPASS: $heat_dbpass
+HEAT_PASS: $heat_pass
+DEMO_PASS: $demo_pass
+ADMIN_PASS: $admin_pass
+
+#set neutron_service_plugins=['router']
+
+#if $getVar('enable_fwaas', True)
+#neutron_service_plugins.append('firewall')
+#end if
+
+#if $getVar('enable_vpnaas', True)
+#neutron_service_plugins.append('vpnaas')
+#end if
+
+NEUTRON_SERVICE_PLUGINS: $neutron_service_plugins
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan', 'vlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['$ovs_config["tenant_network_type"]']
+NEUTRON_OVS_BRIDGE_MAPPINGS: $ovs_config['bridge_mappings']
+#if 'vlan_ranges' in $ovs_config
+NEUTRON_VLAN_RANGES: $ovs_config['vlan_ranges']
+#else
+NEUTRON_VLAN_RANGES: []
+#end if
+#if 'tunnel_id_ranges' in $ovs_config
+NEUTRON_TUNNEL_ID_RANGES: $ovs_config['tunnel_id_ranges']
+#else
+NEUTRON_TUNNEL_ID_RANGES: []
+#end if
+
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+WSREP_SST_USER: wsrep_sst
+WSREP_SST_PASS: wsrep_sst_sercet
+
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: "{{ internal_ip }}"
+
+#build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image: http://192.168.121.12:9999/img/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
+
+odl_pkg_url: https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.2-Helium-SR2/distribution-karaf-0.2.2-Helium-SR2.tar.gz
+odl_pkg_name: karaf.tar.gz
+odl_home: "/opt/opendaylight-0.2.2/"
+odl_base_features: ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management', 'http', 'odl-base-all','odl-aaa-authn','odl-restconf','odl-nsf-all','odl-adsal-northbound','odl-mdsal-apidocs', 'odl-openflowplugin-all']
+odl_extra_features: ['odl-l2switch-switch', 'odl-ovsdb-plugin', 'odl-ovsdb-openstack', 'odl-ovsdb-northbound','odl-dlux-core', 'odl-restconf-all', 'odl-mdsal-clustering', 'odl-openflowplugin-flow-services', 'odl-netconf-connector', 'odl-netconf-connector-ssh', 'jolokia-osgi']
+odl_features: "{{ odl_base_features + odl_extra_features }}"
+odl_api_port: 8080
+enable_ubuntu_theme: True
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_osp9/vars/allinone.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/vars/allinone.tmpl
new file mode 100755
index 00000000..b13973d7
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/vars/allinone.tmpl
@@ -0,0 +1,96 @@
+#set cluster_name = $getVar('name', '')
+#set controllers = $getVar('allinone_compute', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+controller_host: $controller_ip
+#end for
+#for network in $controllers
+ #set network_external_nic = $network.external.interface
+ #set network_external_subnet = $network.external.subnet
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+compute_controller_host: "{{ controller_host }}"
+db_host: "{{ controller_host }}"
+rabbit_host: "{{ controller_host }}"
+storage_controller_host: "{{ controller_host }}"
+image_host: "{{ controller_host }}"
+identity_host: "{{ controller_host }}"
+network_server_host: "{{ controller_host }}"
+dashboard_host: "{{ controller_host }}"
+
+cluster_name: $cluster_name
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controller_host }}"
+DB_HOST: "{{ controller_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-mitaka.list
+mitaka_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/mitaka main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_osp9/vars/multinodes.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/vars/multinodes.tmpl
new file mode 100755
index 00000000..3828c0d6
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/vars/multinodes.tmpl
@@ -0,0 +1,165 @@
+#set cluster_name = $getVar('name', '')
+#set compute_controllers = $getVar('compute_controller', [])
+#set compute_workers = $getVar('compute_worker', [])
+#set network_servers = $getVar('network_server', [])
+#set network_workers = $getVar('network_worker', [])
+#set databases = $getVar('database', [])
+#set messagings = $getVar('messaging', [])
+#set images = $getVar('image', [])
+#set dashboards = $getVar('dashboard', [])
+#set identities = $getVar('identity', [])
+#set storage_controllers = $getVar('storage_controller', [])
+#set storage_volumes = $getVar('storage_volume', [])
+#if not $isinstance($compute_controllers, list)
+ #set compute_controllers = [$compute_controllers]
+#end if
+#if not $isinstance($compute_workers, list)
+ #set compute_workers = [$compute_workers]
+#end if
+#if not $isinstance($network_servers, list)
+ #set network_servers = [$network_servers]
+#end if
+#if not $isinstance($network_workers, list)
+ #set network_workers = [$network_workers]
+#end if
+#if not $isinstance($databases, list)
+ #set databases = [$databases]
+#end if
+#if not $isinstance($messagings, list)
+ #set messagings = [$messagings]
+#end if
+#if not $isinstance($images, list)
+ #set images = [$images]
+#end if
+#if not $isinstance($dashboards, list)
+ #set dashboards = [$dashboards]
+#end if
+#if not $isinstance($identities, list)
+ #set identities = [$identities]
+#end if
+#if not $isinstance($storage_controllers, list)
+ #set storage_controllers = [$storage_controllers]
+#end if
+#if not $isinstance($storage_volumes, list)
+ #set storage_volumes = [$storage_volumes]
+#end if
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+compute_controller_host: $worker_ip
+#end for
+#for worker in $databases
+ #set worker_ip = $worker.management.ip
+db_host: $worker_ip
+#end for
+#for worker in $messagings
+ #set worker_ip = $worker.management.ip
+rabbit_host: $worker_ip
+#end for
+#for worker in $storage_controllers
+ #set worker_ip = $worker.management.ip
+storage_controller_host: $worker_ip
+#end for
+#for worker in $images
+ #set worker_ip = $worker.management.ip
+image_host: $worker_ip
+#end for
+#for worker in $identities
+ #set worker_ip = $worker.management.ip
+identity_host: $worker_ip
+#end for
+#for worker in $compute_controllers
+ #set worker_ip = $worker.management.ip
+compute_controller_host: $worker_ip
+#end for
+#for worker in $network_servers
+ #set worker_ip = $worker.management.ip
+network_server_host: $worker_ip
+#end for
+#for worker in $dashboards
+ #set worker_ip = $worker.management.ip
+dashboard_host: $worker_ip
+#end for
+#for network in $network_workers
+ #set network_external_nic = $network.external.interface
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+cluster_name: $cluster_name
+
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ compute_controller_host }}"
+DB_HOST: "{{ db_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-mitaka.list
+mitaka_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/mitaka main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
+
+odl_pkg_url: https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.2-Helium-SR2/distribution-karaf-0.2.2-Helium-SR2.tar.gz
+odl_pkg_name: karaf.tar.gz
+odl_home: "/opt/opendaylight-0.2.2/"
+odl_base_features: ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management', 'http', 'odl-base-all','odl-aaa-authn','odl-restconf','odl-nsf-all','odl-adsal-northbound','odl-mdsal-apidocs', 'odl-openflowplugin-all']
+odl_extra_features: ['odl-l2switch-switch', 'odl-ovsdb-plugin', 'odl-ovsdb-openstack', 'odl-ovsdb-northbound','odl-dlux-core', 'odl-restconf-all', 'odl-mdsal-clustering', 'odl-openflowplugin-flow-services', 'odl-netconf-connector', 'odl-netconf-connector-ssh', 'jolokia-osgi']
+odl_features: "{{ odl_base_features + odl_extra_features }}"
+odl_api_port: 8080
+
diff --git a/deploy/compass_conf/templates/ansible_installer/openstack_osp9/vars/single-controller.tmpl b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/vars/single-controller.tmpl
new file mode 100755
index 00000000..99860224
--- /dev/null
+++ b/deploy/compass_conf/templates/ansible_installer/openstack_osp9/vars/single-controller.tmpl
@@ -0,0 +1,108 @@
+#set cluster_name = $getVar('name', '')
+#set controllers = $getVar('controller', [])
+#set computes = $getVar('compute', [])
+#set networks = $getVar('network', [])
+#set storages = $getVar('storage', [])
+#if not $isinstance($controllers, list)
+ #set controllers = [$controllers]
+#end if
+#if not $isinstance($computes, list)
+ #set computes = [$computes]
+#end if
+#if not $isinstance($networks, list)
+ #set networks = [$networks]
+#end if
+#if not $isinstance($storages, list)
+ #set storages = [$storages]
+#end if
+
+#for controller in $controllers
+ #set controller_ip = $controller.management.ip
+ #set controller_hostname = $controller.hostname
+controller_host: $controller_ip
+#end for
+#for network in $networks
+ #set network_external_nic = $network.external.interface
+ #set network_external_subnet = $network.external.subnet
+ #set network_internal_nic = $network.management.interface
+INTERFACE_NAME: $network_external_nic
+INTERNAL_INTERFACE: $network_internal_nic
+#end for
+
+#set credentials = $getVar('service_credentials', {})
+#set console_credentials = $getVar('console_credentials', {})
+#set rabbit_username = $credentials.rabbitmq.username
+#set rabbit_password = $credentials.rabbitmq.password
+#set keystone_dbpass = $credentials.identity.password
+#set glance_dbpass = $credentials.image.password
+#set glance_pass = $console_credentials.image.password
+#set nova_dbpass = $credentials.compute.password
+#set nova_pass = $console_credentials.compute.password
+#set dash_dbpass = $credentials.dashboard.password
+#set cinder_dbpass = $credentials.volume.password
+#set cinder_pass = $console_credentials.volume.password
+#set admin_pass = $console_credentials.admin.password
+#set neutron_pass = $console_credentials.network.password
+
+cluster_name: $cluster_name
+deploy_type: $getVar('deploy_type', 'virtual')
+compute_controller_host: "{{ controller_host }}"
+db_host: "{{ controller_host }}"
+rabbit_host: "{{ controller_host }}"
+storage_controller_host: "{{ controller_host }}"
+image_host: "{{ controller_host }}"
+identity_host: "{{ controller_host }}"
+network_server_host: "{{ controller_host }}"
+dashboard_host: "{{ controller_host }}"
+odl_controller: 10.1.0.15
+
+DEBUG: true
+VERBOSE: true
+NTP_SERVER_LOCAL: "{{ controller_host }}"
+DB_HOST: "{{ controller_host }}"
+MQ_BROKER: rabbitmq
+
+OPENSTACK_REPO: cloudarchive-mitaka.list
+mitaka_cloud_archive: deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/mitaka main
+ADMIN_TOKEN: admin
+CEILOMETER_TOKEN: c095d479023a0fd58a54
+
+RABBIT_USER: $rabbit_username
+RABBIT_PASS: $rabbit_password
+KEYSTONE_DBPASS: $keystone_dbpass
+DEMO_PASS: demo_secret
+ADMIN_PASS: $admin_pass
+GLANCE_DBPASS: $glance_dbpass
+GLANCE_PASS: $glance_pass
+NOVA_DBPASS: $nova_dbpass
+NOVA_PASS: $nova_pass
+DASH_DBPASS: $dash_dbpass
+CINDER_DBPASS: $cinder_dbpass
+CINDER_PASS: $cinder_pass
+NEUTRON_DBPASS: $neutron_pass
+NEUTRON_PASS: $neutron_pass
+NEUTRON_TYPE_DRIVERS: ['flat', 'gre', 'vxlan']
+NEUTRON_TENANT_NETWORK_TYPES: ['vxlan']
+#NEUTRON_MECHANISM_DRIVERS: ['opendaylight']
+NEUTRON_MECHANISM_DRIVERS: ['openvswitch']
+NEUTRON_TUNNEL_TYPES: ['vxlan']
+METADATA_SECRET: metadata_secret
+INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS: 10.1.1.21
+
+EXTERNAL_NETWORK_CIDR: 203.0.113.0/24
+# EXTERNAL_NETWORK_CIDR: $network_external_subnet
+EXTERNAL_NETWORK_GATEWAY: 203.0.113.1
+FLOATING_IP_START: 203.0.113.101
+FLOATING_IP_END: 203.0.113.200
+
+build_in_image: http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+build_in_image_name: cirros-0.3.3-x86_64-disk.img
+
+physical_device: /dev/sdb
+
+internal_interface: "ansible_{{ INTERNAL_INTERFACE }}"
+internal_ip: "{{ hostvars[inventory_hostname][internal_interface]['ipv4']['address'] }}"
+HA_VIP: "{{ internal_ip }}"
+odl_username: admin
+odl_password: admin
+odl_api_port: 8080
diff --git a/deploy/compass_conf/templates/cobbler/CentOS-6.5-x86_64/system.tmpl b/deploy/compass_conf/templates/cobbler/CentOS-6.5-x86_64/system.tmpl
new file mode 100755
index 00000000..8e4cbbbe
--- /dev/null
+++ b/deploy/compass_conf/templates/cobbler/CentOS-6.5-x86_64/system.tmpl
@@ -0,0 +1,76 @@
+{
+ "name": "$hostname",
+ "hostname": "$hostname",
+ "profile": "$profile",
+ "gateway": "$gateway",
+ #import simplejson as json
+ #set nameservers = json.dumps($nameservers, encoding='utf-8')
+ "name_servers": $nameservers,
+ #set search_path = ' '.join($search_path)
+ "name_servers_search": "$search_path",
+ "proxy": "$getVar('http_proxy', '')",
+ "modify_interface":
+ #set networks = $networks
+ #set rekeyed = {}
+ #set promic_nic = ""
+ #for $nic, $val in $networks.iteritems():
+ #set ip_key = '-'.join(('ipaddress', $nic))
+ #set netmask_key = '-'.join(('netmask', $nic))
+ #set mgmt_key = '-'.join(('management', $nic))
+ #set static_key = '-'.join(('static', $nic))
+ #set $rekeyed[$ip_key] = $val.ip
+ #set $rekeyed[$netmask_key] = $val.netmask
+ #set $rekeyed[$mgmt_key] = $val.is_mgmt
+ #set $rekeyed[$static_key] = True
+
+ #set dns_key = '-'.join(('dnsname', $nic))
+ #if $val.is_mgmt
+ #set $rekeyed[$dns_key] = $dns
+ #else
+ #if '.' in $dns
+ #set $dns_name, $dns_domain = $dns.split('.', 1)
+ #set $dns_nic = '%s-%s.%s' % ($dns_name, $nic, $dns_domain)
+ #else
+ #set $dns_nic = '%s-%s' % ($dns, $nic)
+ #end if
+ #set $rekeyed[$dns_key] = $dns_nic
+ #end if
+
+ #if $val.is_promiscuous:
+ #set promic_nic = $nic
+ #end if
+ #if $val.is_mgmt:
+ #set mac_key = '-'.join(('macaddress', $nic))
+ #set $rekeyed[$mac_key] = $mac
+ #end if
+ #end for
+ #set nic_info = json.dumps($rekeyed, encoding='utf-8')
+ $nic_info
+ ,
+ "ksmeta":{
+ #set partition_config = ''
+ #for k, v in $partition.iteritems():
+ #set path = ''
+ #if v['vol_percentage']:
+ #set $path = k + ' ' + str(v['vol_percentage']) + '%'
+ #else:
+ #set $path = k + ' ' + str(v['vol_size'])
+ #end if
+ #set partition_config = ';'.join((partition_config, $path))
+ #end for
+ #set partition_config = partition_config[1:]
+ #import crypt
+ #set $password = crypt.crypt($server_credentials.password, "az")
+ #set no_proxy = ','.join($getVar('no_proxy', []))
+ "username": "$server_credentials.username",
+ "password": "$password",
+ "promisc_nics": "$promic_nic",
+ "partition": "$partition_config",
+ "https_proxy": "$getVar('https_proxy', '')",
+ "ntp_server": "$ntp_server",
+ "timezone": "$timezone",
+ "ignore_proxy": "$no_proxy",
+ "local_repo": "$getVar('local_repo', '')",
+ "disk_num": "1"
+ }
+}
diff --git a/deploy/compass_conf/templates/cobbler/CentOS-6.6-x86_64/system.tmpl b/deploy/compass_conf/templates/cobbler/CentOS-6.6-x86_64/system.tmpl
new file mode 100755
index 00000000..8e4cbbbe
--- /dev/null
+++ b/deploy/compass_conf/templates/cobbler/CentOS-6.6-x86_64/system.tmpl
@@ -0,0 +1,76 @@
+{
+ "name": "$hostname",
+ "hostname": "$hostname",
+ "profile": "$profile",
+ "gateway": "$gateway",
+ #import simplejson as json
+ #set nameservers = json.dumps($nameservers, encoding='utf-8')
+ "name_servers": $nameservers,
+ #set search_path = ' '.join($search_path)
+ "name_servers_search": "$search_path",
+ "proxy": "$getVar('http_proxy', '')",
+ "modify_interface":
+ #set networks = $networks
+ #set rekeyed = {}
+ #set promic_nic = ""
+ #for $nic, $val in $networks.iteritems():
+ #set ip_key = '-'.join(('ipaddress', $nic))
+ #set netmask_key = '-'.join(('netmask', $nic))
+ #set mgmt_key = '-'.join(('management', $nic))
+ #set static_key = '-'.join(('static', $nic))
+ #set $rekeyed[$ip_key] = $val.ip
+ #set $rekeyed[$netmask_key] = $val.netmask
+ #set $rekeyed[$mgmt_key] = $val.is_mgmt
+ #set $rekeyed[$static_key] = True
+
+ #set dns_key = '-'.join(('dnsname', $nic))
+ #if $val.is_mgmt
+ #set $rekeyed[$dns_key] = $dns
+ #else
+ #if '.' in $dns
+ #set $dns_name, $dns_domain = $dns.split('.', 1)
+ #set $dns_nic = '%s-%s.%s' % ($dns_name, $nic, $dns_domain)
+ #else
+ #set $dns_nic = '%s-%s' % ($dns, $nic)
+ #end if
+ #set $rekeyed[$dns_key] = $dns_nic
+ #end if
+
+ #if $val.is_promiscuous:
+ #set promic_nic = $nic
+ #end if
+ #if $val.is_mgmt:
+ #set mac_key = '-'.join(('macaddress', $nic))
+ #set $rekeyed[$mac_key] = $mac
+ #end if
+ #end for
+ #set nic_info = json.dumps($rekeyed, encoding='utf-8')
+ $nic_info
+ ,
+ "ksmeta":{
+ #set partition_config = ''
+ #for k, v in $partition.iteritems():
+ #set path = ''
+ #if v['vol_percentage']:
+ #set $path = k + ' ' + str(v['vol_percentage']) + '%'
+ #else:
+ #set $path = k + ' ' + str(v['vol_size'])
+ #end if
+ #set partition_config = ';'.join((partition_config, $path))
+ #end for
+ #set partition_config = partition_config[1:]
+ #import crypt
+ #set $password = crypt.crypt($server_credentials.password, "az")
+ #set no_proxy = ','.join($getVar('no_proxy', []))
+ "username": "$server_credentials.username",
+ "password": "$password",
+ "promisc_nics": "$promic_nic",
+ "partition": "$partition_config",
+ "https_proxy": "$getVar('https_proxy', '')",
+ "ntp_server": "$ntp_server",
+ "timezone": "$timezone",
+ "ignore_proxy": "$no_proxy",
+ "local_repo": "$getVar('local_repo', '')",
+ "disk_num": "1"
+ }
+}
diff --git a/deploy/compass_conf/templates/cobbler/CentOS-7-Minimal-1511-x86_64/profile.tmpl b/deploy/compass_conf/templates/cobbler/CentOS-7-Minimal-1511-x86_64/profile.tmpl
new file mode 100755
index 00000000..cfa89004
--- /dev/null
+++ b/deploy/compass_conf/templates/cobbler/CentOS-7-Minimal-1511-x86_64/profile.tmpl
@@ -0,0 +1,3 @@
+{
+ "repos": "$getVar('repo_name', '')"
+}
diff --git a/deploy/compass_conf/templates/cobbler/CentOS-7-Minimal-1511-x86_64/system.tmpl b/deploy/compass_conf/templates/cobbler/CentOS-7-Minimal-1511-x86_64/system.tmpl
new file mode 100755
index 00000000..8e4cbbbe
--- /dev/null
+++ b/deploy/compass_conf/templates/cobbler/CentOS-7-Minimal-1511-x86_64/system.tmpl
@@ -0,0 +1,76 @@
+{
+ "name": "$hostname",
+ "hostname": "$hostname",
+ "profile": "$profile",
+ "gateway": "$gateway",
+ #import simplejson as json
+ #set nameservers = json.dumps($nameservers, encoding='utf-8')
+ "name_servers": $nameservers,
+ #set search_path = ' '.join($search_path)
+ "name_servers_search": "$search_path",
+ "proxy": "$getVar('http_proxy', '')",
+ "modify_interface":
+ #set networks = $networks
+ #set rekeyed = {}
+ #set promic_nic = ""
+ #for $nic, $val in $networks.iteritems():
+ #set ip_key = '-'.join(('ipaddress', $nic))
+ #set netmask_key = '-'.join(('netmask', $nic))
+ #set mgmt_key = '-'.join(('management', $nic))
+ #set static_key = '-'.join(('static', $nic))
+ #set $rekeyed[$ip_key] = $val.ip
+ #set $rekeyed[$netmask_key] = $val.netmask
+ #set $rekeyed[$mgmt_key] = $val.is_mgmt
+ #set $rekeyed[$static_key] = True
+
+ #set dns_key = '-'.join(('dnsname', $nic))
+ #if $val.is_mgmt
+ #set $rekeyed[$dns_key] = $dns
+ #else
+ #if '.' in $dns
+ #set $dns_name, $dns_domain = $dns.split('.', 1)
+ #set $dns_nic = '%s-%s.%s' % ($dns_name, $nic, $dns_domain)
+ #else
+ #set $dns_nic = '%s-%s' % ($dns, $nic)
+ #end if
+ #set $rekeyed[$dns_key] = $dns_nic
+ #end if
+
+ #if $val.is_promiscuous:
+ #set promic_nic = $nic
+ #end if
+ #if $val.is_mgmt:
+ #set mac_key = '-'.join(('macaddress', $nic))
+ #set $rekeyed[$mac_key] = $mac
+ #end if
+ #end for
+ #set nic_info = json.dumps($rekeyed, encoding='utf-8')
+ $nic_info
+ ,
+ "ksmeta":{
+ #set partition_config = ''
+ #for k, v in $partition.iteritems():
+ #set path = ''
+ #if v['vol_percentage']:
+ #set $path = k + ' ' + str(v['vol_percentage']) + '%'
+ #else:
+ #set $path = k + ' ' + str(v['vol_size'])
+ #end if
+ #set partition_config = ';'.join((partition_config, $path))
+ #end for
+ #set partition_config = partition_config[1:]
+ #import crypt
+ #set $password = crypt.crypt($server_credentials.password, "az")
+ #set no_proxy = ','.join($getVar('no_proxy', []))
+ "username": "$server_credentials.username",
+ "password": "$password",
+ "promisc_nics": "$promic_nic",
+ "partition": "$partition_config",
+ "https_proxy": "$getVar('https_proxy', '')",
+ "ntp_server": "$ntp_server",
+ "timezone": "$timezone",
+ "ignore_proxy": "$no_proxy",
+ "local_repo": "$getVar('local_repo', '')",
+ "disk_num": "1"
+ }
+}
diff --git a/deploy/compass_conf/templates/cobbler/CentOS-7.0-x86_64/system.tmpl b/deploy/compass_conf/templates/cobbler/CentOS-7.0-x86_64/system.tmpl
new file mode 100755
index 00000000..8e4cbbbe
--- /dev/null
+++ b/deploy/compass_conf/templates/cobbler/CentOS-7.0-x86_64/system.tmpl
@@ -0,0 +1,76 @@
+{
+ "name": "$hostname",
+ "hostname": "$hostname",
+ "profile": "$profile",
+ "gateway": "$gateway",
+ #import simplejson as json
+ #set nameservers = json.dumps($nameservers, encoding='utf-8')
+ "name_servers": $nameservers,
+ #set search_path = ' '.join($search_path)
+ "name_servers_search": "$search_path",
+ "proxy": "$getVar('http_proxy', '')",
+ "modify_interface":
+ #set networks = $networks
+ #set rekeyed = {}
+ #set promic_nic = ""
+ #for $nic, $val in $networks.iteritems():
+ #set ip_key = '-'.join(('ipaddress', $nic))
+ #set netmask_key = '-'.join(('netmask', $nic))
+ #set mgmt_key = '-'.join(('management', $nic))
+ #set static_key = '-'.join(('static', $nic))
+ #set $rekeyed[$ip_key] = $val.ip
+ #set $rekeyed[$netmask_key] = $val.netmask
+ #set $rekeyed[$mgmt_key] = $val.is_mgmt
+ #set $rekeyed[$static_key] = True
+
+ #set dns_key = '-'.join(('dnsname', $nic))
+ #if $val.is_mgmt
+ #set $rekeyed[$dns_key] = $dns
+ #else
+ #if '.' in $dns
+ #set $dns_name, $dns_domain = $dns.split('.', 1)
+ #set $dns_nic = '%s-%s.%s' % ($dns_name, $nic, $dns_domain)
+ #else
+ #set $dns_nic = '%s-%s' % ($dns, $nic)
+ #end if
+ #set $rekeyed[$dns_key] = $dns_nic
+ #end if
+
+ #if $val.is_promiscuous:
+ #set promic_nic = $nic
+ #end if
+ #if $val.is_mgmt:
+ #set mac_key = '-'.join(('macaddress', $nic))
+ #set $rekeyed[$mac_key] = $mac
+ #end if
+ #end for
+ #set nic_info = json.dumps($rekeyed, encoding='utf-8')
+ $nic_info
+ ,
+ "ksmeta":{
+ #set partition_config = ''
+ #for k, v in $partition.iteritems():
+ #set path = ''
+ #if v['vol_percentage']:
+ #set $path = k + ' ' + str(v['vol_percentage']) + '%'
+ #else:
+ #set $path = k + ' ' + str(v['vol_size'])
+ #end if
+ #set partition_config = ';'.join((partition_config, $path))
+ #end for
+ #set partition_config = partition_config[1:]
+ #import crypt
+ #set $password = crypt.crypt($server_credentials.password, "az")
+ #set no_proxy = ','.join($getVar('no_proxy', []))
+ "username": "$server_credentials.username",
+ "password": "$password",
+ "promisc_nics": "$promic_nic",
+ "partition": "$partition_config",
+ "https_proxy": "$getVar('https_proxy', '')",
+ "ntp_server": "$ntp_server",
+ "timezone": "$timezone",
+ "ignore_proxy": "$no_proxy",
+ "local_repo": "$getVar('local_repo', '')",
+ "disk_num": "1"
+ }
+}
diff --git a/deploy/compass_conf/templates/cobbler/Ubuntu-12.04-x86_64/system.tmpl b/deploy/compass_conf/templates/cobbler/Ubuntu-12.04-x86_64/system.tmpl
new file mode 100755
index 00000000..cfcc883e
--- /dev/null
+++ b/deploy/compass_conf/templates/cobbler/Ubuntu-12.04-x86_64/system.tmpl
@@ -0,0 +1,75 @@
+{
+ "name": "$hostname",
+ "hostname": "$hostname",
+ "profile": "$profile",
+ "gateway": "$gateway",
+ #import simplejson as json
+ #set nameservers = json.dumps($nameservers, encoding='utf-8')
+ "name_servers": $nameservers,
+ #set search_path = ' '.join($search_path)
+ "name_servers_search": "$search_path",
+ "proxy": "$getVar('http_proxy', '')",
+ "modify_interface":
+ #set networks = $networks
+ #set rekeyed = {}
+ #set promic_nic = ""
+ #for $nic, $val in $networks.iteritems():
+ #set ip_key = '-'.join(('ipaddress', $nic))
+ #set netmask_key = '-'.join(('netmask', $nic))
+ #set mgmt_key = '-'.join(('management', $nic))
+ #set static_key = '-'.join(('static', $nic))
+ #set $rekeyed[$ip_key] = $val.ip
+ #set $rekeyed[$netmask_key] = $val.netmask
+ #set $rekeyed[$static_key] = True
+
+ #set dns_key = '-'.join(('dnsname', $nic))
+ #if $val.is_mgmt
+ #set $rekeyed[$dns_key] = $dns
+ #else
+ #if '.' in $dns
+ #set $dns_name, $dns_domain = $dns.split('.', 1)
+ #set $dns_nic = '%s-%s.%s' % ($dns_name, $nic, $dns_domain)
+ #else
+ #set $dns_nic = '%s-%s' % ($dns, $nic)
+ #end if
+ #set $rekeyed[$dns_key] = $dns_nic
+ #end if
+
+ #if $val.is_promiscuous:
+ #set promic_nic = $nic
+ #end if
+ #if $val.is_mgmt:
+ #set mac_key = '-'.join(('macaddress', $nic))
+ #set $rekeyed[$mac_key] = $mac
+ #end if
+ #end for
+ #set nic_info = json.dumps($rekeyed, encoding='utf-8')
+ $nic_info
+ ,
+ "ksmeta":{
+ #set partition_config = ''
+ #for k, v in $partition.iteritems():
+ #set path = ''
+ #if v['vol_percentage']:
+ #set $path = k + ' ' + str(v['vol_percentage']) + '%'
+ #else:
+ #set $path = k + ' ' + str(v['vol_size'])
+ #end if
+ #set partition_config = ';'.join((partition_config, $path))
+ #end for
+ #set partition_config = partition_config[1:]
+ #import crypt
+ #set $password = crypt.crypt($server_credentials.password, "az")
+ #set no_proxy = ','.join($getVar('no_proxy', []))
+ "username": "$server_credentials.username",
+ "password": "$password",
+ "promisc_nics": "$promic_nic",
+ "partition": "$partition_config",
+ "https_proxy": "$getVar('https_proxy', '')",
+ "ntp_server": "$ntp_server",
+ "timezone": "$timezone",
+ "ignore_proxy": "$no_proxy",
+ "local_repo": "$getVar('local_repo', '')",
+ "disk_num": "1"
+ }
+}
diff --git a/deploy/compass_conf/templates/cobbler/Ubuntu-14.04-x86_64/system.tmpl b/deploy/compass_conf/templates/cobbler/Ubuntu-14.04-x86_64/system.tmpl
new file mode 100755
index 00000000..cfcc883e
--- /dev/null
+++ b/deploy/compass_conf/templates/cobbler/Ubuntu-14.04-x86_64/system.tmpl
@@ -0,0 +1,75 @@
+{
+ "name": "$hostname",
+ "hostname": "$hostname",
+ "profile": "$profile",
+ "gateway": "$gateway",
+ #import simplejson as json
+ #set nameservers = json.dumps($nameservers, encoding='utf-8')
+ "name_servers": $nameservers,
+ #set search_path = ' '.join($search_path)
+ "name_servers_search": "$search_path",
+ "proxy": "$getVar('http_proxy', '')",
+ "modify_interface":
+ #set networks = $networks
+ #set rekeyed = {}
+ #set promic_nic = ""
+ #for $nic, $val in $networks.iteritems():
+ #set ip_key = '-'.join(('ipaddress', $nic))
+ #set netmask_key = '-'.join(('netmask', $nic))
+ #set mgmt_key = '-'.join(('management', $nic))
+ #set static_key = '-'.join(('static', $nic))
+ #set $rekeyed[$ip_key] = $val.ip
+ #set $rekeyed[$netmask_key] = $val.netmask
+ #set $rekeyed[$static_key] = True
+
+ #set dns_key = '-'.join(('dnsname', $nic))
+ #if $val.is_mgmt
+ #set $rekeyed[$dns_key] = $dns
+ #else
+ #if '.' in $dns
+ #set $dns_name, $dns_domain = $dns.split('.', 1)
+ #set $dns_nic = '%s-%s.%s' % ($dns_name, $nic, $dns_domain)
+ #else
+ #set $dns_nic = '%s-%s' % ($dns, $nic)
+ #end if
+ #set $rekeyed[$dns_key] = $dns_nic
+ #end if
+
+ #if $val.is_promiscuous:
+ #set promic_nic = $nic
+ #end if
+ #if $val.is_mgmt:
+ #set mac_key = '-'.join(('macaddress', $nic))
+ #set $rekeyed[$mac_key] = $mac
+ #end if
+ #end for
+ #set nic_info = json.dumps($rekeyed, encoding='utf-8')
+ $nic_info
+ ,
+ "ksmeta":{
+ #set partition_config = ''
+ #for k, v in $partition.iteritems():
+ #set path = ''
+ #if v['vol_percentage']:
+ #set $path = k + ' ' + str(v['vol_percentage']) + '%'
+ #else:
+ #set $path = k + ' ' + str(v['vol_size'])
+ #end if
+ #set partition_config = ';'.join((partition_config, $path))
+ #end for
+ #set partition_config = partition_config[1:]
+ #import crypt
+ #set $password = crypt.crypt($server_credentials.password, "az")
+ #set no_proxy = ','.join($getVar('no_proxy', []))
+ "username": "$server_credentials.username",
+ "password": "$password",
+ "promisc_nics": "$promic_nic",
+ "partition": "$partition_config",
+ "https_proxy": "$getVar('https_proxy', '')",
+ "ntp_server": "$ntp_server",
+ "timezone": "$timezone",
+ "ignore_proxy": "$no_proxy",
+ "local_repo": "$getVar('local_repo', '')",
+ "disk_num": "1"
+ }
+}
diff --git a/deploy/compass_conf/templates/cobbler/rhel-server-7.2-x86_64/profile.tmpl b/deploy/compass_conf/templates/cobbler/rhel-server-7.2-x86_64/profile.tmpl
new file mode 100755
index 00000000..cfa89004
--- /dev/null
+++ b/deploy/compass_conf/templates/cobbler/rhel-server-7.2-x86_64/profile.tmpl
@@ -0,0 +1,3 @@
+{
+ "repos": "$getVar('repo_name', '')"
+}
diff --git a/deploy/compass_conf/templates/cobbler/rhel-server-7.2-x86_64/system.tmpl b/deploy/compass_conf/templates/cobbler/rhel-server-7.2-x86_64/system.tmpl
new file mode 100755
index 00000000..8e4cbbbe
--- /dev/null
+++ b/deploy/compass_conf/templates/cobbler/rhel-server-7.2-x86_64/system.tmpl
@@ -0,0 +1,76 @@
+{
+ "name": "$hostname",
+ "hostname": "$hostname",
+ "profile": "$profile",
+ "gateway": "$gateway",
+ #import simplejson as json
+ #set nameservers = json.dumps($nameservers, encoding='utf-8')
+ "name_servers": $nameservers,
+ #set search_path = ' '.join($search_path)
+ "name_servers_search": "$search_path",
+ "proxy": "$getVar('http_proxy', '')",
+ "modify_interface":
+ #set networks = $networks
+ #set rekeyed = {}
+ #set promic_nic = ""
+ #for $nic, $val in $networks.iteritems():
+ #set ip_key = '-'.join(('ipaddress', $nic))
+ #set netmask_key = '-'.join(('netmask', $nic))
+ #set mgmt_key = '-'.join(('management', $nic))
+ #set static_key = '-'.join(('static', $nic))
+ #set $rekeyed[$ip_key] = $val.ip
+ #set $rekeyed[$netmask_key] = $val.netmask
+ #set $rekeyed[$mgmt_key] = $val.is_mgmt
+ #set $rekeyed[$static_key] = True
+
+ #set dns_key = '-'.join(('dnsname', $nic))
+ #if $val.is_mgmt
+ #set $rekeyed[$dns_key] = $dns
+ #else
+ #if '.' in $dns
+ #set $dns_name, $dns_domain = $dns.split('.', 1)
+ #set $dns_nic = '%s-%s.%s' % ($dns_name, $nic, $dns_domain)
+ #else
+ #set $dns_nic = '%s-%s' % ($dns, $nic)
+ #end if
+ #set $rekeyed[$dns_key] = $dns_nic
+ #end if
+
+ #if $val.is_promiscuous:
+ #set promic_nic = $nic
+ #end if
+ #if $val.is_mgmt:
+ #set mac_key = '-'.join(('macaddress', $nic))
+ #set $rekeyed[$mac_key] = $mac
+ #end if
+ #end for
+ #set nic_info = json.dumps($rekeyed, encoding='utf-8')
+ $nic_info
+ ,
+ "ksmeta":{
+ #set partition_config = ''
+ #for k, v in $partition.iteritems():
+ #set path = ''
+ #if v['vol_percentage']:
+ #set $path = k + ' ' + str(v['vol_percentage']) + '%'
+ #else:
+ #set $path = k + ' ' + str(v['vol_size'])
+ #end if
+ #set partition_config = ';'.join((partition_config, $path))
+ #end for
+ #set partition_config = partition_config[1:]
+ #import crypt
+ #set $password = crypt.crypt($server_credentials.password, "az")
+ #set no_proxy = ','.join($getVar('no_proxy', []))
+ "username": "$server_credentials.username",
+ "password": "$password",
+ "promisc_nics": "$promic_nic",
+ "partition": "$partition_config",
+ "https_proxy": "$getVar('https_proxy', '')",
+ "ntp_server": "$ntp_server",
+ "timezone": "$timezone",
+ "ignore_proxy": "$no_proxy",
+ "local_repo": "$getVar('local_repo', '')",
+ "disk_num": "1"
+ }
+}
diff --git a/deploy/compass_conf/templates/cobbler/sles-11sp3-x86_64/system.tmpl b/deploy/compass_conf/templates/cobbler/sles-11sp3-x86_64/system.tmpl
new file mode 100755
index 00000000..8e4cbbbe
--- /dev/null
+++ b/deploy/compass_conf/templates/cobbler/sles-11sp3-x86_64/system.tmpl
@@ -0,0 +1,76 @@
+{
+ "name": "$hostname",
+ "hostname": "$hostname",
+ "profile": "$profile",
+ "gateway": "$gateway",
+ #import simplejson as json
+ #set nameservers = json.dumps($nameservers, encoding='utf-8')
+ "name_servers": $nameservers,
+ #set search_path = ' '.join($search_path)
+ "name_servers_search": "$search_path",
+ "proxy": "$getVar('http_proxy', '')",
+ "modify_interface":
+ #set networks = $networks
+ #set rekeyed = {}
+ #set promic_nic = ""
+ #for $nic, $val in $networks.iteritems():
+ #set ip_key = '-'.join(('ipaddress', $nic))
+ #set netmask_key = '-'.join(('netmask', $nic))
+ #set mgmt_key = '-'.join(('management', $nic))
+ #set static_key = '-'.join(('static', $nic))
+ #set $rekeyed[$ip_key] = $val.ip
+ #set $rekeyed[$netmask_key] = $val.netmask
+ #set $rekeyed[$mgmt_key] = $val.is_mgmt
+ #set $rekeyed[$static_key] = True
+
+ #set dns_key = '-'.join(('dnsname', $nic))
+ #if $val.is_mgmt
+ #set $rekeyed[$dns_key] = $dns
+ #else
+ #if '.' in $dns
+ #set $dns_name, $dns_domain = $dns.split('.', 1)
+ #set $dns_nic = '%s-%s.%s' % ($dns_name, $nic, $dns_domain)
+ #else
+ #set $dns_nic = '%s-%s' % ($dns, $nic)
+ #end if
+ #set $rekeyed[$dns_key] = $dns_nic
+ #end if
+
+ #if $val.is_promiscuous:
+ #set promic_nic = $nic
+ #end if
+ #if $val.is_mgmt:
+ #set mac_key = '-'.join(('macaddress', $nic))
+ #set $rekeyed[$mac_key] = $mac
+ #end if
+ #end for
+ #set nic_info = json.dumps($rekeyed, encoding='utf-8')
+ $nic_info
+ ,
+ "ksmeta":{
+ #set partition_config = ''
+ #for k, v in $partition.iteritems():
+ #set path = ''
+ #if v['vol_percentage']:
+ #set $path = k + ' ' + str(v['vol_percentage']) + '%'
+ #else:
+ #set $path = k + ' ' + str(v['vol_size'])
+ #end if
+ #set partition_config = ';'.join((partition_config, $path))
+ #end for
+ #set partition_config = partition_config[1:]
+ #import crypt
+ #set $password = crypt.crypt($server_credentials.password, "az")
+ #set no_proxy = ','.join($getVar('no_proxy', []))
+ "username": "$server_credentials.username",
+ "password": "$password",
+ "promisc_nics": "$promic_nic",
+ "partition": "$partition_config",
+ "https_proxy": "$getVar('https_proxy', '')",
+ "ntp_server": "$ntp_server",
+ "timezone": "$timezone",
+ "ignore_proxy": "$no_proxy",
+ "local_repo": "$getVar('local_repo', '')",
+ "disk_num": "1"
+ }
+}
diff --git a/deploy/compass_conf/templates/cobbler/ubuntu-14.04.3-server-x86_64/profile.tmpl b/deploy/compass_conf/templates/cobbler/ubuntu-14.04.3-server-x86_64/profile.tmpl
new file mode 100755
index 00000000..cfa89004
--- /dev/null
+++ b/deploy/compass_conf/templates/cobbler/ubuntu-14.04.3-server-x86_64/profile.tmpl
@@ -0,0 +1,3 @@
+{
+ "repos": "$getVar('repo_name', '')"
+}
diff --git a/deploy/compass_conf/templates/cobbler/ubuntu-14.04.3-server-x86_64/system.tmpl b/deploy/compass_conf/templates/cobbler/ubuntu-14.04.3-server-x86_64/system.tmpl
new file mode 100755
index 00000000..cfcc883e
--- /dev/null
+++ b/deploy/compass_conf/templates/cobbler/ubuntu-14.04.3-server-x86_64/system.tmpl
@@ -0,0 +1,75 @@
+{
+ "name": "$hostname",
+ "hostname": "$hostname",
+ "profile": "$profile",
+ "gateway": "$gateway",
+ #import simplejson as json
+ #set nameservers = json.dumps($nameservers, encoding='utf-8')
+ "name_servers": $nameservers,
+ #set search_path = ' '.join($search_path)
+ "name_servers_search": "$search_path",
+ "proxy": "$getVar('http_proxy', '')",
+ "modify_interface":
+ #set networks = $networks
+ #set rekeyed = {}
+ #set promic_nic = ""
+ #for $nic, $val in $networks.iteritems():
+ #set ip_key = '-'.join(('ipaddress', $nic))
+ #set netmask_key = '-'.join(('netmask', $nic))
+ #set mgmt_key = '-'.join(('management', $nic))
+ #set static_key = '-'.join(('static', $nic))
+ #set $rekeyed[$ip_key] = $val.ip
+ #set $rekeyed[$netmask_key] = $val.netmask
+ #set $rekeyed[$static_key] = True
+
+ #set dns_key = '-'.join(('dnsname', $nic))
+ #if $val.is_mgmt
+ #set $rekeyed[$dns_key] = $dns
+ #else
+ #if '.' in $dns
+ #set $dns_name, $dns_domain = $dns.split('.', 1)
+ #set $dns_nic = '%s-%s.%s' % ($dns_name, $nic, $dns_domain)
+ #else
+ #set $dns_nic = '%s-%s' % ($dns, $nic)
+ #end if
+ #set $rekeyed[$dns_key] = $dns_nic
+ #end if
+
+ #if $val.is_promiscuous:
+ #set promic_nic = $nic
+ #end if
+ #if $val.is_mgmt:
+ #set mac_key = '-'.join(('macaddress', $nic))
+ #set $rekeyed[$mac_key] = $mac
+ #end if
+ #end for
+ #set nic_info = json.dumps($rekeyed, encoding='utf-8')
+ $nic_info
+ ,
+ "ksmeta":{
+ #set partition_config = ''
+ #for k, v in $partition.iteritems():
+ #set path = ''
+ #if v['vol_percentage']:
+ #set $path = k + ' ' + str(v['vol_percentage']) + '%'
+ #else:
+ #set $path = k + ' ' + str(v['vol_size'])
+ #end if
+ #set partition_config = ';'.join((partition_config, $path))
+ #end for
+ #set partition_config = partition_config[1:]
+ #import crypt
+ #set $password = crypt.crypt($server_credentials.password, "az")
+ #set no_proxy = ','.join($getVar('no_proxy', []))
+ "username": "$server_credentials.username",
+ "password": "$password",
+ "promisc_nics": "$promic_nic",
+ "partition": "$partition_config",
+ "https_proxy": "$getVar('https_proxy', '')",
+ "ntp_server": "$ntp_server",
+ "timezone": "$timezone",
+ "ignore_proxy": "$no_proxy",
+ "local_repo": "$getVar('local_repo', '')",
+ "disk_num": "1"
+ }
+}
diff --git a/deploy/compass_conf/templates/cobbler/ubuntu-16.04-server-x86_64/profile.tmpl b/deploy/compass_conf/templates/cobbler/ubuntu-16.04-server-x86_64/profile.tmpl
new file mode 100755
index 00000000..cfa89004
--- /dev/null
+++ b/deploy/compass_conf/templates/cobbler/ubuntu-16.04-server-x86_64/profile.tmpl
@@ -0,0 +1,3 @@
+{
+ "repos": "$getVar('repo_name', '')"
+}
diff --git a/deploy/compass_conf/templates/cobbler/ubuntu-16.04-server-x86_64/system.tmpl b/deploy/compass_conf/templates/cobbler/ubuntu-16.04-server-x86_64/system.tmpl
new file mode 100755
index 00000000..cfcc883e
--- /dev/null
+++ b/deploy/compass_conf/templates/cobbler/ubuntu-16.04-server-x86_64/system.tmpl
@@ -0,0 +1,75 @@
+{
+ "name": "$hostname",
+ "hostname": "$hostname",
+ "profile": "$profile",
+ "gateway": "$gateway",
+ #import simplejson as json
+ #set nameservers = json.dumps($nameservers, encoding='utf-8')
+ "name_servers": $nameservers,
+ #set search_path = ' '.join($search_path)
+ "name_servers_search": "$search_path",
+ "proxy": "$getVar('http_proxy', '')",
+ "modify_interface":
+ #set networks = $networks
+ #set rekeyed = {}
+ #set promic_nic = ""
+ #for $nic, $val in $networks.iteritems():
+ #set ip_key = '-'.join(('ipaddress', $nic))
+ #set netmask_key = '-'.join(('netmask', $nic))
+ #set mgmt_key = '-'.join(('management', $nic))
+ #set static_key = '-'.join(('static', $nic))
+ #set $rekeyed[$ip_key] = $val.ip
+ #set $rekeyed[$netmask_key] = $val.netmask
+ #set $rekeyed[$static_key] = True
+
+ #set dns_key = '-'.join(('dnsname', $nic))
+ #if $val.is_mgmt
+ #set $rekeyed[$dns_key] = $dns
+ #else
+ #if '.' in $dns
+ #set $dns_name, $dns_domain = $dns.split('.', 1)
+ #set $dns_nic = '%s-%s.%s' % ($dns_name, $nic, $dns_domain)
+ #else
+ #set $dns_nic = '%s-%s' % ($dns, $nic)
+ #end if
+ #set $rekeyed[$dns_key] = $dns_nic
+ #end if
+
+ #if $val.is_promiscuous:
+ #set promic_nic = $nic
+ #end if
+ #if $val.is_mgmt:
+ #set mac_key = '-'.join(('macaddress', $nic))
+ #set $rekeyed[$mac_key] = $mac
+ #end if
+ #end for
+ #set nic_info = json.dumps($rekeyed, encoding='utf-8')
+ $nic_info
+ ,
+ "ksmeta":{
+ #set partition_config = ''
+ #for k, v in $partition.iteritems():
+ #set path = ''
+ #if v['vol_percentage']:
+ #set $path = k + ' ' + str(v['vol_percentage']) + '%'
+ #else:
+ #set $path = k + ' ' + str(v['vol_size'])
+ #end if
+ #set partition_config = ';'.join((partition_config, $path))
+ #end for
+ #set partition_config = partition_config[1:]
+ #import crypt
+ #set $password = crypt.crypt($server_credentials.password, "az")
+ #set no_proxy = ','.join($getVar('no_proxy', []))
+ "username": "$server_credentials.username",
+ "password": "$password",
+ "promisc_nics": "$promic_nic",
+ "partition": "$partition_config",
+ "https_proxy": "$getVar('https_proxy', '')",
+ "ntp_server": "$ntp_server",
+ "timezone": "$timezone",
+ "ignore_proxy": "$no_proxy",
+ "local_repo": "$getVar('local_repo', '')",
+ "disk_num": "1"
+ }
+}
diff --git a/deploy/compass_conf/templates/cobbler/uvp-11sp3-x86_64/system.tmpl b/deploy/compass_conf/templates/cobbler/uvp-11sp3-x86_64/system.tmpl
new file mode 100755
index 00000000..8e4cbbbe
--- /dev/null
+++ b/deploy/compass_conf/templates/cobbler/uvp-11sp3-x86_64/system.tmpl
@@ -0,0 +1,76 @@
+{
+ "name": "$hostname",
+ "hostname": "$hostname",
+ "profile": "$profile",
+ "gateway": "$gateway",
+ #import simplejson as json
+ #set nameservers = json.dumps($nameservers, encoding='utf-8')
+ "name_servers": $nameservers,
+ #set search_path = ' '.join($search_path)
+ "name_servers_search": "$search_path",
+ "proxy": "$getVar('http_proxy', '')",
+ "modify_interface":
+ #set networks = $networks
+ #set rekeyed = {}
+ #set promic_nic = ""
+ #for $nic, $val in $networks.iteritems():
+ #set ip_key = '-'.join(('ipaddress', $nic))
+ #set netmask_key = '-'.join(('netmask', $nic))
+ #set mgmt_key = '-'.join(('management', $nic))
+ #set static_key = '-'.join(('static', $nic))
+ #set $rekeyed[$ip_key] = $val.ip
+ #set $rekeyed[$netmask_key] = $val.netmask
+ #set $rekeyed[$mgmt_key] = $val.is_mgmt
+ #set $rekeyed[$static_key] = True
+
+ #set dns_key = '-'.join(('dnsname', $nic))
+ #if $val.is_mgmt
+ #set $rekeyed[$dns_key] = $dns
+ #else
+ #if '.' in $dns
+ #set $dns_name, $dns_domain = $dns.split('.', 1)
+ #set $dns_nic = '%s-%s.%s' % ($dns_name, $nic, $dns_domain)
+ #else
+ #set $dns_nic = '%s-%s' % ($dns, $nic)
+ #end if
+ #set $rekeyed[$dns_key] = $dns_nic
+ #end if
+
+ #if $val.is_promiscuous:
+ #set promic_nic = $nic
+ #end if
+ #if $val.is_mgmt:
+ #set mac_key = '-'.join(('macaddress', $nic))
+ #set $rekeyed[$mac_key] = $mac
+ #end if
+ #end for
+ #set nic_info = json.dumps($rekeyed, encoding='utf-8')
+ $nic_info
+ ,
+ "ksmeta":{
+ #set partition_config = ''
+ #for k, v in $partition.iteritems():
+ #set path = ''
+ #if v['vol_percentage']:
+ #set $path = k + ' ' + str(v['vol_percentage']) + '%'
+ #else:
+ #set $path = k + ' ' + str(v['vol_size'])
+ #end if
+ #set partition_config = ';'.join((partition_config, $path))
+ #end for
+ #set partition_config = partition_config[1:]
+ #import crypt
+ #set $password = crypt.crypt($server_credentials.password, "az")
+ #set no_proxy = ','.join($getVar('no_proxy', []))
+ "username": "$server_credentials.username",
+ "password": "$password",
+ "promisc_nics": "$promic_nic",
+ "partition": "$partition_config",
+ "https_proxy": "$getVar('https_proxy', '')",
+ "ntp_server": "$ntp_server",
+ "timezone": "$timezone",
+ "ignore_proxy": "$no_proxy",
+ "local_repo": "$getVar('local_repo', '')",
+ "disk_num": "1"
+ }
+}
diff --git a/deploy/compass_vm.sh b/deploy/compass_vm.sh
index 61e27051..4c6ba3fe 100755
--- a/deploy/compass_vm.sh
+++ b/deploy/compass_vm.sh
@@ -70,8 +70,27 @@ function _inject_dashboard_conf() {
done
}
+function _inject_ceph_expansion_conf() {
+ for os in mitaka mitaka_xenial newton_xenial osp9; do
+ CONF_TEMPLATES_DIR=/etc/compass/templates/ansible_installer/openstack_$os/vars
+ if [[ "$EXPANSION" == "true" ]]; then
+ cmd="
+ sed -i '/compute_expansion/d' ${CONF_TEMPLATES_DIR}/HA-ansible-multinodes.tmpl; \
+ echo compute_expansion: True >> ${CONF_TEMPLATES_DIR}/HA-ansible-multinodes.tmpl; \
+ "
+ else
+ cmd="
+ sed -i '/compute_expansion/d' ${CONF_TEMPLATES_DIR}/HA-ansible-multinodes.tmpl; \
+ echo compute_expansion: False >> ${CONF_TEMPLATES_DIR}/HA-ansible-multinodes.tmpl; \
+ "
+ fi
+ exec_cmd_on_compass $cmd
+ done
+}
+
function inject_compass_conf() {
_inject_dashboard_conf
+ _inject_ceph_expansion_conf
}
function refresh_compass_core () {
@@ -263,3 +282,10 @@ function wait_controller_nodes_ok() {
"
sleep 30
}
+
+function get_public_vip () {
+ ssh $ssh_args root@$MGMT_IP "
+ cd /var/ansible/run/openstack_newton_xenial-opnfv2
+ cat group_vars/all | grep -A 3 public_vip: | sed -n '2p' |sed -e 's/ ip: //g'
+ "
+}
diff --git a/deploy/conf/base.conf b/deploy/conf/base.conf
index bc0907a1..7b9d8290 100644
--- a/deploy/conf/base.conf
+++ b/deploy/conf/base.conf
@@ -65,6 +65,6 @@ export GATEWAY="10.1.0.1"
export SERVER_CREDENTIAL="root=root"
export LOCAL_REPO_URL=""
export OS_CONFIG_FILENAME=""
-export SERVICE_CREDENTIALS="image:service=service,compute:service=service,dashboard:service=service,identity:service=service,image:service=service,metering:service=service,network:service=service,rabbitmq:service=service,volume:service=service,mysql:service=service,heat:heat=heat_db_secret,alarming:aodh=aodh_db_secret"
-export CONSOLE_CREDENTIALS="admin:console=console,demo:console=console,compute:console=console,dashboard:console=console,identity:console=console,image:console=console,metering:console=console,network:console=console,object-store:console=console,volume:console=console,heat:heat=heat_secret,alarming:aodh=aodh_secret"
+export SERVICE_CREDENTIALS="image:service=service,compute:service=service,dashboard:service=service,identity:service=service,image:service=service,metering:service=service,network:service=service,rabbitmq:service=service,volume:service=service,mysql:service=service,heat:heat=heat_db_secret,alarming:aodh=aodh_db_secret,policy:congress=service"
+export CONSOLE_CREDENTIALS="admin:console=console,demo:console=console,compute:console=console,dashboard:console=console,identity:console=console,image:console=console,metering:console=console,network:console=console,object-store:console=console,volume:console=console,heat:heat=heat_secret,alarming:aodh=aodh_secret,policy:congress=console"
export PACKAGE_CONFIG_FILENAME=""
diff --git a/deploy/conf/hardware_environment/huawei-pod5/network.yml b/deploy/conf/hardware_environment/huawei-pod5/network.yml
index 9d3eea1b..543fec39 100644
--- a/deploy/conf/hardware_environment/huawei-pod5/network.yml
+++ b/deploy/conf/hardware_environment/huawei-pod5/network.yml
@@ -13,7 +13,7 @@ provider_net_mappings:
sys_intf_mappings:
- name: mgmt
interface: eth1
- vlan_tag: 125
+ vlan_tag: 3011
type: vlan
role:
- controller
@@ -21,7 +21,7 @@ sys_intf_mappings:
- name: storage
interface: eth1
- vlan_tag: 126
+ vlan_tag: 3012
type: vlan
role:
- controller
@@ -55,10 +55,10 @@ ip_settings:
- name: external
ip_ranges:
- - - "10.145.140.10"
- - "10.145.140.50"
- cidr: "10.145.140.0/24"
- gw: "10.145.140.1"
+ - - "192.168.5.204"
+ - "192.168.5.210"
+ cidr: "192.168.5.0/24"
+ gw: "192.168.5.1"
role:
- controller
- compute
@@ -69,7 +69,7 @@ internal_vip:
interface: mgmt
public_vip:
- ip: 10.145.140.115
+ ip: 192.168.5.211
netmask: "24"
interface: external
@@ -84,7 +84,7 @@ public_net_info:
router: router-ext
enable_dhcp: False
no_gateway: False
- external_gw: "10.145.140.1"
- floating_ip_cidr: "10.145.140.0/24"
- floating_ip_start: "10.145.140.100"
- floating_ip_end: "10.145.140.200"
+ external_gw: "192.168.5.1"
+ floating_ip_cidr: "192.168.5.0/24"
+ floating_ip_start: "192.168.5.215"
+ floating_ip_end: "192.168.5.250"
diff --git a/deploy/conf/hardware_environment/huawei-pod5/network_ocl.yml b/deploy/conf/hardware_environment/huawei-pod5/network_ocl.yml
index 8f603de5..83c69a2c 100644
--- a/deploy/conf/hardware_environment/huawei-pod5/network_ocl.yml
+++ b/deploy/conf/hardware_environment/huawei-pod5/network_ocl.yml
@@ -13,7 +13,7 @@ provider_net_mappings:
sys_intf_mappings:
- name: mgmt
interface: eth1
- vlan_tag: 125
+ vlan_tag: 3011
type: vlan
role:
- controller
@@ -21,7 +21,7 @@ sys_intf_mappings:
- name: storage
interface: eth1
- vlan_tag: 126
+ vlan_tag: 3012
type: vlan
role:
- controller
@@ -55,10 +55,10 @@ ip_settings:
- name: external
ip_ranges:
- - - "10.145.140.10"
- - "10.145.140.50"
- cidr: "10.145.140.0/24"
- gw: "10.145.140.1"
+ - - "192.168.5.204"
+ - "192.168.5.210"
+ cidr: "192.168.5.0/24"
+ gw: "192.168.5.1"
role:
- controller
- compute
@@ -69,7 +69,7 @@ internal_vip:
interface: mgmt
public_vip:
- ip: 10.145.140.115
+ ip: 192.168.5.211
netmask: "24"
interface: external
diff --git a/deploy/conf/hardware_environment/huawei-pod5/network_onos.yml b/deploy/conf/hardware_environment/huawei-pod5/network_onos.yml
index 69880200..43b0e67b 100644
--- a/deploy/conf/hardware_environment/huawei-pod5/network_onos.yml
+++ b/deploy/conf/hardware_environment/huawei-pod5/network_onos.yml
@@ -13,7 +13,7 @@ provider_net_mappings:
sys_intf_mappings:
- name: mgmt
interface: eth1
- vlan_tag: 125
+ vlan_tag: 3011
type: vlan
role:
- controller
@@ -21,7 +21,7 @@ sys_intf_mappings:
- name: storage
interface: eth1
- vlan_tag: 126
+ vlan_tag: 3012
type: vlan
role:
- controller
@@ -55,10 +55,10 @@ ip_settings:
- name: external
ip_ranges:
- - - "10.145.140.10"
- - "10.145.140.50"
- cidr: "10.145.140.0/24"
- gw: "10.145.140.1"
+ - - "192.168.5.204"
+ - "192.168.5.210"
+ cidr: "192.168.5.0/24"
+ gw: "192.168.5.1"
role:
- controller
- compute
@@ -69,7 +69,7 @@ internal_vip:
interface: mgmt
public_vip:
- ip: 10.145.140.115
+ ip: 192.168.5.211
netmask: "24"
interface: external
@@ -84,7 +84,7 @@ public_net_info:
router: router-ext
enable_dhcp: False
no_gateway: False
- external_gw: "10.145.140.1"
- floating_ip_cidr: "10.145.140.0/24"
- floating_ip_start: "10.145.140.100"
- floating_ip_end: "10.145.140.200"
+ external_gw: "192.168.5.1"
+ floating_ip_cidr: "192.168.5.0/24"
+ floating_ip_start: "192.168.5.215"
+ floating_ip_end: "192.168.5.250"
diff --git a/deploy/conf/hardware_environment/huawei-pod5/os-nosdn-nofeature-ha.yml b/deploy/conf/hardware_environment/huawei-pod5/os-nosdn-nofeature-ha.yml
index 56428daa..fc28e1a2 100644
--- a/deploy/conf/hardware_environment/huawei-pod5/os-nosdn-nofeature-ha.yml
+++ b/deploy/conf/hardware_environment/huawei-pod5/os-nosdn-nofeature-ha.yml
@@ -8,11 +8,11 @@ ipmiVer: '2.0'
hosts:
- name: host1
- mac: '70:7b:e8:75:71:d3'
+ mac: 'E0:97:96:10:67:83'
interfaces:
- - eth1: '70:7b:e8:75:71:d2'
- ipmiIp: 172.31.123.2
- ipmiPass: root
+ - eth1: 'E0:97:96:10:67:8B'
+ ipmiIp: 192.168.5.173
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -20,44 +20,45 @@ hosts:
- ceph-mon
- name: host2
- mac: '70:7b:e8:75:72:21'
+ mac: 'E0:97:96:10:5A:C8'
interfaces:
- - eth1: '70:7b:e8:75:72:20'
- ipmiIp: 172.31.123.3
- ipmiPass: root
+ - eth1: 'E0:97:96:10:5A:D0'
+ ipmiIp: 192.168.5.174
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
- ceph-mon
- name: host3
- mac: '70:7b:e8:75:71:37'
+ mac: 'E0:97:96:10:67:4D'
interfaces:
- - eth1: '70:7b:e8:75:71:36'
- ipmiIp: 172.31.123.4
- ipmiPass: root
+ - eth1: 'E0:97:96:10:67:55'
+ ipmiIp: 192.168.5.175
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
- ceph-mon
- name: host4
- mac: '70:7b:e8:75:71:dc'
+ mac: 'E0:97:96:10:5D:44'
interfaces:
- - eth1: '70:7b:e8:75:71:db'
- ipmiIp: 172.31.123.5
- ipmiPass: root
+ - eth1: 'E0:97:96:10:5D:4C'
+ ipmiIp: 192.168.5.176
+ ipmiPass: Huawei12#$
roles:
- compute
- ceph-osd
- name: host5
- mac: '70:7b:e8:75:71:d6'
+ mac: 'E0:97:96:10:63:29'
interfaces:
- - eth1: '70:7b:e8:75:71:d5'
- ipmiIp: 172.31.123.6
- ipmiPass: root
+ - eth1: 'E0:97:96:10:63:31'
+ ipmiIp: 192.168.5.177
+ ipmiPass: Huawei12#$
roles:
- compute
- ceph-osd
+
diff --git a/deploy/conf/hardware_environment/huawei-pod5/os-ocl-nofeature-ha.yml b/deploy/conf/hardware_environment/huawei-pod5/os-ocl-nofeature-ha.yml
index 65f31383..9744164f 100644
--- a/deploy/conf/hardware_environment/huawei-pod5/os-ocl-nofeature-ha.yml
+++ b/deploy/conf/hardware_environment/huawei-pod5/os-ocl-nofeature-ha.yml
@@ -8,11 +8,11 @@ ipmiVer: '2.0'
hosts:
- name: host1
- mac: '70:7b:e8:75:71:d3'
+ mac: 'E0:97:96:10:67:83'
interfaces:
- - eth1: '70:7b:e8:75:71:d2'
- ipmiIp: 172.31.123.2
- ipmiPass: root
+ - eth1: 'E0:97:96:10:67:8B'
+ ipmiIp: 192.168.5.173
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -21,41 +21,41 @@ hosts:
- ceph-mon
- name: host2
- mac: '70:7b:e8:75:72:21'
+ mac: 'E0:97:96:10:5A:C8'
interfaces:
- - eth1: '70:7b:e8:75:72:20'
- ipmiIp: 172.31.123.3
- ipmiPass: root
+ - eth1: 'E0:97:96:10:5A:D0'
+ ipmiIp: 192.168.5.174
+ ipmiPass: Huawei12#$
roles:
- compute
- ceph-osd
- name: host3
- mac: '70:7b:e8:75:71:37'
+ mac: 'E0:97:96:10:67:4D'
interfaces:
- - eth1: '70:7b:e8:75:71:36'
- ipmiIp: 172.31.123.4
- ipmiPass: root
+ - eth1: 'E0:97:96:10:67:55'
+ ipmiIp: 192.168.5.175
+ ipmiPass: Huawei12#$
roles:
- compute
- ceph-osd
- name: host4
- mac: '70:7b:e8:75:71:dc'
+ mac: 'E0:97:96:10:5D:44'
interfaces:
- - eth1: '70:7b:e8:75:71:db'
- ipmiIp: 172.31.123.5
- ipmiPass: root
+ - eth1: 'E0:97:96:10:5D:4C'
+ ipmiIp: 192.168.5.176
+ ipmiPass: Huawei12#$
roles:
- compute
- ceph-osd
- name: host5
- mac: '70:7b:e8:75:71:d6'
+ mac: 'E0:97:96:10:63:29'
interfaces:
- - eth1: '70:7b:e8:75:71:d5'
- ipmiIp: 172.31.123.6
- ipmiPass: root
+ - eth1: 'E0:97:96:10:63:31'
+ ipmiIp: 192.168.5.177
+ ipmiPass: Huawei12#$
roles:
- compute
- ceph-osd
diff --git a/deploy/conf/hardware_environment/huawei-pod5/os-odl_l2-moon-ha.yml b/deploy/conf/hardware_environment/huawei-pod5/os-odl_l2-moon-ha.yml
index e19937ec..513fcb5d 100644
--- a/deploy/conf/hardware_environment/huawei-pod5/os-odl_l2-moon-ha.yml
+++ b/deploy/conf/hardware_environment/huawei-pod5/os-odl_l2-moon-ha.yml
@@ -10,11 +10,11 @@ moon: "Enable"
hosts:
- name: host1
- mac: '70:7b:e8:75:71:d3'
+ mac: 'E0:97:96:10:67:83'
interfaces:
- - eth1: '70:7b:e8:75:71:d2'
- ipmiIp: 172.31.123.2
- ipmiPass: root
+ - eth1: 'E0:97:96:10:67:8B'
+ ipmiIp: 192.168.5.173
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -23,11 +23,11 @@ hosts:
- ceph-mon
- name: host2
- mac: '70:7b:e8:75:72:21'
+ mac: 'E0:97:96:10:5A:C8'
interfaces:
- - eth1: '70:7b:e8:75:72:20'
- ipmiIp: 172.31.123.3
- ipmiPass: root
+ - eth1: 'E0:97:96:10:5A:D0'
+ ipmiIp: 192.168.5.174
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -35,11 +35,11 @@ hosts:
- ceph-mon
- name: host3
- mac: '70:7b:e8:75:71:37'
+ mac: 'E0:97:96:10:67:4D'
interfaces:
- - eth1: '70:7b:e8:75:71:36'
- ipmiIp: 172.31.123.4
- ipmiPass: root
+ - eth1: 'E0:97:96:10:67:55'
+ ipmiIp: 192.168.5.175
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -47,22 +47,23 @@ hosts:
- ceph-mon
- name: host4
- mac: '70:7b:e8:75:71:dc'
+ mac: 'E0:97:96:10:5D:44'
interfaces:
- - eth1: '70:7b:e8:75:71:db'
- ipmiIp: 172.31.123.5
- ipmiPass: root
+ - eth1: 'E0:97:96:10:5D:4C'
+ ipmiIp: 192.168.5.176
+ ipmiPass: Huawei12#$
roles:
- compute
- ceph-osd
- name: host5
- mac: '70:7b:e8:75:71:d6'
+ mac: 'E0:97:96:10:63:29'
interfaces:
- - eth1: '70:7b:e8:75:71:d5'
- ipmiIp: 172.31.123.6
- ipmiPass: root
+ - eth1: 'E0:97:96:10:63:31'
+ ipmiIp: 192.168.5.177
+ ipmiPass: Huawei12#$
roles:
- compute
- ceph-osd
+
diff --git a/deploy/conf/hardware_environment/huawei-pod5/os-odl_l2-nofeature-ha.yml b/deploy/conf/hardware_environment/huawei-pod5/os-odl_l2-nofeature-ha.yml
index 3b01d83d..05fb2b25 100644
--- a/deploy/conf/hardware_environment/huawei-pod5/os-odl_l2-nofeature-ha.yml
+++ b/deploy/conf/hardware_environment/huawei-pod5/os-odl_l2-nofeature-ha.yml
@@ -8,11 +8,11 @@ ipmiVer: '2.0'
hosts:
- name: host1
- mac: '70:7b:e8:75:71:d3'
+ mac: 'E0:97:96:10:67:83'
interfaces:
- - eth1: '70:7b:e8:75:71:d2'
- ipmiIp: 172.31.123.2
- ipmiPass: root
+ - eth1: 'E0:97:96:10:67:8B'
+ ipmiIp: 192.168.5.173
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -21,11 +21,11 @@ hosts:
- ceph-mon
- name: host2
- mac: '70:7b:e8:75:72:21'
+ mac: 'E0:97:96:10:5A:C8'
interfaces:
- - eth1: '70:7b:e8:75:72:20'
- ipmiIp: 172.31.123.3
- ipmiPass: root
+ - eth1: 'E0:97:96:10:5A:D0'
+ ipmiIp: 192.168.5.174
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -33,11 +33,11 @@ hosts:
- ceph-mon
- name: host3
- mac: '70:7b:e8:75:71:37'
+ mac: 'E0:97:96:10:67:4D'
interfaces:
- - eth1: '70:7b:e8:75:71:36'
- ipmiIp: 172.31.123.4
- ipmiPass: root
+ - eth1: 'E0:97:96:10:67:55'
+ ipmiIp: 192.168.5.175
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -45,22 +45,23 @@ hosts:
- ceph-mon
- name: host4
- mac: '70:7b:e8:75:71:dc'
+ mac: 'E0:97:96:10:5D:44'
interfaces:
- - eth1: '70:7b:e8:75:71:db'
- ipmiIp: 172.31.123.5
- ipmiPass: root
+ - eth1: 'E0:97:96:10:5D:4C'
+ ipmiIp: 192.168.5.176
+ ipmiPass: Huawei12#$
roles:
- compute
- ceph-osd
- name: host5
- mac: '70:7b:e8:75:71:d6'
+ mac: 'E0:97:96:10:63:29'
interfaces:
- - eth1: '70:7b:e8:75:71:d5'
- ipmiIp: 172.31.123.6
- ipmiPass: root
+ - eth1: 'E0:97:96:10:63:31'
+ ipmiIp: 192.168.5.177
+ ipmiPass: Huawei12#$
roles:
- compute
- ceph-osd
+
diff --git a/deploy/conf/hardware_environment/huawei-pod5/os-odl_l3-nofeature-ha.yml b/deploy/conf/hardware_environment/huawei-pod5/os-odl_l3-nofeature-ha.yml
index dbc261a0..8835b30f 100644
--- a/deploy/conf/hardware_environment/huawei-pod5/os-odl_l3-nofeature-ha.yml
+++ b/deploy/conf/hardware_environment/huawei-pod5/os-odl_l3-nofeature-ha.yml
@@ -10,11 +10,11 @@ odl_l3_agent: "Enable"
hosts:
- name: host1
- mac: '70:7b:e8:75:71:d3'
+ mac: 'E0:97:96:10:67:83'
interfaces:
- - eth1: '70:7b:e8:75:71:d2'
- ipmiIp: 172.31.123.2
- ipmiPass: root
+ - eth1: 'E0:97:96:10:67:8B'
+ ipmiIp: 192.168.5.173
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -23,11 +23,11 @@ hosts:
- ceph-mon
- name: host2
- mac: '70:7b:e8:75:72:21'
+ mac: 'E0:97:96:10:5A:C8'
interfaces:
- - eth1: '70:7b:e8:75:72:20'
- ipmiIp: 172.31.123.3
- ipmiPass: root
+ - eth1: 'E0:97:96:10:5A:D0'
+ ipmiIp: 192.168.5.174
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -35,11 +35,11 @@ hosts:
- ceph-mon
- name: host3
- mac: '70:7b:e8:75:71:37'
+ mac: 'E0:97:96:10:67:4D'
interfaces:
- - eth1: '70:7b:e8:75:71:36'
- ipmiIp: 172.31.123.4
- ipmiPass: root
+ - eth1: 'E0:97:96:10:67:55'
+ ipmiIp: 192.168.5.175
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -47,22 +47,23 @@ hosts:
- ceph-mon
- name: host4
- mac: '70:7b:e8:75:71:dc'
+ mac: 'E0:97:96:10:5D:44'
interfaces:
- - eth1: '70:7b:e8:75:71:db'
- ipmiIp: 172.31.123.5
- ipmiPass: root
+ - eth1: 'E0:97:96:10:5D:4C'
+ ipmiIp: 192.168.5.176
+ ipmiPass: Huawei12#$
roles:
- compute
- ceph-osd
- name: host5
- mac: '70:7b:e8:75:71:d6'
+ mac: 'E0:97:96:10:63:29'
interfaces:
- - eth1: '70:7b:e8:75:71:d5'
- ipmiIp: 172.31.123.6
- ipmiPass: root
+ - eth1: 'E0:97:96:10:63:31'
+ ipmiIp: 192.168.5.177
+ ipmiPass: Huawei12#$
roles:
- compute
- ceph-osd
+
diff --git a/deploy/conf/hardware_environment/huawei-pod5/os-onos-nofeature-ha.yml b/deploy/conf/hardware_environment/huawei-pod5/os-onos-nofeature-ha.yml
index cff1bcf2..8ea31401 100644
--- a/deploy/conf/hardware_environment/huawei-pod5/os-onos-nofeature-ha.yml
+++ b/deploy/conf/hardware_environment/huawei-pod5/os-onos-nofeature-ha.yml
@@ -8,11 +8,11 @@ ipmiVer: '2.0'
hosts:
- name: host1
- mac: '70:7b:e8:75:71:d3'
+ mac: 'E0:97:96:10:67:83'
interfaces:
- - eth1: '70:7b:e8:75:71:d2'
- ipmiIp: 172.31.123.2
- ipmiPass: root
+ - eth1: 'E0:97:96:10:67:8B'
+ ipmiIp: 192.168.5.173
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -21,11 +21,11 @@ hosts:
- ceph-mon
- name: host2
- mac: '70:7b:e8:75:72:21'
+ mac: 'E0:97:96:10:5A:C8'
interfaces:
- - eth1: '70:7b:e8:75:72:20'
- ipmiIp: 172.31.123.3
- ipmiPass: root
+ - eth1: 'E0:97:96:10:5A:D0'
+ ipmiIp: 192.168.5.174
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -33,11 +33,11 @@ hosts:
- ceph-mon
- name: host3
- mac: '70:7b:e8:75:71:37'
+ mac: 'E0:97:96:10:67:4D'
interfaces:
- - eth1: '70:7b:e8:75:71:36'
- ipmiIp: 172.31.123.4
- ipmiPass: root
+ - eth1: 'E0:97:96:10:67:55'
+ ipmiIp: 192.168.5.175
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -45,22 +45,23 @@ hosts:
- ceph-mon
- name: host4
- mac: '70:7b:e8:75:71:dc'
+ mac: 'E0:97:96:10:5D:44'
interfaces:
- - eth1: '70:7b:e8:75:71:db'
- ipmiIp: 172.31.123.5
- ipmiPass: root
+ - eth1: 'E0:97:96:10:5D:4C'
+ ipmiIp: 192.168.5.176
+ ipmiPass: Huawei12#$
roles:
- compute
- ceph-osd
- name: host5
- mac: '70:7b:e8:75:71:d6'
+ mac: 'E0:97:96:10:63:29'
interfaces:
- - eth1: '70:7b:e8:75:71:d5'
- ipmiIp: 172.31.123.6
- ipmiPass: root
+ - eth1: 'E0:97:96:10:63:31'
+ ipmiIp: 192.168.5.177
+ ipmiPass: Huawei12#$
roles:
- compute
- ceph-osd
+
diff --git a/deploy/conf/hardware_environment/huawei-pod5/os-onos-sfc-ha.yml b/deploy/conf/hardware_environment/huawei-pod5/os-onos-sfc-ha.yml
index 435d4481..0dc211af 100644
--- a/deploy/conf/hardware_environment/huawei-pod5/os-onos-sfc-ha.yml
+++ b/deploy/conf/hardware_environment/huawei-pod5/os-onos-sfc-ha.yml
@@ -10,11 +10,11 @@ onos_sfc: "Enable"
hosts:
- name: host1
- mac: '70:7b:e8:75:71:d3'
+ mac: 'E0:97:96:10:67:83'
interfaces:
- - eth1: '70:7b:e8:75:71:d2'
- ipmiIp: 172.31.123.2
- ipmiPass: root
+ - eth1: 'E0:97:96:10:67:8B'
+ ipmiIp: 192.168.5.173
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -23,11 +23,11 @@ hosts:
- ceph-mon
- name: host2
- mac: '70:7b:e8:75:72:21'
+ mac: 'E0:97:96:10:5A:C8'
interfaces:
- - eth1: '70:7b:e8:75:72:20'
- ipmiIp: 172.31.123.3
- ipmiPass: root
+ - eth1: 'E0:97:96:10:5A:D0'
+ ipmiIp: 192.168.5.174
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -35,11 +35,11 @@ hosts:
- ceph-mon
- name: host3
- mac: '70:7b:e8:75:71:37'
+ mac: 'E0:97:96:10:67:4D'
interfaces:
- - eth1: '70:7b:e8:75:71:36'
- ipmiIp: 172.31.123.4
- ipmiPass: root
+ - eth1: 'E0:97:96:10:67:55'
+ ipmiIp: 192.168.5.175
+ ipmiPass: Huawei12#$
roles:
- controller
- ha
@@ -47,21 +47,21 @@ hosts:
- ceph-mon
- name: host4
- mac: '70:7b:e8:75:71:dc'
+ mac: 'E0:97:96:10:5D:44'
interfaces:
- - eth1: '70:7b:e8:75:71:db'
- ipmiIp: 172.31.123.5
- ipmiPass: root
+ - eth1: 'E0:97:96:10:5D:4C'
+ ipmiIp: 192.168.5.176
+ ipmiPass: Huawei12#$
roles:
- compute
- ceph-osd
- name: host5
- mac: '70:7b:e8:75:71:d6'
+ mac: 'E0:97:96:10:63:29'
interfaces:
- - eth1: '70:7b:e8:75:71:d5'
- ipmiIp: 172.31.123.6
- ipmiPass: root
+ - eth1: 'E0:97:96:10:63:31'
+ ipmiIp: 192.168.5.177
+ ipmiPass: Huawei12#$
roles:
- compute
- ceph-osd
diff --git a/deploy/launch.sh b/deploy/launch.sh
index 9031cb62..7d0e269c 100755
--- a/deploy/launch.sh
+++ b/deploy/launch.sh
@@ -111,9 +111,8 @@ if [[ "$DEPLOY_HOST" == "true" || $REDEPLOY_HOST == "true" ]]; then
echo $DHA
if [[ `echo $HOST_ROLES | grep opencontrail` ]]; then
ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
- installer_ip="192.168.200.2"
- vgw_ip=$(sshpass -p 'root' ssh $ssh_options root@$installer_ip 'cat /home/opencontrail1.rc')
- externet_cidr=$(sshpass -p 'root' ssh $ssh_options root@$installer_ip 'cat /home/opencontrail2.rc')
+ vgw_ip=$(sshpass -p 'root' ssh $ssh_options root@$MGMT_IP 'cat /home/opencontrail1.rc')
+ externet_cidr=$(sshpass -p 'root' ssh $ssh_options root@$MGMT_IP 'cat /home/opencontrail2.rc')
sudo ip route add $externet_cidr via $vgw_ip dev br-external 2>/dev/null
sleep 60
sudo python ${COMPASS_DIR}/deploy/reset_compute.py $TYPE $DHA
@@ -121,4 +120,24 @@ if [[ "$DEPLOY_HOST" == "true" || $REDEPLOY_HOST == "true" ]]; then
fi
fi
+public_vip=$(get_public_vip)
+set +x
+
figlet -ctf slant Installation Complete!
+echo ""
+echo "+-----------------+----------+--------------------------------+"
+echo "| Dashboard | Web | http://$public_vip/horizon |"
+echo "| | Domain | default |"
+echo "| | User | admin |"
+echo "| | Password | console |"
+echo "+-------------------------------------------------------------+"
+echo "| Compass | IP | $MGMT_IP |"
+echo "| Virtual Machine | User | root |"
+echo "| | Password | root |"
+echo "+-------------------------------------------------------------+"
+echo "| Openrc Path | admin | /opt/admin-openrc.sh |"
+echo "| | demo | /opt/demo-openrc.sh |"
+echo "+-----------------+----------+--------------------------------+"
+echo "NOTE: openrc file is in the controller nodes"
+echo ""
+
diff --git a/deploy/prepare.sh b/deploy/prepare.sh
index 06852a42..c2023223 100755
--- a/deploy/prepare.sh
+++ b/deploy/prepare.sh
@@ -115,6 +115,10 @@ function _pre_env_setup()
cd $WORK_DIR/prepare/jh_env_package
tar -zxvf trusty-jh-ppa.tar.gz
+ if [[ ! -z /etc/apt/sources.list.d ]]; then
+ mv /etc/apt/sources.list.d /etc/apt/sources.list.d.bak
+ fi
+
if [[ -f /etc/apt/apt.conf ]]; then
mv /etc/apt/apt.conf /etc/apt/apt.conf.bak
fi
@@ -159,6 +163,10 @@ EOF
if [[ -f /etc/apt/apt.conf.bak ]]; then
mv /etc/apt/apt.conf.bak /etc/apt/apt.conf
fi
+
+ if [[ ! -z /etc/apt/sources.list.d.bak ]]; then
+ mv /etc/apt/sources.list.d.bak /etc/apt/sources.list.d
+ fi
}
function _pre_pip_setup()