CORD-842 deploy chameleon

Change-Id: Ie33ba200f275954176fef76a5fc804b82ca3c975
diff --git a/roles/cord-profile/tasks/main.yml b/roles/cord-profile/tasks/main.yml
index 15d861a..beb17f5 100644
--- a/roles/cord-profile/tasks/main.yml
+++ b/roles/cord-profile/tasks/main.yml
@@ -82,6 +82,7 @@
     - deployment.yaml
     - xos.yaml
     - xos-bootstrap-docker-compose.yaml
+    - onboard-chameleon.yaml
 
 - name: Create profile specific templated TOSCA config files
   template:
diff --git a/roles/cord-profile/templates/onboard-chameleon.yaml.j2 b/roles/cord-profile/templates/onboard-chameleon.yaml.j2
new file mode 100644
index 0000000..9ba68f2
--- /dev/null
+++ b/roles/cord-profile/templates/onboard-chameleon.yaml.j2
@@ -0,0 +1,15 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.yaml
+
+description: chameleon component config, generated by platform-install
+
+topology_template:
+  node_templates:
+    xos_chameleon:
+      type: tosca.nodes.Component
+      properties:
+        command: python chameleon/chameleon/main.py -R 9101 -G xos-core:50055
+        image: xosproject/chameleon
+        ports: 9101:9101
diff --git a/roles/xos-docker-images/tasks/main.yml b/roles/xos-docker-images/tasks/main.yml
index 4482aac..37c1a6a 100644
--- a/roles/xos-docker-images/tasks/main.yml
+++ b/roles/xos-docker-images/tasks/main.yml
@@ -43,6 +43,23 @@
     dockerfile: "containers/xos/Dockerfile.test"
     pull: False # use the locally built copy of xosproject/xos
 
+- name: Clean up chameleon temp directory
+  shell: rm -rf {{ cord_dir }}/orchestration/xos/containers/chameleon/tmp.chameleon
+  tags:
+    - skip_ansible_lint # docker can't access files outside of build context, so we must copy
+
+- name: Populate chameleon temp directory
+  shell: cp -a "{{ cord_dir }}/component/chameleon" "{{ cord_dir }}/orchestration/xos/containers/chameleon/tmp.chameleon"
+  tags:
+    - skip_ansible_lint # docker can't access files outside of build context, so we must copy
+
+- name: Build xosproject/chameleon image
+  docker_image:
+    name: "xosproject/chameleon"
+    path: "{{ cord_dir }}/orchestration/xos/containers/chameleon"
+    dockerfile: "Dockerfile.chameleon"
+    pull: False # use the locally built copy of xosproject/xos
+
 - name: Tag and push xos-base image to docker registry
   when: push_xos_base_image
   docker_image:
diff --git a/roles/xos-onboarding/defaults/main.yml b/roles/xos-onboarding/defaults/main.yml
index b9d946f..22d7bdb 100644
--- a/roles/xos-onboarding/defaults/main.yml
+++ b/roles/xos-onboarding/defaults/main.yml
@@ -8,5 +8,9 @@
 xos_libraries:
   - "ng-xos-lib"
 
+xos_components:
+  - name: Chameleon
+    recipe_filename: onboard-chameleon.yaml
+
 xos_services: []
 
diff --git a/roles/xos-onboarding/tasks/main.yml b/roles/xos-onboarding/tasks/main.yml
index 7498bed..841125b 100644
--- a/roles/xos-onboarding/tasks/main.yml
+++ b/roles/xos-onboarding/tasks/main.yml
@@ -47,6 +47,12 @@
   tags:
     - skip_ansible_lint # TOSCA loading should be idempotent
 
+- name: Onboard components
+  command: "python /opt/xos/tosca/run.py {{ xos_admin_user }} /opt/cord_profile/{{ item.recipe_filename }}"
+  with_items: "{{ xos_components }}"
+  tags:
+    - skip_ansible_lint # TOSCA loading should be idempotent
+
 - name: Enable onboarding
   command: "python /opt/xos/tosca/run.py {{ xos_admin_user }} /opt/cord_profile/enable-onboarding.yaml"
   tags: