Initial outline of opencord integration repo

- Vagrantfile to support standardized 'corddev' development environment
- Ansible playbooks to properly bring up devenv
- Gradle build structure
- Gradle plugin to manage docker-based workflow (pull, build, run, tag,
  push, etc.)
- Gradle top-level build file to allow pre-fetching and publishing
  component docker images. Supported main tasks: fetch, publish
- Example to how to manage 'as-is' upstream components
- A cleaner way of handling gradle rules
- Added initial content to README.md
- Added initial content to docs/quickstart.md
- Updated .gitignore
- Placeholder, parametric entry for deploy step
- Placeholder deployment profile config file (config/default.yml)

Change-Id: I0ff82e0aa3a5299422bd500f9ab8e41e4814a7ca
diff --git a/components/nginx/build.gradle b/components/nginx/build.gradle
new file mode 100644
index 0000000..8980e82
--- /dev/null
+++ b/components/nginx/build.gradle
@@ -0,0 +1,66 @@
+plugins {
+  id "com.github.ben-manes.versions" version "0.12.0"
+  id "de.gesellix.docker" version "2016-05-05T13-15-11"
+}
+
+import de.gesellix.gradle.docker.tasks.*
+
+import static groovy.json.JsonOutput.prettyPrint
+import static groovy.json.JsonOutput.toJson
+
+allprojects {
+  apply plugin: 'base'
+  apply plugin: 'de.gesellix.docker'
+  docker {
+    // dockerHost = System.env.DOCKER_HOST ?: 'unix:///var/run/docker.sock'
+    // dockerHost = System.env.DOCKER_HOST ?: 'https://192.168.99.100:2376'
+    // certPath = System.getProperty('docker.cert.path') ?: "${System.getProperty('user.home')}/.docker/machine/machines/default"
+    // authConfigPlain = [
+    //   "username"       : "joe",
+    //   "password"       : "some-pw-as-needed",
+    //   "email"          : "joe@acme.com",
+    //   "serveraddress"  : "https://index.docker.io/v1/"
+    //  ]
+  }
+}
+
+task ping(type: DockerPingTask) {
+  doLast { println prettyPrint(toJson(result.content)) }
+}
+
+task info(type: DockerInfoTask) {
+  doLast { println prettyPrint(toJson(info)) }
+}
+
+task version(type: DockerVersionTask) {
+  doLast { println prettyPrint(toJson(version)) }
+}
+
+//task publish(type: DockerPublishTask) {
+//  imageName = 'nginx'
+//  imageTag = 'cand'
+//  buildContextDirectory = file('./docker/')
+//  targetRegistries = [
+//    dev: "localhost:5000"
+//  ]
+//}
+
+task fetch(type: DockerPullTask) {
+  imageName = 'nginx@sha256:b555f8c64ab4e85405e0d8b03f759b73ce88deb802892a3b155ef55e3e832806'
+  // tag = 'sha256:b555f8c64ab4e85405e0d8b03f759b73ce88deb802892a3b155ef55e3e832806'
+  // tag = '1.10.0'
+  // authConfigPlain = getDockerClient().readDefaultAuthConfig()
+}
+
+task tag(type: DockerTagTask) {
+  dependsOn fetch
+  imageId = 'nginx@sha256:b555f8c64ab4e85405e0d8b03f759b73ce88deb802892a3b155ef55e3e832806'
+  tag = 'nginx:cand'
+}
+
+task publish(type: DockerPushTask) {
+  dependsOn tag
+
+  repositoryName = 'nginx:cand'
+  registry = 'localhost:5000'
+}