Instantly Run An App in the Cloud 2

(Difference between revisions)
Jump to: navigation, search
(Separated second activity here)
 
(Suggestions to Open Source Mentors:)
(15 intermediate revisions by 2 users not shown)
Line 2: Line 2:
 
{| border="1"
 
{| border="1"
 
|-  
 
|-  
|'''Title''' || Instantly Run An App in the Cloud Using OpenShift
+
|'''Title''' || Commandeer the command line power of OpenShift
 
|-
 
|-
|'''Overview''' || Students need to know what Cloud Computing really means, how it fits into the wider computing context, and how they can use an open source cloud alternative to quickly host coding platforms for them to toy around in. This activity sets out to do all of this as a walkthrough learn-as-you-go tutorial.
+
|'''Overview''' || A follow-on to teaching students about creating apps in an online open source cloud environment - OpenShift. This time students focus on command-line driven tools, and the backends of building and deploying new application code via git.
 
|-  
 
|-  
|'''Prerequisite Knowledge''' || Command line skills and Beginner Git experience (git activity 1)
+
|'''Prerequisite Knowledge''' ||  
 +
* [[Instantly_Run_An_App_in_the_Cloud]]
 +
* [[Intro to GitHub (Activity)]] - Beginner Git experience (git activity 1)
 
|-
 
|-
 
|'''Learning Objectives''' ||  
 
|'''Learning Objectives''' ||  
* Understand what Cloud / Utility Computing is
+
* Give instructor SSH access
* Be able to quickly spin up an app in an online PaaS environment
+
* Install and run "rhc" command-line client tool
* Learn the context of SSH and URLs and components of online applications
+
* Understand behind-the-scenes workflow of "git push"
 +
* Add custom build and deployment code
 +
* Synchronize Local and Live Environments (Test vs Prod)
 
|}
 
|}
  
[[File:WordpressOpenShift.png|500px]]
+
[[File:build_phase.png|200px]]
 +
 
 +
 
 +
----
 +
 
  
 
=== Background: ===
 
=== Background: ===
 
What is the rational for this activity?
 
What is the rational for this activity?
 +
This second portion of the cloud app activity goes a little deeper and focuses on de-facto technologies like ssh / shell-access and git / github. Students will now take their new-found knowledge of the cloud paradigm and start to understand how it can link to a more technically flexible solution set. They can now customize their apps via editing and pushing code via a git publication process.
  
Students need to know what Cloud Computing really means, how it fits into the wider computing context, and what the different types are (IaaS, PaaS, SaaS). Students can dig into PasS, as a powerful development platform - and understand how quickly, easily, and powerfully they can spin up new applications. Gone are the days of having to setup a physical server, know the details on how to setup the OS, fiddle with the kernel, setup web-servers (Apache), databases (Postgres, Mysql), and middle-ware micros-services (AMQP Message busses, JBoss Fuse, Apache Camel). In a PaaS environment like OpenShift, the developer just fires up an instance of whatever pieces they want, and start coding. Seriously - its that easy. Of course, the developer has to know how to develop in said language or platform, but it makes development considerably easier by removing focus from lower layers. Basically, those lower layers (most mentioned above) are automated away by the PaaS platform.
+
You will want to have already stepped through this preceding activity: [[Instantly_Run_An_App_in_the_Cloud]]
  
  
We need an activity that can show students, step-by-visual-step, how to start up a new coding environment and actually code a small chunk of working software on Openshift. Make it something sexy, like Node.js. Make it an effective piece of code (contact someone within red hat for advise) and it would be even more amazing.
+
=== Directions: ===
  
Background readings:
+
==== Give Instructor SSH Access: ====
 +
In order to fully inspect your work, the instructor will need access to your SSH shell that you created.
 +
You do not, however, want to give your same private key away. You could, but it is not the best industry practice.
 +
Instead, you will want to setup access for the instructors Username and his particular Public Key.
 +
Given a Public Key and username access, the instructor can get in with their secret Private Key.
  
* What is Cloud Computing? http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf
+
You are encouraged to look up instructions on the web or help each other in the classroom.
* Read about Cloud Computing paradigm and deployment patterns. http://www.pcmag.com/article2/0,2817,2372163,00.asp
+
* Read about open sources role in cloud computing. http://opensource.com/business/13/1/future-cloud-computing
+
* Read about PaaS. http://www.thoughtsoncloud.com/2014/02/what-is-platform-as-a-service-paas/
+
* Read about Node.js http://blog.langoor.mobi/node-js-mobile-web-apps/
+
  
 +
You will need:
 +
<pre>
 +
- THE INSTRUCTORS USERNAME
 +
- THE INSTRUCTORS PUBLIC KEY
 +
