modified to support the custom lab where data will be provided 75/14275/2
authorNarinder Gupta <narinder.gupta@canonical.com>
Tue, 17 May 2016 23:47:10 +0000 (18:47 -0500)
committerNarinder Gupta <narinder.gupta@canonical.com>
Wed, 18 May 2016 00:34:54 +0000 (19:34 -0500)
fom labconfig.yaml file.

Change-Id: Ic6ff690175de1029909b89590226847b78b6e437
Signed-off-by: Narinder Gupta <narinder.gupta@canonical.com>
ci/02-maasdeploy.sh
ci/deploy.py
ci/maas/deployment.yaml
labconfig/default/labconfig.yaml [new file with mode: 0644]

index d569154..131e705 100755 (executable)
@@ -4,8 +4,44 @@ set -ex
 
 virtinstall=0
 
+#install the packages needed
+sudo apt-add-repository ppa:maas-deployers/stable -y
+sudo apt-add-repository ppa:juju/stable -y
+sudo apt-add-repository ppa:maas/stable -y
+sudo apt-add-repository cloud-archive:liberty -y
+sudo apt-get update -y
+sudo apt-get dist-upgrade -y
+sudo apt-get install openssh-server git maas-deployer juju juju-deployer maas-cli python-pip python-openstackclient gsutil -y
+
 cp maas/deployment.yaml ./deployment.yaml
-cp ../labconfig/intel/pod6/labconfig.yaml ./
+
+#first parameter should be custom and second should be either 
+# absolute location of file (including file name) or url of the 
+# file to download.
+
+if [ "$1" == "custom" ]; then
+    if [ -e $2 ]; then
+        cp $2 ./labconfig.yaml || true
+        python deploy.py
+    else
+        wget $2 -t 3 -T 10 -O ./labconfig.yaml || true
+        count=`wc -l labconfig.yaml  | cut -d " " -f 1`
+
+        if [ $count -lt 10 ]; then
+            rm -rf labconfig.yaml
+        else
+            python deploy.py
+        fi
+    fi
+
+    if [ ! -e ./labconfig.yaml ]; then
+        virtinstall=1
+        cp ../labconfig/default/labconfig.yaml ./
+        python deploy.py
+    fi
+fi
+
+exit 1
 
 case "$1" in
     'intelpod5' )
@@ -19,7 +55,9 @@ case "$1" in
         python deploy.py
         ;;
     'intelpod9' )
-        cp maas/intel/pod9/deployment.yaml ./deployment.yaml
+        cp ../labconfig/intel/pod6/labconfig.yaml ./
+        #to be removed later once converted for all labs.
+        python deploy.py
         ;;
     'orangepod1' )
         cp maas/orange/pod1/deployment.yaml ./deployment.yaml
@@ -78,14 +116,6 @@ sudo virsh pool-define-as default --type dir --target /var/lib/libvirt/images/ |
 sudo virsh pool-start default || true
 sudo virsh pool-autostart default || true
 
-sudo apt-add-repository ppa:maas-deployers/stable -y
-sudo apt-add-repository ppa:juju/stable -y
-sudo apt-add-repository ppa:maas/stable -y
-sudo apt-add-repository cloud-archive:liberty -y
-sudo apt-get update -y
-sudo apt-get dist-upgrade -y
-sudo apt-get install openssh-server git maas-deployer juju juju-deployer maas-cli python-pip python-openstackclient gsutil -y
-
 # To avoid problem between apiclient/maas_client and apiclient from google
 # we remove the package google-api-python-client from yardstick installer
 if [ $(pip list |grep google-api-python-client |wc -l) == 1 ]; then
index a4e2303..83992b4 100644 (file)
@@ -26,9 +26,6 @@ def setInDict(dataDict, mapList, value):
 def getFromDict(dataDict, mapList):
     return reduce(lambda d, k: d[k], mapList, dataDict)
 
-if len(labcfg["labconfig"]["nodes"]) < 3:
-    print("minimum three nodes are needed for opnfv architecture deployment")
-    exit() 
 
 # lets modify the maas general settings:
 
@@ -52,21 +49,23 @@ while c < len(labcfg["labconfig"]["bridges"]):
     brname = getFromDict(labcfg, ["labconfig","bridges",c,"bridge"])
     brcidr = getFromDict(labcfg, ["labconfig","bridges",c,"cidr"])
     if brtype == "admin":
