diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..d0f376d
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "components/maas"]
+	path = components/maas
+	url = ../maas
diff --git a/build.gradle b/build.gradle
index e479884..0c2527b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -48,14 +48,25 @@
 
     // Component table
     comps = [
-        'nginx':      [ 'type':     'image',
-                        'upstream': upstreamReg,
-                        'name':     'nginx',
-                        'digest':   'sha256:b555f8c64ab4e85405e0d8b03f759b73ce88deb802892a3b155ef55e3e832806' ],
-        'swarm':      [ 'type':     'image',
-                        'upstream': upstreamReg,
-                        'name':     'swarm',
-                        'digest':   'sha256:6ca9b40980e2fcdcd229900ec8933f3e92c14ead22c9404cb09736cb4f3a9248' ],
+            'maas': [
+                    'type':         'gitmodule',
+                    'upstream':     '../maas',
+                    'branch':       'master',
+                    'tag':          null,
+                    'componentDir': './components/maas'
+            ],
+            'nginx': [
+                    'type':     'image',
+                    'upstream': upstreamReg,
+                    'name':     'nginx',
+                    'digest':   'sha256:b555f8c64ab4e85405e0d8b03f759b73ce88deb802892a3b155ef55e3e832806'
+            ],
+            'swarm': [
+                    'type':     'image',
+                    'upstream': upstreamReg,
+                    'name':     'swarm',
+                    'digest':   'sha256:6ca9b40980e2fcdcd229900ec8933f3e92c14ead22c9404cb09736cb4f3a9248'
+            ],
     ]
 
     // Deployment target config file (yaml format); this can be overwritten from the command line
@@ -66,24 +77,30 @@
 }
 
 task fetchUpstreamImages {
-  comps.each { name, spec -> if (spec.type == 'image') { dependsOn "fetch" + name } }
+    comps.each { name, spec -> if (spec.type == 'image') { dependsOn "fetch" + name } }
+}
+
+task fetchGitSubmodules {
+    comps.each { name, spec -> if (spec.type == 'gitmodule') { dependsOn "gitupdate" + name } }
 }
 
 task fetch {
-  dependsOn fetchUpstreamImages
+    dependsOn fetchUpstreamImages
+    dependsOn fetchGitSubmodules
 }
 
 task publishImages {
-  comps.each { name, _ -> dependsOn "publish" + name }
+    comps.each { name, _ -> dependsOn "publish" + name }
 }
 
 task publish {
-  dependsOn publishImages
+    dependsOn publishImages
 }
 
 tasks.addRule(new DockerFetchRule(project))
 tasks.addRule(new DockerPublishRule(project))
 tasks.addRule(new DockerTagRule(project))
+tasks.addRule(new GitSubmoduleUpdateRule(project))
 
 task deploy {
     // TODO this is a place-holder.
diff --git a/buildSrc/src/main/groovy/org/opencord/build/rules/DockerFetchRule.groovy b/buildSrc/src/main/groovy/org/opencord/build/rules/DockerFetchRule.groovy
index 01f9176..4b4ec9f 100644
--- a/buildSrc/src/main/groovy/org/opencord/build/rules/DockerFetchRule.groovy
+++ b/buildSrc/src/main/groovy/org/opencord/build/rules/DockerFetchRule.groovy
@@ -32,7 +32,7 @@
     }
 
     String getDescription() {
-        'Rule Usage: fetch<image-name>'
+        'Rule Usage: fetch<component-name>'
     }
 
     void apply(String taskName) {
diff --git a/buildSrc/src/main/groovy/org/opencord/build/rules/DockerPublishRule.groovy b/buildSrc/src/main/groovy/org/opencord/build/rules/DockerPublishRule.groovy
index 75a5990..2e1a581 100644
--- a/buildSrc/src/main/groovy/org/opencord/build/rules/DockerPublishRule.groovy
+++ b/buildSrc/src/main/groovy/org/opencord/build/rules/DockerPublishRule.groovy
@@ -32,7 +32,7 @@
     }
 
     String getDescription() {
-        'Rule Usage: publish<image-name>'
+        'Rule Usage: publish<component-name>'
     }
 
     void apply(String taskName) {
@@ -40,7 +40,8 @@
             project.task(taskName, type: DockerPushTask) {
                 ext.compName = taskName - 'publish'
                 dependsOn "tag" + compName
-                repositoryName = compName + ':' + project.targetTag
+                def spec = project.comps[ext.compName]
+                repositoryName = spec.name + ':' + project.targetTag
                 registry = project.targetReg
             }
         }
diff --git a/buildSrc/src/main/groovy/org/opencord/build/rules/DockerTagRule.groovy b/buildSrc/src/main/groovy/org/opencord/build/rules/DockerTagRule.groovy
index 114bdfc..b48cfb5 100644
--- a/buildSrc/src/main/groovy/org/opencord/build/rules/DockerTagRule.groovy
+++ b/buildSrc/src/main/groovy/org/opencord/build/rules/DockerTagRule.groovy
@@ -32,7 +32,7 @@
     }
 
     String getDescription() {
-        'Rule Usage: tag<image-name>'
+        'Rule Usage: tag<component-name>'
     }
 
     void apply(String taskName) {
diff --git a/components/maas b/components/maas
new file mode 160000
index 0000000..39d0c78
--- /dev/null
+++ b/components/maas
@@ -0,0 +1 @@
+Subproject commit 39d0c78bd5273f0ee8da619f93edc81af132db00
diff --git a/settings.gradle b/settings.gradle
index 8a5ffa7..5307f82 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,2 +1,2 @@
-//include 'components/nginx'
+include 'components/maas'
 