</pre>
  
=== Directions: ===
+
Instructor will need:
 +
<pre>
 +
- YOUR APP'S URL or IP ADDRESS
 +
</pre>
  
# Browse hub.openshift.com
+
Do this early, so that you can work through issues. Undoubtedly there will be issues and a need to troubleshoot them. You will be graded on your ability to navigate these issues early.
# Deploy Instant-App
+
#* Built on Node.js and PostGreSQL
+
# Start latest Node.js gear
+
#* View Gear on web
+
# Push Git repo (example node.js project)
+
# See Node.js example running
+
  
 +
===== Ensure proper file access rights =====
 +
Additionally, assure that the user you create for your instructor has the right file and directory access privileges.
 +
* Hint: learn about and use the '''chmod''' command
 +
* Read http://www.grymoire.com/Unix/Permissions.html or something like it.
  
  
 +
==== OpenShift Tutorial 2 ====
 +
Priorly, we setup Wordpress blogging software and used it. Now we will dive into more usage of the command line, specifically the '''rhc''' command, and what occurs when new code is added via git push. Additionally we will learn how to run it all on your local laptop, so that you can test and develop in a safe environment before you push it live (into production).
  
=== Deliverables: ===
+
Follow this tutorial:
What will the student hand in?
+
* <font size="4">http://code.tutsplus.com/tutorials/running-wordpress-on-openshift-part-2--cms-19947</font>
 +
** Optional: Step 6 - SSL Setup
 +
* Take screenshots as you go
 +
** These will be used in your blog hand-in
 +
** Annotate them to make emphasis clear
  
  
=== Assessment: ===
+
----
How will the activity be graded?
+
+
How will learning will be measured?
+
  
Include sample assessment questions/rubrics.
 
  
 +
=== Deliverables: ===
 +
# Get instructor access to your applications SSH shell, so that they can check your work.
 +
# Create another blog post, with public URL, that tells:
 +
## What troubles or more info you came across
 +
##* This 2nd edition was much more technical and likely lead to some troubleshooting.
 +
##* Tell a small story; 1-2 paragraphs.
 +
## Your understanding of what steps OpenShift implements when you do a simple "git push"
 +
##* This is the build and deploy process
 +
##* Talk about what you added to customize the build process
 +
## The pro's and con's of synchronizing to a Local / Test coding environment
 +
##* Why might you want to do testing locally on your laptop, instead of out on the Live / Production cloud app?
 +
##* Is the process given in the tutorial cumbersome? Could you find anything better?
 +
 +
=== Assessment: ===
 
{| border="1" class="wikitable"
 
{| border="1" class="wikitable"
 
! Criteria
 
! Criteria
 
! Level 1 (fail)
 
! Level 1 (fail)
 
! Level 2 (pass)
 
! Level 2 (pass)
! Level 3 (good)
+
! Level 3 (exceptional)
! Level 4 (exceptional)
+
 
|-
 
|-
| '''The purpose of the project'''
+
| '''Give instructor SSH access'''
|  
+
| No access; Didnt attempt
|  
+
| Instructor can login but may not have access to files
|
+
| Instructor can login and proper user access is given
|
+
  
 
|-
 
|-
| '''Why the project is open source'''
+
| '''Understand behind-the-scenes workflow of "git push"'''
|  
+
| No explanation in blog about this
|  
+
| Explanation in the blog of the five steps
|  
+
| Explanation in the blog of the five steps and which files can be customized and when they are triggered (hooked)
|  
+
 
 +
|-
 +
| '''Add custom build and deployment code'''
 +
| Hook files not edited or working
 +
| Customized '''action_hooks''' files that are documented in the blog writeup
 +
| Customized '''action_hooks''' files that are documented in the blog writeup and that tried something *different* from what the tutorial did
 +
 
 +
|-
 +
| '''Synchronize Local and Live Environments (Test vs Prod)'''
 +
| No explanation in blog
 +
| Explanation in blog telling the pro's and con's of this method
 +
| Explanation in blog telling the difference between Testing and Production, why this is beneficial, and what other methods might be available or better/worse
  
 
|}
 
|}
Line 81: Line 121:
 
=== Comments: ===
 
=== Comments: ===
 
What should the instructor know before using this activity?
 
What should the instructor know before using this activity?
 +
* Instructor should become familiar with the SSH public/private access mechanism
  
 
What are some likely difficulties that an instructor may encounter using this activity?
 
What are some likely difficulties that an instructor may encounter using this activity?
 +
* Getting yourself SSH access to each students application shell may prove to be some upfront work for yourself
 +
** Make it clear to students that you want this done early (give them a deadline)
 +
** Grade them on this
 +
** Work through it with them; Give them feedback so that they can troubleshoot
 +