+        if c > 0:
+            opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"].append({})
         ethbrAdmin = getFromDict(labcfg, ["labconfig","bridges",c,"bridge"])
         brgway = getFromDict(labcfg, ["labconfig","bridges",c,"gateway"])
         tmpcidr = brcidr[:-4]
         setInDict(opnfvcfg, ["demo-maas", "maas", "ip_address"], tmpcidr+"5")
         opnfvcfg["demo-maas"]["maas"]["interfaces"][y] = "bridge="+brname+",model=virtio" 
-        opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["device"] = "eth"+str(y) 
-        opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["ip"] = tmpcidr+"5" 
-        opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["subnet_mask"] = "255.255.255.0" 
-        opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["broadcast_ip"] = tmpcidr+"255" 
-        opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["router_ip"] = brgway 
-        opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["static_range"]["low"] = tmpcidr+"50" 
-        opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["static_range"]["high"] = tmpcidr+"80" 
-        opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["dynamic_range"]["low"] = tmpcidr+"81" 
-        opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["dynamic_range"]["high"] = tmpcidr+"250" 
+
+        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"}}
+
+        opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y] = nodegroup
+
         opnfvcfg["demo-maas"]["juju-bootstrap"]["interfaces"][z] = "bridge="+brname+",model=virtio" 
