Skip to content

Commit 79569e6

Browse files
committed
Update Blog “open-sourcing-workshops-on-demand-part-5-create-a-workshop”
1 parent 590bac0 commit 79569e6

File tree

1 file changed

+78
-47
lines changed

1 file changed

+78
-47
lines changed

content/blog/open-sourcing-workshops-on-demand-part-5-create-a-workshop.md

Lines changed: 78 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -17,34 +17,71 @@ As you can see, there's no rocket science here. Just common sense. Depending
1717

1818
Some other workshops might need a proper infrastructure to run on. A kubernetes101 workshop for instance could not exist without the presence of a proper Kubernetes cluster. The same thing goes for any HPE-related solutions.
1919

20-
From an infrastructure standpoint, a minimum number of environments are necessary. You will need a test/ dev, a staging, and at least one production environment. The HPE Developer Community actually started with only a test/dev/staging environment on one side and a production on the other side.
20+
From an infrastructure standpoint, a minimum number of environments are necessary. The project makes it easy to deploy a test/ dev, a staging, and at least one production environment. The HPE Developer Community actually started with only a test/dev/staging environment on one side and a production on the other side.
2121

22-
In this post, I won't focus on the initial steps required for set up. I'll leave that to you to figure out based on what subjects you wish to cover. I will, however, talk a little bit again about the infrastructure, especially the dedicated scripts and and variables that you need to create to support the lifecycle of the workshop. As usual, there are two sides to the workshop's creation. What should be done on the backend and what needs to be done on the frontend (web portal and database server mainly).
22+
In this post, I won't focus on the subject selection process. I'll leave that to you to figure it out. I will, however, talk a little bit again about the infrastructure, especially the dedicated scripts and and variables that you need to create to support the lifecycle of the workshop. As usual, there are two sides to the workshop's creation. What should be done on the backend and what needs to be done on the api db server mainly).
2323

2424
![](/img/wod-blogserie3-archi3.png "WOD Overview.")
2525

26-
As I continue this series, I will explore two scenarios. In the first one, I will create a simple workshop that does not require any infrastructure but the JupyterHub itself. Then, in a second phase, I will go through a more complex workshop creation process that will cover most of the possible cases I can think of.
2726

28-
# Simple workshop example:
2927

30-
Let's imagine that I plan to create a new workshop in the Go language. Go has become more and more popular among the developer community I interact with and one developer (Let's call him **Matt**) was kind enough to agree with working with me on creating this new workshop. After our first meeting, where I explained the creation process, and the expectations, we were able to quickly start working together. We defined the title, abstract, notebooks' folder name, and student range. As far as the infrastructure's requirements, a new kernel was needed. No additional scripts were required for this workshop.
28+
What is a workshop? What do you need to develop ?
3129

32-
As an admin of the Workshops-on-Demand infrastructure, I had to perform several tasks:
30+
* A set of notebooks that will be used by the student:
3331

