[WTH Core] Updates to template generator (#408)

* Create create-new-hack.yml

* Update create-new-hack.yml

* rename hack

* lf for create hack

* gitkeep

* yml

* create 0

* renames

* name

* title

* new template files

* template files

* copy lectures pptx

* template fixes
This commit is contained in:
Jordan Bean 2022-06-16 13:54:15 -05:00 коммит произвёл GitHub
Родитель 591a9b77e7
Коммит f9fb6925ef
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
9 изменённых файлов: 140 добавлений и 103 удалений

1
.gitattributes поставляемый Normal file
Просмотреть файл

@ -0,0 +1 @@
.github/workflows/create-wth-template.sh eol=lf

4
.github/workflows/create-new-hack.yml поставляемый
Просмотреть файл

@ -8,9 +8,9 @@ on:
required: true
default: YetAnotherHack
numberOfChallenges:
description: The number of challenges you want
description: The number of challenges you want (note that it is better to auto-generate more challenges than you think you will need, you can always delete the files later)
required: true
default: 3
default: '3'
jobs:
createNewWhatTheHackTemplate:
runs-on: ubuntu-latest

41
.github/workflows/create-wth-template.sh поставляемый
Просмотреть файл

@ -38,12 +38,21 @@ CreateDirectoryStructure() {
# create the Coach & Coach/Solutions directories
mkdir -p $rootPath/Coach/Solutions
#add a file to allow git to store an "empty" directory
touch $rootPath/Coach/Solutions/.gitkeep
# copying the Coach Lectures template file in the /Coach directory
cp $templateDirectoryName/WTH-Lectures-Template.pptx $rootPath/Coach/Lectures.pptx
if $verbosityArg; then
echo "Creating $rootPath/Student/Resources directories..."
fi
# create the Student & Student/Resources directories
mkdir -p $rootPath/Student/Resources
#add a file to allow git to store an "empty" directory
touch $rootPath/Student/Resources/.gitkeep
}
PreprocessTemplateFile() {
@ -82,8 +91,12 @@ GenerateChallengesSection() {
local challengesSection=""
for challengeNumber in $(seq -f "%02g" 1 $numberOfChallenges); do
eval challengesSection+=\$\'- Challenge $challengeNumber: **[Title of Challenge]\($directoryName/$typeName-$challengeNumber.md\)**\\n\\t - Description of challenge\\n\'
for challengeNumber in $(seq -f "%02g" 0 $numberOfChallenges); do
if [[ $challengeNumber -eq "00" ]]; then
eval challengesSection+=\$\'- Challenge $challengeNumber: **[Prerequisites - Ready, Set, GO!]\($directoryName/$typeName-$challengeNumber.md\)**\\n\\t - Prepare your workstation to work with Azure.\\n\'
else
eval challengesSection+=\$\'- Challenge $challengeNumber: **[Title of Challenge]\($directoryName/$typeName-$challengeNumber.md\)**\\n\\t - Description of challenge\\n\'
fi
done
echo "$challengesSection"
@ -101,7 +114,7 @@ CreateHackDescription() {
WriteMarkdownFile "$rootPath/README.md" "WTH-HackDescription-Template.md"
}
GenerateNavitationLink() {
GenerateNavigationLink() {
local -r suffixNumber=$1
local -r numberOfChallenges=$2
local -r linkName=$3
@ -113,7 +126,7 @@ GenerateNavitationLink() {
#have to account for the fact that there is 0 at the beginning of the challenge number, a 08 is interpreted as octal
#therefore, the $((10#$suffixNumber)) syntax
if [[ $((10#$suffixNumber)) -gt 1 ]]; then
if [[ $((10#$suffixNumber)) -gt 0 ]]; then
local -r previousChallengeNumber=$(printf %02d $((10#$suffixNumber - 1)))
previousNavigationLink="[< Previous $linkName](./$linkName-$previousChallengeNumber.md) - "
fi
@ -152,9 +165,13 @@ CreateChallengeMarkdownFile() {
echo "Creating $fullPath/$prefix-$suffixNumber.md..."
fi
local -r navigationLine=$(GenerateNavitationLink $suffixNumber $numberOfChallenges "Challenge" false)
local -r navigationLine=$(GenerateNavigationLink $suffixNumber $numberOfChallenges "Challenge" false)
WriteMarkdownFile "$fullPath/$prefix-$suffixNumber.md" "WTH-Challenge-Template.md"
if [[ $suffixNumber -eq "00" ]]; then
WriteMarkdownFile "$fullPath/$prefix-$suffixNumber.md" "WTH-ChallengeZero-Template.md"
else
WriteMarkdownFile "$fullPath/$prefix-$suffixNumber.md" "WTH-Challenge-Template.md"
fi
}
CreateSolutionMarkdownFile() {
@ -166,7 +183,7 @@ CreateSolutionMarkdownFile() {
echo "Creating $fullPath/$prefix-$suffixNumber.md..."
fi
local -r navigationLine=$(GenerateNavitationLink $suffixNumber $numberOfChallenges "Solution" true)
local -r navigationLine=$(GenerateNavigationLink $suffixNumber $numberOfChallenges "Solution" true)
WriteMarkdownFile "$fullPath/$prefix-$suffixNumber.md" "WTH-Challenge-Solution-Template.md"
}
@ -179,7 +196,7 @@ CreateChallenges() {
echo "Creating $numberOfChallenges challenge Markdown files in $fullPath..."
fi
for challengeNumber in $(seq -f "%02g" 1 $numberOfChallenges); do
for challengeNumber in $(seq -f "%02g" 0 $numberOfChallenges); do
CreateChallengeMarkdownFile "$fullPath" "Challenge" $challengeNumber $numberOfChallenges
done
}
@ -207,7 +224,7 @@ CreateSolutions() {
echo "Creating $numberOfSolutions solution Markdown files in $fullPath..."
fi
for solutionNumber in $(seq -f "%02g" 1 $numberOfSolutions); do
for solutionNumber in $(seq -f "%02g" 0 $numberOfSolutions); do
CreateSolutionMarkdownFile "$fullPath" "Solution" $solutionNumber
done
}
@ -234,7 +251,7 @@ while getopts ":c:dhn:p:v" option; do
d) deleteExistingDirectoryArg=true;;
h) Help
exit;;
n) nameOfChallengeArg=${OPTARG};;
n) nameOfHackArg=${OPTARG};;
p) pathArg=${OPTARG};;
v) verbosityArg=true
esac
@ -242,12 +259,12 @@ done
if $verbosityArg; then
echo "Number of Challenges: $numberOfChallengesArg"
echo "Name of Challenge: $nameOfChallengeArg"
echo "Name of Challenge: $nameOfHackArg"
echo "Path: $pathArg"
echo "Delete existing directory: $deleteExistingDirectoryArg"
fi
declare -r wthDirectoryName="xxx-$nameOfChallengeArg"
declare -r wthDirectoryName="xxx-$nameOfHackArg"
declare -r rootPath="$pathArg/$wthDirectoryName"

Просмотреть файл

@ -1,25 +1,32 @@
<!-- REMOVE_ME # Challenge ${suffixNumber} - <Title of Challenge> - Coach's Guide (remove this from your MD files if you are writing them manually, this is for the automation script) REMOVE_ME -->
<!-- REPLACE_ME (this section will be removed by the automation script) -->
# Challenge 01 - \<Title of Challenge> - Coach's Guide
<!-- REPLACE_ME (this section will be removed by the automation script) -->
<!-- REMOVE_ME ${navigationLine} (remove this from your MD files if you are writing them manually, this is for the automation script) REMOVE_ME -->
<!-- REPLACE_ME (this section will be removed by the automation script) -->
[< Previous Solution](./Solution-01.md) - **[Home](./README.md)** - [Next Solution >](./Solution-03.md)
<!-- REPLACE_ME (this section will be removed by the automation script) -->
## Notes & Guidance
This is the only section you need to include.
Use general non-bulleted text for the beginning of a solution area for this challenge
- Then move into bullets
- And sub-bullets and even
- sub-sub-bullets
- And sub-bullets and even
- sub-sub-bullets
Break things apart with more than one bullet list
- Like this
- Like this
- One
- Right
- Here

Просмотреть файл

@ -73,7 +73,7 @@ To complete this challenge successfully, you should be able to:
## Learning Resources
*List of relevant links and online articles that should give the attendees the knowledge needed to complete the challenge.*
_List of relevant links and online articles that should give the attendees the knowledge needed to complete the challenge._
*Think of this list as giving the students a head start on some easy Internet searches. However, try not to include documentation links that are the literal step-by-step answer of the challenge's scenario.*

Просмотреть файл

@ -4,28 +4,32 @@
<!-- REPLACE_ME (this section will be removed by the automation script) -->
<!-- If you are using and editing this template manually, ensure the navigation link below is updated to link to next challenge relative to the current challenge. The "Home" link should always link to the homepage of the hack which is the README.md in the hack's parent directory. -->
**[Home](../README.md)** - [Next Challenge >](./Challenge-01.md)
<!-- REPLACE_ME (this section will be removed by the automation script) -->
***This is a template for "Challenge Zero" which focuses on getting prerequisites set up for the hack. The italicized text provides hints & examples of what should or should NOT go in each section.***
**_This is a template for "Challenge Zero" which focuses on getting prerequisites set up for the hack. The italicized text provides hints & examples of what should or should NOT go in each section._**
***We have included links to some common What The Hack pre-reqs in this template. All common prerequisite links go to the WTH-CommonPrerequisites page where there are more details on what each tool's purpose is.***
**_We have included links to some common What The Hack pre-reqs in this template. All common prerequisite links go to the WTH-CommonPrerequisites page where there are more details on what each tool's purpose is._**
***You should remove any common pre-reqs that are not required for your hack. Then add additional pre-reqs that are required for your hack in the Description section below.***
**_You should remove any common pre-reqs that are not required for your hack. Then add additional pre-reqs that are required for your hack in the Description section below._**
***You should remove all italicized & sample text in this template and replace with your content.***
**_You should remove all italicized & sample text in this template and replace with your content._**
## Introduction
<!-- REMOVE_ME Thank you for participating in the ${nameOfChallengeArg} What The Hack. Before you can hack, you will need to set up some prerequisites. (remove this from your MD files if you are writing them manually, this is for the automation script) REMOVE_ME -->
<!-- REMOVE_ME Thank you for participating in the ${nameOfHackArg} What The Hack. Before you can hack, you will need to set up some prerequisites. (remove this from your MD files if you are writing them manually, this is for the automation script) REMOVE_ME -->
<!-- REPLACE_ME (this section will be removed by the automation script) -->
Thank you for participating in the IoT Hack of the Century What The Hack. Before you can hack, you will need to set up some prerequisites.
<!-- REPLACE_ME (this section will be removed by the automation script) -->
## Common Prerequisites
We have compiled a list of common tools and software that will come in handy to complete most What The Hack Azure-based hacks!
We have compiled a list of common tools and software that will come in handy to complete most What The Hack Azure-based hacks!
You might not need all of them for the hack you are participating in. However, if you work with Azure on a regular basis, these are all things you should consider having in your toolbox.
@ -45,25 +49,26 @@ You might not need all of them for the hack you are participating in. However, i
## Description
*This section should clearly state any additional prerequisite tools that need to be installed or set up in the Azure environment that the student will hack in.*
_This section should clearly state any additional prerequisite tools that need to be installed or set up in the Azure environment that the student will hack in._
*While ordered lists are generally not welcome in What The Hack challenge descriptions, you can use one here in Challenge Zero IF and only IF the steps you are asking the student to perform are not core to the learning objectives of the hack.*
_While ordered lists are generally not welcome in What The Hack challenge descriptions, you can use one here in Challenge Zero IF and only IF the steps you are asking the student to perform are not core to the learning objectives of the hack._
*For example, if the hack is on IoT Devices and you want the student to deploy an ARM/Bicep template that sets up the environment they will hack in without them needing to understand how ARM/Bicep templates work, you can provide step-by-step instructions on how to deploy the ARM/Bicep template.*
_For example, if the hack is on IoT Devices and you want the student to deploy an ARM/Bicep template that sets up the environment they will hack in without them needing to understand how ARM/Bicep templates work, you can provide step-by-step instructions on how to deploy the ARM/Bicep template._
*Optionally, you may provide resource files such as a sample application, code snippets, or templates as learning aids for the students. These files are stored in the hack's \`Student/Resources\` folder. It is the coach's responsibility to package these resources into a Resources.zip file and provide it to the students at the start of the hack. You should leave the sample text below in that refers to the Resources.zip file.*
_Optionally, you may provide resource files such as a sample application, code snippets, or templates as learning aids for the students. These files are stored in the hack's \`Student/Resources\` folder. It is the coach's responsibility to package these resources into a Resources.zip file and provide it to the students at the start of the hack. You should leave the sample text below in that refers to the Resources.zip file._
***NOTE:** Do NOT provide direct links to files or folders in the What The Hack repository from the student guide. Instead, you should refer to the Resources.zip file provided by the coach.*
**\*NOTE:** Do NOT provide direct links to files or folders in the What The Hack repository from the student guide. Instead, you should refer to the Resources.zip file provided by the coach.\*
***NOTE:** Any direct links to the What The Hack repo will be flagged for review during the review process by the WTH V-Team, including exception cases.*
**\*NOTE:** Any direct links to the What The Hack repo will be flagged for review during the review process by the WTH V-Team, including exception cases.\*
*Sample challenge zero text for the IoT Hack Of The Century:*
_Sample challenge zero text for the IoT Hack Of The Century:_
Now that you have the common pre-requisites installed on your workstation, there are prerequisites specifc to this hack.
Your coach will provide you with a Resources.zip file that contains resources you will need to complete the hack. If you plan to work locally, you should unpack it on your workstation. If you plan to use the Azure Cloud Shell, you should upload it to the Cloud Shell and unpack it there.
Please install these additional tools:
- [Azure IoT Tools](https://marketplace.visualstudio.com/items?itemName=vsciot-vscode.azure-iot-tools) extension for Visual Studio Code
- .NET SDK 6.0 or later installed on your development machine. This can be downloaded from [here](https://www.microsoft.com/net/download/all) for multiple platforms.
@ -77,32 +82,32 @@ az group deployment create -g myIoT-rg --name HackEnvironment -f setupIoTEnviron
## Success Criteria
*Success criteria goes here. The success criteria should be a list of checks so a student knows they have completed the challenge successfully. These should be things that can be demonstrated to a coach.*
_Success criteria goes here. The success criteria should be a list of checks so a student knows they have completed the challenge successfully. These should be things that can be demonstrated to a coach._
*The success criteria should not be a list of instructions.*
_The success criteria should not be a list of instructions._
*Success criteria should always start with language like: "Validate XXX..." or "Verify YYY..." or "Show ZZZ..." or "Demonstrate you understand VVV..."*
_Success criteria should always start with language like: "Validate XXX..." or "Verify YYY..." or "Show ZZZ..." or "Demonstrate you understand VVV..."_
*Sample success criteria for the IoT prerequisites challenge:*
_Sample success criteria for the IoT prerequisites challenge:_
To complete this challenge successfully, you should be able to:
- Verify that you have a bash shell with the Azure CLI available.
- Verify that the ARM template has deployed the following resources in Azure:
- Verify that the ARM template has deployed the following resources in Azure:
- Azure IoT Hub
- Virtual Network
- Jumpbox VM
## Learning Resources
*List of relevant links and online articles that should give the attendees the knowledge needed to complete the challenge.*
_List of relevant links and online articles that should give the attendees the knowledge needed to complete the challenge._
*Think of this list as giving the students a head start on some easy Internet searches. However, try not to include documentation links that are the literal step-by-step answer of the challenge's scenario.*
_Think of this list as giving the students a head start on some easy Internet searches. However, try not to include documentation links that are the literal step-by-step answer of the challenge's scenario._
***Note:** Use descriptive text for each link instead of just URLs.*
**\*Note:** Use descriptive text for each link instead of just URLs.\*
*Sample IoT resource links:*
_Sample IoT resource links:_
- [What is a Thingamajig?](https://www.bing.com/search?q=what+is+a+thingamajig)
- [10 Tips for Never Forgetting Your Thingamajic](https://www.youtube.com/watch?v=dQw4w9WgXcQ)
- [IoT & Thingamajigs: Together Forever](https://www.youtube.com/watch?v=yPYZpwSpKmA)

Просмотреть файл

@ -1,15 +1,19 @@
<!-- REMOVE_ME # What The Hack - ${nameOfChallengeArg} - Coach Guide (remove this from your MD files if you are writing them manually, this is for the automation script) REMOVE_ME -->
<!-- REMOVE_ME # What The Hack - ${nameOfHackArg} - Coach Guide (remove this from your MD files if you are writing them manually, this is for the automation script) REMOVE_ME -->
<!-- REPLACE_ME (this section will be removed by the automation script) -->
# What The Hack - IoT Hack of the Century - Coach Guide
<!-- REPLACE_ME (this section will be removed by the automation script) -->
## Introduction
<!-- REMOVE_ME Welcome to the coach's guide for the ${nameOfChallengeArg} What The Hack. Here you will find links to specific guidance for coaches for each of the challenges. (remove this from your MD files if you are writing them manually, this is for the automation script) REMOVE_ME -->
<!-- REMOVE_ME Welcome to the coach's guide for the ${nameOfHackArg} What The Hack. Here you will find links to specific guidance for coaches for each of the challenges. (remove this from your MD files if you are writing them manually, this is for the automation script) REMOVE_ME -->
<!-- REPLACE_ME (this section will be removed by the automation script) -->
Welcome to the coach's guide for the IoT Hack of the Century What The Hack. Here you will find links to specific guidance for coaches for each of the challenges.
<!-- REPLACE_ME (this section will be removed by the automation script) -->
This hack includes an optional [lecture presentation](Lectures.pptx) that features short presentations to introduce key topics associated with each challenge. It is recommended that the host present each short presentation before attendees kick off that challenge.
@ -17,18 +21,19 @@ This hack includes an optional [lecture presentation](Lectures.pptx) that featur
**NOTE:** If you are a Hackathon participant, this is the answer guide. Don't cheat yourself by looking at these during the hack! Go learn something. :)
## Coach's Guides
<!-- REMOVE_ME ${challengesSection} (remove this from your MD files if you are writing them manually, this is for the automation script) REMOVE_ME -->
<!-- REPLACE_ME (this section will be removed by the automation script) -->
- Challenge 01: **[Title of Challenge](Coach/Solution-01.md)**
- Description of challenge
- Description of challenge
- Challenge 02: **[Title of Challenge](Coach/Solution-02.md)**
- Description of challenge
- Challenge 03: **[Title of Challenge](Coach/Solution-03.md)**
- Description of challenge
- Description of challenge
- Challenge 03: **[Title of Challenge](Coach/Solution-03.md)** - Description of challenge
<!-- REPLACE_ME (this section will be removed by the automation script) -->
## Coach Prerequisites
## Coach Prerequisites
This hack has pre-reqs that a coach is responsible for understanding and/or setting up BEFORE hosting an event. Please review the [What The Hack Hosting Guide](https://aka.ms/wthhost) for information on how to host a hack event.
@ -40,39 +45,39 @@ Before the hack, it is the Coach's responsibility to download and package up the
Always refer students to the [What The Hack website](https://aka.ms/wth) for the student guide: [https://aka.ms/wth](https://aka.ms/wth)
**NOTE:** Students should **not** be given a link to the What The Hack repo before or during a hack. The student guide does **NOT** have any links to the Coach's guide or the What The Hack repo on GitHub.
**NOTE:** Students should **not** be given a link to the What The Hack repo before or during a hack. The student guide does **NOT** have any links to the Coach's guide or the What The Hack repo on GitHub.
### Additional Coach Prerequisites (Optional)
*Please list any additional pre-event setup steps a coach would be required to set up such as, creating or hosting a shared dataset, or deploying a lab environment.*
_Please list any additional pre-event setup steps a coach would be required to set up such as, creating or hosting a shared dataset, or deploying a lab environment._
## Azure Requirements
This hack requires students to have access to an Azure subscription where they can create and consume Azure resources. These Azure requirements should be shared with a stakeholder in the organization that will be providing the Azure subscription(s) that will be used by the students.
*Please list Azure subscription requirements.*
_Please list Azure subscription requirements._
*For example:*
_For example:_
- Azure resources that will be consumed by a student implementing the hack's challenges
- Azure permissions required by a student to complete the hack's challenges.
## Suggested Hack Agenda (Optional)
*This section is optional. You may wish to provide an estimate of how long each challenge should take for an average squad of students to complete and/or a proposal of how many challenges a coach should structure each session for a multi-session hack event. For example:*
_This section is optional. You may wish to provide an estimate of how long each challenge should take for an average squad of students to complete and/or a proposal of how many challenges a coach should structure each session for a multi-session hack event. For example:_
- Sample Day 1
- Challenge 1 (1 hour)
- Challenge 2 (30 mins)
- Challenge 3 (2 hours)
- Challenge 1 (1 hour)
- Challenge 2 (30 mins)
- Challenge 3 (2 hours)
- Sample Day 2
- Challenge 4 (45 mins)
- Challenge 5 (1 hour)
- Challenge 6 (45 mins)
- Challenge 4 (45 mins)
- Challenge 5 (1 hour)
- Challenge 6 (45 mins)
## Repository Contents
*The default files & folders are listed below. You may add to this if you want to specify what is in additional sub-folders you may add.*
_The default files & folders are listed below. You may add to this if you want to specify what is in additional sub-folders you may add._
- \`./Coach\`
- Coach's Guide and related files

Просмотреть файл

@ -1,8 +1,8 @@
# What The Hack: Common Prerequisites
Thanks for participating in a What The Hack! We have compiled a list of common tools and software that will come in handy to complete these Azure based hacks!
Thanks for participating in a What The Hack! We have compiled a list of common tools and software that will come in handy to complete these Azure based hacks!
You might not need all of them for the hack you are participating in. However, if you work with Azure on a regular basis, these are all things you should consider having in your toolbox.
You might not need all of them for the hack you are participating in. However, if you work with Azure on a regular basis, these are all things you should consider having in your toolbox.
- [Azure Subscription](#azure-subscription)
- [Windows Subsystem for Linux](#windows-subsystem-for-linux)
@ -22,11 +22,12 @@ You will need an Azure subscription to complete this hackathon. If you don't hav
[Sign Up for Azure HERE](https://azure.microsoft.com/en-us/free/)
Our goal in the hackathon is limiting the cost of using Azure services.
Our goal in the hackathon is limiting the cost of using Azure services.
If you've never used Azure, you will get:
- $200 free credits for use for up to 30 days
- 12 months of popular free services (includes storage, Linux VMs)
- 12 months of popular free services (includes storage, Linux VMs)
- Then there are services that are free up to a certain quota
Details can be found here on [free services](https://azure.microsoft.com/en-us/free/).
@ -56,14 +57,13 @@ We can manage cloud resources via the following ways:
- [Azure Cloud Shell (Bash)](https://shell.azure.com/bash)
- [Azure Cloud Shell (PowerShell)](https://shell.azure.com/powershell)
### Azure Portal
Build, manage, and monitor everything from simple web apps to complex cloud applications in a single, unified console.
Manage your resources via a web interface (i.e. GUI) at [https://portal.azure.com/](https://portal.azure.com/)
The Azure Portal is a great tool for quick prototyping, proof of concepts, and testing things out in Azure by deploying resources manually. However, when deploying production resources to Azure, it is highly recommended that you use an automation tool, templates, or scripts instead of the portal.
The Azure Portal is a great tool for quick prototyping, proof of concepts, and testing things out in Azure by deploying resources manually. However, when deploying production resources to Azure, it is highly recommended that you use an automation tool, templates, or scripts instead of the portal.
### Azure CLI
@ -93,29 +93,25 @@ Alternatively, you can use the [Azure Cloud Shell](https://shell.azure.com/bash)
### Azure PowerShell CmdLets
Azure PowerShell provides a set of cmdlets that use the Azure Resource Manager model for managing your Azure resources.
Azure PowerShell provides a set of cmdlets that use the Azure Resource Manager model for managing your Azure resources.
[Install the Azure PowerShell Cmdlets](https://docs.microsoft.com/en-us/powershell/azure/install-azurerm-ps)
The Azure PowerShell Cmdlets are functionally equivalent to the Azure CLI and can be used to complete all of the challenges instead of the Azure CLI.
The Azure PowerShell Cmdlets are functionally equivalent to the Azure CLI and can be used to complete all of the challenges instead of the Azure CLI.
### Azure Cloud Shell
The Azure Cloud Shell is a free interactive Bash or PowerShell shell that you can use to run the Azure CLI or PowerShell Cmdlets needed to complete the hackathon challenges. It has common Azure tools pre-installed and configured to use with your account. Just click the **Copy** button to copy the code, paste it into the Cloud Shell, and then press enter to run it. There are a few ways to launch the Cloud Shell:
| | |
|-----------------------------------------------|---|
| Click **Try It** in the upper right corner of a code block. | ![Cloud Shell in this article](images/try-it-button.png) |
| Click the **Cloud Shell** button on the menu in the upper right of the [Azure portal](https://portal.azure.com). | [![https://portal.azure.com/](images/portal-shell-button.png)](https://portal.azure.com/) |
| Open Cloud Shell in your browser. | [Open Cloud Shell in the browser](https://shell.azure.com/bash)|
| | |
The Azure Cloud Shell is a free interactive Bash or PowerShell shell that you can use to run the Azure CLI or PowerShell Cmdlets needed to complete the hackathon challenges. It has common Azure tools pre-installed and configured to use with your account. Just click the **Copy** button to copy the code, paste it into the Cloud Shell, and then press enter to run it. There are a few ways to launch the Cloud Shell:
| | |
| ---------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| Click **Try It** in the upper right corner of a code block. | ![Cloud Shell in this article](images/try-it-button.png) |
| Click the **Cloud Shell** button on the menu in the upper right of the [Azure portal](https://portal.azure.com). | [![https://portal.azure.com/](images/portal-shell-button.png)](https://portal.azure.com/) |
| Open Cloud Shell in your browser. | [Open Cloud Shell in the browser](https://shell.azure.com/bash) |
| | |
**NOTE:** If you use the Azure CLI or PowerShell from the Azure Cloud Shell, you will need to copy the template files you will be creating and editing on your workstation during the hackathon to the Cloud Shell environment.
## Visual Studio Code
Visual Studio Code is a lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS and Linux. It comes with built-in support for JavaScript, TypeScript and Node.js and has a rich ecosystem of extensions for other languages (such as C++, C#, Java, Python, PHP, Go) and runtimes (such as .NET and Unity).
@ -126,36 +122,35 @@ VS Code runs on Windows, Mac, and Linux. It's a quick install, NOT a 2 hour inst
### Visual Studio Code plugins for ARM Templates
VS Code is lightweight because there is an ecosystem of plugins that help provide support for many different programming languages and file types. There are two plugins available which we recommend for creating and editing ARM templates in VS Code.
VS Code is lightweight because there is an ecosystem of plugins that help provide support for many different programming languages and file types. There are two plugins available which we recommend for creating and editing ARM templates in VS Code.
[ARM Tools Plugin](https://marketplace.visualstudio.com/items?itemName=msazurermtools.azurerm-vscode-tools)
This extension provides language support for Azure Resource Manager deployment templates and template language expressions. It adds syntax color-coding support and intellisense for editing ARM templates in VS Code.
This extension provides language support for Azure Resource Manager deployment templates and template language expressions. It adds syntax color-coding support and intellisense for editing ARM templates in VS Code.
[ARM Snippets Plugin](https://marketplace.visualstudio.com/items?itemName=samcogan.arm-snippets)
This extension adds snippets to Visual Studio Code for creating Azure Resource Manager Templates. These snippets are taken from the Cross Platform Tooling Samples. Snippets include:
* Skeleton ARM Template
* Windows and Linux Virtual Machines
* Azure Web Apps
* Azure SQL
* Virtual Networks, Subnets and NSG's
* Keyvault
* Network Interfaces and IP's
* Redis
* Application Insights
* DNS
* Azure Container Instances
* Inserting Snippets
- Skeleton ARM Template
- Windows and Linux Virtual Machines
- Azure Web Apps
- Azure SQL
- Virtual Networks, Subnets and NSG's
- Keyvault
- Network Interfaces and IP's
- Redis
- Application Insights
- DNS
- Azure Container Instances
- Inserting Snippets
Inside any JSON file, start typing **`arm!`** to see a list of snippets availible. Select the snippet to insert and update any required values. This makes it VERY easy to quickly bang out the JSON syntax for many Azure resources within an ARM template.
## Azure Storage Explorer
Azure Storage Explorer is a cross-platform tool that lets you manage and access Azure Storage account resources in a GUI similar to Windows File Explorer or Finder on Mac. Like VS Code, Azure Storage Explorer can be installed on Windows, Mac, or Linux.
Azure Storage Explorer is a cross-platform tool that lets you manage and access Azure Storage account resources in a GUI similar to Windows File Explorer or Finder on Mac. Like VS Code, Azure Storage Explorer can be installed on Windows, Mac, or Linux.
ARM templates and any resources they depend on (nested templates, script files, etc) need to be staged in a location where the Azure Resource Manager can access them via an HTTP endpoint. We will be using Azure Storage explorer during the hackathon to copy files to/from Azure Blob storage for staging purposes.
ARM templates and any resources they depend on (nested templates, script files, etc) need to be staged in a location where the Azure Resource Manager can access them via an HTTP endpoint. We will be using Azure Storage explorer during the hackathon to copy files to/from Azure Blob storage for staging purposes.
[Install Azure Storage Explorer](https://azure.microsoft.com/en-us/features/storage-explorer/)
[Install Azure Storage Explorer](https://azure.microsoft.com/en-us/features/storage-explorer/)

Просмотреть файл

@ -1,37 +1,44 @@
<!-- REMOVE_ME # What The Hack - ${nameOfChallengeArg} (remove this from your MD files if you are writing them manually, this is for the automation script) REMOVE_ME -->
<!-- REMOVE_ME # What The Hack - ${nameOfHackArg} (remove this from your MD files if you are writing them manually, this is for the automation script) REMOVE_ME -->
<!-- REPLACE_ME (replace this section with your text, this section will be removed by the automation script) -->
# What The Hack - IoT Hack of the Century
<!-- REPLACE_ME (replace this section with your text, this section will be removed by the automation script) -->
## Introduction
The IoT Hack of the Century will take you on a whirlwind tour in the world of IoT and how it is being used in the modern world of mineral extraction in exotic locations like the Arctic and the wilds of South Africa.
## Learning Objectives
In this hack you will be solving the common business problem that companies in the mineral extraction industry face and how IoT solutions from Azure are brought to bare
1. Provision an IoT Hub
2. Set up an IoT Edge device
3. Bring Azure Sphere to your solution for scale and resiliency
3. Bring Azure Sphere to your solution for scale and resiliency
## Challenges
<!-- REMOVE_ME ${challengesSection} (remove this from your MD files if you are writing them manually, this is for the automation script) REMOVE_ME -->
<!-- REPLACE_ME (replace this section with your text, this section will be removed by the automation script) -->
1. Challenge 01: **[Title of Challenge](Student/Challenge-01.md)**
- Description of challenge
- Description of challenge
1. Challenge 02: **[Title of Challenge](Student/Challenge-02.md)**
- Description of challenge
1. Challenge 03: **[Title of Challenge](Student/Challenge-03.md)**
- Description of challenge
- Description of challenge
1. Challenge 03: **[Title of Challenge](Student/Challenge-03.md)** - Description of challenge
<!-- REPLACE_ME (this section will be removed by the automation script) -->
## Prerequisites
- Your own Azure subscription with Owner access
- Visual Studio Code
- Azure CLI
- An AVNET X231 device
## Contributors
- Jane Q. Public
- Joe T. Muppet