+
         ethbrAdm = ('auto lo\n'
                     '    iface lo inet loopback\n\n'
                     'auto eth'+str(y)+'\n'
@@ -81,18 +80,21 @@ while c < len(labcfg["labconfig"]["bridges"]):
         opnfvcfg["demo-maas"]["maas"]["interfaces"].append("bridge="+brname+",model=virtio")
         brgway = getFromDict(labcfg, ["labconfig","bridges",c,"gateway"])
         if brtype != "external":
+            if c > 0:
+                opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"].append({})
             tmpcidr = brcidr[:-4]
-            opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["device"] = "eth"+str(y) 
-            opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["ip"] = tmpcidr+"5" 
-            opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["subnet_mask"] = "255.255.255.0" 
-            opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["broadcast_ip"] = tmpcidr+"255" 
             if brgway:
-                opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["router_ip"] = brgway 
-            opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["management"] = 1 
-            opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["static_range"]["low"] = tmpcidr+"20" 
-            opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["static_range"]["high"] = tmpcidr+"150" 
-            opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["dynamic_range"]["low"] = tmpcidr+"151" 
-            opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["dynamic_range"]["high"] = tmpcidr+"200" 
+                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"][y] = nodegroup
             ethbrAdm  = (ethbrAdm+'\n'
                         'auto eth'+str(y)+'\n'
                         '    iface eth'+str(y)+' inet static\n'
@@ -122,6 +124,11 @@ value = get_ip_address(ethbrAdmin)
 value = "qemu+ssh://"+getpass.getuser()+"@"+value+"/system"
 setInDict(opnfvcfg, ["demo-maas", "maas", "virsh", "uri"], value)
 
+if len(labcfg["labconfig"]["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
 
index 87eb9e2..e7df95c 100755 (executable)
@@ -33,26 +33,6 @@ demo-maas:
     network_config: 
     node_group_ifaces:
     - broadcast_ip: 
-      dynamic_range:
-        high: 
-        low: 
-      static_range:
-        high: 
-        low: 
-    - broadcast_ip: 
-      dynamic_range:
-        high: 
-        low: 
-      static_range:
-        high: 
-        low: 
-    - broadcast_ip: 
-      dynamic_range:
-        high: 
-        low: 
-      static_range:
-        high: 
-        low: 
     nodes:
     - name: 
     password: ubuntu
diff --git a/labconfig/default/labconfig.yaml b/labconfig/default/labconfig.yaml
new file mode 100644 (file)
index 0000000..857237a
--- /dev/null
@@ -0,0 +1,155 @@
+# This file defines the deployment for the MAAS environment which is to be
+# deployed and automated.
+demo-maas:
+    # Contains the virtual machine parameters for creating the Juju bootstrap
+    # node virtual machine
+    juju-bootstrap:
+        name: bootstrap
+        interfaces: ['bridge=virbr0,model=virtio']
+        memory: 2048
+        vcpus: 2
+        arch: amd64
+        pool: default
+        disk_size: 20G
+#        sticky_ip_address:
+#            requested_address: 192.168.122.25
+
+    maas:
+        # Defines the general setup for the MAAS environment, including the
+        # username and password for the host as well as the MAAS server.
+        user: ubuntu
+        password: ubuntu
+
+        # Contains the virtual machine parameters for creating the MAAS virtual
+        # server. Here you can configure the name of the virsh domain, the
+        # parameters for how the network is attached.
+        name: opnfv-maas
+        interfaces: ['bridge=virbr0,model=virtio']
+        memory: 4096
+        vcpus: 2
+        arch: amd64
+        pool: default
+        disk_size: 60G
+        release: trusty
+
+        # Apt http proxy setting(s)
+        apt_http_proxy:
+
+        apt_sources:
+          - ppa:maas/stable
+          - ppa:juju/stable
+
+        boot_source:
+            url: http://maas.ubuntu.com/images/ephemeral-v2/daily/
+            keyring_filename: /usr/share/keyrings/ubuntu-cloudimage-keyring.gpg
+            exclusive: true
+            selections:
+                1:
+                    release: trusty
+                    os: ubuntu
+                    arches: amd64
+                    subarches: "*"
+                    labels: daily
+                2:
+                    release: xenial
+                    os: ubuntu
+                    arches: amd64
+                    subarches: "*"
+                    labels: daily
+
+        # Virsh power settings
+        # Specifies the uri and keys to use for virsh power control of the 
+        # juju virtual machine. If the uri is omitted, the value for the
+        # --remote is used. If no power settings are desired, then do not
+        # supply the virsh block.
+        virsh:
+            rsa_priv_key: /home/ubuntu/.ssh/id_rsa
+            rsa_pub_key: /home/ubuntu/.ssh/id_rsa.pub
+            uri: qemu+ssh://ubuntu@192.168.122.1/system
+
+        # Defines the IP Address that the configuration script will use to
+        # to access the MAAS controller via SSH.
+        ip_address: 192.168.122.2
+
+        # This section allows the user to set a series of options on the
+        # MAAS server itself. The list of config options can be found in
+        # the upstream MAAS documentation:
+        #  - http://maas.ubuntu.com/docs/api.html#maas-server
+        settings:
+            main_archive: http://us.archive.ubuntu.com/ubuntu
+            upstream_dns: 192.168.122.1
+            maas_name: automaas
+            # kernel_opts: "console=tty0 console=ttyS1,115200n8"
+            ntp_server: ntp.ubuntu.com
+
+        # This section is used to define the networking parameters for when
+        # the node first comes up. It is fed into the meta-data cloud-init
+        # configuration and is used to configure the networking piece of the
+        # service. The contents of this section are written directly to the
+        # /etc/network/interfaces file.
+        #
+        # Please note, this is slightly different than the
+        # node-group-interfaces section below. This will configure the
+        # machine's networking params, and the node-group-interfaces will
+        # configure the maas node-group interfaces which is used for
+        # controlling the dhcp, dns, etc.
+        network_config: |
+            auto lo
+            iface lo inet loopback
+
+            auto eth0
+            iface eth0 inet static
+              address 192.168.122.2
+              netmask 255.255.255.0
+              network 192.168.122.0
+              broadcast 192.168.122.255
+              gateway 192.168.122.1
+              dns-nameservers 192.168.122.1 127.0.0.1
+
+        # See https://maas.ubuntu.com/docs/maascli.html#node-groups for
+        # description and full list of supported options.
+        # NOTE: interfaces are added using the node_group_interfaces section
+        #       and only one node_group can be created by this bundle.
+        #       Additional node groups can be added post deployment.
+        #node_group:
+        #    # This is the cluster DNS name.
+        #    name: maas
+
+        # The node-group-interfaces section is used to configure the MAAS
+        # network interfaces. Basic configuration is supported, such as which
+        # device should be bound, the range of IP addresses, etc.
+        # Note: this may contain the special identifiers:
+        #   ${maas_net} - the first 3 octets of the ipv4 address
+        #   ${maas_ip} - the ip address of the MAAS controller 
+        node_group_ifaces:
+            - device: eth0
+              ip: 192.168.122.2
+              subnet_mask: 255.255.255.0
+              broadcast_ip: 192.168.122.255
+              router_ip: 192.168.122.1
+              static_range:
+                  low: 192.168.122.101
+                  high: 192.168.122.200
+              dynamic_range:
+                  low: 192.168.122.25
+                  high: 192.168.122.100
+
+        # Physical nodes to be added to the MAAS cluster. Nodes will be
+        # configured, commissioned and put into the Ready state so
+        # they are ready to be deployed to.
+        #nodes:
+        #    - name: node1
+        #      tags: api
+        #      architecture: amd64/generic
+        #      mac_addresses:
+        #          - "38:63:bb:43:b8:9c"
+        #      power:
+        #          type: ipmi
+        #          address: 10.0.1.1
+        #          user: maas
+        #          pass: passw0rd
+        #          driver: LAN_2_0
+        #      sticky_ip_address:
+        #          mac_address: "38:63:bb:43:b8:9c"
+        #          requested_address: 192.168.122.6
+