completed implementation so that the scripts leaves edgemicro is running with the key and secret passed to edge during configuration.
diff --git a/component/microgateway-setup.yml b/component/microgateway-setup.yml
new file mode 100644
index 0000000..f498db3
--- /dev/null
+++ b/component/microgateway-setup.yml
@@ -0,0 +1,83 @@
+---
+- hosts: micro
+  vars:
+    config_output: '/tmp/edgemicro_config_output.txt'
+  vars_files:
+  - ~/.apigee/credentials.yml
+  roles:
+  - apigee-opdk-setup-default-settings
+  tasks:
+
+  - name: Init edgemicro
+    become: no
+    shell: 'edgemicro init'
+    args:
+      chdir: '~'
+    tags:
+    - apigee-pre-req
+
+  - block:
+
+    - name: Get router public IP address
+      set_fact:
+        router_ip: "{{ hostvars[groups['rmp'][0]]['public_address'] }}"
+      tags:
+      - apigee-component
+
+    - name: Configure edgemicro on private
+      become: no
+      delegate_to: '{{ inventory_hostname }}'
+      shell: edgemicro private configure -m http://{{ local_mgmt_ip }}:8080 -r http://{{ router_ip }}:9001 -o {{ org_name }} -e {{ env_name }} -u {{ opdk_user_email }} -p {{ opdk_user_pass }} -v default
+      args:
+        chdir: '~'
+      tags:
+      - apigee-component
+      register: config_private
+    when: edgemicro_private is defined and edgemicro_private | bool
+
+  - block:
+#  TODO: This block needs to be tested
+    - name: Configure edgemicro on private
+      become: no
+      delegate_to: '{{ inventory_hostname }}'
+      shell: edgemicro configure -o {{ org_name }} -e {{ env_name }} -u {{ opdk_user_email }} -p {{ opdk_user_pass }} -v default
+      args:
+        chdir: '~'
+      tags:
+      - apigee-component
+      register: config_public
+
+    when: edgemicro_private is not defined or not edgemicro_private | bool
+
+  - name: Report config data
+    debug:
+      var: config_private.stdout_lines
+
+  - copy :
+      content: "{{ config_private.stdout }}"
+      dest: '{{ config_output }}'
+
+  - name: Capture key
+    shell: "awk '/key:/ { print $2  }' {{ config_output }}"
+    register: key
+
+  - name: Capture secret
+    shell: "awk '/secret:/ { print $2  }' {{ config_output }}"
+    register: secret
+
+  - name: Cache edgemicro key
+    cache:
+      key: 'edgemicro_key'
+      value: '{{ key.stdout }}'
+
+  - name: Cache edgemicro secret
+    cache:
+      key: 'edgemicro_secret'
+      value: '{{ secret.stdout }}'
+
+  - name: Start edgemicro
+    shell: edgemicro start -o {{ org_name }} -e {{ env_name }} -k {{ edgemicro_key }} -s {{ edgemicro_secret }}
+    args:
+      chdir: '~'
+    async: 5
+    poll: 0
diff --git a/configuration/opdk-setup-os.yml b/configuration/opdk-setup-os.yml
new file mode 100644
index 0000000..0e9394a
--- /dev/null
+++ b/configuration/opdk-setup-os.yml
@@ -0,0 +1,59 @@
+---
+- hosts: micro
+  become: yes
+  vars_files:
+  - ~/.apigee/credentials.yml
+  roles:
+  - apigee-opdk-setup-os-minimum
+  - apigee-opdk-setup-os-common
+
+
+  tasks:
+  - name: Install needed Python used for downloading files with https
+    pip:
+      name: '{{ item }}'
+      state: present
+    with_items:
+    - urllib3
+    - pyopenssl
+    - ndg-httpsclient
+    - pyasn1
+    tags:
+    - os-pre-req
+
+  - name: Download Node 6.x package manager configuration script
+    get_url:
+      url: https://rpm.nodesource.com/setup_6.x
+      dest: /tmp/setup_node.sh
+      mode: 0700
+    tags:
+    - os-pre-req
+
+
+  - name: Setup Node 6.x package manager
+    shell: "/tmp/setup_node.sh"
+    tags:
+    - os-pre-req
+
+  - name:  Install Yum packages
+    yum:
+      name: '{{ item }}'
+      state: present
+    with_items:
+    - nodejs
+    - gcc-c++
+    - make
+    tags:
+    - os-pre-req
+
+  - name: Install edgemicro
+    npm:
+      name: '{{ item.name }}'
+      version: '{{ item.version }}'
+      path: '~'
+      global: true
+      state: present
+    with_items:
+    - { name: edgemicro, version: '2.1.1' }
+    tags:
+    - os-pre-req
diff --git a/configuration/update-cache.yml b/configuration/update-cache.yml
new file mode 100644
index 0000000..56c4d88
--- /dev/null
+++ b/configuration/update-cache.yml
@@ -0,0 +1,10 @@
+---
+- hosts: planet,micro
+  vars_files:
+  - ~/.apigee/credentials.yml
+  roles:
+  - apigee-opdk-setup-default-settings
+  tags:
+  - cache
+  - os-pre-req
+  - apigee-pre-req
diff --git a/installation.yml b/installation.yml
index 8598c32..c94806f 100644
--- a/installation.yml
+++ b/installation.yml
@@ -1,115 +1,6 @@
 ---
