Initial CDN deployment playbooks and ansible modules

Change-Id: Ib2c5a8f3d22459bf3c540289f7b7cc1b3fdf4457
diff --git a/setup/roles/cdn-cord-profile/files/cdn_service.yml b/setup/roles/cdn-cord-profile/files/cdn_service.yml
new file mode 100644
index 0000000..f83e4d0
--- /dev/null
+++ b/setup/roles/cdn-cord-profile/files/cdn_service.yml
@@ -0,0 +1,111 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Setup the CDN on the pod
+
+imports:
+   - custom_types/xos.yaml
+
+topology_template:
+  node_templates:
+
+    Private:
+      type: tosca.nodes.NetworkTemplate
+
+    management:
+      type: tosca.nodes.network.Network.XOS
+      properties:
+          no-create: true
+          no-delete: true
+          no-update: true
+
+#    cdn-public:
+#      type: tosca.nodes.network.Network
+#      properties:
+#          ip_version: 4
+#          cidr: 207.141.192.128/28
+#      requirements:
+#          - network_template:
+#              node: Private
+#              relationship: tosca.relationships.UsesNetworkTemplate
+#          - owner:
+#              node: mysite_cdn
+#              relationship: tosca.relationships.MemberOfSlice
+#          - connection:
+#              node: mysite_cdn
+#              relationship: tosca.relationships.ConnectsToSlice
+
+    mysite:
+      type: tosca.nodes.Site
+
+    public:
+      type: tosca.nodes.network.Network.XOS
+      properties:
+        no-create: true
+        no-delete: true
+        no-update: true
+
+    service#cdn:
+      type: tosca.nodes.Service
+      properties:
+        public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
+        private_key_fn: /opt/xos/services/cdn/keys/amc_id_rsa
+      artifacts:
+        pubkey: /opt/cord_profile/key_import/cdnnode_id_rsa.pub
+
+    mysite_cdn_control:
+      description: This slice holds the controller for the CDN
+      type: tosca.nodes.Slice
+      properties:
+          network: noauto
+      requirements:
+          - site:
+              node: mysite
+              relationship: tosca.relationships.MemberOfSite
+          - management:
+              node: management
+              relationship: tosca.relationships.ConnectsToNetwork
+          - public:
+              node: public
+              relationship: tosca.relationships.ConnectsToNetwork
+          - cdn_service:
+              node: service#cdn
+              relationship: tosca.relationships.MemberOfService
+
+
+    mysite_cdn_nodes:
+      description: This slice holds the hypercache/rr nodes for the CDN
+      type: tosca.nodes.Slice
+      properties:
+          network: noauto
+      requirements:
+          - site:
+              node: mysite
+              relationship: tosca.relationships.MemberOfSite
+          - management:
+              node: management
+              relationship: tosca.relationships.ConnectsToNetwork
+          - public:
+              node: public
+              relationship: tosca.relationships.ConnectsToNetwork
+          - cdn_service:
+              node: service#cdn
+              relationship: tosca.relationships.MemberOfService
+
+    mysite_cdn_cli:
+      description: This slice holds the hypercache/rr nodes for the CDN
+      type: tosca.nodes.Slice
+      properties:
+          network: noauto
+      requirements:
+          - site:
+              node: mysite
+              relationship: tosca.relationships.MemberOfSite
+          - management:
+              node: management
+              relationship: tosca.relationships.ConnectsToNetwork
+          - public:
+              node: public
+              relationship: tosca.relationships.ConnectsToNetwork
+          - cdn_service:
+              node: service#cdn
+              relationship: tosca.relationships.MemberOfService
\ No newline at end of file
diff --git a/setup/roles/cdn-cord-profile/files/setup_headnode.yml b/setup/roles/cdn-cord-profile/files/setup_headnode.yml
new file mode 100644
index 0000000..edf2aa4
--- /dev/null
+++ b/setup/roles/cdn-cord-profile/files/setup_headnode.yml
@@ -0,0 +1,21 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Some basic fixtures
+
+imports:
+   - custom_types/xos.yaml
+
+topology_template:
+  node_templates:
+    m1.cdnnode:
+      type: tosca.nodes.Flavor
+
+    image#AMC:
+      type: tosca.nodes.Image
+      properties:
+        path: /opt/xos/images/AMC.qcow2
+
+    image#CentOS-6-cdnnode-0.4:
+      type: tosca.nodes.Image
+      properties:
+        path: /opt/xos/images/CentOS-6-cdnnode-0.4.qcow2
diff --git a/setup/roles/cdn-cord-profile/tasks/main.yml b/setup/roles/cdn-cord-profile/tasks/main.yml
new file mode 100644
index 0000000..5110500
--- /dev/null
+++ b/setup/roles/cdn-cord-profile/tasks/main.yml
@@ -0,0 +1,16 @@
+---
+
+- name: Copy over commonly used and utility TOSCA files
+  copy:
+    src: "{{ item }}"
+    dest: "/opt/cord_profile/{{ item }}"
+  with_items:
+    - setup_headnode.yml
+    - cdn_service.yml
+
+- name: Copy over the public key
+  copy:
+    src: "{{ item }}"
+    dest: "/opt/cord_profile/key_import/{{ item }}"
+  with_items:
+    - cdnnode_id_rsa.pub