diff --git a/content/Azure/01_intro_to_cloud_console.ipynb b/content/Azure/01_intro_to_cloud_console.ipynb index 565ea73..d3e30aa 100644 --- a/content/Azure/01_intro_to_cloud_console.ipynb +++ b/content/Azure/01_intro_to_cloud_console.ipynb @@ -28,32 +28,22 @@ }, { "cell_type": "markdown", - "id": "78d39a0a", + "id": "abb35991", "metadata": {}, "source": [ "## The Who, What, and Where of the Cloud\n", "\n", "Before we get started we must first define, and find, a few key pieces of information about your environment that will be used throughout this lesson. This information is also important to ensure that this information is what you expect, otherwise you may use the wrong account or run or store things in the wrong place. It is important to be clear about these terms as they are often different in other cloud providers. \n", "\n", - "(need glossary for Azure) We provide a [glossary of GCP terms](glossary.ipynb) for your reference." + "(need glossary for Azure) We provide a [glossary of Azure terms](glossary.ipynb) for your reference." ] }, { "cell_type": "markdown", - "id": "20e902b2", + "id": "3e128379", "metadata": {}, "source": [ - "## Setup\n", - "\n", - "The console is the point of entry where you will start your Azure journey. If you are participating in the CLASS Essentials Workshop, you will have received a csv file via email. This csv file contains your **username**, **temporary password** and **console login link**. \n" - ] - }, - { - "cell_type": "markdown", - "id": "5fab77a5", - "metadata": {}, - "source": [ - "#### Accounts (Authentication and Identity) & login\n", + "## Accounts (Authentication and Identity) & login\n", "\n", "The (Azure) **Account** is the identity used to access the Azure web console and is in the form of an email address and is associated with an individual. This is typically the account you use to access Azure services associated with your institution and not your personal account. We will now login to the Azure web console and verify our account.\n", "\n", @@ -66,7 +56,7 @@ }, { "cell_type": "markdown", - "id": "43174583", + "id": "90066c19", "metadata": {}, "source": [ "### Exercise\n", @@ -81,19 +71,77 @@ }, { "cell_type": "markdown", - "id": "9cd64226", + "id": "160353bd", "metadata": {}, "source": [ - "The top of your screen should look very similar to the following when you log in to the Azure console. Next, let's take a closer look at some key concepts and components of the Azure console. \n", + "## Subscriptions\n", + " \n", + "Click on the *Directories & Subscriptions* buttton (#4).\n", + "Verify that you are in the right *Directory and Subscription* (briefly discribe D&S).\n", + " \n", + "Take a few moments to ask yourself the following questions:\n", + " * What is the *name* of the Project you are currently using in the Google Cloud Platform web console?\n", + " * What is the *Project ID* of that project?\n", + " * What is the *Project Number* of that project?\n", + " * Do you have multiple projects?\n", + " * How do you know which project you are currently using?\n", + "\n", + "If you are currently not using the correct project for this lesson, switch to the correct one." + ] + }, + { + "cell_type": "markdown", + "id": "6e3b3cbd", + "metadata": {}, + "source": [ + "## Services\n", + "\n", + "The web console is used to control and observe the cloud from the browser. It should only be used for simple and one-time tasks, exploring new services, accessing documentation, or for monitoring and debugging resources in the cloud. Programmatic control through the console, programming languages (for example Python), and other automation tools should be used for day to day activities to make the most out of the cloud and to help with the reproducibility of research and teaching.\n", + "\n", + "The Navigation Menu (number 1 above) is used to navigate to the various products, which are also sometimes called services.\n" + ] + }, + { + "cell_type": "markdown", + "id": "ed7e581f", + "metadata": {}, + "source": [ + "## Services\n", + "\n", + "The web console is used to control and observe the cloud from the browser. It should only be used for simple and one-time tasks, exploring new services, accessing documentation, or for monitoring and debugging resources in the cloud. Programmatic control through the console, programming languages (for example Python), and other automation tools should be used for day to day activities to make the most out of the cloud and to help with the reproducibility of research and teaching.\n", + "\n", + "The Navigation Menu (often called the hamburger) is used to navigate to the various products, which are also sometimes called services.\n", + "\n", + "![hamburger-navigation](img/hamburger-navigation.png)\n", + "\n", + " * Click on a product to navigate the product page\n", + " * You can pin frequently used items on the top of this page by clicking on the pin icon. \n", + " * Click the hamburger again to hide the Left Sidebar.\n", "\n", - "![cloud-shell](images/azure_intro_console.jpg)" + "All the different products and services are the \"What\" of the cloud. We will start with compute, called *Google Compute Engine* in the next Episode. \n", + "\n", + "### Exercise \n", + "\n", + "Take a few moments to navigate a few key services.\n", + " * Navigate to the \"Compute Engine\" service under the \"Compute\" product group.\n", + " * You will probably need to \"Enable\" this service first by clicking on the \"Enable\" button on the \"Compute Engine API\" page. This will only need to be done once per project.\n", + " * Navigate to \"Cloud Storage\" under the \"Storage\" product group and enable the service if necessary." ] }, { "cell_type": "markdown", - "id": "b1b0faae", + "id": "4537d270", "metadata": {}, "source": [ + "## Everything Else\n", + "\n", + "If you did not already notice, every page on the Azure web console has a blue navigation bar at the top of the page. This can be used to quickly navigate to the page you need.\n", + "\n", + "\n", + "The top of your screen should look very similar to the following when you log in to the Azure console. Next, let's take a closer look at some key concepts and components of the Azure console. \n", + "\n", + "![cloud-shell](images/azure_intro_console.jpg)\n", + "\n", "**1. Navigation Menu (often called the hamburger)**\n", ": If you click on the hamburger (three horizontal lines) you will get a dropdown menu and see a list of services that are offered by Azure. Currently, Azure has over N services ranging from compute to machine learning to networking to data storage. The list grows frequently!\n", "\n", @@ -110,18 +158,6 @@ ": The menu bar on the console also lists your username and the current organization that you are logged into. IAM is short for Identity and Access Management. Identity is a mechanism to authenticate users (e.g. password) and Access is a mechanism for authorizing what kinds of services users have access to. In the creation of an IAM user, the administrator (overlord) of the account assigned a particular permission scope (in AWS this is known as roles) to control access to a particular set of services and also assigned a password to authenticate user login. IAM is a key component in managing security on the cloud.\n" ] }, - { - "cell_type": "markdown", - "id": "6e3b3cbd", - "metadata": {}, - "source": [ - "## Services\n", - "\n", - "The web console is used to control and observe the cloud from the browser. It should only be used for simple and one-time tasks, exploring new services, accessing documentation, or for monitoring and debugging resources in the cloud. Programmatic control through the console, programming languages (for example Python), and other automation tools should be used for day to day activities to make the most out of the cloud and to help with the reproducibility of research and teaching.\n", - "\n", - "The Navigation Menu (number 1 above) is used to navigate to the various products, which are also sometimes called services.\n" - ] - }, { "cell_type": "markdown", "id": "e94b53e2", @@ -138,6 +174,18 @@ " * Note: You can open the Cloud Shell in a new tab by clicking on the **Open new session** icon (looks like a box with a \"+\") in the middle of the Cloud Shell bar.\n" ] }, + { + "cell_type": "markdown", + "id": "e17944ad", + "metadata": {}, + "source": [ + "## Exercise\n", + "\n", + "Before we move on, do the following:\n", + "* Double check that you are in the correct account that you will be using for this lesson.\n", + "* Take a moment to reflect on the \"Who, What, and Where\" of the cloud. Why is this important?" + ] + }, { "cell_type": "markdown", "id": "c0706cc3", diff --git a/content/Azure/02_intro_to_compute.ipynb b/content/Azure/02_intro_to_compute.ipynb index 58db0c5..5c47b31 100644 --- a/content/Azure/02_intro_to_compute.ipynb +++ b/content/Azure/02_intro_to_compute.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "8932d2c1", + "id": "4a903197", "metadata": {}, "source": [ "# Introduction to Virtual Machines (VM) in Azure\n", @@ -11,21 +11,117 @@ "```{admonition} Overview\n", ":class: tip\n", "\n", - "**Teaching:** 45 mins\n", + "**Teaching:**\n", "\n", - "**Exercises:** 10 mins\n", + "**Exercises:**\n", "\n", "**Questions:**\n", + "* How do I create my own computer in the cloud?\n", "\n", "**Objectives:**\n", - "* Understand the concept of virtual servers.\n", - "\n", + "* Navigate the Google Compute Engine service and terminology.\n", + "* Allocate a virtual machine in Google Compute Engine.\n", + "* Choose a machine type based on the application.\n", + "* Use the cost estimator for Google Compute Engine.\n", + "* Understand what a service account is and how they are used.\n", + "* Learn how to connect to a virtual machine using ssh in the cloud shell with the web console.\n", "```" ] }, { "cell_type": "markdown", - "id": "05306c25", + "id": "92622861", + "metadata": {}, + "source": [ + "Drew, after working with a Research Computing and Data (RCD) facilitator, has decided to start their cloud journey with compute, specifically a Virtual Machine, to process data in the cloud with a large and powerful machine to do the analysis. " + ] + }, + { + "cell_type": "markdown", + "id": "3565e61f", + "metadata": {}, + "source": [ + "## Azure Virtual Machines" + ] + }, + { + "cell_type": "markdown", + "id": "4efebb57", + "metadata": {}, + "source": [ + "Before we begin this lesson/episode we need to create a ssh key in order to login into the VM we about to create. We will use the public key when we create the VM.\n", + "\n", + "If you have not used the cloud shell to connect to a *VM Instance* before you will need to create a new *ssh key*. The Compute Engine will use this key to allow you to access the *VM instance* in a secure manner. If this is the case you will see a message similar to the following:\n", + "```\n", + "WARNING: The private SSH key file for gcloud does not exist.\n", + "WARNING: The public SSH key file for gcloud does not exist.\n", + "WARNING: You do not have an SSH key for gcloud.\n", + "WARNING: SSH keygen will be executed to generate a key.\n", + "This tool needs to create the directory [/home/learner/.ssh] before\n", + " being able to generate SSH keys.\n", + "\n", + "Do you want to continue (Y/n)?\n", + "```\n", + "\n", + "Press enter to continue to create the key. You will see another message asking you for a passphrase, similar to the following:\n", + "```\n", + "Generating public/private rsa key pair.\n", + "Enter passphrase (empty for no passphrase):\n", + "```\n", + "Here you should enter a passphrase (a series of words) to protect the key. You will be asked to re-enter the passphrase as shown below:\n", + "```\n", + "Enter same passphrase again:\n", + "```\n", + "\n", + "After successfully retyping the passphrase the key generation process will continue showing similar message as follows (the fingerprint and art will look different):\n", + "```\n", + "Your identification has been saved in /home/learner/.ssh/azure_compute_engine.\n", + "Your public key has been saved in /home/learner/.ssh/azure_compute_engine.pub.\n", + "The key fingerprint is:\n", + "SHA256:D9yj1nZEUigahirvjkIFoCP7RfjDu67Ku88M7nHQftI learner@cs-748001990186-default-boost-r9phq\n", + "The key's randomart image is:\n", + "+---[RSA 2048]----+\n", + "|o . .. |\n", + "|.. .. o . .. |\n", + "|+ o... o .. . |\n", + "|ooo= .. . o |\n", + "|.+..= S o . |\n", + "| o+..o = o |\n", + "|.+.+.E o + . |\n", + "|+.B o. . . . |\n", + "|=O**o |\n", + "+----[SHA256]-----+\n", + "```\n", + "\n", + "The ssh key generation is now complete. This will only happen once for your account. Later during the VM create proces you will be asked to Cut & Paste the public key into a form. \n", + "\n", + "Copy the public key to your clip board \n", + "\n", + "\n", + "future connections.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7245d24e", + "metadata": {}, + "outputs": [], + "source": [ + "cat /home/learner/.ssh/azure_compute_engine.pub" + ] + }, + { + "cell_type": "markdown", + "id": "d7f0bf3c", + "metadata": {}, + "source": [ + "Highlight the output string with your cursor and use the copy command (depending on OS) to put it in your edit buffer." + ] + }, + { + "cell_type": "markdown", + "id": "9c8830ce", "metadata": {}, "source": [ "## Create a VM\n", @@ -44,12 +140,34 @@ "![vm-create](images/01_CLASS_Azure_VM_basic_01.png)\n", "\n", "**Part 2**\n", + "\n", + "Before we begin part 2, we need to supply a public key when we create the VM so we can securely login. Using the key we created earlier (assume - /home/learner/.ssh/azure_compute_engine.pub), we will copy the key by doing the following." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c8fa1b24", + "metadata": {}, + "outputs": [], + "source": [ + "cat /home/learner/.ssh/azure_compute_engine.pub" + ] + }, + { + "cell_type": "markdown", + "id": "5da66e3b", + "metadata": {}, + "source": [ + "Highlight the output string with your cursor and use the copy command (depending on OS) to put it in your edit buffer.\n", + "\n", "* Authentication type \n", " * ssh public key\n", "* Username\n", " * Choose usename (default: azeruser)\n", - "* ssh public key source\n", - " * Generate new key pair\n", + "* SSH public key source\n", + " * Select use existing public key\n", + " * Copy the key we create earlier and paste it in the red box below.\n", "* Key pair name\n", " * Choose name for key pair (default: auto generated based on VM name)\n", "* Ports (none)\n", @@ -60,7 +178,7 @@ }, { "cell_type": "markdown", - "id": "536af466", + "id": "65d977eb", "metadata": {}, "source": [ "Now let's continue to the disk configuration by clicking Next:Disk> on the bottum or on the top heading menu choose the Disk option.\n", @@ -99,7 +217,7 @@ }, { "cell_type": "markdown", - "id": "1e052657", + "id": "a1561d9f", "metadata": {}, "source": [ "Now let's continue to provision the VM. The next three menu options across the top are outside the scope of this tutorial so now we are ready to click Review & Create.\n", @@ -130,19 +248,81 @@ "* You should see your VM name\n", "* Click on VM name to get more information about your VM\n", "\n", - "![vm-networking](images/04_CLASS_Azure_VM_verify.png)" + "![vm-networking](images/04_CLASS_Azure_VM_verify.png)\n", + "\n", + "On the VM page, you will be looking at the overview page. The Overview page contains essential information like OS, public IP, RG, status, subscriptioin as well as other properties and information. Find and record the Public IP address. " + ] + }, + { + "cell_type": "markdown", + "id": "f8afd914", + "metadata": {}, + "source": [ + "## Security (need to azurize)\n", + "\n", + "Everything in the cloud requires permission (authorization). Ordinary we would configure and check security first but in the case of exploring services it is often easier to do things out of order. We noted that the *VM instance* was created with the *Compute Engine default service account*, and if the \"Allow full access to all Cloud Api's\" scope is enable, then everyone on the VM has access to all the resources in your project." ] }, { "cell_type": "markdown", - "id": "48a51891", + "id": "0d1d75a2", "metadata": {}, "source": [ - "```{admonition} Exercise\n", - ":class: attention\n", + "## Enumerate the VM Instances\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "89f6a274", + "metadata": {}, + "source": [ + "## Connect to the VM Instance\n", "\n", - "* How do Spot Instances help you optimize costs?\n", - "````" + "To connect to the *VM Instance* we will use the cloud shell in the web console. Open up a shell by clicking on the **Activate Cloud Shell** icon in the top blue bar if it is not already open. In Cloud Shell ssh to the VM you just created. (default username \"azureuser\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c03d81d8", + "metadata": {}, + "outputs": [], + "source": [ + "ssh @" + ] + }, + { + "cell_type": "markdown", + "id": "bb819970", + "metadata": {}, + "source": [ + "## Clean up\n", + "\n", + "To complete the resource life-cycle we simply delete the VM created in this lesson. This will leave you with a Resource Group that can be used again for additional services.\n", + "\n", + "To delete the VM:\n", + "\n", + "* In the Azure portal, navigate to the list of VMs in your Resource Group.\n", + "* Select the VM to delete.\n", + "* Select the More button (...), and select Delete.\n", + "* Confirm that you want to delete the VM.\n", + "\n", + "Delete the Resource Group (optional)\n", + "\n", + "* In the Azure portal, navigate to the Resource Group blade/button.\n", + "* Select the Resource Group to delete.\n", + "* Click delete\n", + "* A warning will ask you to enter the name of the Resource Group to make sure you want to continue with this perminent operation.\n", + "* Confirm that you want ot delete the Resouce Group." + ] + }, + { + "cell_type": "markdown", + "id": "937e31d4", + "metadata": {}, + "source": [ + "## Refernce" ] } ], diff --git a/content/Azure/03_intro_to_cloud_storage.ipynb b/content/Azure/03_intro_to_cloud_storage.ipynb index e270130..f96c948 100644 --- a/content/Azure/03_intro_to_cloud_storage.ipynb +++ b/content/Azure/03_intro_to_cloud_storage.ipynb @@ -2,30 +2,39 @@ "cells": [ { "cell_type": "markdown", - "id": "677549a8", + "id": "aebc9022", "metadata": {}, "source": [ - "# Introduction to Azure Cloud Storage\n", + "# Introduction to Azure Storage\n", "\n", - "Learner Questions\n", - " * How do I store data in the cloud?\n", + "```{admonition} Overview\n", + ":class: tip\n", "\n", - "Learning Objectives:\n", - " * Navigate the Azure Cloud Storage service and terminology\n", - " * Understand the roles and permissions needed to use Azure Cloud Storage\n", - " * Allocate storage in Azure Cloud Storage account\n", - " * Allocate storage in Azure Cloud Storage\n", - " * De-allocate Azure Cloud Storage storage" + "**Teaching:**\n", + "\n", + "**Exercises:**\n", + "\n", + "**Questions:**\n", + "* How do I store data in the cloud?\n", + "\n", + "**Objectives:**\n", + "* Navigate the Azure Storage service and terminology\n", + "* Understand the roles and permissions needed to use Azure Storage\n", + "* Create Storage Account\n", + "* Allocate storage in Azure Storage\n", + "* Find the cost estimator for Azure Storage\n", + "* Recognize that resources have a \"location\"\n", + "* Recognize danger of public access\n", + "* De-allocate Azure Storage storage\n", + "```" ] }, { "cell_type": "markdown", - "id": "09e26920", + "id": "b8a6b10f", "metadata": {}, "source": [ - "Drew, after working with a Research Computing and Data (RCD) facilitator, has decided to continue his cloud journey with storage.\n", - "\n", - "One of the most common and economic ways to store data in the cloud is to use object storage.\n" + "One of the most common and economic ways to store data in the cloud is to use object storage. In Azure object storage is called *blob storage*, which is similar to the Simple Storage Service, also known as S3, on Amazon Web Services (AWS). For object storage, information is stored as a collection of key-value pairs." ] }, { @@ -46,30 +55,20 @@ }, { "cell_type": "markdown", - "id": "89b2cc65", + "id": "63d54ced", "metadata": { "tags": [] }, "source": [ - "### Security (Still need to update for Azure)\n", - "\n", - "Everything in the cloud requires permission (authorization). Let's first verify that we have the permissions to create a bucket. A Bucket (a resource) is created within a project and inheres permissions from it.\n", - "\n", - "We are interested in what permissions that *your* account has for *your* project. To do this navigate to the IAM page (**Navigation Menu -> IAM & Admin -> IAM -> Permissions -> View By: Principals**). This shows the permissions for the project.\n", - "\n", - "*Note: There is a powerful filter box to limit the permissions shown.*\n", - "\n", - "You should see a row with your account shown in the Principal column. Here you should see the \"Owner\" Role in the Role column. A *role* is a collection of permissions managed by Google or someone else. The **Owner** or the **Storage Admin** role for a project will *allow* *you* to create, access, and delete Buckets *in* the project.\n", - "\n", - "There are three important pieces of information that work together to form the **IAM policy**. The permission (role), the identity (principal or member), and the resource (project)." + "## Security (Still need to update for Azure)" ] }, { "cell_type": "markdown", - "id": "3e396a67", + "id": "af639990", "metadata": {}, "source": [ - "### Create Resource Group (Note sure if this is needed)\n", + "## Create Resource Group (Note sure if this is needed)\n", "\n", "Alocating any resource in Azure requires a Resource Goup. Resources Groups scope your resources under a common entity for \n", "resource interaction, IAM, billing (technically subsription but a resource group is under a subscription), ..., etc. \n", @@ -84,10 +83,10 @@ }, { "cell_type": "markdown", - "id": "4a8f2f30", + "id": "00376ac9", "metadata": {}, "source": [ - "### Create storage account\n", + "## Create storage account\n", "\n", "Like all things in Azure you will need an account to manage your service. In this case we need a storage account. To create a storage account, follow these steps.\n", "\n", @@ -144,12 +143,20 @@ }, { "cell_type": "markdown", - "id": "21adbab1", + "id": "b605e339", + "metadata": {}, + "source": [ + "## Follow the Store Allocation" + ] + }, + { + "cell_type": "markdown", + "id": "af63fa27", "metadata": { "tags": [] }, "source": [ - "### Enumerate the Buckets\n", + "## Enumerate the Buckets\n", "\n", "Now lets find and examine the bucket. To view a bucket we do the following:\n", "\n", @@ -161,12 +168,12 @@ }, { "cell_type": "markdown", - "id": "9f28062e", + "id": "52f2d430", "metadata": { "tags": [] }, "source": [ - "### Delete the Storage\n", + "## Delete the Storage\n", "\n", "To complete the resource life-cycle we simply delete the storage container created in this lesson. All blobs in the container will also be deleted. This will leave you with a storage account that can be used again for additional stoarge services.\n", "\n", @@ -178,6 +185,34 @@ "* Confirm that you want to delete the container.\n", "\n" ] + }, + { + "cell_type": "markdown", + "id": "85e0fd51", + "metadata": {}, + "source": [ + "## Discussion\n", + "\n", + "* What does the words \"Secure\", \"Allocate\", \"Follow\", and \"Enumerate\" spell?\n", + "* What happens when you add the \"R\" in \"Review?\"\n", + "* Is this useful?" + ] + }, + { + "cell_type": "markdown", + "id": "f9e74e9b", + "metadata": {}, + "source": [ + "## Resources in Google Cloud Platform - Review" + ] + }, + { + "cell_type": "markdown", + "id": "ccb93315", + "metadata": {}, + "source": [ + "## References" + ] } ], "metadata": { diff --git a/content/Azure/04_intro_to_cli.ipynb b/content/Azure/04_intro_to_cli.ipynb index 4ee4e92..09f62d7 100644 --- a/content/Azure/04_intro_to_cli.ipynb +++ b/content/Azure/04_intro_to_cli.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "d448d2c1", + "id": "f5be7a6c", "metadata": {}, "source": [ "# Introduction to the Azure CLI\n", @@ -17,7 +17,23 @@ " * Determine basic user/account settings.\n", " * Use environment variables for configuration - No hard coding\n", " * Understand the importance of using variables for configuration.\n", - " * Introduce value of reproducibility and automation." + " * Introduce value of reproducibility and automation.\n", + "\n", + "Resources" + ] + }, + { + "cell_type": "markdown", + "id": "b609b6ed", + "metadata": {}, + "source": [ + "## Cloud Automation\n", + "\n", + "Now that Drew can create a bucket in the web console they wish to learn how to use tools to automate the process. Drew noticed that the web console could be used to upload and share objects but wishes to learn the command line so that they can automate the and document the process (it is much easier to document commands then describing and showing mouse clicks).\n", + "\n", + "The cloud can be controlled using a Command Line Interface (CLI) or a programming language such as Python. Collectively these tools interact with the cloud over a Application Programming Interface (API) and this capability forms the basis of the cloud, the ability to control infrastructure programmatically.\n", + "\n", + "Just as with navigating the web console it is important to know the **who**, **what**, and **where** of CLI access to reduce the possibility of access mistakes. We will first verify the tools are installed and configured correctly. Next we get the Account being used (who) and the Subscription ID (where). We will then use the CLI to list some public Buckets (what)." ] }, { @@ -106,7 +122,7 @@ }, { "cell_type": "markdown", - "id": "cd6323ad", + "id": "e8feb7f2", "metadata": {}, "source": [ "## Environment Variables\n", diff --git a/content/Azure/06_running_analysis.ipynb b/content/Azure/06_running_analysis.ipynb index 052ffe8..2abf7ac 100644 --- a/content/Azure/06_running_analysis.ipynb +++ b/content/Azure/06_running_analysis.ipynb @@ -1472,15 +1472,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Bash", - "language": "bash", - "name": "bash" + "display_name": "Python 3", + "language": "python", + "name": "python3" }, "language_info": { - "codemirror_mode": "shell", - "file_extension": ".sh", - "mimetype": "text/x-sh", - "name": "bash" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.8" } }, "nbformat": 4, diff --git a/content/Azure/07_monitoring_costs.ipynb b/content/Azure/07_monitoring_costs.ipynb index e0b5d2d..6a0ba88 100644 --- a/content/Azure/07_monitoring_costs.ipynb +++ b/content/Azure/07_monitoring_costs.ipynb @@ -22,6 +22,19 @@ "\n", "```" ] + }, + { + "cell_type": "markdown", + "id": "95459101", + "metadata": {}, + "source": [ + "* In the Azure portal navigate to the *Cost Management + Billing* from the hamburger menu.\n", + "* On the left menu choose *Cost Management*\n", + "* This will give cost overview of you subscription\n", + "* On this pages left menu choose *Cost analysis*\n", + "* This page will display the actual and forcasted cost for your subscription.\n", + "* This page also offers interactive graphs that assist in drilling down to look at cost for various resources." + ] } ], "metadata": { diff --git a/content/GCP/01_intro_to_cloud_console.ipynb b/content/GCP/01_intro_to_cloud_console.ipynb index d7a5d60..3bb6abb 100644 --- a/content/GCP/01_intro_to_cloud_console.ipynb +++ b/content/GCP/01_intro_to_cloud_console.ipynb @@ -239,7 +239,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -253,7 +253,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.8.8" } }, "nbformat": 4, diff --git a/content/GCP/05_cli_storage.ipynb b/content/GCP/05_cli_storage.ipynb index ea543f2..20a3b42 100644 --- a/content/GCP/05_cli_storage.ipynb +++ b/content/GCP/05_cli_storage.ipynb @@ -944,15 +944,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Bash", - "language": "bash", - "name": "bash" + "display_name": "Python 3", + "language": "python", + "name": "python3" }, "language_info": { - "codemirror_mode": "shell", - "file_extension": ".sh", - "mimetype": "text/x-sh", - "name": "bash" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.8" } }, "nbformat": 4,