-- hosts: planet,micro
-  vars_files:
-  - ~/.apigee/credentials.yml
-  roles:
-  - apigee-opdk-setup-default-settings
-  tags:
-  - cache
-  - os-pre-req
-  - apigee-pre-req
+- include: configuration/update-cache.yml
 
-- hosts: micro
-  become: yes
-  vars_files:
-  - ~/.apigee/credentials.yml
-  roles:
-  - apigee-opdk-setup-os-minimum
-  - apigee-opdk-setup-os-common
+- include: configuration/opdk-setup-os.yml
 
-  tasks:
-  - name: Install needed Python used for downloading files with https
-    pip:
-      name: '{{ item }}'
-      state: present
-    with_items:
-    - urllib3
-    - pyopenssl
-    - ndg-httpsclient
-    - pyasn1
-    tags:
-    - os-pre-req
-
-  - name: Download Node 6.x package manager configuration script
-    get_url:
-      url: https://rpm.nodesource.com/setup_6.x
-      dest: /tmp/setup_node.sh
-      mode: 0700
-    tags:
-    - os-pre-req
-
-
-  - name: Setup Node 6.x package manager
-    shell: "/tmp/setup_node.sh"
-    tags:
-    - os-pre-req
-
-  - name:  Install Yum packages
-    yum:
-      name: '{{ item }}'
-      state: present
-    with_items:
-    - nodejs
-    - gcc-c++
-    - make
-    tags:
-    - os-pre-req
-
-  - name: Install edgemicro
-    npm:
-      name: '{{ item.name }}'
-      version: '{{ item.version }}'
-      path: '~'
-      global: true
-      state: present
-    with_items:
-    - { name: edgemicro, version: '2.1.1' }
-    tags:
-    - os-pre-req
-
-- hosts: micro
-  become: true
-  vars_files:
-  - ~/.apigee/credentials.yml
-  roles:
-  - apigee-opdk-setup-default-settings
-  tasks:
-
-  - name: Init edgemicro
-    shell: 'edgemicro init'
-    args:
-      chdir: '~'
-    tags:
-    - apigee-pre-req
-
-  - block:
-
-    - name: Get router public IP address
-      set_fact:
-        router_ip: "{{ hostvars[groups['rmp'][0]]['public_address'] }}"
-      tags:
-      - apigee-component
-
-    - name: Configure edgemicro on private
-      become: true
-      delegate_to: '{{ inventory_hostname }}'
-      shell: edgemicro private configure -m http://{{ local_mgmt_ip }}:8080 -r http://{{ router_ip }}:9001 -o {{ org_name }} -e {{ env_name }} -u {{ opdk_user_email }} -p {{ opdk_user_pass }} -v default
-      args:
-        chdir: '~'
-      tags:
-      - apigee-component
-    # TODO: This when clause needs to be tested.
-    when: edgemicro_private is defined and edgemicro_private | bool
-
-  - block:
-#  TODO: This block needs to be tested
-    - name: Configure edgemicro on private
-      become: true
-      delegate_to: '{{ inventory_hostname }}'
-      shell: edgemicro configure -o {{ org_name }} -e {{ env_name }} -u {{ opdk_user_email }} -p {{ opdk_user_pass }} -v default
-      args:
-        chdir: '~'
-      tags:
-      - apigee-component
-
-    when: edgemicro_private is not defined or not edgemicro_private | bool
\ No newline at end of file
+- include: component/microgateway-setup.yml