GithubHelp home page GithubHelp logo

hashicorp / field-workshops-consul Goto Github PK

View Code? Open in Web Editor NEW
70.0 99.0 57.0 237.44 MB

Slide decks and Instruqt code for Consul Workshops

License: Mozilla Public License 2.0

Shell 56.91% Dockerfile 0.24% HTML 2.68% HCL 39.49% Smarty 0.58% Makefile 0.10%

field-workshops-consul's Introduction

HashiCorp Consul Field Workshops

All HashiCorp field workshops focused on consul should be placed in this repository. Similar field workshop repositories exist for these HashiCorp solutions:

Additionally, field workshops focused on more than one HashiCorp solution can be found in the field-workshops-hashistack repository.

Slides

The slides for these workshops should be created using Remark and should be placed under the docs/slides directory. This directory is organized by cloud and then by workshop. If a workshop targets a single cloud, its slides should be placed in a directory under that cloud's directory (aws, azure, or gcp). If a workshop can be used with multiple clouds, its slides should be placed in a directory under the multi-cloud directory.

Please do NOT place any slides or any other content directly inside the docs directory.

Standard assets (logos, backgrounds, css, fonts, and js) used by workshop slides are contained in a separate repository, field-workshops-assets.

When creating slides for a new workshop, you will need to do the following:

  1. Create a new workshop directory under the appropriate directory as discussed above.
  2. Copy docs/index.html to your new workshop's directory. (But don't create a sub-directory called docs under it.)
  3. If you want to create a single part slide show, then create a file in your directory called index.md and add all your slides to it.
    1. You can copy content from docs/index.md to get started with a title slide and a few regular slides.
    2. Note that the speaker notes in that file have some useful pointers for creating Remark slide shows.
  4. If you want to create a multi-part slide show, then do the following:
    1. Create multiple files such as consul-1.md, consul-2.md, and consul-3.md with corresponding HTML files such as consul-1.html, consul-2.html, and consul-3.html that should be copies of index.html.
    2. In each of the new HTML files, replace index.md with the name of the corresponding MD file in the sourceURLs list. For instance, use consul-1.md in consul-1.html.
    3. Replace index.md in the sourceURLs list of your workshop's copy of index.html with a comma-delimited list of your MD file names. So, with the 3 MD files listed above, you would specify sourceURLs like this:
    sourceUrls = [
       'consul-1.md',
       'consul-2.md',
       'consul-3.md'
       ]
    

Whether you create a single-part or multi-part slide show, users will be able to access all of your slides with a URL like https://hashicorp.github.io/field-workshops-consul/slides/multi-cloud/consul-community/index.html, but they can leave off index.html.

If you create a multi-part slide show, users will also be able to access each part of your slide show separately at URLs like these:

Each workshop should give the full link (or links) to that workshop's slides in one of its first few slides.

Instructor Guides

The instructor guides for these workshops should be created as Markdown files and should be placed in the instructor-guides directory and have names like <cloud>_<workshop_name>_INSTRUCTOR_GUIDE.md where <cloud> is the cloud the workshop targets and <workshop_name> is the name of the workshop. But if the workshop is intended for use with multiple clouds, <cloud> should be omitted.

Labs (Instruqt Tracks)

The labs for these workshops should be created using Instruqt Tracks. Each track should be placed in its own directory directly underneath the instruqt-tracks directory. Doing this allows each track to be used by multiple workshops within this repository.

field-workshops-consul's People

Contributors

blake avatar dependabot[bot] avatar flamacue avatar gcastill0 avatar great-stone avatar grove-mountain avatar hashicorp-copywrite[bot] avatar hashicorp-tsccr[bot] avatar hc-github-team-es-release-engineering avatar jennamwong avatar joshwolfer avatar kaitlincart avatar kecorbin avatar kevincloud avatar lanceplarsen avatar nicholasjackson avatar nickwales avatar npearce avatar omkensey avatar ppresto avatar ramramhariram avatar rberlind avatar smwilson1230 avatar stallion01 avatar syedquadri7 avatar thomashashi avatar timarenz avatar tpoland avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

field-workshops-consul's Issues

Insruqt lab- Consul High Availability

My leader was Consul0, I did a pkill consul on Consul0,
lost access to my Consul UI, but after the leader election and a leader was defined
the UI did not come back. Even after several refreshes in the Instruqt browser refresh.
After restoring Consul from two node failures, the Consul UI does come back online.

