From cabda0009efa24be57e46f8a3499a142639b3f87 Mon Sep 17 00:00:00 2001
From: James Falkner <schtool@gmail.com>
Date: Wed, 19 Feb 2020 19:48:37 +0100
Subject: [PATCH] update for OCP 4.3, CRW 2 and latest operators for serverless,serviceā€¦ (#1163)

---
 ansible/roles/ocp4-workload-ccnrd/tasks/workload.yml |  214 +++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 181 insertions(+), 33 deletions(-)

diff --git a/ansible/roles/ocp4-workload-ccnrd/tasks/workload.yml b/ansible/roles/ocp4-workload-ccnrd/tasks/workload.yml
index f3c86fc..cacda0f 100644
--- a/ansible/roles/ocp4-workload-ccnrd/tasks/workload.yml
+++ b/ansible/roles/ocp4-workload-ccnrd/tasks/workload.yml
@@ -13,53 +13,201 @@
   debug:
     msg: "Setting up module_type for workshop module_type = {{ module_type }}"
 
-- name: Transfer executable script script
-  copy: 
-    src=../files/preparelab_ccn.sh dest=/tmp/preparelab_ccn.sh mode=0777
+- name: Give access to opentlc-mgr
+  shell: |
+         oc adm policy add-cluster-role-to-user cluster-admin {{ ocp_username }}
 
-- name: Execute the preparelab_ccn.sh 
-  shell: /tmp/preparelab_ccn.sh -c {{ num_users }} -m {{ module_type }} 
+- name: create module list
+  set_fact:
+    modules: "{{ module_type.split(',') | map('trim') | list }}"
 
-- name: Remove the preparelab_ccn.sh 
-  file: path=/tmp/preparelab_ccn.sh state=absent
+- name: Selected Modules
+  debug:
+    msg: "selected modules list: {{ modules }}"
 
-# get ingress host
-- name: Get ingress host
+- name: deploy templates to openshift namespace
+  command: oc replace --force -n openshift -f -
+  args:
+    stdin: "{{ lookup('file', item) }}"
+  loop:
+    - ./files/coolstore-monolith-binary-build-template.yaml
+    - ./files/coolstore-monolith-pipeline-build-template.yaml
+    - ./files/ccn-sso72-template.yaml
+    - ./files/jaeger-all-in-one-template.yml
+
+- name: create inventory and catalog user projects
+  when: ("m1" in modules or "m2" in modules or "m3" in modules)
+  include_tasks: create_project.yaml
+  vars:
+    name: "{{ item[0] }}-{{ item[1] }}"
+    user: "{{ item[0] }}"
+  loop: "{{ users|product(['inventory', 'catalog'])|list }}"
+
+- name: create bookinfo user projects
+  when: ("m3" in modules)
+  include_tasks: create_project.yaml
+  vars:
+    name: "{{ item[0] }}-{{ item[1] }}"
+    user: "{{ item[0] }}"
+  loop: "{{ users|product(['bookinfo'])|list }}"
+
+- name: create cloudnativeapps user projects
+  when: ("m4" in modules)
+  include_tasks: create_project.yaml
+  vars:
+    name: "{{ item[0] }}-{{ item[1] }}"
+    user: "{{ item[0] }}"
+  loop: "{{ users|product(['cloudnativeapps'])|list }}"
+
+- name: create pipelines user projects
+  when: ("m4" in modules)
+  include_tasks: create_project.yaml
+  vars:
+    name: "{{ item[0] }}-{{ item[1] }}"
+    user: "{{ item[0] }}"
+  loop: "{{ users|product(['cloudnative-pipeline'])|list }}"
+
+- name: create labs-infra project
+  k8s:
+    state: present
+    kind: Project
+    api_version: project.openshift.io/v1
+    definition:
+      metadata:
+        name: "labs-infra"
+        annotations:
+          openshift.io/description: ""
+          openshift.io/display-name: "Lab Infrastructure"
+
+# Search for rhamt
+- name: Search for RHAMT
+  when: ("m1" in modules)
   k8s_facts:
-    api_version: v1
-    kind: Service
-    name: router-default
-    namespace: openshift-ingress
-  register: r_router_default
+    kind: DeploymentConfig
+    namespace: labs-infra
+    name: rhamt-web-console
+  register: rhamt_dc
 
-- name: Show ingress object
+# deploy RHAMT
+- name: Deploy RHAMT
+  when: ("m1" in modules) and (rhamt_dc.resources | list | length == 0)
+  include_tasks: install-rhamt.yaml
+
+# Skip Gogs for now
+#
+# - name: Search for Gogs
+#   k8s_facts:
+#     kind: DeploymentConfig
+#     namespace: labs-infra
+#     name: gogs
+#   register: gogs_dc
+
+# - name: Deploy gogs
+#   when: gogs_dc.resources | list | length == 0
+#   include_tasks: install-gogs.yaml
+
+- name: Look for service mesh subscription
+  when: ("m3" in modules or "m4" in modules)
+  k8s_facts:
+    api_version: operators.coreos.com/v1alpha1
+    kind: Subscription
+    name: servicemeshoperator
+    namespace: openshift-operators
+  register: r_sm_sub
+
+- name: show existing service mesh cr
+  when: ("m3" in modules or "m4" in modules)
   debug:
-    msg: "Ingress object: {{ r_router_default }}"
+    msg: "existing service mesh sub: {{ r_sm_sub }}"
 
-- name: Show ingress host name
+# Setup OpenShift Service Mesh via operator
+
+- name: Create OpenShift Objects for Service Mesh
+  when: ("m3" in modules or "m4" in modules) and (r_sm_sub.resources | list | length == 0)
+  include_tasks: install-servicemesh.yaml
+
+# Setup OpenShift Serverless via operator
+- name: Look for serverless subscription
+  when: ("m4" in modules)
+  k8s_facts:
+    api_version: operators.coreos.com/v1alpha1
+    kind: Subscription
+    name: serverless-operator
+    namespace: openshift-operators
+  register: r_serverless_sub
+
+- name: show existing serverless sub
+  when: ("m4" in modules)
   debug:
-    msg: "Ingress hostname: {{ r_router_default.resources[0].status.loadBalancer.ingress[0].hostname }}"
+    msg: "existing serverless sub: {{ r_serverless_sub }}"
 
-# Fix AWS ELB connection timeout
-- name: Get ELB name
-  become_user: ec2-user
-  shell: |
-    sudo -u ec2-user aws elb describe-load-balancers --region {{ aws_region }} | jq  '.LoadBalancerDescriptions |
-      map(select( .DNSName == "{{ r_router_default.resources[0].status.loadBalancer.ingress[0].hostname }}"))' |
-      jq -r '.[0].LoadBalancerName'
-  register: lbname
+- name: Create OpenShift Objects for Serverless (knative)
+  when: ("m4" in modules) and (r_serverless_sub.resources | list | length == 0)
+  include_tasks: install-serverless.yaml
 
-- name: Show load balancer name
+# Setup AMQ via operator
+- name: Look for amq subscription
+  when: ("m4" in modules)
+  k8s_facts:
+    api_version: operators.coreos.com/v1alpha1
+    kind: Subscription
+    name: amq-streams
+    namespace: openshift-operators
+  register: r_amq_sub
+
+- name: show existing amq sub
+  when: ("m4" in modules)
   debug:
-    msg: "Load balancer name: {{ lbname.stdout }}"
+    msg: "existing amq sub: {{ r_amq_sub }}"
 
-- name: Fix load balancer
-  become_user: ec2-user
-  shell: |
-    sudo -u ec2-user aws elb modify-load-balancer-attributes --region {{ aws_region }} --load-balancer-name {{ lbname.stdout }} --load-balancer-attributes "{\"ConnectionSettings\":{\"IdleTimeout\":300}}"
+- name: Create OpenShift Objects for Kafka (amq streams)
+  when: ("m4" in modules) and (r_amq_sub.resources | list | length == 0)
+  include_tasks: install-amqstreams.yaml
+
+# setup pipelines
+- name: Look for pipelines subscription
+  when: ("m4" in modules)
+  k8s_facts:
+    api_version: operators.coreos.com/v1alpha1
+    kind: Subscription
+    name: openshift-pipelines-operator
+    namespace: openshift-operators
+  register: r_pipelines_sub
+
+- name: show existing pipelines sub
+  when: ("m4" in modules)
+  debug:
+    msg: "existing pipelines sub: {{ r_pipelines_sub }}"
+
+- name: Create OpenShift Objects for OpenShift Pipelines (tekton)
+  when: ("m4" in modules) and (r_pipelines_sub.resources | list | length == 0)
+  include_tasks: install-pipelines.yaml
+
+- name: install guides
+  include_tasks: install-guides.yaml
+  vars:
+    guide: "{{ item }}"
+  loop: "{{ modules }}"
+
+# Install CodeReady Workspaces
+- name: see if codeready is installed
+  k8s_facts:
+    api_version: org.eclipse.che/v1
+    kind: CheCluster
+    name: codeready-workspaces
+    namespace: labs-infra
+  register: r_codeready_cr
+
+- name: show codeready cr
+  debug:
+    msg: "existing codeready project: {{ r_codeready_cr }}"
+
+- name: install codeready
+  when: r_codeready_cr.resources | list | length == 0
+  include_tasks: install-codeready.yaml
 
 # Leave this as the last task in the playbook.
 - name: workload tasks complete
   debug:
     msg: "Workload Tasks completed successfully."
-  when: not silent|bool
\ No newline at end of file
+  when: not silent|bool

--
Gitblit v1.9.3