# vim: set ts=2 et:
{{ ubuntu.release }}-{{ os.release }}-nodes:
inherits: openstack-phase1
-
-
-{{ ubuntu.release }}-{{ os.release }}:
- inherits: openstack-phase2
overrides:
{% include 'phase2-overrides.yaml' %}
+{{ ubuntu.release }}-{{ os.release }}:
+ inherits: openstack-phase2
openstack-phase1:
services:
nodes:
charm: "cs:{{ ubuntu.release }}/ubuntu"
+{% if os.ha.mode == 'ha' %}
+ num_units: 5
+{% else %}
num_units: 2
+{% endif %}
ntp:
charm: "local:{{ ubuntu.release }}/ntp"
- relations:
- - - "ntp:juju-info"
- - "nodes:juju-info"
-
-
-openstack-phase2:
- inherits: openstack-phase1
- relations:
-{% include 'relations.yaml' %}
- services:
-{% if os.ha.mode == 'ha' %}
- {% include 'haclusters.yaml' %}
-{% endif %}
{% include 'mysql.yaml' %}
{% include 'ceilometer.yaml' %}
{% include 'ceph.yaml' %}
{% include 'heat.yaml' %}
{% include 'neutron-api.yaml' %}
{% include 'neutron-gateway.yaml' %}
-{% if os.network.controller == 'nosdn' %}{% include 'neutron-ovs.yaml' %}
-{% elif os.network.controller == 'odl' %}{% include 'odl.yaml' %}{% endif %}
+{% if os.network.controller == 'odl' %}{% include 'odl.yaml' %}{% endif %}
+{% if os.ha.mode == 'ha' %}
+ {% include 'haclusters.yaml' %}
+{% endif %}
+
+ relations:
+ - - "ntp:juju-info"
+ - "nodes:juju-info"
+{% if os.ha.mode == 'ha' %}
+ {% include 'harelations.yaml' %}
+{% endif %}
+
+openstack-phase2:
+ inherits: openstack-phase1
+ relations:
+{% include 'relations.yaml' %}
+ services:
+{% include 'subordinate.yaml' %}
- ceilometer-agent:
- charm: "local:{{ ubuntu.release }}/ceilometer-agent"
mongodb:
charm: local:{{ ubuntu.release }}/mongodb
to:
{% for unit_id in to_select(unit_qty() if os.beta.hacluster_ceph_radosgw else 1) %}
- "lxc:nodes={{ unit_id }}"
{% endfor %}
- cinder-ceph:
- charm: "local:{{ ubuntu.release }}/cinder-ceph"
{% endif %}
options:
block-device: None
glance-api-version: 2
- ha-mcastport: 5401
{% if os.ha.mode == 'ha' %}
vip: {{ opnfv.vip.cinder }}
{% endif %}
charm: "local:{{ ubuntu.release }}/glance"
num_units: {{ unit_qty() }}
options:
- ha-mcastport: 5402
{% if os.ha.mode == 'ha' %}
vip: {{ opnfv.vip.glance }}
{% endif %}
+
hacluster-keystone:
charm: "local:{{ ubuntu.release }}/hacluster"
options:
- corosync_key: |
- 'QisjNpoKHLkvyc3PEdDHP5VZjgD0kOk9t0ABPWmCELlu5AgWgnW6bJd34BVXO7VhW+3ZwNQM3W+bZ3pl28ftY4ki4N/S0KLFNia5egFgiA3AH2QXLnokS7OYXuu6GMJJ1S5mDe6P5zU+tfJe/Mebq24u7CgR0gAvohSPRdDTwdY='
+ corosync_transport: unicast
+ cluster_count: 3
hacluster-cinder:
charm: "local:{{ ubuntu.release }}/hacluster"
options:
- corosync_key: |
- 'cc6n5Zv6M2mQ2mUhTx/aKoImQ7q77pKDdkSwBUG5VqoSb23SxnGUsAxH5E8lOeCZ84EURzS71FEb8F9P5YY+2deh0+tdXukoKTugdVmJfarahPpWpEEZRRCigUngdFw/479FOcFCkN1SJtQNqWi1ACYSn1/GRoQ2vP+2byrkV6E='
+ corosync_transport: unicast
+ cluster_count: 3
hacluster-heat:
charm: "local:{{ ubuntu.release }}/hacluster"
options:
- corosync_key: |
- 'tNeFXmOqzytRq7loxLMDaaMqZZXjC7BNfMbcKxSNeIPyBj4lkJwHZyuV7mo0ogzcfVJqLBHBULai+ed9uyWCZJxLXoi+WwTj5AqcXfxfSo9vLCthukJJ4zuKvzeGibZRszwINf32RW9jtXSCPosv8a+9MSg49KD1c9fS20aEuIM='
+ corosync_transport: unicast
+ cluster_count: 3
hacluster-horizon:
charm: "local:{{ ubuntu.release }}/hacluster"
options:
- corosync_key: |
- 'aCVPHw6XYne+Hxv0WPiM3+yEfeIxs0Ly0EMKB494Rdzjf5rE52GcXqqxuvIa/nXJ4GCR+UdKk9FEwcASfYkeu3HDWUld9uTE6pOc+ibWYnybNH7VBfEHW8h9YmQKs3HD2T3wlTcS2irU4CUW7/IKNok4etYdM3iFn1K2ReSGXEI='
+ corosync_transport: unicast
+ cluster_count: 3
hacluster-nova:
charm: "local:{{ ubuntu.release }}/hacluster"
options:
- corosync_key: |
- 'gel86qmEze8dYKYbfqIgRpqapJpKtdYL2hxC1y5nWYBPq7EMf6V8mF01IjeUkSRs14CUDrsPpT4PWeom7EOY2fleuLx/aIuqQUfEDkhf/gvaz7BaU4hrmTCoDBK7/HvEwY+/wu4qkEeckzSRPsm9MYzqnLRshh8yjZJ70xU/mmk='
+ corosync_transport: unicast
+ cluster_count: 3
hacluster-neutron:
charm: "local:{{ ubuntu.release }}/hacluster"
options:
- corosync_key: |
- 'KNhb4++3jlllbnscS5D3qdzOJDsQPEeZ7zOLZJHbkKrRjX9gRCijVVOiv2JCvq03HqQ7LIufQzWGl9Za8qh0f6QmQ3XhFh/Cb/3WaYFj+tEf0zArWv+8miswmM1z4eyTSrTWBq0dTgx1z96wjBxP5HV0+1LWW+3Ei4oZWyRGeR0='
+ corosync_transport: unicast
+ cluster_count: 3
hacluster-glance:
charm: "local:{{ ubuntu.release }}/hacluster"
options:
- corosync_key: |
- 'el1dd8107J5mwQDPS7tEJPZrr0XFfL95+Tku/QG90W5Q5f5SP4W8TRfKvddGmZWZl2lVd1neG5WqaHa1mq/aScJpoflzVAJCvshN7Gd2AjHhLNNugeI8S90j/7wrKUhqiCAlkKaeri2xs5bB5PZ7Z9AHuNZL7SW1al8lxrKhUFI='
+ corosync_transport: unicast
+ cluster_count: 3
hacluster-ceilometer:
charm: "local:{{ ubuntu.release }}/hacluster"
options:
- corosync_key: |
- 'cHkgKGJpdHMgPSA5NjApLgpQcmVzcyBrZXlzIG9uIHlvdXIga2V5Ym9hcmQgdG8gZ2VuZXJhdGUgZW50cm9weSAoYml0cyA9IDEwMDgpLgpXcml0aW5nIGNvcm9zeW5jIGtleSB0byAvZXRjL2Nvcm9zeW5jL2F1dGhrZXkuCg=='
+ corosync_transport: unicast
+ cluster_count: 3
hacluster-mysql:
charm: "local:{{ ubuntu.release }}/hacluster"
options:
- corosync_key: |
- 'Q29yb3N5bmMgQ2x1c3RlciBFbmdpbmUgQXV0aGVudGljYXRpb24ga2V5IGdlbmVyYXRvci4KR2F0aGVyaW5nIDEwMjQgYml0cyBmb3Iga2V5IGZyb20gL2Rldi9yYW5kb20uClByZXNzIGtleXMgb24geW91ciBrZXlib2FyZCB0byBnZW5lcmF0ZSBlbnRyb3B5LgpQcmVzcyBrZXlzIG9uIHlvdXIga2V5Ym9hcmQgdG8gZ2VuZXJhdGUgZW50cm9weSAoYml0cyA9IDkyMCkuClByZXNzIGtleXMgb24geW91ciBrZXlib2FyZCB0byBnZW5lcmF0ZSBlbnRyb3B5IChiaXRzID0gMTAwMCkuCldyaXRpbmcgY29yb3N5bmMga2V5IHRvIC9ldGMvY29yb3N5bmMvYXV0aGtleS4K'
+ corosync_transport: unicast
+ cluster_count: 3
{% if os.beta.hacluster_ceph_radosgw %}
hacluster-ceph-radosgw:
charm: "local:{{ ubuntu.release }}/hacluster"
options:
- corosync_key: |
- 'tk8U/FkH1+dNsvj6IU0C8AST7i/9ylIoCD8kWpPjB+UE2AYR7tkgkjnc4m5dzIYPYTceY7Hnb9xLJ0nlcQLYYFBRAJOg3drNTcVrfh63y9g9La1J1r51YSbOqXq1Q6RUhxP4OQBtDGE6/4NtZwuRPvPGLcI2ENiVm78l8JFkXRw='
+ corosync_transport: unicast
+ cluster_count: 3
{% endif %}
--- /dev/null
+{% if os.ha.mode == 'ha' %}
+
+ - - mysql:ha
+ - hacluster-mysql:ha
+ - - cinder:ha
+ - hacluster-cinder:ha
+ - - heat:ha
+ - hacluster-heat:ha
+ - - glance:ha
+ - hacluster-glance:ha
+ - - keystone:ha
+ - hacluster-keystone:ha
+ - - neutron-api:ha
+ - hacluster-neutron:ha
+ - - nova-cloud-controller:ha
+ - hacluster-nova:ha
+ - - openstack-dashboard:ha
+ - hacluster-horizon:ha
+ - - heat:ha
+ - hacluster-heat:ha
+{% if os.beta.hacluster_ceph_radosgw %}
+ - - ceph-radosgw:ha
+ - hacluster-ceph-radosgw:ha
+{% endif %}
+{% endif %}
options:
admin-password: {{ opnfv.admin_password | default(os.admin.password) }}
admin-token: {{ os.admin.name }}
- ha-mcastport: 5403
{% if os.ha.mode == 'ha' %}
vip: {{ opnfv.vip.keystone }}
{% endif %}
num_units: {{ unit_qty() }}
options:
neutron-security-groups: true
- flat-network-providers: "*"
+{% if os.network.controller == 'nosdn' %}
+ overlay-network-type: vxlan
+{% endif %}
{% if os.network.controller == 'odl' %}
manage-neutron-plugin-legacy-mode: False
{% endif %}
neutron-gateway:
charm: "local:{{ ubuntu.release }}/neutron-gateway"
- num_units: 1
options:
{% if opnfv.ext_port is defined %}
ext-port: {{ opnfv.ext_port }}
neutron-openvswitch:
- charm: "local:{{ ubuntu.release }}/neutron-openvswitch"
- num_units: 1
+ charm: local:{{ ubuntu.release }}/neutron-openvswitch
options:
{% if os.network.dpdk %}
enable-dpdk: true
console-proxy-ip: {{ opnfv.domain }}
{% endif %}
network-manager: Neutron
- service-guard: true
{% if os.ha.mode == 'ha' %}
vip: {{ opnfv.vip.nova }}
{% endif %}
nova-compute:
charm: "local:{{ ubuntu.release }}/nova-compute"
- num_units: {{ opnfv.units }}
+ num_units: {{ opnfv.units - 1 }}
options:
enable-live-migration: true
enable-resize: true
virt-type: lxd
{% endif %}
to:
-{% for unit_id in to_select(opnfv.units) %}
- - "nodes={{ unit_id }}"
+{% for unit_id in to_select(opnfv.units - 1) %}
+ - "nodes={{ unit_id + 1 }}"
{% endfor %}
https-proxy: "http://squid.internal:3128"
to:
- "lxc:nodes=0"
- neutron-api-odl:
- charm: local:{{ ubuntu.release }}/neutron-api-odl
- options:
- overlay-network-type: 'vxlan'
- security-groups: True
- openvswitch-odl:
- charm: local:{{ ubuntu.release }}/openvswitch-odl
{% if opnfv.spaces_dict.data is defined %}
- os-data-network: {{ opnfv.spaces_dict.data.cidr }}
+ os-data-network: {{ opnfv.dataNetwork }}
{% endif %}
{% if opnfv.spaces_dict.storage is defined %}
- ceph-cluster-network: {{ opnfv.spaces_dict.storage.cidr }}
+ #ceph-cluster-network: {{ opnfv.spaces_dict.storage.cidr }}
{% endif %}
+{% if os.network.ipv6 == 'true' %}
prefer-ipv6: {{ os.network.ipv6 }}
+{% endif %}
{% if os.network.dvr %}
enable-dvr: true
{% endif %}
l2-population: true
{% endif %}
region: {{ os.region }}
- #source: "cloud:{{ ubuntu.release }}-{{ os.release }}"
+{% if os.release == 'trusty' %}
+ source: "cloud:{{ ubuntu.release }}-{{ os.release }}"
+{% endif %}
openstack-origin: "cloud:{{ ubuntu.release }}-{{ os.release }}"
+{% if os.ha.mode == 'nonha' %}
ceph-osd-replication-count: {{ os.storage.ceph_replica }}
- admin-role: {{ os.admin_role }}
- keystone-admin-role: {{ os.admin_role }}
+{% endif %}
+ admin-role: {{ os.admin.role }}
+ keystone-admin-role: {{ os.admin.role }}
{% if os.beta.public_api %}
use-internal-endpoints: true
+{% if opnfv.domain is defined %}
os-public-hostname: api.{{ opnfv.domain }}
{% endif %}
+{% endif %}
-{% if os.ha.mode == 'ha' %}
- - - mysql:ha
- - hacluster-mysql:ha
- - - cinder:ha
- - hacluster-cinder:ha
- - - heat:ha
- - hacluster-heat:ha
- - - glance:ha
- - hacluster-glance:ha
- - - keystone:ha
- - hacluster-keystone:ha
- - - neutron-api:ha
- - hacluster-neutron:ha
- - - nova-cloud-controller:ha
- - hacluster-nova:ha
- - - openstack-dashboard:ha
- - hacluster-horizon:ha
- - - heat:ha
- - hacluster-heat:ha
-{% if os.beta.hacluster_ceph_radosgw %}
- - - ceph-radosgw:ha
- - hacluster-ceph-radosgw:ha
-{% endif %}
-{% endif %}
- - nova-compute:amqp
- rabbitmq-server:amqp
- - neutron-gateway:amqp
--- /dev/null
+ ceilometer-agent:
+ charm: local:{{ ubuntu.release }}/ceilometer-agent
+{% if opnfv.storage_dict.ceph is defined %}
+ cinder-ceph:
+ charm: local:{{ ubuntu.release }}/cinder-ceph
+{% endif %}
+{% if os.network.controller == 'nosdn' %}{% include 'neutron-ovs.yaml' %}
+{% elif os.network.controller == 'odl' %}
+ neutron-api-odl:
+ charm: local:{{ ubuntu.release }}/neutron-api-odl
+ options:
+ overlay-network-type: 'vxlan'
+ security-groups: True
+ openvswitch-odl:
+ charm: local:{{ ubuntu.release }}/openvswitch-odl
+{% elif os.network.controller == 'nons' %}
+ openvswitch-onos:
+ charm: local:{{ ubuntu.release }}/openvswitch-onos
+ neutron-api-onos:
+ charm: local:{{ ubuntu.release }}/neutron-api-onos
+ options:
+ overlay-network-type: 'vxlan'
+ security-groups: True
+{% endif %}
+{% if os.lxd is defined %}
+ lxd:
+ charm: local:{{ ubuntu.release }}/lxd
+{% endif %}
ubuntu:
release: xenial
-
os:
release: mitaka
ha:
opnfvlabcfg['opnfv']={'ext-port':'','floating-ip-range':'','dataNetwork':'','ceph-disk':'/srv/',\
'storageNetwork':'','interface-enable':'','publicNetwork':'',\
- 'os-domain-name':''}
+ 'os-domain-name':'','vip':{'rabbitmq':'','dashboard':'','glance':'',\
+ 'keystone':'','ceilometer':'','mysql':'',\
+ 'nova':'','neutron':'','heat':'','cinder':''}\
+ }
+
opnfvcfg['demo-maas']['maas']['apt_sources'].append("ppa:maas/stable")
opnfvcfg['demo-maas']['maas']['apt_sources'].append("ppa:juju/stable")
opnfvlabcfg["opnfv"]["ceph-disk"]=labcfg["opnfv"]["storage"][0]["disk"]
opnfvlabcfg["opnfv"]["interface-enable"]=",".join(list(set(ifnamelist)))
+#setup vip addresss for HA
+opnfvlabcfg["opnfv"]["vip"]["rabbitmq"] = opnfvlabcfg["opnfv"]["admNetwork"]+"0"
+opnfvlabcfg["opnfv"]["vip"]["dashboard"] = opnfvlabcfg["opnfv"]["admNetwork"]+"1"
+opnfvlabcfg["opnfv"]["vip"]["glance"] = opnfvlabcfg["opnfv"]["admNetwork"]+"2"
+opnfvlabcfg["opnfv"]["vip"]["keystone"] = opnfvlabcfg["opnfv"]["admNetwork"]+"3"
+opnfvlabcfg["opnfv"]["vip"]["ceilometer"] = opnfvlabcfg["opnfv"]["admNetwork"]+"4"
+opnfvlabcfg["opnfv"]["vip"]["mysql"] = opnfvlabcfg["opnfv"]["admNetwork"]+"5"
+opnfvlabcfg["opnfv"]["vip"]["nova"] = opnfvlabcfg["opnfv"]["admNetwork"]+"6"
+opnfvlabcfg["opnfv"]["vip"]["neutron"] = opnfvlabcfg["opnfv"]["admNetwork"]+"7"
+opnfvlabcfg["opnfv"]["vip"]["heat"] = opnfvlabcfg["opnfv"]["admNetwork"]+"8"
+opnfvlabcfg["opnfv"]["vip"]["cinder"] = opnfvlabcfg["opnfv"]["admNetwork"]+"9"
+
osdomname = labcfg["lab"]["racks"][0]["osdomainname"]
+
if osdomname:
opnfvlabcfg["opnfv"]["os-domain-name"] = labcfg["lab"]["racks"][0]["osdomainname"]
+ opnfvlabcfg["opnfv"]["domain"] = labcfg["lab"]["racks"][0]["osdomainname"]
+
+opnfvlabcfg["opnfv"]["ext_port"]=labcfg["lab"]["racks"][0]["ext-port"]
+opnfvlabcfg["opnfv"]["units"]=len(labcfg["lab"]["racks"][0]["nodes"])
+opnfvlabcfg["opnfv"]["admin_password"]="openstack"
+opnfvlabcfg["opnfv"]["storage"]=labcfg["opnfv"]["storage"]
with open('deployment.yaml', 'wa') as opnfvf:
yaml.dump(opnfvcfg, opnfvf, default_flow_style=False)
-#!/usr/bin/python3
+#!/usr/bin/python
# -*- coding: utf-8 -*-
from optparse import OptionParser
dns: 192.168.1.1
osdomainname: pod1.opnfv.fr
opnfv:
-## New items
- units: 4
- admin_password: openstack
- domain: pod1.opnfv.fr
- ext_port: eth1
- vip:
- ceilometer: 192.168.1.24
- cinder: 192.168.1.29
- dashboard: 192.168.1.21
- glance: 192.168.1.22
- heat: 192.168.1.28
- keystone: 192.168.1.23
- mysql: 192.168.1.25
- neutron: 192.168.1.27
- nova: 192.168.1.26
- rabbitmq: 192.168.1.20
release: c
-# items that should be in default_deployment_config.yaml
- distro: trusty
+ distro: xenial
type: nonha
- openstack: liberty
+ openstack: mitaka
sdncontroller:
- - type: nosdn
+ - type: odl
feature: odl_l2
-# END OF SCENARIO ITEMS
storage:
- type: ceph
disk: /dev/sdb /dev/sdc