It may just be more of a confusion for students than anything else. Not sure if this is just buggy behavior for the Instruqt lab

Instruqt lab- Open and Close the Gates

Recommend adding this type of verbiage before the the first paragraph:

Click on the Website tab, and refresh, is the blog up? etc..
Now click on the Consul UI tab, then on the intentions button...

Insruqt lab- Consul ACLs

I would suggest adding more color to the explanation of this lab verses just showing
that logs are throwing an error making call: Permission denied. Also recommend
tying this back to the UI, point out that adding the ACL for the client to securely authorize
into the cluster does not open up access to other things like the Services, Nodes, K/V, Intentions, etc.

Specify tab in seamless DNS lab

In the last part “Seamless DNS integration”, the first cat CLI, you might need to mention to type it in “App Server” tab

Track 3 - Consul Connect

In this track we take things a step further and use Consul Connect to create and secure a connection to the database server.

sidecar-envoy challenge typo

Typo in instructions:

In this assignment, we'll take a deeper look at Envoy. We'll focus on three elements that make up the foundation of our mesh.

mTLS - How did Connect and Envoy provide end-to-end encrpytion between services ?

Insruqt lab- Seamless Service Discovery with Consul DNS

This lab makes sense but I feel like we should incorporate a little more Before/After
examples in this lab to drive home the concept. Like enter a bad ip for the mysql server,
refresh app, show it is down, then use consul DNS, do a refresh, show hat we don't care
what the IP address is, as long as we have a healthy instance of the mysql service
registered in the Consul catalog, the app or website is up.

Instruqt lab- Introducing the Envoy Proxy

Second step
typo @ line
We've played an Envoy binary on this machine for you. Consul will be able to access it from the $PATH.

Change text to We've *placed* an Envoy binary ...

CTRL-S or CMD-S

Need instructions for both to accommodate mac and linux users

Build CircleCI integration

Instruqt does not yet support an instruct track test command but we want to be ready when they do. This integration currently downloads and installs the instruqt command line tool on each CI/CD run. This can be expanded upon to run tests against the content.

Instruqt lab- Enter the Meshtrix

Basic feedback,

If this lab is meant to be a culmination of things learned to this point, then I think it is a good test of the building knowledge that has come from interacting with the wp-config.php file. So I get if we don't want to include a specific solution step/follow along and modify line 32 step.

However I feel like there should be a little more explanation of what is going on with the local host modification in this example.

Track 2 - Service Discovery

This track introduces Consul as a Service Discovery tool. The user evolves through stages including manual lookup of services, then automated DNS based lookups

Add new timeout behavior or warning

As a user in the lab, I would like either a timer or at least a warning that the lab has timed out.

I'm not sure if Instruqt offers this capability but I just timed out and nothing pops up or tells me I timed out which could be confusing for some.

Track 1 - Consul Basics

This covers all the Consul basics, CLI, API, GUI, basic commands, etc. This track is to get users familiar with Consul before moving on to more complex topics.

Instruqt lab- Introducing the Envoy Proxy

At the last section:
You can verify in the Consul UI or the with the Consul CLI that your proxy health check is now passing.

Recommend adding a CLI or API call solution to verify the mysql-sidecar-proxy service is healthy

*Get to Know Consul*

  • Our start script is simple and runs Consul as a background process. In production this would be daemonized or managed by an orchestrator.

Consul API

  • Change “Get Leader” to “Get Consul Leader”

*Quorum Discussion"

Consul High Availability

  • In instructions, put note to switch to a new server tab after killing the current leader.

ACL Discussion

  • ACLs are a must for all Consul production environments. to ACLs are imperative for all Consul production environments.

ACL Token Lab

  • To re-enable the UI select the Consul UI tab and click on the ACL tab in the UI, enter your token into the text field.

  • Quote the agent token on the last command otherwise you get a failure

Other Items

  • Note somewhere that you need to use CTRL + SHIFT + V

Instruqt lab- Pop Open the Hood

I really like this lab since it starts to demystify some of the Envoy handwavy magic. I feel like there needs to be a little more look at this, now go look at this type of instructions, more implicit like click on Clusters hyperlink, then run the curl, now look for the ip address, now go to the Consul UI, click on the mysql service > ID mysql > Node Name Database

So ultimately add more color to the lab or accompanying slides for the instructor to highlight or walk the class through the key points being illustrated in the lab

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.