Skip to content

Commit 5a49169

Browse files
juliaaanowkulhanek
andauthored
Accelerate New App Dev Workshop RHTE (#5811)
* Add ACC New App Dev Environment * Implement argocd and tekton workloads * Implement kafka workload * Implement app demo workload * Add lab guides * Add distribution lab guides * Add pipeline and taskruns * Cleanup unused code * Fix tekton taskrun creation * Add amq operator requests and limits * Fix task and pipeline runs * Add README to acc_new_app_dev * Fix lab guides urls acc new app * Fix yaml lint line length * Fix yaml lint identation rules Co-authored-by: Wolfgang Kulhanek <wkulhanek@users.noreply.github.com>
1 parent 2edea67 commit 5a49169

31 files changed

+1112
-0
lines changed

ansible/roles/install_operator/templates/subscription.yaml.j2

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,6 @@ spec:
2121
{% if install_operator_starting_csv | default("") | length > 0 %}
2222
startingCSV: "{{ install_operator_starting_csv }}"
2323
{% endif %}
24+
{% if install_operator_subscription_config | default("") | length > 0 %}
25+
config: {{ install_operator_subscription_config | to_json }}
26+
{% endif %}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Accelerate New App Development
2+
3+
* https://docs.google.com/document/d/1QPm-oIsIGJVD3KPRvdCO4d64RZffDno-IXctkBWxkCU/edit
4+
* https://docs.google.com/presentation/d/1ps1ot2qOc41K4TfDYvSbjzbhoSmRX-76K-XcXC17SSQ/edit
5+
6+
## Diagnosis steps after provisioning
7+
8+
```shell
9+
oc get co
10+
oc get nodes
11+
oc get pipelinerun -A | grep Failed
12+
oc get pipelinerun -A | grep Succeeded | wc -l
13+
oc get taskrun -A | grep Failed
14+
oc get pods -A | grep -v Running | grep -v Completed
15+
```
16+
17+
```
18+
tkn pipeline start quarkus-pipeline --workspace name=app-source,claimName=workspace-app-source --workspace name=maven-settings,emptyDir= --use-param-defaults -n tekton-user1
19+
```
20+
21+
## Redeploy lab guides
22+
23+
```shell
24+
oc -n guides start-build acc-new-app-dev-m1 --follow
25+
oc -n guides scale deployment acc-new-app-dev-m1 --replicas=0
26+
oc -n guides scale deployment acc-new-app-dev-m1 --replicas=1
27+
```
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
---
2+
become_override: false
3+
silent: false
4+
5+
ocp4_workload_acc_new_app_dev_user_prefix: user
6+
ocp4_workload_acc_new_app_dev_user_count: 2
7+
8+
ocp4_workload_acc_new_app_dev_gitea_project: gitea
9+
ocp4_workload_acc_new_app_dev_gitea_instance: gitea
10+
ocp4_workload_acc_new_app_dev_gitea_user_password: password
11+
12+
ocp4_workload_acc_new_app_dev_argocd_namespace_prefix: argocd-
13+
ocp4_workload_acc_new_app_dev_tekton_namespace_prefix: tekton-
14+
ocp4_workload_acc_new_app_dev_demo_namespace_prefix: demo-
15+
16+
# repo details from gitea containing the devops code for this lab
17+
ocp4_workload_acc_new_app_dev_repo: acc-new-app-dev
18+
ocp4_workload_acc_new_app_dev_revision: main
19+
20+
ocp4_workload_acc_new_app_dev_demo_app_name: app
21+
# repo details from gitea containing the source code of the demo application.
22+
ocp4_workload_acc_new_app_dev_demo_app_source: app
23+
ocp4_workload_acc_new_app_dev_demo_app_source_revision: main
24+
# repo details from gitea containing the gitops/deploy code of the demo application.
25+
ocp4_workload_acc_new_app_dev_demo_app_deploy: app-deploy
26+
ocp4_workload_acc_new_app_dev_demo_app_deploy_revision: main
27+
ocp4_workload_acc_new_app_dev_demo_app_deploy_path: "."
28+
29+
# trigger CI pipeline of the demo app for all users
30+
ocp4_workload_acc_new_app_dev_trigger_pipeline: true
31+
32+
ocp4_workload_acc_new_app_dev_amqstreams_channel: stable
33+
ocp4_workload_acc_new_app_dev_amqstreams_startingcsv: ""
34+
ocp4_workload_acc_new_app_dev_amqstreams_catalogsource_image: ""
35+
ocp4_workload_acc_new_app_dev_amqstreams_catalogsource_tag: ""
36+
ocp4_workload_acc_new_app_dev_amqstreams_config:
37+
resources:
38+
limits:
39+
memory: "{{ ocp4_workload_acc_new_app_dev_amqstreams_memory | default('512Mi') }}"
40+
requests:
41+
cpu: "250m"
42+
memory: "{{ ocp4_workload_acc_new_app_dev_amqstreams_memory | default('512Mi') }}"
43+
44+
ocp4_workload_acc_new_app_dev_kafka_name: app-kafka
45+
ocp4_workload_acc_new_app_dev_kafka_topic: app-topic
46+
47+
ocp4_workload_acc_new_app_dev_guides: true
48+
ocp4_workload_acc_new_app_dev_guides_namespace: guides
49+
ocp4_workload_acc_new_app_dev_guides_repo: https://github.com/myorg
50+
ocp4_workload_acc_new_app_dev_guides_repo_prefix: acc-new-app-dev
51+
ocp4_workload_acc_new_app_dev_guides_redis_image: image-registry.openshift-image-registry.svc:5000/openshift/redis:latest
52+
# Array of lab guides: name must match.
53+
ocp4_workload_acc_new_app_dev_guides_modules: ""
54+
# ocp4_workload_acc_new_app_dev_guides_modules: "m1;m2;m3"
55+
ocp4_workload_acc_new_app_dev_guides_module_titles: []
56+
# ocp4_workload_acc_new_app_dev_guides_module_titles:
57+
# - name: m1
58+
# title: "Enabling Immediate Productivity"
59+
# url: "https://guides-url/unknown"
60+
61+
ocp4_workload_acc_new_app_dev_guides_lab_duration: 1week
62+
ocp4_workload_acc_new_app_dev_guides_lab_admin_password: password
63+
ocp4_workload_acc_new_app_dev_guides_lab_user_password: password
64+
ocp4_workload_acc_new_app_dev_guides_lab_access_token: password
65+
66+
ocp4_workload_acc_new_app_dev_guides_distribution_image: quay.io/openshiftlabs/username-distribution:latest
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
galaxy_info:
3+
role_name: ocp4_workload_acc_new_app_dev
4+
author: Juliano Mohr
5+
description: |
6+
Set up the Accelerate New App Dev sales play demo and workshop environments
7+
license: MIT
8+
min_ansible_version: "2.9"
9+
platforms: []
10+
galaxy_tags:
11+
- ocp
12+
- openshift
13+
dependencies: []
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# --------------------------------------------------------
2+
# Deploy module guides
3+
# --------------------------------------------------------
4+
- name: Create prerequisites for guides
5+
kubernetes.core.k8s:
6+
state: present
7+
definition: "{{ lookup('template', item ) | from_yaml }}"
8+
loop:
9+
- guides/namespace.yaml.j2
10+
- guides/imagestream_httpd.yaml.j2
11+
12+
- name: Create module list
13+
ansible.builtin.set_fact:
14+
_ocp4_workload_acc_new_app_dev_guides_modules_list: "{{ ocp4_workload_acc_new_app_dev_guides_modules.split(';') | map('trim') | list }}"
15+
16+
- name: Print selected modules
17+
debug:
18+
msg: "Selected list of modules: {{ _ocp4_workload_acc_new_app_dev_guides_modules_list }}"
19+
20+
- name: Deploy guides
21+
vars:
22+
_ocp4_workload_acc_new_app_dev_guide: "{{ ocp4_workload_acc_new_app_dev_guides_repo_prefix }}-{{ module }}"
23+
ansible.builtin.include_tasks: guides_modules_install.yml
24+
loop: "{{ _ocp4_workload_acc_new_app_dev_guides_modules_list }}"
25+
loop_control:
26+
loop_var: module
27+
28+
# --------------------------------------------------------
29+
# Deploy user distribution tool
30+
# --------------------------------------------------------
31+
32+
- name: search for username distribution tool
33+
kubernetes.core.k8s_info:
34+
api_version: apps/v1
35+
kind: Deployment
36+
name: get-a-username
37+
namespace: "{{ ocp4_workload_acc_new_app_dev_guides_namespace }}"
38+
register: r_gau
39+
40+
- name: deploy redis
41+
when: r_gau.resources | list | length == 0
42+
block:
43+
- name: Create redis instance
44+
kubernetes.core.k8s:
45+
state: present
46+
definition: "{{ lookup('template', item ) | from_yaml }}"
47+
loop:
48+
- "guides/redis/pvc.yaml.j2"
49+
- "guides/redis/secret.yaml.j2"
50+
- "guides/redis/service.yaml.j2"
51+
- "guides/redis/deployment.yaml.j2"
52+
53+
- name: wait for Redis to be ready
54+
kubernetes.core.k8s_info:
55+
api_version: apps/v1
56+
kind: Deployment
57+
name: redis
58+
namespace: "{{ ocp4_workload_acc_new_app_dev_guides_namespace }}"
59+
register: r_redis
60+
retries: 120
61+
delay: 10
62+
until:
63+
- r_redis.resources | length > 0
64+
- r_redis.resources[0].status is defined
65+
- r_redis.resources[0].status.readyReplicas is defined
66+
- r_redis.resources[0].spec.replicas == r_redis.resources[0].status.readyReplicas
67+
68+
- name: create empty guides_url array
69+
set_fact:
70+
_ocp4_workload_acc_new_app_dev_guides_urls: []
71+
72+
- name: construct URL parameter for username distribution
73+
set_fact:
74+
_ocp4_workload_acc_new_app_dev_guides_urls: >-
75+
{{ _ocp4_workload_acc_new_app_dev_guides_urls + [item.url + ';' + item.title ]
76+
if (item.name in _ocp4_workload_acc_new_app_dev_guides_modules_list) else _ocp4_workload_acc_new_app_dev_guides_urls }}
77+
loop: "{{ ocp4_workload_acc_new_app_dev_guides_module_titles }}"
78+
79+
- name: debug URLs
80+
debug:
81+
msg: "{{ _ocp4_workload_acc_new_app_dev_guides_urls }}"
82+
83+
- name: deploy username distribution tool
84+
kubernetes.core.k8s:
85+
state: present
86+
definition: "{{ lookup('template', item ) | from_yaml }}"
87+
loop:
88+
- guides/usertool/deployment.yaml.j2
89+
- guides/usertool/service.yaml.j2
90+
- guides/usertool/route.yaml.j2
91+
vars:
92+
_ocp4_workload_acc_new_app_dev_guides_lab_module_urls: "{{ _ocp4_workload_acc_new_app_dev_guides_urls | join(',') }}"
93+
# yamllint disable-line rule:line-length
94+
_ocp4_workload_acc_new_app_dev_guides_lab_extra_urls: "{{ ( _ocp4_workload_acc_new_app_dev_console_url + ';OpenShift Console,https://codeserver-codeserver-%USERNAME%.' + _ocp4_workload_acc_new_app_dev_wildcard_domain + ';VS Code Server' ) }}"
95+
96+
- name: save workshop info URL
97+
agnosticd_user_info:
98+
data:
99+
# yamllint disable-line rule:line-length
100+
user_distribution_url: "https://get-a-username-{{ ocp4_workload_acc_new_app_dev_guides_namespace }}.{{ _ocp4_workload_acc_new_app_dev_wildcard_domain }}"
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
- name: Check if guide {{ _ocp4_workload_acc_new_app_dev_guide }} already exists
3+
kubernetes.core.k8s_info:
4+
api_version: apps/v1
5+
kind: Deployment
6+
name: "{{ _ocp4_workload_acc_new_app_dev_guide }}"
7+
namespace: "{{ ocp4_workload_acc_new_app_dev_guides_namespace }}"
8+
register: r_guide
9+
10+
- name: Create guide {{ _ocp4_workload_acc_new_app_dev_guide }}
11+
when: r_guide.resources | length == 0
12+
kubernetes.core.k8s:
13+
state: present
14+
definition: "{{ lookup('template', item ) | from_yaml }}"
15+
loop:
16+
- guides/imagestream.yaml.j2
17+
- guides/buildconfig.yaml.j2
18+
- guides/deployment.yaml.j2
19+
- guides/service.yaml.j2
20+
- guides/route.yaml.j2
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
3+
- name: Running Pre Workload Tasks
4+
include_tasks:
5+
file: ./pre_workload.yml
6+
apply:
7+
become: "{{ become_override | bool }}"
8+
when: ACTION == "create" or ACTION == "provision"
9+
10+
- name: Running Workload Tasks
11+
include_tasks:
12+
file: ./workload.yml
13+
apply:
14+
become: "{{ become_override | bool }}"
15+
when: ACTION == "create" or ACTION == "provision"
16+
17+
- name: Running Post Workload Tasks
18+
include_tasks:
19+
file: ./post_workload.yml
20+
apply:
21+
become: "{{ become_override | bool }}"
22+
when: ACTION == "create" or ACTION == "provision"
23+
24+
- name: Running Workload removal Tasks
25+
include_tasks:
26+
file: ./remove_workload.yml
27+
apply:
28+
become: "{{ become_override | bool }}"
29+
when: ACTION == "destroy" or ACTION == "remove"
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
---
2+
# Implement your Post Workload deployment tasks here
3+
# --------------------------------------------------
4+
5+
# yamllint disable rule:line-length
6+
- name: project information
7+
when: openshift_console_url is defined
8+
block:
9+
- name: output project information
10+
agnosticd_user_info:
11+
msg: "{{ item }}"
12+
loop:
13+
- "Gitea Topology View: {{ openshift_console_url }}/topology/ns/{{ ocp4_workload_acc_new_app_dev_gitea_project }}"
14+
- name: save project information
15+
agnosticd_user_info:
16+
data:
17+
gitea_topology: "{{ openshift_console_url }}/topology/ns/{{ ocp4_workload_acc_new_app_dev_gitea_project }}"
18+
# yamllint enable rule:line-length
19+
20+
# Leave these as the last tasks in the playbook
21+
# ---------------------------------------------
22+
23+
# For deployment onto a dedicated cluster (as part of the
24+
# cluster deployment) set workload_shared_deployment to False
25+
# This is the default so it does not have to be set explicitely
26+
- name: post_workload tasks complete
27+
debug:
28+
msg: "Post-Workload tasks completed successfully."
29+
when:
30+
- not silent | bool
31+
- not workload_shared_deployment | default(false) | bool
32+
33+
# For RHPDS deployment (onto a shared cluster) set
34+
# workload_shared_deployment to True
35+
# (in the deploy script or AgnosticV configuration)
36+
- name: post_workload tasks complete
37+
debug:
38+
msg: "Post-Software checks completed successfully"
39+
when:
40+
- not silent | bool
41+
- workload_shared_deployment | default(false) | bool
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
# Implement your Pre Workload deployment tasks here
3+
# -------------------------------------------------
4+
5+
- name: get IngressController
6+
kubernetes.core.k8s_info:
7+
kind: IngressController
8+
name: default
9+
namespace: openshift-ingress-operator
10+
register: r_ingress_controller
11+
12+
- name: set _ocp4_workload_acc_new_app_dev_wildcard_domain
13+
set_fact:
14+
_ocp4_workload_acc_new_app_dev_wildcard_domain: "{{ r_ingress_controller.resources[0].status.domain }}"
15+
16+
- name: get OpenShift Console URL
17+
kubernetes.core.k8s_info:
18+
api_version: config.openshift.io/v1
19+
kind: Console
20+
name: cluster
21+
register: r_console
22+
23+
- name: Set _ocp4_workload_acc_new_app_dev_console_url console variable
24+
ansible.builtin.set_fact:
25+
_ocp4_workload_acc_new_app_dev_console_url: "{{ r_console.resources[0].status.consoleURL }}"
26+
27+
- name: Retrieve Gitea instance
28+
kubernetes.core.k8s_info:
29+
api_version: gpte.opentlc.com/v1
30+
kind: Gitea
31+
name: "{{ ocp4_workload_acc_new_app_dev_gitea_instance }}"
32+
namespace: "{{ ocp4_workload_acc_new_app_dev_gitea_project }}"
33+
register: r_gitea
34+
35+
- name: set gitea repos url
36+
ansible.builtin.set_fact:
37+
_ocp4_workload_acc_new_app_dev_gitea_route: "{{ r_gitea.resources[0].status.giteaRoute }}"
38+
39+
# Leave these as the last tasks in the playbook
40+
# ---------------------------------------------
41+
42+
# For deployment onto a dedicated cluster (as part of the
43+
# cluster deployment) set workload_shared_deployment to False
44+
# This is the default so it does not have to be set explicitely
45+
- name: pre_workload tasks complete
46+
debug:
47+
msg: "Pre-Workload tasks completed successfully."
48+
when:
49+
- not silent | bool
50+
- not workload_shared_deployment | default(false) | bool
51+
52+
# For RHPDS deployment (onto a shared cluster) set
53+
# workload_shared_deployment to True
54+
# (in the deploy script or AgnosticV configuration)
55+
- name: pre_workload tasks complete
56+
debug:
57+
msg: "Pre-Software checks completed successfully"
58+
when:
59+
- not silent | bool
60+
- workload_shared_deployment | default(false) | bool

0 commit comments

Comments
 (0)