diff options
-rwxr-xr-x | ci/00-maasdeploy.sh | 16 | ||||
-rwxr-xr-x | ci/02-deploybundle.sh | 1 | ||||
-rw-r--r-- | ci/config_tpl/public-api-proxy.yaml | 22 | ||||
-rwxr-xr-x | ci/deploy.sh | 8 | ||||
-rw-r--r-- | ci/genmaasconfig.py | 339 |
5 files changed, 25 insertions, 361 deletions
diff --git a/ci/00-maasdeploy.sh b/ci/00-maasdeploy.sh index 14937730..0dfff050 100755 --- a/ci/00-maasdeploy.sh +++ b/ci/00-maasdeploy.sh @@ -139,13 +139,6 @@ fi # Init Juju juju init -f -# Backup deployment.yaml and deployconfig.yaml in .juju folder -cp ./deployment.yaml ~/.juju/ - -if [ -e ./deployconfig.yaml ]; then - cp ./deployconfig.yaml ~/.juju/ -fi - # # MAAS deploy # @@ -156,6 +149,15 @@ sudo chown $USER:$USER environments.yaml echo "... Deployment of maas finish ...." +# Backup deployment.yaml and deployconfig.yaml in .juju folder + +cp ./environments.yaml ~/.juju/ + +if [ -e ./deployconfig.yaml ]; then + cp ./deployconfig.yaml ~/.juju/ + cp ./labconfig.yaml ~/.juju/ +fi + # # MAAS Customization # diff --git a/ci/02-deploybundle.sh b/ci/02-deploybundle.sh index 7003bcbb..a62aff9f 100755 --- a/ci/02-deploybundle.sh +++ b/ci/02-deploybundle.sh @@ -46,6 +46,7 @@ if [ -e ~/.juju/deployment.yaml ]; then cp ~/.juju/deployment.yaml ./deployment.yaml if [ -e ~/.juju/deployconfig.yaml ]; then cp ~/.juju/deployconfig.yaml ./deployconfig.yaml + cp ~/.juju/labconfig.yaml ./lanconfig.yaml extport=`grep "ext-port" deployconfig.yaml | cut -d ' ' -f 4 | sed -e 's/ //' | tr ',' ' '` datanet=`grep "dataNetwork" deployconfig.yaml | cut -d ' ' -f 4 | sed -e 's/ //'` admnet=`grep "admNetwork" deployconfig.yaml | cut -d ' ' -f 4 | sed -e 's/ //'` diff --git a/ci/config_tpl/public-api-proxy.yaml b/ci/config_tpl/public-api-proxy.yaml index 726945fe..b746850c 100644 --- a/ci/config_tpl/public-api-proxy.yaml +++ b/ci/config_tpl/public-api-proxy.yaml @@ -1,13 +1,13 @@ -haproxy: - charm: "local:{{ opnfv.distro }}/haproxy" - num_units: 1 - options: - services: |- + haproxy: + charm: "local:{{ opnfv.distro }}/haproxy" + num_units: 1 + options: + services: |- {% for service in public_api_services.values() %} - - service_name: {{ service.name }} - service_host: {{ public_api_ip }} - service_port: {{ service.port }} - servers: [[{{ service.name }},{{ service.ip }},{{ service.port }}]] + - service_name: {{ service.name }} + service_host: {{ public_api_ip }} + service_port: {{ service.port }} + servers: [[{{ service.name }},{{ service.ip }},{{ service.port }}]] {% endfor %} - to: - - "nodes=0" + to: + - "nodes=0" diff --git a/ci/deploy.sh b/ci/deploy.sh index b69b5baa..bb7e63bc 100755 --- a/ci/deploy.sh +++ b/ci/deploy.sh @@ -167,10 +167,10 @@ echo "...... deploy public api proxy ......" if [ "$opnfvlab" == "orangepod1" ] && [ "$opnfvsdn" == "nosdn" ]; then # only for first test phase PUB_API_NET=$(grep floating-ip-range ./labconfig.yaml |cut -d/ -f2) PUB_API_IP=$(grep public-api-ip ./labconfig.yaml |cut -d: -f2) - juju run --unit nodes/0 "sudo ip a a ${PUB_API_IP}/${PUB_API_NET} dev br-ex" - juju run --unit nodes/0 "sudo ip l set dev br-ex up" - python genPublicAPIProxyBundle.py -l labconfig.yaml > haproxy.bundle.yaml - juju-deployer -vW -d -t 7200 -r 5 -c haproxy.bundle.yaml haproxy + juju run --unit nodes/0 "sudo ip a a ${PUB_API_IP}/${PUB_API_NET} dev br-ex" || true + juju run --unit nodes/0 "sudo ip l set dev br-ex up" || true + python genPublicAPIProxyBundle.py -l labconfig.yaml >> bundles.yaml + juju-deployer -vW -d -t 7200 -r 5 -c bundles.yaml $opnfvdistro-"$openstack" || true fi echo "...... deployment finished ......." diff --git a/ci/genmaasconfig.py b/ci/genmaasconfig.py deleted file mode 100644 index 0ca0b778..00000000 --- a/ci/genmaasconfig.py +++ /dev/null @@ -1,339 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -""" -Deploy JOID -""" - -import yaml -import socket -import fcntl -import struct -import getpass - - -def get_ip_address(ifname): - """Get local IP""" - s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - return socket.inet_ntoa(fcntl.ioctl( - s.fileno(), - 0x8915, # SIOCGIFADDR - struct.pack('256s', ifname[:15]) - )[20:24]) - -with open('labconfig.yaml', 'r') as labf: - try: - labcfg = yaml.load(labf) - except yaml.YAMLError as exc: - print(exc) - - -opnfvcfg = {} -opnfvlabcfg = {} - - -def get_from_dict(dataDict, mapList): - return reduce(lambda d, k: d[k], mapList, dataDict) - -# lets define the bootstrap section -opnfvcfg['demo-maas'] = {'juju-bootstrap': {'memory': 4096, - 'name': "bootstrap", - 'pool': "default", - 'vcpus': 4, - 'disk_size': "60G", - 'arch': "amd64", - 'interfaces': []}, - 'maas': {'memory': 4096, - 'pool': "default", - 'vcpus': 4, - 'disk_size': "160G", - 'arch': "amd64", - 'interfaces': [], - 'name': "", - 'network_config': [], - 'node_group_ifaces': [], - 'nodes': [], - 'password': 'ubuntu', - 'user': 'ubuntu', - 'release': 'trusty', - 'apt_sources': [], - 'ip_address': '', - 'boot_source': { - 'keyring_filename': "/usr/share/keyrings/ubuntu-cloudimage-keyring.gpg", - 'url': "http://maas.ubuntu.com/images/ephemeral-v2/releases/", - 'selections': { - '1': { - 'arches': 'amd64', - 'labels': 'release', - 'os': 'ubuntu', - 'release': 'xenial', - 'subarches': '*' - } - } - }, - 'settings': {'maas_name': '', - 'upstream_dns': '', - 'main_archive': "http://archive.ubuntu.com/ubuntu" - }, - 'virsh': {'rsa_priv_key': '/home/ubuntu/.ssh/id_rsa', - 'rsa_pub_key': '/home/ubuntu/.ssh/id_rsa.pub', - 'uri': '' - } - } - } - -opnfvlabcfg['opnfv'] = {'ext-port': '', - 'floating-ip-range': '', - 'dataNetwork': '', - 'ceph-disk': '/srv/', - 'storageNetwork': '', - 'interface-enable': '', - 'publicNetwork': '', - '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") - -# lets modify the maas general settings: - -updns = get_from_dict(labcfg, ["lab", "racks", 0, "dns"]) -opnfvcfg["demo-maas"]["maas"]["settings"]["upstream_dns"] = updns - -location = get_from_dict(labcfg, ["lab", "location"]) -rack = get_from_dict(labcfg, ["lab", "racks", 0, "rack"]) -value = location+rack - -opnfvcfg["demo-maas"]["maas"]["settings"]["maas_name"] = value -opnfvcfg["demo-maas"]["maas"]["name"] = "opnfv-"+value - -ethbrAdm = "" -ethbrAdmin = "" - -c = 0 -y = 0 -# z = 0 - -while c < len(labcfg["opnfv"]["spaces"]): - brtype = get_from_dict(labcfg, ["opnfv", "spaces", c, "type"]) - brname = get_from_dict(labcfg, ["opnfv", "spaces", c, "bridge"]) - brcidr = get_from_dict(labcfg, ["opnfv", "spaces", c, "cidr"]) -# - if brtype == "admin": - ethbrAdmin = get_from_dict(labcfg, ["opnfv", "spaces", c, "bridge"]) - brgway = get_from_dict(labcfg, ["opnfv", "spaces", c, "gateway"]) - tmpcidr = brcidr[:-4] - opnfvlabcfg["opnfv"]["admNetwork"] = tmpcidr+"2" - opnfvlabcfg["opnfv"]["admNetgway"] = brgway - - nodegroup = {"device": "eth"+str(y), - "ip": tmpcidr+"5", - "subnet_mask": "255.255.255.0", - "broadcast_ip": tmpcidr+"255", - "router_ip": brgway, - "static_range": {"high": tmpcidr+"80", - "low": tmpcidr+"50"}, - "dynamic_range": {"high": tmpcidr+"250", - "low": tmpcidr+"81"}} - - ethbrAdm = ('auto lo\n' - ' iface lo inet loopback\n\n' - 'auto eth'+str(y)+'\n' - ' iface eth'+str(y)+' inet static\n' - ' address '+tmpcidr+'5\n' - ' netmask 255.255.255.0\n' - ' gateway '+brgway+'\n' - ' dns-nameservers '+updns+' '+tmpcidr+'5 127.0.0.1\n') - - opnfvcfg['demo-maas']['maas']['ip_address'] = tmpcidr+"5" - opnfvcfg['demo-maas']['maas']['interfaces'].append( - "bridge="+brname+",model=virtio") - opnfvcfg['demo-maas']['juju-bootstrap']['interfaces'].append( - "bridge="+brname+",model=virtio") - opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"].append(nodegroup) - y = y+1 - elif brtype: - opnfvcfg["demo-maas"]["maas"]["interfaces"].append( - "bridge="+brname+",model=virtio") - brgway = get_from_dict(labcfg, ["opnfv", "spaces", c, "gateway"]) - if brtype != "external": - tmpcidr = brcidr[:-4] - if brgway: - nodegroup = {"device": "eth"+str(y), - "ip": tmpcidr+"5", - "subnet_mask": "255.255.255.0", - "broadcast_ip": tmpcidr+"255", - "management": 1, - "router_ip": brgway, - "static_range": {"high": tmpcidr+"80", - "low": tmpcidr+"50"}, - "dynamic_range": {"high": tmpcidr+"250", - "low": tmpcidr+"81"}} - else: - nodegroup = {"device": "eth"+str(y), - "ip": tmpcidr+"5", - "subnet_mask": "255.255.255.0", - "broadcast_ip": tmpcidr+"255", - "management": 1, - "static_range": {"high": tmpcidr+"80", - "low": tmpcidr+"50"}, - "dynamic_range": {"high": tmpcidr+"250", - "low": tmpcidr+"81"}} - opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"].append( - nodegroup) - ethbrAdm = (ethbrAdm+'\n' - 'auto eth'+str(y)+'\n' - ' iface eth'+str(y)+' inet static\n' - ' address '+tmpcidr+'5\n' - ' netmask 255.255.255.0\n') - y = y+1 - if brtype == "public": - opnfvcfg["demo-maas"]["juju-bootstrap"]["interfaces"].append( - "bridge="+brname+",model=virtio") - opnfvlabcfg["opnfv"]["publicNetwork"] = brcidr - if brtype == "external": - ipaddress = get_from_dict(labcfg, ["opnfv", "spaces", - c, "ipaddress"]) - ethbrAdm = (ethbrAdm+'\n' - 'auto eth'+str(y)+'\n' - ' iface eth'+str(y)+' inet static\n' - ' address '+ipaddress+'\n' - ' netmask 255.255.255.0\n') - opnfvcfg["demo-maas"]["juju-bootstrap"]["interfaces"].append( - "bridge="+brname+",model=virtio") - if brtype == "data": - opnfvlabcfg["opnfv"]["dataNetwork"] = brcidr - if brtype == "storage": - opnfvlabcfg["opnfv"]["storageNetwork"] = brcidr - - c = c+1 - -# lets modify the maas general settings: -value = get_ip_address(ethbrAdmin) -value = "qemu+ssh://"+getpass.getuser()+"@"+value+"/system" -opnfvcfg['demo-maas']['maas']['virsh']['uri'] = value -opnfvcfg['demo-maas']['maas']['network_config'] = ethbrAdm - -if len(labcfg["lab"]["racks"][0]["nodes"]) < 1: - print("looks like virtual deployment where nodes were not defined") - opnfvcfg["demo-maas"]["maas"]["nodes"].remove() - exit() - -# lets insert the node details here: -c = 0 -ifnamelist = [] -# -while c < len(labcfg["lab"]["racks"][0]["nodes"]): - valuemac = [] - y = 0 - # setup value of name and tags accordigly - noderoleslist = labcfg["lab"]["racks"][0]["nodes"][c]["roles"] - noderoles = " ".join(noderoleslist) - - valuetype = get_from_dict(labcfg, ["lab", "racks", 0, "nodes", - c, "power", "type"]) - namevalue = labcfg["lab"]["racks"][0]["nodes"][c]["name"] - valuearc = get_from_dict(labcfg, ["lab", "racks", 0, - "nodes", c, "architecture"]) - # setup value of architecture - if valuearc == "x86_64": - valuearc = "amd64/generic" - - if valuetype == "wakeonlan": - macvalue = get_from_dict(labcfg, ["lab", "racks", 0, "nodes", - c, "power", "mac_address"]) - power = {"type": "ether_wake", "mac_address": macvalue} - if valuetype == "ipmi": - valueaddr = get_from_dict(labcfg, ["lab", "racks", 0, "nodes", c, - "power", "address"]) - valueuser = get_from_dict(labcfg, ["lab", "racks", 0, "nodes", c, - "power", "user"]) - valuepass = get_from_dict(labcfg, ["lab", "racks", 0, "nodes", c, - "power", "pass"]) - valuedriver = "LAN_2_0" - power = {"type": valuetype, "address": valueaddr, "user": valueuser, - "pass": valuepass, "driver": valuedriver} - - opnfvcfg["demo-maas"]["maas"]["nodes"].append( - {"name": namevalue, - "architecture": valuearc, - "interfaces": [], - "mac_addresses": [], - "power": power, - 'tags': noderoles}) - - y = 0 - while y < len(labcfg["lab"]["racks"][0]["nodes"][c]["nics"]): - valuespaces = labcfg["lab"]["racks"][0]["nodes"][c][ - "nics"][y]["spaces"] - valueifname = labcfg["lab"]["racks"][0]["nodes"][c][ - "nics"][y]["ifname"] - if "admin" not in valuespaces: - ifnamelist += [valueifname] - valueifmac = labcfg["lab"]["racks"][0]["nodes"][c]["nics"][y]["mac"][0] - valuemac += labcfg["lab"]["racks"][0]["nodes"][c]["nics"][y]["mac"] - opnfvcfg["demo-maas"]["maas"]["nodes"][c]["interfaces"].append( - {"name": valueifname, - "mac_address": valueifmac, - "mode": "auto"}) - y = y+1 - - if valueifmac: - opnfvcfg["demo-maas"]["maas"]["nodes"][c]['mac_addresses'] = valuemac - - c = c+1 - -opnfvlabcfg["opnfv"]["floating-ip-range"] =\ - labcfg["lab"]["racks"][0]["floating-ip-range"] -opnfvlabcfg["opnfv"]["ext-port"] =\ - labcfg["lab"]["racks"][0]["ext-port"] -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"] -opnfvlabcfg["opnfv"]["spaces"] = labcfg["opnfv"]["spaces"] - -with open('deployment.yaml', 'wa') as opnfvf: - yaml.dump(opnfvcfg, opnfvf, default_flow_style=False) - -with open('deployconfig.yaml', 'wa') as opnfvf: - yaml.dump(opnfvlabcfg, opnfvf, default_flow_style=False) |