added new labconfig file for each lab also the default config file. 15/14215/5
authorNarinder Gupta <narinder.gupta@canonical.com>
Mon, 16 May 2016 17:16:00 +0000 (12:16 -0500)
committerNarinder Gupta <narinder.gupta@canonical.com>
Tue, 17 May 2016 19:25:14 +0000 (14:25 -0500)
User can send the url also to deployment.yaml file to the script.
If can not copy the file then will use the file from labconfig
directory.

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

index be97866..2035780 100755 (executable)
@@ -4,12 +4,17 @@ set -ex
 
 virtinstall=0
 
+cp maas/deployment.yaml ./deployment.yaml
+cp ../labconfig/intel/pod6/labconfig.yaml ./
+
 case "$1" in
     'intelpod5' )
         cp maas/intel/pod5/deployment.yaml ./deployment.yaml
         ;;
     'intelpod6' )
-        cp maas/intel/pod6/deployment.yaml ./deployment.yaml
+        cp ../labconfig/intel/pod6/labconfig.yaml ./
+        #to be removed later once converted for all labs.
+        python deploy.py
         ;;
     'intelpod9' )
         cp maas/intel/pod9/deployment.yaml ./deployment.yaml
@@ -39,9 +44,6 @@ case "$1" in
         ;;
 esac
 
-#just make sure the ssh keys added into maas for the current user
-sed --i "s@/home/ubuntu@$HOME@g" ./deployment.yaml
-sed --i "s@qemu+ssh://ubuntu@qemu+ssh://$USER@g" ./deployment.yaml
 
 #make sure no password asked during the deployment.
 
@@ -145,6 +147,13 @@ crnodevlanint() {
      done
  }
 
+#convert labconfig file to deployment.yaml to consume by MAAS.
+#python deploy.py
+
+#just make sure the ssh keys added into maas for the current user
+sed --i "s@/home/ubuntu@$HOME@g" ./deployment.yaml
+sed --i "s@qemu+ssh://ubuntu@qemu+ssh://$USER@g" ./deployment.yaml
+
 sudo maas-deployer -c deployment.yaml -d --force
 
 sudo chown $USER:$USER environments.yaml
index d52bd60..c1a714d 100644 (file)
@@ -1,12 +1,24 @@
 import yaml
 import pprint
-
-with open('example.yaml', 'r') as f:
-    doc = yaml.load(f)
-txt = doc["nodes"][0]["power"]
-
-with open('deployment.yaml', 'r') as ft:
-    doc1 = yaml.load(ft)
+import socket
+import fcntl
+import struct
+import os
+import getpass
+
+def get_ip_address(ifname):
+    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:
+    labcfg = yaml.load(labf)
+
+with open('deployment.yaml', 'r') as opnfvf:
+    opnfvcfg = yaml.load(opnfvf)
 
 def setInDict(dataDict, mapList, value):
     getFromDict(dataDict, mapList[:-1])[mapList[-1]] = value
@@ -14,46 +26,141 @@ def setInDict(dataDict, mapList, value):
 def getFromDict(dataDict, mapList):
     return reduce(lambda d, k: d[k], mapList, dataDict)
 
-if len(doc["nodes"]) > len(doc1["demo-maas"]["maas"]["nodes"]):
-    exit 0
+if len(labcfg["labconfig"]["nodes"]) < 3:
+    print("minimum three nodes are needed for opnfv architecture deployment")
+    exit() 
+
+# lets modify the maas general settings:
+
+updns = getFromDict(labcfg, ["labconfig","labsettings","upstream_dns"])
+setInDict(opnfvcfg, ["demo-maas", "maas", "settings", "upstream_dns"], updns)
+value = getFromDict(labcfg, ["labconfig","lab_location"])
+setInDict(opnfvcfg, ["demo-maas", "maas", "settings", "maas_name"], value)
+setInDict(opnfvcfg, ["demo-maas", "maas", "name"], "opnfv-"+value)
+
+#lets figure out the interfaces data
+
+ethbrAdm=""
+ethbrAdmin=""
 
 c=0