34-
### On the backend server:
32+
* Containing instructions cells in markdown and run code cells leveraging the relevant kernel. If you are not familiar with Jupyter notebooks, a simple [101 workshop](https://developer.hpe.com/hackshack/workshop/25) is available in our Workshops-on-Demand 's catalog.
3533

36-
1. ##### Test and validate installation of the new kernel on the staging backend server by:
34+
A workshop should have with at least :
35+
36+
* 0-ReadMeFirst.ipynb
37+
* 1-WKSHP-LAB1.ipynb
38+
* 2-WKSHP-LAB2.ipynb
39+
* 3-WKSHP-Conclusion.ipynb
40+
* LICENCE.MD
41+
* A pictures folder (if any screenshot is required in lab instructions)
42+
* A README.md (0-ReadMeFirst.ipynb in md format)
43+
44+
45+
46+
47+
48+
to make the workshop compliant to our platform, you just need to provide a final file that contains a set of metadata that will be used for the workshop's integration into the infrastructure. this file is called wod.yml
49+
50+
One could create these entries manually or leverage a simple wod.yml file containing them and that can be later parsed in order to feed the database with the relevant info. Quite handy, no?
51+
52+
Here is an example of such a file:
53+
54+
```
55+
%YAML 1.1
56+
# Meta data for the GO101 Workshop to populate seeder
57+
---
58+
name: 'GO 101 - A simple introduction to Go Programming Language'
59+
description: 'Go, also called Golang or Go language, is an open source programming language that Google developed. Software developers use Go in an array of operating systems and frameworks to develop web applications, cloud and networking services, and other types of software. This workshop will drive you through the basics of this programming language.'
60+
active: true
61+
capacity: 20
62+
priority: 1
63+
range: [151-170]
64+
reset: false
65+
ldap: false
66+
location: 'mougins'
67+
replayId: 31
68+
varpass: false
69+
compile: false
70+
workshopImg: 'https://us-central1-grommet-designer.cloudfunctions.net/images/frederic-passeron-hpe-com/WOD-GO-101-A-simp-introduction-to-Go-programming-language.jpeg'
71+
badgeImg: 'https://us-central1-grommet-designer.cloudfunctions.net/images/frederic-passeron-hpe-com/go101-a-simple-introduction-to-go-programming-language.jpg'
72+
beta: false
73+
category: 'Open Source'
74+
duration: 4
75+
alternateLocation: 'grenoble'
76+
presenter: 'Matthew Doddler'
77+
role: 'FullStack developer'
78+
avatar: '/img/SpeakerImages/MattD.jpg'
79+
videoLink: 'https://hpe-developer-portal.s3.amazonaws.com/Workshops-on-Demand-Coming-Soon-Replay.mp4'
80+
```
81+
82+
the following file
3783

38-
* Creating a new branch for this test
39-
* Modifying the [backend server installation yaml file ](https://github.com/Workshops-on-Demand/wod-backend/blob/main/ansible/install_backend.yml#L326)to include the new kernel
40-
* Validating the changes by testing a new backend install process
41-
* Pushing the changes to the github repo
4284

43-
2. ##### Create a user for the workshop developer on the test/dev and staging backend servers
44-
3. ##### Provide to the developer the necessary information to connect to the test/dev and staging backend servers
45-
4. ##### Copy in the developer's home folder a workshop template containing examples of introduction, conclusion, and lab notebooks, allowing him to start his work
46-
5. ##### Give the developer the wod-notebook repo url for him to fork the repo and work locally on his machine (when the workshop does not require an appliance but just a Jupyter kernel for instance)
47-
6. ##### When ready, a pull request can be made. The admin can then review and accept it. The admin can then perform the necessary steps required to prepare the infrastructure to host the workshop
4885

4986
### On the database server:
5087

@@ -100,38 +137,32 @@ A new entry will need the following:
100137
* **WorkshopId:** ID of the workshop linked to the video
101138
* **Active:** Tag to set to enable visibility of the replay in registration portal
102139

103-
One could create these entries manually or leverage a simple wod.yml file containing them and that can be later parsed in order to feed the database with the relevant info. Quite handy, no?
104140

105-
Here is an example of such a file:
141+
As I continue this series, I will explore two scenarios. In the first one, I will create a simple workshop that does not require any infrastructure but the JupyterHub itself. Then, in a second phase, I will go through a more complex workshop creation process that will cover most of the possible cases I can think of.
142+
143+
# Simple workshop example:
144+
145+
Let's imagine that I plan to create a new workshop in the Go language. Go has become more and more popular among the developer community I interact with and one developer (Let's call him **Matt**) was kind enough to agree with working with me on creating this new workshop. After our first meeting, where I explained the creation process, and the expectations, we were able to quickly start working together. We defined the title, abstract, notebooks' folder name, and student range. As far as the infrastructure's requirements, a new kernel was needed. No additional scripts were required for this workshop.
146+
147+
As an admin of the Workshops-on-Demand infrastructure, I had to perform several tasks:
148+
149+
### On the backend server:
150+
151+
1. ##### Test and validate installation of the new kernel on the staging backend server by:
152+
153+
* Creating a new branch for this test
154+
* Modifying the [backend server installation yaml file ](https://github.com/Workshops-on-Demand/wod-backend/blob/main/ansible/install_backend.yml#L326)to include the new kernel
155+
* Validating the changes by testing a new backend install process
156+
* Pushing the changes to the github repo
157+
158+
2. ##### Create a user for the workshop developer on the test/dev and staging backend servers
159+
3. ##### Provide to the developer the necessary information to connect to the test/dev and staging backend servers
160+
4. ##### Copy in the developer's home folder a workshop template containing examples of introduction, conclusion, and lab notebooks, allowing him to start his work
161+
5. ##### Give the developer the wod-notebook repo url for him to fork the repo and work locally on his machine (when the workshop does not require an appliance but just a Jupyter kernel for instance)
162+
6. ##### When ready, a pull request can be made. The admin can then review and accept it. The admin can then perform the necessary steps required to prepare the infrastructure to host the workshop
163+
164+
106165

107-
```
108-
%YAML 1.1
109-
# Meta data for the GO101 Workshop to populate seeder
110-
---
111-
name: 'GO 101 - A simple introduction to Go Programming Language'
112-
notebook: 'WKSHP-GO101'
113-
description: 'Go, also called Golang or Go language, is an open source programming language that Google developed. Software developers use Go in an array of operating systems and frameworks to develop web applications, cloud and networking services, and other types of software. This workshop will drive you through the basics of this programming language.'
114-
active: false
115-
capacity: 20
116-
priority: 1
117-
range: [151-170]
118-
reset: false
119-
ldap: false
120-
location: 'mougins'
121-
replayId: 31
122-
varpass: false
123-
compile: false
124-
workshopImg: 'https://us-central1-grommet-designer.cloudfunctions.net/images/frederic-passeron-hpe-com/WOD-GO-101-A-simp-introduction-to-Go-programming-language.jpeg'
125-
badgeImg: 'https://us-central1-grommet-designer.cloudfunctions.net/images/frederic-passeron-hpe-com/go101-a-simple-introduction-to-go-programming-language.jpg'
126-
beta: false
127-
category: 'Open Source'
128-
duration: 4
129-
alternateLocation: 'grenoble'
130-
presenter: 'Matthew Doddler'
131-
role: 'FullStack developer'
132-
avatar: '/img/SpeakerImages/MattD.jpg'
133-
videoLink: 'https://hpe-developer-portal.s3.amazonaws.com/Workshops-on-Demand-Coming-Soon-Replay.mp4'
134-
```
135166

136167
As the developer of the Workshops-on-Demand content, Matt had to perform several tasks:
137168

0 commit comments

Comments
 (0)