diff --git a/ansible/prod-inv b/ansible/prod-inv
new file mode 100644
index 0000000..4fe6f8d
--- /dev/null
+++ b/ansible/prod-inv
@@ -0,0 +1,6 @@
+[head]
+${prod}
+
+[compute]
+
+
diff --git a/build.gradle b/build.gradle
index b07e1d7..aa0c3a6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -16,6 +16,7 @@
 
 import org.opencord.gradle.rules.*
 import org.yaml.snakeyaml.Yaml
+import org.yaml.snakeyaml.DumperOptions
 
 buildscript {
   repositories {
@@ -31,7 +32,6 @@
 apply plugin: "com.dorongold.task-tree"
 
 evaluationDependsOn(':maas')
-evaluationDependsOn(':platform-install')
 evaluationDependsOn(':onos-apps')
 
 allprojects {
@@ -144,11 +144,44 @@
 
 // ---------------- Useful tasks ----------------
 
+task copyAnsibleInventory(type: Copy) {
+  from 'platform-install/inventory/templates/single-prod'
+    into 'platform-install/inventory'
+    expand([
+        prod: config.seedServer.ip,
+    ])
+}
+
+task writeYamlConfig {
+  def outvar = config.seedServer
+  def outfilename = "genconfig/config.yml"
+
+  DumperOptions options = new DumperOptions()
+
+  options.setExplicitStart(true);
+  options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK)
+  options.setPrettyFlow(true);
+  options.setIndent(2);
+
+  def yaml = new Yaml(options)
+  Writer outfile = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outfilename), "utf-8"))
+
+  yaml.dump(outvar, outfile)
+  outfile.close()
+}
+
+task writeProdInventory(type: Copy) {
+  from 'ansible/prod-inv'
+    into 'genconfig'
+    expand([
+        prod: config.seedServer.ip,
+    ])
+}
+
 task fetchUpstreamImages {
     comps.each { name, spec -> if (spec.type == 'image') { dependsOn "fetch" + name } }
 }
 
-
 task fetch  {
     dependsOn fetchUpstreamImages
 }
@@ -172,13 +205,95 @@
 tasks.addRule(new DockerPublishRule(project, project(':maas').prime))
 tasks.addRule(new DockerTagRule(project))
 
-project('platform-install').deployPlatform.dependsOn project(':maas').deployBase
+task CopyCord(type: Exec) {
+  dependsOn writeYamlConfig
+  dependsOn writeProdInventory
+
+  executable = "ansible"
+  args = [ "-i", "genconfig/prod-inv", "-b", "-m", "synchronize", "-a", "src='../../' dest='/opt/cord'", "head" ]
+}
+
+task ChownCord(type: Exec) {
+  dependsOn CopyCord
+
+  executable = "ansible"
+  args = [ "-i", "genconfig/prod-inv", "-b", "-m", "file", "-a", "state='directory' dest='/opt/cord' recurse='yes' owner='$config.seedServer.ansible_user'", "head" ]
+}
+
+task PIprepPlatform(type: Exec) {
+  dependsOn CopyCord
+  dependsOn ChownCord
+
+  def ansible_cmd = "cd /opt/cord/build/platform-install; ansible-playbook -i inventory/head-localhost --extra-vars @/opt/cord/build/genconfig/config.yml cord-prep-platform.yml"
+
+  executable = "ssh"
+  args = ["$config.seedServer.ansible_user@$config.seedServer.ip", ansible_cmd ]
+}
+
+task PIdeployOpenStack (type: Exec) {
+  def ansible_cmd = "cd /opt/cord/build/platform-install; ansible-playbook -i inventory/head-localhost --extra-vars @/opt/cord/build/genconfig/config.yml cord-deploy-openstack.yml"
+
+  executable = "ssh"
+  args = ["$config.seedServer.ansible_user@$config.seedServer.ip", ansible_cmd ]
+}
+
+task PIdeployONOS (type: Exec) {
+  def ansible_cmd = "cd /opt/cord/build/platform-install; ansible-playbook -i inventory/head-localhost --extra-vars @/opt/cord/build/genconfig/config.yml cord-deploy-onos.yml"
+
+  executable = "ssh"
+  args = ["$config.seedServer.ansible_user@$config.seedServer.ip", ansible_cmd ]
+}
+
+task PIdeployXOS (type: Exec) {
+  def ansible_cmd = "cd /opt/cord/build/platform-install; ansible-playbook -i inventory/head-localhost --extra-vars @/opt/cord/build/genconfig/config.yml cord-deploy-xos.yml"
+
+  executable = "ssh"
+  args = ["$config.seedServer.ansible_user@$config.seedServer.ip", ansible_cmd ]
+}
+
+task PIsetupAutomation (type: Exec) {
+  def ansible_cmd = "cd /opt/cord/build/platform-install; ansible-playbook -i inventory/head-localhost --extra-vars @/opt/cord/build/genconfig/config.yml cord-automation.yml"
+
+  executable = "ssh"
+  args = ["$config.seedServer.ansible_user@$config.seedServer.ip", ansible_cmd ]
+}
+
+task postDeployTests (type: Exec) {
+
+  def ansible_cmd = "cd /opt/cord/build/platform-install; ansible-playbook -i inventory/head-localhost --extra-vars @/opt/cord/build/genconfig/config.yml cord-post-deploy-playbook.yml"
+
+  executable = "ssh"
+  args = ["$config.seedServer.ansible_user@$config.seedServer.ip", ansible_cmd ]
+}
+
 project('onos-apps').publishMavenRepoImage.dependsOn project(':maas').prime
-project('platform-install').deployPlatform.dependsOn project(':onos-apps').deploy
 project(':onos-apps').deploy.dependsOn project(':maas').deployBase
 
+project('onos-apps').publishMavenRepoImage.dependsOn project(':maas').prime
+project(':onos-apps').deploy.dependsOn project(':maas').deployBase
+
+task PIdeployPlatform {
+     dependsOn CopyCord
+     dependsOn ChownCord
+     dependsOn project(':onos-apps').deploy
+     dependsOn project(':maas').deployBase
+     dependsOn PIprepPlatform
+     dependsOn PIdeployOpenStack
+     dependsOn PIdeployONOS
+     dependsOn PIdeployXOS
+     dependsOn PIsetupAutomation
+}
+
+ChownCord.mustRunAfter CopyCord
+PIprepPlatform.mustRunAfter ChownCord
+PIdeployOpenStack.mustRunAfter PIprepPlatform
+PIdeployONOS.mustRunAfter PIdeployOpenStack
+PIdeployXOS.mustRunAfter PIdeployONOS
+PIsetupAutomation.mustRunAfter PIdeployXOS
+PIdeployPlatform.mustRunAfter project(':onos-apps').deploy
+PIdeployPlatform.mustRunAfter project(':maas').deployBase
 
 task deploy  {
-    dependsOn << project(':platform-install').deployPlatform
+    dependsOn PIdeployPlatform
 }
 