-while c < len(doc["nodes"]):
+y=0
+z=0
+
+while c < len(labcfg["labconfig"]["bridges"]):
+    brtype = getFromDict(labcfg, ["labconfig","bridges",c,"type"])
+    brname = getFromDict(labcfg, ["labconfig","bridges",c,"bridge"])
+    brcidr = getFromDict(labcfg, ["labconfig","bridges",c,"cidr"])
+    if brtype == "admin":
+        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" 
+        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'
+                    '    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')
+        z=z+1
+        y=y+1
+    elif brtype:
+        opnfvcfg["demo-maas"]["maas"]["interfaces"].append("bridge="+brname+",model=virtio")
+        brgway = getFromDict(labcfg, ["labconfig","bridges",c,"gateway"])
+        if brtype != "external":
+            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" 
+            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')
+        if brtype == "public":
+            opnfvcfg["demo-maas"]["juju-bootstrap"]["interfaces"].append("bridge="+brname+",model=virtio")
+            z=z+1
+        if brtype == "external":
+            ipaddress = getFromDict(labcfg, ["labconfig","bridges",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")
+            z=z+1
+        y=y+1
+
 
-    value = getFromDict(doc, ["nodes",c, "name"])
-    setInDict(doc1, ["demo-maas", "maas", "nodes", c, "name"], value)
+    c=c+1
 
-    value = getFromDict(doc, ["nodes",c, "tags"])
-    setInDict(doc1, ["demo-maas", "maas", "nodes", c, "tags"], value)
+setInDict(opnfvcfg, ["demo-maas", "maas", "network_config"], ethbrAdm)
 
-    value = getFromDict(doc, ["nodes",c, "arch"])
-    if value == "x86_64":
-        value="amd64/generic"
-    setInDict(doc1, ["demo-maas", "maas", "nodes", c, "architecture"], value)
+# lets modify the maas general settings:
+value = get_ip_address(ethbrAdmin) 
+value = "qemu+ssh://"+getpass.getuser()+"@"+value+"/system"
+setInDict(opnfvcfg, ["demo-maas", "maas", "virsh", "uri"], value)
 
-    value = getFromDict(doc, ["nodes",c, "mac_address"])
-    setInDict(doc1, ["demo-maas", "maas", "nodes", c, "mac_addresses"], value)
+#lets insert the node details here:
+c=0
 
-    value = getFromDict(doc, ["nodes",c, "power", "type"])
-    setInDict(doc1, ["demo-maas", "maas", "nodes", c, "power", "type"], value)
+while c < len(labcfg["labconfig"]["nodes"]):
+    # setup value of name and tags accordigly
+    value = getFromDict(labcfg, ["labconfig","nodes",c, "type"])
+    namevalue = "node" + str(c+1) + "-" + value 
+    opnfvcfg["demo-maas"]["maas"]["nodes"][c]["name"] = namevalue
+    opnfvcfg["demo-maas"]["maas"]["nodes"][c]["tags"] = value
 
+    # setup value of architecture
+    value = getFromDict(labcfg, ["labconfig","nodes",c, "architecture"])
+    if value == "x86_64":
+        value="amd64/generic"
+    opnfvcfg["demo-maas"]["maas"]["nodes"][c]["architecture"] = value
+    
+    # setup mac_addresses
+    value = getFromDict(labcfg, ["labconfig","nodes",c, "pxe_mac_address"])
+    opnfvcfg["demo-maas"]["maas"]["nodes"][c]["mac_addresses"] = value
+
+    value = getFromDict(labcfg, ["labconfig","nodes",c, "power", "type"])
+    opnfvcfg["demo-maas"]["maas"]["nodes"][c]["power"]["type"] = value
     if value == "wakeonlan":
-        value = getFromDict(doc, ["nodes",c, "power", "mac_address"])
-        setInDict(doc1, ["demo-maas", "maas", "nodes", c, "power", "mac_address"], value)
+        value = getFromDict(labcfg, ["labconfig","nodes",c, "power", "mac_address"])
+        opnfvcfg["demo-maas"]["maas"]["nodes"][c]["power"]["mac_address"] = value
 
     if value == "ipmi":
-        value = getFromDict(doc, ["nodes",c, "power", "address"])
-        setInDict(doc1, ["demo-maas", "maas", "nodes", c, "power", "address"], value)
-
-        value = getFromDict(doc, ["nodes",c, "power", "user"])
-        setInDict(doc1, ["demo-maas", "maas", "nodes", c, "power", "user"], value)
+        value = getFromDict(labcfg, ["labconfig","nodes",c, "power", "address"])
+        opnfvcfg["demo-maas"]["maas"]["nodes"][c]["power"]["address"] = value
+        value = getFromDict(labcfg, ["labconfig","nodes",c, "power", "user"])
+        opnfvcfg["demo-maas"]["maas"]["nodes"][c]["power"]["user"] = value
+        value = getFromDict(labcfg, ["labconfig","nodes",c, "power", "pass"])
+        opnfvcfg["demo-maas"]["maas"]["nodes"][c]["power"]["pass"] = value
+        opnfvcfg["demo-maas"]["maas"]["nodes"][c]["power"]["driver"] = "LAN_2_0"
 
-        value = getFromDict(doc, ["nodes",c, "power", "pass"])
-        setInDict(doc1, ["demo-maas", "maas", "nodes", c, "power", "pass"], value)
 
     c=c+1
 
-with open('deployment.yaml', 'w') as ft:
-   yaml.dump(doc1, ft)
+with open('deployment.yaml', 'w') as opnfvf:
+   yaml.dump(opnfvcfg, opnfvf, default_flow_style=False)
 
 
diff --git a/ci/maas/deployment.yaml b/ci/maas/deployment.yaml
new file mode 100755 (executable)
index 0000000..82f49b8
--- /dev/null
@@ -0,0 +1,94 @@
+demo-maas:
+  juju-bootstrap:
+    arch: amd64
+    disk_size: 120G
+    interfaces:
+    - bridge=brAdm,model=virtio
+    memory: 4096
+    name: bootstrap
+    pool: default
+    vcpus: 4
+  maas:
+    apt_http_proxy: null
+    apt_sources:
+    - ppa:maas/stable
+    - ppa:juju/stable
+    arch: amd64
+    boot_source:
+      keyring_filename: /usr/share/keyrings/ubuntu-cloudimage-keyring.gpg
+      selections:
+        1:
+          arches: amd64
+          labels: release
+          os: ubuntu
+          release: xenial
+          subarches: '*'
+      url: http://maas.ubuntu.com/images/ephemeral-v2/releases/
+    disk_size: 160G
+    interfaces:
+    - bridge=brAdm,model=virtio
+    ip_address: 
+    memory: 4096
+    name: opnfv-intelpod6
+    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:
+    - architecture: 
+      mac_addresses:
+      - 
+      power:
+        address: 
+    - architecture: 
+      mac_addresses:
+      - 
+      power:
+        address: 
+    - architecture: 
+      mac_addresses:
+      - 
+      power:
+        address: 
+    - architecture: 
+      mac_addresses:
+      - 
+      power:
+        address: 
+    - architecture: 
+      mac_addresses:
+      - 
+      power:
+        address: 
+    password: ubuntu
+    pool: default
+    release: trusty
+    settings:
+      maas_name: 
+      main_archive: http://us.archive.ubuntu.com/ubuntu
+      upstream_dns: 
+    user: ubuntu
+    vcpus: 4
+    virsh:
+      rsa_priv_key: /home/ubuntu/.ssh/id_rsa
+      rsa_pub_key: /home/ubuntu/.ssh/id_rsa.pub
+      uri: 
diff --git a/labconfig/intel/pod5/deployment.yaml b/labconfig/intel/pod5/deployment.yaml
new file mode 100755 (executable)
index 0000000..be8a773
--- /dev/null
@@ -0,0 +1,257 @@
+# This file defines the deployment for the MAAS environment which is to be
+# deployed and automated.
+demo-maas:
+    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-intel
+        interfaces: ['bridge=brAdm,model=virtio', 'bridge=brData,model=virtio', 'bridge=brPublic,model=virtio', 'bridge=brExt,model=virtio']
+        memory: 4096
+        vcpus: 4
+        arch: amd64
+        pool: default
+        disk_size: 160G
+        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://jenkins@10.5.1.1/system
+
+        # Defines the IP Address that the configuration script will use to
+        # to access the MAAS controller via SSH.
+        ip_address: 10.5.1.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: 8.8.8.8
+            maas_name: intelpod5
+            # 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 10.5.1.2
+            netmask 255.255.255.0
+            network 10.5.1.0
+            broadcast 10.5.1.255
+            gateway 10.5.1.1
+            dns-nameservers 8.8.8.8 10.5.1.2 127.0.0.1
+
+            auto eth1
+            iface eth1 inet static
+            address 10.5.12.2
+            netmask 255.255.255.0
+
+            auto eth2
+            iface eth2 inet static
+            address 10.5.15.2
+            netmask 255.255.255.0
+
+            auto eth3
+            iface eth3 inet static
+            address 10.2.117.92
+            netmask 255.255.255.0
+            #auto lo
+            #iface lo inet loopback
+
+            #auto eth0
+            #iface eth0 inet static
+            #  address 192.168.122.2
+            #  netmask 255.255.248.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
+
+        # 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: 10.5.1.2
+              subnet_mask: 255.255.255.0
+              broadcast_ip: 10.5.1.255
+              router_ip: 10.5.1.1
+              static_range:
+                  low: 10.5.1.50
+                  high: 10.5.1.80
+              dynamic_range:
+                  low: 10.5.1.81
+                  high: 10.5.1.250
+            - device: eth1
+              ip: 10.5.12.2
+              subnet_mask: 255.255.255.0
+              broadcast_ip: 10.5.12.255
+              management: 1
+              static_range:
+                  low: 10.5.12.20
+                  high: 10.5.12.150
+              dynamic_range:
+                  low: 10.5.12.151
+                  high: 10.5.12.200
+            - device: eth2
+              ip: 10.5.15.2
+              subnet_mask: 255.255.255.0
+              broadcast_ip: 10.5.15.255
+              router_ip: 10.5.15.254
+              management: 1
+              static_range:
+                  low: 10.5.15.20
+                  high: 10.5.15.150
+              dynamic_range:
+                  low: 10.5.15.151
+                  high: 10.5.15.200
+
+        # Defines the physical nodes which are added to the MAAS cluster
+        # controller upon startup of the node.
+        nodes:
+            - name: node1-control
+              tags: control
+              architecture: amd64/generic
+              mac_addresses:
+                  - "00:1e:67:cf:bb:54"
+              power:
+                  type: ipmi
+                  address: 10.2.117.81
+                  user: root
+                  pass: root
+                  driver: LAN_2_0
+#              sticky_ip_address:
+#                  mac_address: "38:63:bb:43:b8:9c"
+#                  requested_address: 192.168.122.5
+#
+            - name: node2-control
+              tags: control
+              architecture: amd64/generic
+              mac_addresses:
+                  - "00:1e:67:cf:b8:93"
+              power:
+                  type: ipmi
+                  address: 10.2.117.82
+                  user: root
+                  pass: root
+                  driver: LAN_2_0
+
+            - name: node3-control
+              tags: control
+              architecture: amd64/generic
+              mac_addresses:
+                  - "00:1e:67:e0:08:7f"
+              power:
+                  type: ipmi
+                  address: 10.2.117.83
+                  user: root
+                  pass: root
+                  driver: LAN_2_0
+#              sticky_ip_address:
+#                  mac_address: "38:63:bb:43:b8:9c"
+#                  requested_address: 192.168.122.5
+
+            - name: node4-compute
+              tags: compute
+              architecture: amd64/generic
+              mac_addresses:
+                  - "00:1e:67:e0:08:b1"
+              power:
+                  type: ipmi
+                  address: 10.2.117.84
+                  user: root
+                  pass: root
+                  driver: LAN_2_0
+#              sticky_ip_address:
+#                  mac_address: "38:63:bb:43:b8:9c"
+#                  requested_address: 192.168.122.5
+
+            - name: node5-compute
+              tags: compute
+              architecture: amd64/generic
+              mac_addresses:
+                  - "00:1e:67:e0:0a:4b"
+              power:
+                  type: ipmi
+                  address: 10.2.117.85
+                  user: root
+                  pass: root
+                  driver: LAN_2_0
+#              sticky_ip_address:
+#                  mac_address: "38:63:bb:43:b8:9c"
+#                  requested_address: 192.168.122.5
+
+#            - name: jenkins-slave
+#              tags: jenkins-slave
+#              architecture: amd64/generic
+#              mac_addresses:
+#                  - "52:54:00:f0:5c:53"
+#              power:
+#                  type: virsh
+#                  address: qemu+ssh://ubuntu@10.4.1.1/system
+
+    # Contains the virtual machine parameters for creating the Juju bootstrap
+    # node virtual machine
+    juju-bootstrap:
+        name: bootstrap
+        interfaces: ['bridge=brAdm,model=virtio', 'bridge=brPublic,model=virtio', 'bridge=brExt,model=virtio']
+        memory: 4096
+        vcpus: 4
+        arch: amd64
+        pool: default
+        disk_size: 120G
diff --git a/labconfig/intel/pod5/labconfig.yaml b/labconfig/intel/pod5/labconfig.yaml
new file mode 100644 (file)
index 0000000..ce1688c
--- /dev/null
@@ -0,0 +1,81 @@
+labconfig:
+    lab_location: intelpod5
+    bridges:
+        - type: admin
+          bridge: brAdm
+          cidr: 10.5.1.0/24
+          gateway: 10.5.1.1
+        - type: data
+          bridge: brData
+          cidr: 10.5.12.0/24
+          gateway:
+        - type: public
+          bridge: brPublic
+          cidr: 10.5.15.0/24
+          gateway: 10.5.15.254
+        - type: external
+          bridge: brExt
+          cidr:
+          gateway:
+          ipaddress: 10.2.117.92
+    labsettings:
+        upstream_dns: 8.8.8.8
+    nodes:
+        - type: control
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1e:67:d8:ba:46"
+          power:
+              type: ipmi
+              address: 10.2.117.81
+              user: root
+              pass: root
+        - type: control
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1e:67:e0:0b:72"
+          power:
+              type: ipmi
+              address: 10.2.117.82
+              user: root
+              pass: root
+        - type: control
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1e:67:e0:08:7f"
+          power:
+              type: ipmi
+              address: 10.2.117.83
+              user: root
+              pass: root
+        - type: compute
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1e:67:e0:08:b1"
+          power:
+              type: ipmi
+              address: 10.2.117.84
+              user: root
+              pass: root
+        - type: compute
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1e:67:e0:0a:4b"
+          power:
+              type: ipmi
+              address: 10.2.117.85
+              user: root
+              pass: root
+opnfv:
+    release: c
+    distro: trusty
+    type: nonha
+    openstack: liberty
+    sdncontroller: 
+        - type: nosdn
+    storage: 
+        - type: ceph
+          disk: /srv/osd
+    floating-ip-range: 
+    feature: odl_l2 
+    ext-port: eth5
diff --git a/labconfig/intel/pod6/deployment.yaml b/labconfig/intel/pod6/deployment.yaml
new file mode 100755 (executable)
index 0000000..82f49b8
--- /dev/null
@@ -0,0 +1,94 @@
+demo-maas:
+  juju-bootstrap:
+    arch: amd64
+    disk_size: 120G
+    interfaces:
+    - bridge=brAdm,model=virtio
+    memory: 4096
+    name: bootstrap
+    pool: default
+    vcpus: 4
+  maas:
+    apt_http_proxy: null
+    apt_sources:
+    - ppa:maas/stable
+    - ppa:juju/stable
+    arch: amd64
+    boot_source:
+      keyring_filename: /usr/share/keyrings/ubuntu-cloudimage-keyring.gpg
+      selections:
+        1:
+          arches: amd64
+          labels: release
+          os: ubuntu
+          release: xenial
+          subarches: '*'
+      url: http://maas.ubuntu.com/images/ephemeral-v2/releases/
+    disk_size: 160G
+    interfaces:
+    - bridge=brAdm,model=virtio
+    ip_address: 
+    memory: 4096
+    name: opnfv-intelpod6
+    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:
+    - architecture: 
+      mac_addresses:
+      - 
+      power:
+        address: 
+    - architecture: 
+      mac_addresses:
+      - 
+      power:
+        address: 
+    - architecture: 
+      mac_addresses:
+      - 
+      power:
+        address: 
+    - architecture: 
+      mac_addresses:
+      - 
+      power:
+        address: 
+    - architecture: 
+      mac_addresses:
+      - 
+      power:
+        address: 
+    password: ubuntu
+    pool: default
+    release: trusty
+    settings:
+      maas_name: 
+      main_archive: http://us.archive.ubuntu.com/ubuntu
+      upstream_dns: 
+    user: ubuntu
+    vcpus: 4
+    virsh:
+      rsa_priv_key: /home/ubuntu/.ssh/id_rsa
+      rsa_pub_key: /home/ubuntu/.ssh/id_rsa.pub
+      uri: 
diff --git a/labconfig/intel/pod6/labconfig.yaml b/labconfig/intel/pod6/labconfig.yaml
new file mode 100644 (file)
index 0000000..52775d7
--- /dev/null
@@ -0,0 +1,81 @@
+labconfig:
+    lab_location: intelpod6
+    bridges:
+        - type: admin
+          bridge: brAdm
+          cidr: 10.6.1.0/24
+          gateway: 10.6.1.1
+        - type: data
+          bridge: brData
+          cidr: 10.6.12.0/24
+          gateway:
+        - type: public
+          bridge: brPublic
+          cidr: 10.6.15.0/24
+          gateway: 10.6.15.254
+        - type: external
+          bridge: brExt
+          cidr:
+          gateway:
+          ipaddress: 10.2.117.107
+    labsettings:
+        upstream_dns: 8.8.8.8
+    nodes:
+        - type: control
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1e:67:d8:ba:46"
+          power:
+              type: ipmi
+              address: 10.2.117.96
+              user: root
+              pass: root
+        - type: control
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1e:67:e0:0b:72"
+          power:
+              type: ipmi
+              address: 10.2.117.97
+              user: root
+              pass: root
+        - type: control
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1e:67:e0:09:33"
+          power:
+              type: ipmi
+              address: 10.2.117.98
+              user: root
+              pass: root
+        - type: compute
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1e:67:e0:09:fb"
+          power:
+              type: ipmi
+              address: 10.2.117.99
+              user: root
+              pass: root
+        - type: compute
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1e:67:cf:bc:f8"
+          power:
+              type: ipmi
+              address: 10.2.117.100
+              user: root
+              pass: root
+opnfv:
+    release: c
+    distro: trusty
+    type: nonha
+    openstack: liberty
+    sdncontroller: 
+        - type: nosdn
+    storage: 
+        - type: ceph
+          disk: sda,sdb
+    floating-ip-range: 
+    feature: odl_l2 
+    ext-port: eth0
diff --git a/labconfig/intel/pod9/deployment.yaml b/labconfig/intel/pod9/deployment.yaml
new file mode 100755 (executable)
index 0000000..dcb2068
--- /dev/null
@@ -0,0 +1,230 @@
+# This file defines the deployment for the MAAS environment which is to be
+# deployed and automated.
+demo-maas:
+    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-intel
+        interfaces: ['bridge=brAdm,model=virtio', 'bridge=brData,model=virtio', 'bridge=brPublic,model=virtio', 'bridge=brExt,model=virtio']
+        memory: 4096
+        vcpus: 4
+        arch: amd64
+        pool: default
+        disk_size: 160G
+        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://jenkins@10.9.1.1/system
+
+        # Defines the IP Address that the configuration script will use to
+        # to access the MAAS controller via SSH.
+        ip_address: 10.9.1.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: 8.8.8.8
+            maas_name: intelpod9
+            # 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 10.9.1.2
+            netmask 255.255.255.0
+            network 10.9.1.0
+            broadcast 10.9.1.255
+            gateway 10.9.1.1
+            dns-nameservers 8.8.8.8 10.9.1.2 127.0.0.1
+
+            auto eth1
+            iface eth1 inet static
+            address 10.9.12.2
+            netmask 255.255.255.0
+
+            auto eth2
+            iface eth2 inet static
+            address 10.9.15.2
+            netmask 255.255.255.0
+
+            auto eth3
+            iface eth3 inet static
+            address 10.2.117.143
+            netmask 255.255.255.0
+            #auto lo
+            #iface lo inet loopback
+
+            #auto eth0
+            #iface eth0 inet static
+            #  address 192.168.122.2
+            #  netmask 255.255.248.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
+
+        # 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: 10.9.1.2
+              subnet_mask: 255.255.255.0
+              broadcast_ip: 10.9.1.255
+              router_ip: 10.9.1.1
+              static_range:
+                  low: 10.9.1.50
+                  high: 10.9.1.80
+              dynamic_range:
+                  low: 10.9.1.81
+                  high: 10.9.1.250
+            - device: eth1
+              ip: 10.9.12.2
+              subnet_mask: 255.255.255.0
+              broadcast_ip: 10.9.12.255
+              management: 1
+              static_range:
+                  low: 10.9.12.20
+                  high: 10.9.12.150
+              dynamic_range:
+                  low: 10.9.12.151
+                  high: 10.9.12.200
+            - device: eth2
+              ip: 10.9.15.2
+              subnet_mask: 255.255.255.0
+              broadcast_ip: 10.9.15.255
+              router_ip: 10.9.15.254
+              management: 1
+              static_range:
+                  low: 10.9.15.20
+                  high: 10.9.15.150
+              dynamic_range:
+                  low: 10.9.15.151
+                  high: 10.9.15.200
+
+        # Defines the physical nodes which are added to the MAAS cluster
+        # controller upon startup of the node.
+        nodes:
+            - name: node1-compute
+              tags: compute
+              architecture: amd64/generic
+              mac_addresses:
+                  - "00:1E:67:D4:30:38"
+              power:
+                  type: ipmi
+                  address: 10.2.117.142
+                  user: root
+                  pass: root
+                  driver: LAN_2_0
+#              sticky_ip_address:
+#                  mac_address: "38:63:bb:43:b8:9c"
+#                  requested_address: 192.168.122.5
+
+            - name: node2-compute
+              tags: compute
+              architecture: amd64/generic
+              mac_addresses:
+                  - "00:1E:67:D4:33:A3"
+              power:
+                  type: ipmi
+                  address: 10.2.117.144
+                  user: root
+                  pass: root
+                  driver: LAN_2_0
+#              sticky_ip_address:
+#                  mac_address: "38:63:bb:43:b8:9c"
+#                  requested_address: 192.168.122.5
+
+            - name: node3-control
+              tags: control
+              architecture: amd64/generic
+              mac_addresses:
+                  - "00:1E:67:D4:2F:BA"
+              power:
+                  type: ipmi
+                  address: 10.2.117.146
+                  user: root
+                  pass: root
+                  driver: LAN_2_0
+#              sticky_ip_address:
+#                  mac_address: "38:63:bb:43:b8:9c"
+#                  requested_address: 192.168.122.5
+
+#            - name: jenkins-slave
+#              tags: jenkins-slave
+#              architecture: amd64/generic
+#              mac_addresses:
+#                  - "52:54:00:f0:5c:53"
+#              power:
+#                  type: virsh
+#                  address: qemu+ssh://ubuntu@10.4.1.1/system
+
+    # Contains the virtual machine parameters for creating the Juju bootstrap
+    # node virtual machine
+    juju-bootstrap:
+        name: bootstrap
+        interfaces: ['bridge=brAdm,model=virtio', 'bridge=brPublic,model=virtio', 'bridge=brExt,model=virtio']
+        memory: 4096
+        vcpus: 4
+        arch: amd64
+        pool: default
+        disk_size: 120G
diff --git a/labconfig/intel/pod9/labconfig.yaml b/labconfig/intel/pod9/labconfig.yaml
new file mode 100644 (file)
index 0000000..2f0b72e
--- /dev/null
@@ -0,0 +1,63 @@
+labconfig:
+    lab_location: intelpod9
+    bridges:
+        - type: admin
+          bridge: brAdm
+          cidr: 10.9.1.0/24
+          gateway: 10.9.1.1
+        - type: data
+          bridge: brData
+          cidr: 10.9.12.0/24
+          gateway:
+        - type: public
+          bridge: brPublic
+          cidr: 10.9.15.0/24
+          gateway: 10.9.15.254
+        - type: external
+          bridge: brExt
+          cidr:
+          gateway:
+          ipaddress: 10.2.117.143
+    labsettings:
+        upstream_dns: 8.8.8.8
+    nodes:
+        - type: control
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1E:67:D4:30:38"
+          power:
+              type: ipmi
+              address: 10.2.117.142
+              user: root
+              pass: root
+        - type: compute
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1E:67:D4:33:A3"
+          power:
+              type: ipmi
+              address: 10.2.117.144
+              user: root
+              pass: root
+        - type: compute
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1E:67:D4:2F:BA"
+          power:
+              type: ipmi
+              address: 10.2.117.146
+              user: root
+              pass: root
+opnfv:
+    release: c
+    distro: trusty
+    type: nonha
+    openstack: liberty
+    sdncontroller: 
+        - type: nosdn
+    storage: 
+        - type: ceph
+          disk: sda,sdb
+    floating-ip-range: 
+    feature: odl_l2 
+    ext-port: eth0
diff --git a/labconfig/labconfig.yaml b/labconfig/labconfig.yaml
new file mode 100644 (file)
index 0000000..52775d7
--- /dev/null
@@ -0,0 +1,81 @@
+labconfig:
+    lab_location: intelpod6
+    bridges:
+        - type: admin
+          bridge: brAdm
+          cidr: 10.6.1.0/24
+          gateway: 10.6.1.1
+        - type: data
+          bridge: brData
+          cidr: 10.6.12.0/24
+          gateway:
+        - type: public
+          bridge: brPublic
+          cidr: 10.6.15.0/24
+          gateway: 10.6.15.254
+        - type: external
+          bridge: brExt
+          cidr:
+          gateway:
+          ipaddress: 10.2.117.107
+    labsettings:
+        upstream_dns: 8.8.8.8
+    nodes:
+        - type: control
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1e:67:d8:ba:46"
+          power:
+              type: ipmi
+              address: 10.2.117.96
+              user: root
+              pass: root
+        - type: control
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1e:67:e0:0b:72"
+          power:
+              type: ipmi
+              address: 10.2.117.97
+              user: root
+              pass: root
+        - type: control
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1e:67:e0:09:33"
+          power:
+              type: ipmi
+              address: 10.2.117.98
+              user: root
+              pass: root
+        - type: compute
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1e:67:e0:09:fb"
+          power:
+              type: ipmi
+              address: 10.2.117.99
+              user: root
+              pass: root
+        - type: compute
+          architecture: x86_64 
+          pxe_mac_address:
+              - "00:1e:67:cf:bc:f8"
+          power:
+              type: ipmi
+              address: 10.2.117.100
+              user: root
+              pass: root
+opnfv:
+    release: c
+    distro: trusty
+    type: nonha
+    openstack: liberty
+    sdncontroller: 
+        - type: nosdn
+    storage: 
+        - type: ceph
+          disk: sda,sdb
+    floating-ip-range: 
+    feature: odl_l2 
+    ext-port: eth0