** This is a very realistic professional situation:
 +
***Not a lot of direction
 +
***given an end-goal
 +
***need to work with another person (you)
 +
***explorative troubleshooting is likely
 +
* Assure that YOU are crystal clear with sharing SSH access
 +
** Practice it with another teacher or colleague or system
 +
** Otherwise, you could be doing something wrong on your end, and the students wont be able to properly troubleshoot
  
  
Line 88: Line 141:
 
{| border="1"
 
{| border="1"
 
|-  
 
|-  
|'''Knowledge Area/Knowledge Unit''' || What ACM Computing Curricula 2013 knowledge area and units does this activity cover? [[ACM_Body_of_Knowledge]]
+
|'''Knowledge Area/Knowledge Unit''' || PD. Parallel and Distributed Computing / PD - Cloud Computing, PBD - Platform-based Development / PBD Web Platforms from [[ACM_Body_of_Knowledge]]
 
|-
 
|-
|'''Topic''' || What specific topics are addressed? The Computing Curriucula 2013 provides a list of topics - https://www.acm.org/education/CS2013-final-report.pdf
+
|'''Topic''' || Cloud services , Infrastructure as a service, Web programming languages (e.g., HTML5, Java Script, PHP, CSS)  , Web platform constraints
 
|-
 
|-
|'''Level of Difficulty''' || Is this activity easy, medium or challenging?
+
|'''Level of Difficulty''' || Difficult
 
|-
 
|-
|'''Estimated Time to Completion''' ||  How long should it take for the student to complete the activity?
+
|'''Estimated Time to Completion''' ||  5-6 hours
 
|-
 
|-
|'''Materials/Environment''' || What does the student need?  Internet access, IRC client, Git Hub account, LINUX machine, etc.?
+
|'''Materials/Environment''' || What does the student need?  Internet access, Wordpress application from prior activity, Their own laptop with shell access
 
|-
 
|-
|'''Author''' || Who wrote this activity?
+
|'''Author''' || [https://www.linkedin.com/in/nickyeates Nick Yeates], Vinh Quốc Nguyễn
 
|-
 
|-
|'''Source''' || Is there another activity on which this activity is based?  If so, please provide a link to the original resource.
+
|'''Source''' || http://code.tutsplus.com/tutorials/running-wordpress-on-openshift-part-2--cms-19947
 
|-
 
|-
|'''License''' || Under which license is this material made available? (http://creativecommons.org/licenses/)
+
|'''License''' || Creative Commons CC-BY
 
|}
 
|}
  
Line 108: Line 161:
 
=== Suggestions to Open Source Mentors: ===
 
=== Suggestions to Open Source Mentors: ===
 
Suggestions for an open source community member who is working in conjunction with the instructor.
 
Suggestions for an open source community member who is working in conjunction with the instructor.
 
+
* Does your project utilize the linux command line and do you SSH into boxes?
 +
** Explain to students how important these basic command-line skills are in developing today.
 +
* Does your project or professional life use the concept of "Testing" and "Production"
 +
** Explain to students how this is a separation that many project use in differing degrees and ways
  
 
--------------------
 
--------------------
 
This work is licensed under a  
 
This work is licensed under a  
[http://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0 International License]
+
[http://creativecommons.org/licenses/by/4.0/ Creative Commons Attribution 4.0 International License]
 
+
[[File:CC_license.png]]
+
  
 
[[Category: Learning_Activity]]
 
[[Category: Learning_Activity]]
[[Category: LEARNING_ACTIVITY_SUBCATEGORY]]
+
[[Category: Introduction]]
 +
[[Category: Communication_and_Tools]]
 +
[[Category: Use_and_Evaluate]]
 +
[[Category: Good Draft]]

Revision as of 17:55, 8 March 2017

Title Commandeer the command line power of OpenShift
Overview A follow-on to teaching students about creating apps in an online open source cloud environment - OpenShift. This time students focus on command-line driven tools, and the backends of building and deploying new application code via git.
Prerequisite Knowledge
Learning Objectives
  • Give instructor SSH access
  • Install and run "rhc" command-line client tool
  • Understand behind-the-scenes workflow of "git push"
  • Add custom build and deployment code
  • Synchronize Local and Live Environments (Test vs Prod)

Build phase.png




Background:

What is the rational for this activity? This second portion of the cloud app activity goes a little deeper and focuses on de-facto technologies like ssh / shell-access and git / github. Students will now take their new-found knowledge of the cloud paradigm and start to understand how it can link to a more technically flexible solution set. They can now customize their apps via editing and pushing code via a git publication process.

You will want to have already stepped through this preceding activity: Instantly_Run_An_App_in_the_Cloud


Directions:

Give Instructor SSH Access:

In order to fully inspect your work, the instructor will need access to your SSH shell that you created. You do not, however, want to give your same private key away. You could, but it is not the best industry practice. Instead, you will want to setup access for the instructors Username and his particular Public Key. Given a Public Key and username access, the instructor can get in with their secret Private Key.

You are encouraged to look up instructions on the web or help each other in the classroom.

You will need:

- THE INSTRUCTORS USERNAME
- THE INSTRUCTORS PUBLIC KEY

Instructor will need:

- YOUR APP'S URL or IP ADDRESS

Do this early, so that you can work through issues. Undoubtedly there will be issues and a need to troubleshoot them. You will be graded on your ability to navigate these issues early.

Ensure proper file access rights

Additionally, assure that the user you create for your instructor has the right file and directory access privileges.


OpenShift Tutorial 2

Priorly, we setup Wordpress blogging software and used it. Now we will dive into more usage of the command line, specifically the rhc command, and what occurs when new code is added via git push. Additionally we will learn how to run it all on your local laptop, so that you can test and develop in a safe environment before you push it live (into production).

Follow this tutorial:




Deliverables:

  1. Get instructor access to your applications SSH shell, so that they can check your work.
  2. Create another blog post, with public URL, that tells:
    1. What troubles or more info you came across
      • This 2nd edition was much more technical and likely lead to some troubleshooting.
      • Tell a small story; 1-2 paragraphs.
    2. Your understanding of what steps OpenShift implements when you do a simple "git push"
      • This is the build and deploy process
      • Talk about what you added to customize the build process
    3. The pro's and con's of synchronizing to a Local / Test coding environment
      • Why might you want to do testing locally on your laptop, instead of out on the Live / Production cloud app?
      • Is the process given in the tutorial cumbersome? Could you find anything better?

Assessment:

Criteria Level 1 (fail) Level 2 (pass) Level 3 (exceptional)
Give instructor SSH access No access; Didnt attempt Instructor can login but may not have access to files Instructor can login and proper user access is given
Understand behind-the-scenes workflow of "git push" No explanation in blog about this Explanation in the blog of the five steps Explanation in the blog of the five steps and which files can be customized and when they are triggered (hooked)
Add custom build and deployment code Hook files not edited or working Customized action_hooks files that are documented in the blog writeup Customized action_hooks files that are documented in the blog writeup and that tried something *different* from what the tutorial did
Synchronize Local and Live Environments (Test vs Prod) No explanation in blog Explanation in blog telling the pro's and con's of this method Explanation in blog telling the difference between Testing and Production, why this is beneficial, and what other methods might be available or better/worse

Comments:

What should the instructor know before using this activity?

  • Instructor should become familiar with the SSH public/private access mechanism

What are some likely difficulties that an instructor may encounter using this activity?

  • Getting yourself SSH access to each students application shell may prove to be some upfront work for yourself
    • Make it clear to students that you want this done early (give them a deadline)
    • Grade them on this
    • Work through it with them; Give them feedback so that they can troubleshoot
    • This is a very realistic professional situation:
      • Not a lot of direction
      • given an end-goal
      • need to work with another person (you)
      • explorative troubleshooting is likely
  • Assure that YOU are crystal clear with sharing SSH access
    • Practice it with another teacher or colleague or system
    • Otherwise, you could be doing something wrong on your end, and the students wont be able to properly troubleshoot


Additional Information:

Knowledge Area/Knowledge Unit PD. Parallel and Distributed Computing / PD - Cloud Computing, PBD - Platform-based Development / PBD Web Platforms from ACM_Body_of_Knowledge
Topic Cloud services , Infrastructure as a service, Web programming languages (e.g., HTML5, Java Script, PHP, CSS) , Web platform constraints
Level of Difficulty Difficult
Estimated Time to Completion 5-6 hours
Materials/Environment What does the student need? Internet access, Wordpress application from prior activity, Their own laptop with shell access
Author Nick Yeates, Vinh Quốc Nguyễn
Source http://code.tutsplus.com/tutorials/running-wordpress-on-openshift-part-2--cms-19947
License Creative Commons CC-BY


Suggestions to Open Source Mentors:

Suggestions for an open source community member who is working in conjunction with the instructor.

  • Does your project utilize the linux command line and do you SSH into boxes?
    • Explain to students how important these basic command-line skills are in developing today.
  • Does your project or professional life use the concept of "Testing" and "Production"
    • Explain to students how this is a separation that many project use in differing degrees and ways

This work is licensed under a Creative Commons Attribution 4.0 International License

Personal tools
Namespaces
Variants
Actions
Events
Learning Resources
HFOSS Projects
Evaluation
Navigation
Toolbox