summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xci/02-maasdeploy.sh50
-rw-r--r--ci/deploy.py51
-rwxr-xr-xci/maas/deployment.yaml20
-rw-r--r--labconfig/default/labconfig.yaml155
4 files changed, 224 insertions, 52 deletions
diff --git a/ci/02-maasdeploy.sh b/ci/02-maasdeploy.sh
index d5691543..131e7056 100755
--- a/ci/02-maasdeploy.sh
+++ b/ci/02-maasdeploy.sh
@@ -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
diff --git a/ci/deploy.py b/ci/deploy.py
index a4e23031..83992b42 100644
--- a/ci/deploy.py
+++ b/ci/deploy.py
@@ -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
diff --git a/ci/maas/deployment.yaml b/ci/maas/deployment.yaml
index 87eb9e25..e7df95c6 100755
--- a/ci/maas/deployment.yaml
+++ b/ci/maas/deployment.yaml
@@ -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
index 00000000..857237aa
--- /dev/null
+++ b/labconfig/default/labconfig.yaml
@@ -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
+