├── .github └── workflows │ └── manage-azure-policy-80fcf7fa.yml ├── LICENSE ├── Microsoft_Certified_DevOps_Engineer_Expert ├── Images │ └── Saurav-DevOps.jpg └── README.md ├── Microsoft_Certified_Solution_Architect_Expert ├── Database Deployment Template │ └── armdeploy.json ├── Labs │ ├── AzureMapDemo.html │ ├── DEMO- Deploying and Connecting to a Windows Virtual Machine via the Azure.pdf │ ├── DEMO- Implementing a VM Scale Set with Autoscaling.pdf │ ├── DEMO-Deploying Software with VM Extensions.pdf │ ├── DEMO-Deploying and Connecting to a Linux Virtual machine via the Azure Portal.pdf │ ├── Demo- Create a virtual network.pdf │ ├── Demo- Deploy Azure Container Instances.pdf │ ├── Demo- Deploying IIS with Custom Script Extension.pdf │ ├── Demo- Monitoring an Azure VM with Azure Monitor for VMs.pdf │ ├── Demo-Create an Availability Set.pdf │ ├── Demo-Creating a Web App from Azure Command Line Interface.pdf │ └── EnalbleIIS.ps1 ├── README.md ├── VMDeploymentTemplate │ ├── parameters.json │ └── template.json ├── WebApp Deployment Template │ └── appdeploymenttemplate.json └── WebAppDeploymentTemplate │ └── appdeploymenttemplate.json ├── README.md └── _config.yml /.github/workflows/manage-azure-policy-80fcf7fa.yml: -------------------------------------------------------------------------------- 1 | name: manage-azure-policy-80fcf7fa 2 | on: 3 | workflow_dispatch: 4 | inputs: 5 | remarks: 6 | description: 'Reason for triggering the workflow run' 7 | required: false 8 | default: 'Updating Azure Policies' 9 | 10 | 11 | ## Uncomment the following if you wish to automatically trigger workflow run with every commit 12 | # 13 | # push: 14 | # paths: 15 | # - 'Microsoft_Certified_Solution_Architect_Expert/policies/Allowed_virtual_machine_size_SKUs_6c8e02f2-0e31-4374-8f2a-2813d14ea0a7/**' 16 | # - .github/workflows/manage-azure-policy-80fcf7fa.yml 17 | jobs: 18 | apply-azure-policy: 19 | runs-on: ubuntu-latest 20 | steps: 21 | - name: Checkout 22 | uses: actions/checkout@v2 23 | - name: Login to Azure 24 | uses: azure/login@v1 25 | with: 26 | creds: ${{secrets.AZURE_CREDENTIALS_80fcf7fa}} 27 | allow-no-subscriptions: true 28 | - name: Create or Update Azure Policies 29 | uses: azure/manage-azure-policy@v0 30 | with: 31 | paths: | 32 | Microsoft_Certified_Solution_Architect_Expert/policies/Allowed_virtual_machine_size_SKUs_6c8e02f2-0e31-4374-8f2a-2813d14ea0a7/** 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /Microsoft_Certified_DevOps_Engineer_Expert/Images/Saurav-DevOps.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sauravraghuvanshi/100-Days-of-Azure/2def95216526afd946b2ae8d53aed9a5031aa894/Microsoft_Certified_DevOps_Engineer_Expert/Images/Saurav-DevOps.jpg -------------------------------------------------------------------------------- /Microsoft_Certified_DevOps_Engineer_Expert/README.md: -------------------------------------------------------------------------------- 1 | # Target: To prepare and clear AZ-400 Certification Exam and get equiped with Azure DevOps tools and services. 2 | 3 | ## Day-1:- 4 | 5 | ### Skilled Measured During the Exam:- 6 | * Devlop a Site Reliability Engineering Strategy 7 | * Devlop an instrumental strategy 8 | * Manage source control 9 | * Facilitate communication and collaboration 10 | * Define and implement continious integration 11 | * Define and implement continious deployment 12 | * Devlop a security and compliance plan 13 | 14 | ### Understanding DevOps:- 15 | * What is DevOps? 16 | * The goal of DevOps 17 | * The Culture change that is involved 18 | * The different phases(Plan, Code, Build, Testing, Release, Deploy, Operate, Monitor) 19 | 20 | ### The different DevOps tools:- 21 | * Your Planning tools(e.g. Azure Boards, Trello, Atlassian) 22 | * Your issue tracking tools(e.g. Atlassian JIRA, Azure Boards, and Pivotal Tracler) 23 | * Your source control tools(e.g. Git-GitHub/Azure Repos, Team Foundation Server, Subversion) 24 | * The Continious Integration tools(e.g. Jenkins, Azure Pipelines, Travis CI) 25 | * The Continious Deployment tools(e.g. Octopus Deploy, Azure Pipeline, AWS CodeDeploy) 26 | * The Monitoring and Logging tools(e.g. ELK stack, Azure Monitor, Datadog) 27 | 28 | # Section-1: Devlop an Instrumental Strategy:- 29 | 30 | ## Day-2:- 31 | 32 | ### Creating a resource-Azure Virtual Machine 33 | * Created 2 Virual Machine 34 | * One is Windows Server 2019 datacenter and second is Linux Vitual Machine. 35 | * In Windows server we allowed RDP and HTTP port and then installed web Server on it from "Add role and feature section" 36 | * In Linux virtual machine we login through PuTTY and then installed inginx using the command "sudo apt-get install nginx" 37 | 38 | ## Day-3:- 39 | 40 | ### Creating a resource-Azure storage account 41 | * Created a storage account account in Azure. 42 | * Used Azure Storage explorer, which is a free software that use to upload and retreve data on Azure storage. 43 | 44 | ### Azure Monitor-Metrices 45 | * Learned about Azure Monitor service 46 | * Worked with metrices in azure monitor. 47 | * Azure motitor is a monitoring service that can be used for collecting, analysing and acting on telemetry for cloud and on-premises environment. 48 | * There are many tools available in Azure Monitor. 49 | * We can detect and diagnose issues across application and dependencies with **Application Insights**. 50 | * We can store and drill into monitoring data using **Log Analytics**. 51 | * We can able to create visualization using **Azure Dashboard** and **Workbooks** 52 | * The data collected by Azure Monitor is segregated into matcices and logs. 53 | * Metrices are point in time values. 54 | * Logs are recorded that can reside in a **Log Analytics workspace**. 55 | * The Azure Monitor service uses a version of the kusto query language that can be used in the Azure Data explorer to build queries on your data. 56 | * **Azure Monitor collects data in the following tiers** 57 | - Application monitoring data 58 | - Guest OS monitoring data 59 | - Azure resource monitoring data 60 | - Azure subscription monitoring data 61 | - Azure tenent monitoring data 62 | 63 | * **Note**: When we go in Azure Monitor-> Matrix Section, it will ask for scope of which we want to access the data. 64 | 65 | ## Day-4:- 66 | 67 | ### Azure Monitor-Activity Logs:- 68 | * In this we learned about Activity Logs with Azure Monitor. 69 | * Azure Activity log stores all Controlled Plane Activity(e.g. someone created VM or someone regenerate the key for storage account. We have the log and they are Contolled Plan Activity) 70 | * It is like the recording of all of the administrative action. 71 | * We can able to stream our activity log into storage account or log analytics workspaces from Diagnostic settings. 72 | 73 | ### Azure Monitor-Alerts:- 74 | * We have to understand what are alerts in the Azure Monitor Service. 75 | * How to work with alerts in the Azure Monitor service. 76 | * We have to define alerts in Azure Monitors. 77 | * These alerts can be used to notify you whenever any condition are met in the monitoring data. 78 | * **We can able to create alerts based on the below monitoring data source** 79 | - Matrices Values 80 | - Log serach queries 81 | - Activity log events 82 | - From the health of the underlying Azure platform 83 | - From tests made for website availability 84 | 85 | * Understand the defination of Target resource, Signal, Criteria, Action. 86 | * **Steps to create alert rule**: Select Resource-> Condition(Matrices, Activity Log)-> Action-> Alert rule details 87 | 88 | ## Day-5:- 89 | 90 | ### Azure Log Analytics:- 91 | * A log analytics workspace is used for storing all of your monitoring data. 92 | * Each log analytics workspace has its own data repository and configuration. 93 | * You can configure different data source to send their data onto the log analytics workspace. 94 | * These source includes:- 95 | - Azure Virtual machine 96 | - Hybrid windows 97 | - Linux Machine 98 | - Azure resource that are part of your subscription 99 | 100 | * Basically it install Log Analytics Agent. 101 | 102 | ## Day-6:- 103 | 104 | ### Azure log Analytice-Queries:- 105 | * In this we have to understand how to work with Azure Log Analytics Queries. 106 | 107 | ### Azure log Analytics-Managing Access:- 108 | * We can configure access to our log analytices workspace with the help of **Role-Based Access Control**. 109 | * **There are 2 in-built user for log analytices workspace**:- 110 | 1. **Log Analytics Reader**:- 111 | * With this role, a user can view and search all monitoring data. 112 | * The user can also view monitoring settings. This includes viewing the configuration of Azure diagnostic and all Azure resources. 113 | 114 | 2. **Log Analytics Contributor**:- 115 | * This has all the privileges of the Log Analytics Reader. 116 | * Here the user can also create and configure Automation accounts. 117 | * The user can also add remove management solutions 118 | * The user can also configure the collection of logs from Azure storage and edit the monitoring settings from Azure resource. 119 | 120 | ## Day-7:- 121 | 122 | ### Azure Diagnostic-Virtual Machine:- 123 | * In this we have to cover about Diagnostic feature which is available for Azure Virtual machine. 124 | * Also we have to cover how to work with the diagnostic feature. 125 | * **What is diagnostic feature which is available for Azure Virtual Machine:-** 126 | * This is a feature that allow us to collect monitoring data from the guest from the guest operating system for Azure compute resources. 127 | * For collection of information, Azure will install the **Azure Diagnostic Extension** on your Azure Virtual Machine. 128 | * There are different type of data that can be collected:- 129 | * Windows Event Logs 130 | * Performance counters 131 | * IIS Logs(Usages information for the IIS websites that are running on the guest OS) 132 | * Application Logs 133 | * Crash dumps(Information about state of process if application crashes) 134 | * File based logs(These are logs that are created by the application or services) 135 | * Agent diagnostics logs(Information about Azure diagnostics agent) 136 | 137 | ### Creating a resource-Azure Web Apps:- 138 | * Here we have to create Azure Web Apps 139 | * We have to publish a solution onto the Azure Web App 140 | 141 | ## Day-8:- 142 | 143 | ### Application Insights:- 144 | * **What we have to learn:-** 145 | * Overview of Application Insights 146 | * Using Application Insights 147 | 148 | * **Overview of Application Insight:-** 149 | * This is an **Application Performance Manageemnt Service** for developers and DevOps proffesionals 150 | * With this service we can monitor our live applicaions 151 | * It helps to automatically detects performace issues and also help in diagnosing issues 152 | * Here we can get request rates, response times and falure rates for our pages 153 | * We can get page views and load performance as they are reported by the users' browser 154 | * It works with variety of platforms includes .Net, Node.js, java and python 155 | 156 | ### Monitoring Azure resources:- 157 | 158 | * **What are we going to learn** 159 | * Using the datadog system for monitoring 160 | 161 | * **What is datadog** 162 | * Datadog is a monitoring service for cloud-scale applications, providing monitoring of servers, databases, tools, and services, through a SaaS-based data analytics platform 163 | 164 | ## Day-9:- 165 | 166 | ### Visual Sutdio App Center:- 167 | * **What we have to cover:-** 168 | * What is Visual Studio App Center 169 | * What goes into device registration 170 | 171 | * What is Visual Studio App Center? 172 | * This service is used to **automate and manage** the lifecycle of IOS, Android, Windows and MacOS application 173 | * We can connect to our repo and automate our builds 174 | * We can then test the builds on real devices in the cloud 175 | * We can distribute apps to beta testers 176 | * We can also monitor real-world usages with crash and analytics data 177 | 178 | * **Distribution Groups:-** 179 | * These are used to control access to release 180 | * Here the distribution group is a set of users 181 | * We can release the application to the users via distribution groups 182 | * **Private Distribution Group:-** Here users are invited by email. The users can then login into Visual Studio App Center and then test the application. 183 | * **Public Distribution Group:-** This is for unauthorized users. Here user can download the application via a link 184 | * **Shared Distribution Group:-** These are groups that are shared across multiple applications in a single organization. 185 | 186 | ## Day-10:- 187 | 188 | ### Azure Monitor-Dynamic thresholds:- 189 | * **What are we have to cover:-** 190 | * What are Dynamic thresholds in Azure Monitor 191 | * Quick look at dynamic thresholds 192 | 193 | * **What are Dynamic thresholds in Azure Monitor:-** 194 | * We can create alerts in Azure Monitor based on dynamic thresholds 195 | * Here Azure Monitor uses its internal *machine learning algorithms* to identify patterns and anomalies based on historical metrices collected by Azure monitor resources 196 | * When we define alerts an alerts based on a matric, you can choose a setting known as *sensitivity* 197 | * This defines what is the amount of deviation from metric behaviour that would be use to generate alerts. 198 | * **There are three levels of sensetivity:-** 199 | * **High:-** Here an alerts would be generated even on the smallest deviation. This results in more alerts being generated 200 | * **Medium:-** Here alerts would be based on more balanced thresholds. Here fewer alerts would be generated 201 | * **Low:-** Here only if there are major deviations, then alerts would be generated. This would results in fewer alerts. 202 | 203 | * For new resources, dynamic thresholds won't be triggered three days on unless 30 samples of metric data is made available. 204 | * We can also define advanced settings of dynamic alerts 205 | * This allow us to create alerts based on the number of deviation 206 | 207 | # Section-2: Devlop a Site Reliability Engineering Strategy:- 208 | 209 | ## Day-11:- 210 | 211 | ### What is Site Reliability Engineering:- 212 | * **What are we going to learn:-** 213 | * What is Site Reliability Engineering. 214 | * How can you increase the reliability of system with the help of Azure services. 215 | 216 | * **What is Site Reliability Engineering:-** 217 | * This is an engineering discipline that is used to help an organization achieve an appropriate level of reliability in their systems, services and products. 218 | * Sometimes it is not necessary for a system to be 100% reliable. This is also difficult to achieve 219 | * In crucial sectors like aviation or medical you would strive for high reliability 220 | * To achieve high reliability, you would need to invest more. 221 | * Hence always set a goal with relevant stakeholders on the ideal measure for reliability 222 | 223 | * **How can we increase the reliability of system with the help of Azure services:-** 224 | 1. Using Virtual Machine Scale sets:- 225 | * This is a service that allows you to spin up an identical set of virtual machines 226 | * Here the service can scale in and out based on demand. 227 | * It can increase the number of virtual machines running as part of your system if the load increases 228 | * It can also decrease the number of virtual machines running as part of your system if the load decreases 229 | 2. Using an Azure Load balancer:- 230 | * The Azure load balancer can be used to route requests to backend virtual machines 231 | * This helps to distribute traffic in an efficient way 232 | * It can also help ensure that your system still processes requests if one of your virtual machines goes down 233 | 3. Using the Azure Traffic Manager Service:- 234 | * This is a DNS routing service 235 | * Here you can route traffic based on different routing methods 236 | * You have the priority routing that can be used to route traffic to a secondary end point if the primary endpoints fails. 237 | 238 | 239 | ## Day-12:- 240 | 241 | ### Using Dashboard is Azure Monitor:- 242 | * What we have to learn:- 243 | * How to work with dashboards in Azure 244 | 245 | ### Using Resource Graph Explorer:- 246 | * **What we have to learn:-** 247 | * What is the Resource Graph Explorer 248 | * How to use the Resource Graph Explorer 249 | 250 | * **What is the Resource Graph Explorers:-** 251 | * This is a service that allow you to browse for the resource that are part of your sebscription. 252 | * Here you can use queries based on the **kusto Query Language** to search for resources 253 | * The Resource Graph Explorer provides an enterface that helps in executing multiple queries, evaluating the results and viewing the results in the form of charts. 254 | 255 | ## Day-13:- 256 | 257 | ### The Azure Load Balancer Service:- 258 | * **What we have to learn:-** 259 | * What is the purpose of Azure Load Balancer 260 | * What is the Azure Load Balancer 261 | * What are the different components of the Azure Load Balancer 262 | * The different Azure Load Balancer SKU's 263 | * Public and Internal Load Balancer 264 | 265 | * **What is the Azure Load Balancer:-** 266 | * The Azure Load Balancer is used to distribute incoming traffic to backend virtual Machine 267 | * The Azure Load Balancer operate at **Layer-4** of the OSI(Open System Interconnection) model 268 | * This service can be used to provide higher availability for your application architecture 269 | 270 | * **What are different components of the Azure Load Balancer** 271 | 1. **Frontend IP Configuration:-** 272 | * This is the IP address assigned to the load balancer 273 | * If you have to load balance requests from the internet, then you can assign a Public IP address. 274 | * If you need to load balancer requests from the virtual network, then you assign a private IP address 275 | 276 | 2. **Backend Pool:-** This is the group of virtual machines or instances in the virtual machine scale set that can be used to serve the incoming user requests. 277 | 278 | 3. **Health probe:-** This is used to determines the health of the underlying instance in the backend pool. 279 | 280 | 4. **Load-Balancing rules:-** This tells the load balancer what to do with the incoming traffic. 281 | 282 | ## Day-14:- 283 | 284 | * **The different Azure Load balancer SKU's:-** 285 | 1. **Basic Load Balancer:-** 286 | * This can support up to 300 instance in the backend pool 287 | * The backend pool can contain VMs that are part of an availability set or scale set 288 | * The health probes can be only TCP and HTTP 289 | * There is no SLA 290 | 2. **Standard Load Balancer** 291 | * This can support upto 1000 instance in the backend pool. 292 | * The backend pool contain any virtual machine or virtual machine scale sets in a virtual network 293 | * The health probes can be only TCP, HTTp and HTTPS 294 | * You get an SLA of 99.99% 295 | 296 | ### Lab-using the Azure Load balancer:- 297 | * We have to make network interface static 298 | * We have to configure backend pool, Health probes, and load balancing rules. 299 | 300 | ### Virtual Machine Scale Sets 301 | * **What we have to learn:-** 302 | * What is virtual machine scale sets 303 | * How to work with virtual machine scale sets 304 | * **What are Virtual Machine Scale Sets:-** 305 | * This service allows you to create and manage group of identical and load balanced virtual machines 306 | * Here the number of underlying instances in the scale set can increase or decrease based on demand or based on a set schedule 307 | * Using virtual machine scale sets, you can add more scalability and availability for your application 308 | * **Scale Out:-** Increasing no of VM in scale set 309 | * **Scale In:-** Decreasing no of VM in scale set 310 | * Install the tool stress to increase the load on VM by using command 311 | - sudo apt-get install stress 312 | * To stress cpu use the below command 313 | - sudo stress--cpu 100 314 | 315 | ## Day-15:- 316 | 317 | ### Using Queues for scaling:- 318 | * **What are we going to learn:-** 319 | * The concept of using queues for scaling 320 | * How to use queues in the scalling process 321 | * The concept of using queues for scaling:- 322 | * Each time when there is request for workload to execute, the Web Application sends a message to Azure Queue Storage and based on number of message on queue the number of VM will get created. 323 | * Using queues for the scaling process:- 324 | * We will create an Azure storage queue 325 | * We will create a scaling condition in an Azure Virtual Machine Scale Set based on Azure storage queue 326 | 327 | ## Day-16:- 328 | 329 | ### Usage of Azure Trafic Manager:- 330 | * **What we have to learn:-** 331 | * What is the Azure Traffic Manager Service 332 | * What are the different routing methods vailable 333 | * How to use service itself 334 | * What is the Azure Traffic manager service:- 335 | * The Azure Traffic Manager service is a DNS-based traffic load balancer 336 | * This service helps you to distribute traffic to services across global Azure regions 337 | * The Traffic manager service directs client requests to the most appropriate service endpoint based on the traffic-routing method and base on the health on the of the endpoints 338 | * An endpoint is reffered to an internet facing service that is hosted inside or outside of Azure 339 | * What are the different routing methods available:- 340 | 1. **Priority:-** This is used to direct traffic to a secondary endpoint if the primary endpoint fails 341 | 2. **Weighted:-** This can be used distribute traffic across a set of endpoints 342 | 3. **performance:-** This routing mathod can be used to direct users to the closest endpoint when it comes to lowest network latency 343 | 4. **Geographic:-** Here user are directed to specific endpoints based on the geographic location of the DNS query 344 | 5. **Multivalue:-** Here multiple healthy endpoints are returned to the client 345 | 6. **Subnet:-** Here a set of end user IP address ranges are mapped to specific endpoint 346 | 347 | ## Day-17:- 348 | 349 | ### Understanding your SLA 350 | * **What are we going to learn:-** 351 | * Common SLA provided for Azure Services 352 | * Understanding of composite SLA 353 | * Common SLA provided for Azure Services:- 354 | * Azure normally gives an Service Level Agreement of 99.9% for all paid services 355 | * If you have Virtual Machine that have two are more instances that are deployed across two or more Availability Zones in the same Azure region, you will guaranteed Virtual Machine connectivity to at least one instances that are deployed across an availability set, you will be guaranteed Virtual Machine connectivity to atleast one instance at 99.95% of the time. 356 | * For an Azure Standard Load Balancer that serves two or more healthy Virtual Machines instances, you will be guaranted availability 99.99% of the time 357 | * You won't get the same SLA for the basic Load Balancer 358 | * For Azure Storage accounts, you get a general SLA of 99.9% for the read and write operations 359 | * **Understanding Composite SLA:-** 360 | * When you have multiple services for your application, you have to consider the SLA for each services 361 | * Let's say that you have an application that that makes use of the Azure Web App service and the Azure SQL Database service 362 | * For Azure Web Apps, you get an SLA of 99.95% 363 | * For Azure SQL Database, you get an SLA of 99.99% 364 | * Hence the composite SLA for the system would be 99.95% * 99.99% = 99.94% 365 | 366 | ## Day-18:- 367 | 368 | ### Recovery Strategies:- 369 | * **What we have to learn:-** 370 | * Planning for Disaster Recovery 371 | * Quick look at geo-replication for an Azure SQL database 372 | * Planning for Disaster Recovery:- 373 | * When you host application using cloud infrastructure, you always have to plan for disaster recovery scenarios 374 | * This is important for application that are cretical and need to be up and running all the time 375 | * Businesses will normally have procedures in place for recovery for their application 376 | * The procedure would be dependent on many aspects such as the importance of having a recovery solution and the cost 377 | * Also aspect such how long can the application can be down and what is the acceptable loss of data 378 | * we have to set the system for ongoing replication of data 379 | * **Cost is important** Here you need to pay for the duplicate infrastructure in the East US region 380 | * **Why we would choose on-going replication?** This would ensure we don't loose that much data in the event of a disaster 381 | 382 | # Section-3: Develop a Security and Compliance Plan:- 383 | 384 | ## Day-19:- 385 | ### Quick review on Azure AD:- 386 | * **What we have to learn:-** 387 | * What is Azure Active Directory 388 | * How does it work 389 | * Pricing options 390 | 391 | * What is Azure Active Directory:- 392 | * This is a cloud-based identity and access management service 393 | * We can create users and groups in Azure AD 394 | * We can assign licences to users 395 | * We can give access to resource in Azure to users defined in Azure AD 396 | * You can also grant different roles to users in Azure AD 397 | 398 | * How does it work:- 399 | * When we need to access resources in Azure we first need to sign in to our Azure AD and then based on the permession that we haave we can able to access the resources 400 | 401 | * Pricing Options:- 402 | * **Azure Active Free:-** This provides user and group management. It also provides on-premises directory synchronization, basic reports and self-service password change for cloud users 403 | * **Azure Active Directory Premium P1:-** Here hybrid users can acccess both on-premises and cloud resources. It also support the user of dynamic groups, cloud write-back capabilities and self-service password reset for on-premises users 404 | * **Azure Active Directory Premium P2:-** This provides important features such as Azure Active Directory Identity Protection and Privileged Identity Mangement 405 | 406 | ## Day-20:- 407 | 408 | ### Managing your Azure AD user and group:- 409 | * **What we have to learn:-** 410 | * Users and groups 411 | * Users and groups:- 412 | * We can create users in Azure AD 413 | * We can also able to logically group the users into groups 414 | * We can assign Azure AD roles to either users or groups 415 | * We can also assign permissions to resources in our Azure subscripyions to users or groups 416 | 417 | ### Multi-Factor Authentication 418 | * **What we have to learn:-** 419 | * What is Multi-Factor Authentication 420 | * How to enable Multi-Factor Authentication 421 | * What is Multi-Factor Authentication 422 | * This is the process where in the user is prompted for an additional form identification during the sign-in process 423 | * This makes the sign-in process more secure 424 | * The following methods are available form of MFA 425 | 1. Microsoft Authentication App 426 | 2. SMS 427 | 3. Voice Call 428 | 4. Hardware token 429 | 430 | ## Day-21:- 431 | 432 | ### Conditional Access Policies:- 433 | * **What we have to learn:-** 434 | * What are conditional access policies 435 | * How to work with coditional access policies 436 | * What are conditional access policies:- 437 | * Conditioanal access policies are used to allow users to access a resource only if they perform a certain action 438 | * It is used to add an extra layer of security when it comes to accessing application such as Azure Portal 439 | * You can provide access to users based on signals available and creating conditioan access policies 440 | * Common Signals:- 441 | * **User or group membership:-** Only apply policies to certain users and groups 442 | * **IP Location Information:-** Here companies can create configure IP address to block or allow traffic from 443 | * **Device:-** Here only users using devices with specific platforms could be allowd to access 444 | * **Real time and calculated risk detection:-** Here Azure AD Identity Protection can be used to identify the sign-in risk behaviour. The policy can then be used to either grant or block access based on the risk sevierity 445 | 446 | ### Azure AD Privileged Identity Management:- 447 | * **What we have to learn:-** 448 | * What is the Azure AD Privileged Identity Management 449 | * What is Azure AD Privileged Identity Management:- 450 | 451 | * We can use this to provide just-in-time privileged access to Azure AD and Azure resources 452 | * We can assign time-based access to resources using start and end time using start and end dates 453 | * We can ensure approval is taken before the activation of privileged roles 454 | * We can also ensure multi-factor authentication is carried out to activate any role 455 | * Get notification when privileged roles are activated 456 | * We need to ensure each user that needs to use Azure AD Privileged Identity management is assigned an Azure AD Premium P2 license 457 | * To start using Azure AD Privileged Identity management, first ensure to login as the Global Administrator 458 | * Go to the Azure AD Privileged Identity Mangement service 459 | * Consent to using Privileged Identity Mangement 460 | * We will then be requested to carry out multifactor authentication 461 | 462 | ## Day-22:- 463 | 464 | ### Azure Key Vault:- 465 | * **What we have to learn:-** 466 | * What is the Azure key vault service 467 | * Working with the Azure key vault service 468 | * What is the Azure key vault service:- 469 | * This is a tool that can be used to securely store and access secrets 470 | * Secrets can be API keys, password or certificates 471 | * **Example:-** 472 | * Let's say an application is being developed that is used to encrpt data. The data needs to be encrypted using an encryption key 473 | * The encryption key, instead of being stored in the application itself, can be stored in the Azure key vault service 474 | * The application can then make a secure call to get the encryption key from the Azure key vault service 475 | * You can also set access permission to service principals for the secrets, keys and certificates stored in the Azure key vault 476 | * There are different permissions available for working with secrets, keys, or certificates 477 | * You can also protect your key vault and its objects using the soft-delete feature 478 | * Here event though the key vault or an object is deleted, the object would still be available for a duration of time 479 | * The retention period can be configured for 7 to 90 days 480 | 481 | ### Service Principal:- 482 | * **What we have to learn:-** 483 | * What is a security principal 484 | * How to use a security principal 485 | * What is a security pricipal:- 486 | * In order to access resource that are secured by an Azure AD tenant, the access must be represented by a security pricipal 487 | * The security pricipal defines the access policy and the permissions for the user or the application in the Azure AD tenant 488 | 489 | ## Day-23:- 490 | 491 | ### Azure Active Directory:- 492 | * **What we have to learn:-** 493 | * Using a managed identity 494 | * Using a Managed Identity:- 495 | * A common challenge for developers is the management of secrets and credentials to secure communication between different services. On Azure, managed identities eliminate the need for developers having to manage credentials by providing an identity for the Azure resource in Azure AD and using it to obtain Azure Active Directory (Azure AD) tokens. This also helps accessing Azure Key Vault where developers can store credentials in a secure manner. Managed identities for Azure resources solves this problem by providing Azure services with an automatically managed identity in Azure AD. 496 | 497 | ### Azure Security Center:- 498 | * **What we have learn:-** 499 | * What is Azure Security Center 500 | * A look at Azure Security Center 501 | * **What is Azure Security Center:-** 502 | * This is a security system that is available in Azure 503 | * It provides **advanced threat protection** for our application in the cloud or in our on-premise infrastructure 504 | * Azure Security Center has the ability to access your environment and gives you the the uderstanding on wheater your resources are secure or not 505 | * **There are two pricing tiers for azure security- free and standard:-** 506 | * Free:- Missing OS patches assessment, Security Misconfiguration assessment, Endpoint protection assessment, Disk encryption assessment. 507 | * Standard:- Virtual Machine Behavioural Analytics, Network-based security alerts, Just-In-Tine VM access, Adoptive application controls. 508 | 509 | ### Azure Policies:- 510 | * **What we have to learn:-** 511 | * What is the Azure Policy service 512 | * How to use the Azure policy service 513 | * What is the Azure Policy Service:- 514 | * This is a service that can be used to create, assign and manage policies 515 | * These policies can be used to enforce rules that resources must abide by 516 | * Policies can also show non-compliance of existing resources 517 | * There are already many inbuild policies in place 518 | * Defination contain all inbuild policies 519 | 520 | # Section-4:-Manage Source Control:- 521 | 522 | ## Day-24:- 523 | 524 | ### Using Source Control:- 525 | * **What are we going to learn:-** 526 | * Using a versioning control system 527 | * Centralized Version Control System 528 | * Distributed Version Control System 529 | * Benefits of each version control system 530 | * **Using a versioning control system:-** 531 | * Developers can use a versioning control system to record changes that are made to their source code file over time 532 | * This gives the developer the ability to revert back to a previous file version or even back to a previous project version 533 | * The source code versioning system also has the ability to compare changes made to a file from one version to another 534 | * The most popular source code system is git 535 | * **Using a centralized source control system:-** 536 | * It's beneficial to use when you have a large code base 537 | * Here you can specify fine grain permission at the file level 538 | * You can monitor the usages of files because the check-in and check-out happens at the server level 539 | * You can also lock files if required. This would prevent these files from being changed on server 540 | * Eg:- Team Foundatiot 541 | * **Using a distributed source control system:-** 542 | * You are giving the developer full control over the repository by allowing to use a local copy 543 | * The developer also gets the full history along with the repository code 544 | * It's great to use when you have many distributed teams 545 | * Great when working with open source code bases 546 | * Eg:- git 547 | 548 | ### Azure Repos- Team Foundation Version Control 549 | * **What we have to learn:-** 550 | * How to work with Team Foundation Version Control 551 | 552 | ### Azure Repos-Git:- 553 | * **What we have to learn:-** 554 | * Working with Git locally 555 | * Working with Git in Azure Repos 556 | * |Create a file Locally|--> |Initialize an empty git repository|--> |Add the files that need to be commited|--> |Commit the file locally|--> |Push the changes to Azure Repos| 557 | 558 | ## Day-25:- 559 | 560 | ### Azure Repos- Git Branches:- 561 | * **What we have to learn:-** 562 | * What are branch in Git 563 | * How to work with branches in Git 564 | * What are Branches in Git:- 565 | * Branches help developer to work on a different line of development and not touch the main branch of work 566 | * So let's say that developers want to work on a new feature of an application 567 | * Instead of adding the code changes to the main branch, they can create a new branch and add the code to the new branch 568 | * The git branches are very light weight and hence easy to use 569 | * Use 'git branch branch_name' command to create a new branch 570 | * Use 'git checkout branch_name' to make changes on new branch not the master 571 | * To check on which branch pointer is pointing use git branch command 572 | 573 | ## Day-26:- 574 | 575 | ### Azure Repos - Pull requests:- 576 | * **What we have to learn:-** 577 | * What are pull requests in Git 578 | * The different types of merges 579 | * How to work with Pull requests in Git 580 | * What are pull requests in Git:- 581 | * Let's say a developer has gone ahead and made chages to a particular branch in their local repository, and now the developer wants to merge the changes onto the branch into Azure Repos 582 | * Let's say that the company want to insure that the changes are viewed before they can be finally merged onto the repository in Azure repos 583 | * For this there can be restriction placed on the branch where in the developer first needs to intitiate a pull request 584 | * The pull request can be reviewed by a lead developer 585 | * The lead developer can check what are the chages that are going to be made 586 | * If the change are approved, the pull request can be approved 587 | * You can protect your branches with the help of branch policies 588 | * The different type of merges:- 589 | * **Merge(no fast-forward):-** Here all the individual commits in the pull requests branch are preserved as-it-is. A new merge commit is created which unites the master branch and the pull request branch 590 | * **Squah commit:-** Here the resulting commit is not exactly a merge commit, Here it just maintains a simple, straight, linear history 591 | * **Rebase:-** Here the Rebase will take each individual commit in the pull request and cherry-pick them into the master branch 592 | * Use 'git merge branch_name' to merge it in master branch 593 | * Then do 'git commit' 594 | 595 | ### Visual Studio - Azure Repos-Git:- 596 | * **What we have to learn:-** 597 | * Using Visual Studio to publish a project onto Azure Repos-Git 598 | 599 | ## Day-27:- 600 | 601 | ### Code Reviews:- 602 | * **What we have to cover:-** 603 | * Using Code Review 604 | * Using Code Rewiews:- 605 | * Performing reviews of an application code base is important 606 | * You can perform peer review 607 | * Here you can request for reviews from your peers and reviewed the change requests accoudingly 608 | * You can also use automated software to conduct code reviews 609 | 610 | ### GitHub Code Scanning:- 611 | * **What we have to learn:-** 612 | * Understanding code scanning in GitHub 613 | * Understanding code scanning in GitHub:- 614 | * Code scanning is a feature that is available in GitHub 615 | * This can be used to find for security vulnerabilities and coding errors in your source code 616 | * GitHub can be then generated alerts based on the vulnerabilities encountered 617 | * Code scanning can be used with CodeQL 618 | * This is a semantic code analysis engine that treats code as data 619 | * It can then find for potential vulneraabilities in the code 620 | 621 | # Sction-5:-Facilitate communication and colleborotion:- 622 | 623 | ## Day-28:- 624 | 625 | ### Starting with Azure DevOps services:- 626 | * **What are we going to learn:-** 627 | * What is available with Azure DevOps 628 | * What is an Azure DevOps project 629 | * The pricing involved with Azure DevOps 630 | * What is available with Azure DevOps:- 631 | * **Azure Boards:-** Here teams can create and track user stories, backlog items, track, feature and bugs that are linked onto a project 632 | * **Azure Repos:-** This is a set of version control tools that helps you to manage your code. 633 | * **Azure Pipelines:-** This can be used to automatically build and test your code projects 634 | * **Azure Test Plans:-** Here you can manage manual testing which include user acceptance testing, Exploratory testing and Shareholder feedback 635 | * **Azure Artifacts:-** Here you can create and shared Maven, npm, and Nuget package feeds from public sources with teams of any size 636 | * What is an Azure DevOps projects:- 637 | * An Azure DevOps projects is an encapulation of the repository for source code and also for the group of people who would be responsibe for planning, tracking and collaboration on the software solution being build 638 | * If you have different business units, you can add projects for each business unit 639 | 640 | ## Day-29:- 641 | 642 | ### What are Azure Boards:- 643 | * **What we have to learn:-** 644 | * What are Azure Boards 645 | * The basic process 646 | * The Agile process 647 | * The Scrum process 648 | * The CMMI process 649 | * What are Azure Borads:- 650 | * This is a service that helps teams to manage their software projects 651 | * It has support for Scrum and kanban 652 | * Here you can quickly create and track user stories, backlog items, feature and bugs that are associated with a project 653 | * The Basic Process:- 654 | * Choose this process when the team needs the simplest model to work with in Azure Boards 655 | * **Steps:** Epic-> Issue-> Task 656 | * **The basic Process-Workflow(Bi Directional):** To Do-> Doing-> Done 657 | * The Agile Process:- 658 | * Choose this process when when the team need to use Agile process auch as Scrum 659 | * Here the team would want to track user stories and track development and test activities 660 | * Can also track bugs on the kanban boards 661 | * **Steps:** Epic-> Feature-> User stories-> Task Bug-> Task | issue 662 | * **The Agile Process-Workflow(Bi-Directional):** New-> Active-> Resolved-> Closed | Removed 663 | * The Scrum Process:- 664 | * When you specifically want to align with the scrum process 665 | * Here you track the product backlog and the bugs on a kanban board 666 | * **Steps:** Epic-> Feature-> Product backlog item-> Task | Bug-> Task | Impediment(issue and bug tracking) 667 | * **The Scrum Process-Workflow(Bi-directional):** New-> Approved-> Committed-> Done | Removed 668 | * The CMMI Process:- 669 | * When the company follow a more formal project process 670 | * **Steps:** Epic-> Feature-> Requirement-> Task | Bug-> Task | Change Request | Issue | Review | Risk 671 | * **The CMMI Process-Workflow:** New-> Active-> Resolved-> Closed 672 | 673 | ### Working with Azure Boards:- 674 | * **What are we going to learn:-** 675 | * How to work with Azure Boards 676 | 677 | ### Azure Boards- Team users:- 678 | * **What are we going to learn:-** 679 | * How to add a user to the organization and then to the team 680 | 681 | ## Day-30:- 682 | 683 | ### Revision Day-1:- 684 | * Revised complete **Introduction to DevOps Section** 685 | * Revised Complete **Devlop an Instrumental Strategy Section** 686 | 687 | ## Day-31:- 688 | 689 | ### Revision Day-2:- 690 | * Solved questions on Devlop an Instrumental Strategy Section 691 | * Revised Complete **Develop a Site Reliability Engineering Section** 692 | * Revised Complete **Develop a security and compliance plan Section** 693 | * Revised Complete **Manage Source Control Section** 694 | * Revised Complete **Facilitate Communication and Collaboration Section** 695 | 696 | ## Day-32:- 697 | 698 | ## Revision Day-3:- 699 | * Solved questions on Manage Source Control Section 700 | * Solved questions Facilitate Communication and Collaboration Section 701 | 702 | ## Day-33:- 703 | 704 | ### Lab-Azure Boards-Charts:- 705 | * **What are we going to learn:-** 706 | * What are the key concepts with dashboards 707 | * The different chart available 708 | * How to create a sample chart and add it to a dashboards 709 | 710 | * What are the key concept with dashboards:- 711 | * These are customized and interactive signboards that helps to provide real-time information. 712 | * The dashboards are linked with a team or a project 713 | * The dashboards can be used to deploy charts and widgets 714 | * **Charts:-** These are trend charts that can be created with a work item query 715 | * **Widgets:-** This helps to display configurable and charts on dashboards 716 | 717 | * The different charts available:- 718 | * **Burndown and Burnup:-** The Burndown chart focuses on the remaining work within a specific period of time. The Burnup chart focuses on the complete work. Both of the chart type can be used to see if the team is on the track to complete the set of work by the end date. 719 | * **Cycle time:-** This is used to look at the time taken to close a work item after work on it has started 720 | * **Load time:-** This defines the time taken to close a work item after it has been created. 721 | 722 | ### Azure Boards - Slack:- 723 | * **What we have to cover:-** 724 | * Intergration of Azure Boards with Slack 725 | 726 | * Intergration of Azure Boards with Slack:- 727 | * You can use the Azure Boards application for slack to create work item and monitor the work item activity in the Azure Boards projects from a slack channel 728 | * You have first add the Azure Boards app to the slack workspace 729 | * Then link the Azure Boards project to the Azure Boards app in the slack 730 | * Setup subscription for the work related events in the slack channel 731 | 732 | # Section-6:- Define and Implement continious Integration-Build Automation:- 733 | 734 | ## Day-34:- 735 | 736 | ### What is Continious Integration:- 737 | * **What we have to learn:-** 738 | * What is Continious Integration 739 | * The need for continious integration 740 | * Tools for continious integration 741 | 742 | * What is Continious Integration:- 743 | * Used to complement the entire DevOps process 744 | * provides automation for your entire applicationn lifecycle 745 | * Allows to detect issues and bugs early on in your development lifecycle. 746 | 747 | * Tools for continious integration:- 748 | * The right tools are important 749 | * continious integration tools:- Jenkins, Atlassian Bamboo, Teamcity 750 | * You would also implement your source code versioning tool such as Git and GitHub 751 | * You would also implement your testing tools with the continious integration tools 752 | * Azure DevOps service service has Azure Pipeline 753 | 754 | ## Day-35:- 755 | ### What is Azure Pipeline 756 | * **What we have to cover** 757 | * What are Azure pipelines 758 | * The different parts of Azure pipeline 759 | 760 | * What are Azure pipelines:- 761 | * This is a cloud service that can be used to automatically build and test your code projects. 762 | * You can implement both continious integration and continious delivery for your application using Azure pipeline 763 | * Azure Pipelines can be used with a variety of programming languages include Python, Java, Javascript, PHP, Ruby, C#, c++, and Go. 764 | * It integrate with a variety of version control system such as GitHub, GitHub Enterprise, Azure Repos, Git & TFVC, Bitbucket cloud and subversion. 765 | * The defination of pipeline can be done via the classic editor or via a YAML file 766 | * By default the YAML file is azure-pipeline,yaml file and the file is versioned along with your code 767 | * We will be working with the YAML file for building and pipeline 768 | 769 | * The different part of Azure Pipeline:- 770 | * **Trigger:-** This instruct the pipeline to run 771 | * **Stage:-** This is a way of organizating the job in the pipeline 772 | * A job can have one or more steps 773 | * Each step can be a task or a script. This is the smallest block of the pipeline 774 | 775 | ### Azure Pipeline- Triggering a build:- 776 | * An Azure pipleline is a part of CI hence if we do some changes to the code and then commit it then Azure pipeline is automatically go to trigger build for the same. 777 | ## Day-36:- 778 | 779 | ## Cleared my Microsoft Certified DevOps Proffesional Expert Exam. 780 | 781 | 782 | [Verify my certification](https://www.credly.com/badges/3201a7aa-5ff6-4574-b275-9c2c6c5bdf15?source=linked_in_profile) 783 | 784 | 785 | saurav raghuvanshi -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/Database Deployment Template/armdeploy.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", 4 | "contentVersion": "1.0.0.0", 5 | "parameters": { 6 | "servername": { 7 | "type": "string", 8 | "metadata": { 9 | "description": "description" 10 | } 11 | }, 12 | "dbcount": { 13 | "type": "int", 14 | "metadata": { 15 | "description": "description" 16 | } 17 | }, 18 | "startip": { 19 | "type": "string", 20 | "metadata": { 21 | "description": "description" 22 | } 23 | }, 24 | "endip": { 25 | "type": "string", 26 | "metadata": { 27 | "description": "description" 28 | } 29 | } 30 | }, 31 | "functions": [], 32 | "variables": {"dbprefix": "test_db", 33 | "adminName": "whome", 34 | "adminPassword": "P@55W0rd!!!"}, 35 | "resources": [ 36 | { 37 | "name": "[parameters('servername')]", 38 | "type": "Microsoft.Sql/servers", 39 | "apiVersion": "2014-04-01", 40 | "location": "[resourceGroup().location]", 41 | "tags": { 42 | "displayName": "sqlServer1" 43 | }, 44 | "properties": { 45 | "administratorLogin": "[variables('adminName')]", 46 | "administratorLoginPassword": "[variables('adminPassword')]" 47 | }, 48 | "resources": [ 49 | { 50 | "type": "firewallRules", 51 | "apiVersion": "2014-04-01", 52 | "dependsOn": [ 53 | "[resourceId('Microsoft.Sql/servers', parameters('servername'))]" 54 | ], 55 | "location": "[resourceGroup().location]", 56 | "name": "AllowAllWindowsAzureIps", 57 | "properties": { 58 | "startIpAddress": "[parameters('startip')]", 59 | "endIpAddress": "[parameters('endip')]" 60 | } 61 | } 62 | ] 63 | }, 64 | { 65 | "name": "sqlServer1/sqlDatabase1", 66 | "type": "Microsoft.Sql/servers/databases", 67 | "apiVersion": "2014-04-01", 68 | "location": "[resourceGroup().location]", 69 | "tags": { 70 | "displayName": "sqlDatabase1" 71 | }, 72 | "dependsOn": [ 73 | "[resourceId('Microsoft.Sql/servers', 'sqlServer1')]" 74 | ], 75 | "properties": { 76 | "collation": "SQL_Latin1_General_CP1_CI_AS", 77 | "edition": "Basic", 78 | "maxSizeBytes": "1073741824", 79 | "requestedServiceObjectiveName": "Basic" 80 | } 81 | } 82 | ], 83 | "outputs": {} 84 | } -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/Labs/AzureMapDemo.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Interactive Search Quickstart - Azure Maps Web SDK Samples 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 216 | 357 | 358 | 359 | 360 |
361 | 362 | 371 | 372 | 373 | -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/Labs/DEMO- Deploying and Connecting to a Windows Virtual Machine via the Azure.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sauravraghuvanshi/100-Days-of-Azure/2def95216526afd946b2ae8d53aed9a5031aa894/Microsoft_Certified_Solution_Architect_Expert/Labs/DEMO- Deploying and Connecting to a Windows Virtual Machine via the Azure.pdf -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/Labs/DEMO- Implementing a VM Scale Set with Autoscaling.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sauravraghuvanshi/100-Days-of-Azure/2def95216526afd946b2ae8d53aed9a5031aa894/Microsoft_Certified_Solution_Architect_Expert/Labs/DEMO- Implementing a VM Scale Set with Autoscaling.pdf -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/Labs/DEMO-Deploying Software with VM Extensions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sauravraghuvanshi/100-Days-of-Azure/2def95216526afd946b2ae8d53aed9a5031aa894/Microsoft_Certified_Solution_Architect_Expert/Labs/DEMO-Deploying Software with VM Extensions.pdf -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/Labs/DEMO-Deploying and Connecting to a Linux Virtual machine via the Azure Portal.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sauravraghuvanshi/100-Days-of-Azure/2def95216526afd946b2ae8d53aed9a5031aa894/Microsoft_Certified_Solution_Architect_Expert/Labs/DEMO-Deploying and Connecting to a Linux Virtual machine via the Azure Portal.pdf -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/Labs/Demo- Create a virtual network.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sauravraghuvanshi/100-Days-of-Azure/2def95216526afd946b2ae8d53aed9a5031aa894/Microsoft_Certified_Solution_Architect_Expert/Labs/Demo- Create a virtual network.pdf -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/Labs/Demo- Deploy Azure Container Instances.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sauravraghuvanshi/100-Days-of-Azure/2def95216526afd946b2ae8d53aed9a5031aa894/Microsoft_Certified_Solution_Architect_Expert/Labs/Demo- Deploy Azure Container Instances.pdf -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/Labs/Demo- Deploying IIS with Custom Script Extension.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sauravraghuvanshi/100-Days-of-Azure/2def95216526afd946b2ae8d53aed9a5031aa894/Microsoft_Certified_Solution_Architect_Expert/Labs/Demo- Deploying IIS with Custom Script Extension.pdf -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/Labs/Demo- Monitoring an Azure VM with Azure Monitor for VMs.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sauravraghuvanshi/100-Days-of-Azure/2def95216526afd946b2ae8d53aed9a5031aa894/Microsoft_Certified_Solution_Architect_Expert/Labs/Demo- Monitoring an Azure VM with Azure Monitor for VMs.pdf -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/Labs/Demo-Create an Availability Set.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sauravraghuvanshi/100-Days-of-Azure/2def95216526afd946b2ae8d53aed9a5031aa894/Microsoft_Certified_Solution_Architect_Expert/Labs/Demo-Create an Availability Set.pdf -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/Labs/Demo-Creating a Web App from Azure Command Line Interface.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sauravraghuvanshi/100-Days-of-Azure/2def95216526afd946b2ae8d53aed9a5031aa894/Microsoft_Certified_Solution_Architect_Expert/Labs/Demo-Creating a Web App from Azure Command Line Interface.pdf -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/Labs/EnalbleIIS.ps1: -------------------------------------------------------------------------------- 1 | Install-WindowsFeature -name Web-Server -IncludeManagementTools -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/README.md: -------------------------------------------------------------------------------- 1 | # **Target- To prepare and clear Technologies for Microsoft Azure Architects (AZ-303) Certification Exam** 2 | 3 | ## **Demo Labs** 4 | 1. [**Demo: Creating a Web App from AzureCommand Line Interface**](https://github.com/sauravraghuvanshi/100-Days-of-Azure/blob/main/Microsoft_Certified_Solution_Architect_Expert/Labs/Demo-Creating%20a%20Web%20App%20from%20Azure%20Command%20Line%20Interface.pdf) 5 | 2. [**DEMO: Deploying and Connecting to a Windows Virtual Machine via the Azure**](https://github.com/sauravraghuvanshi/100-Days-of-Azure/blob/main/Microsoft_Certified_Solution_Architect_Expert/Labs/DEMO-%20Deploying%20and%20Connecting%20to%20a%20Windows%20Virtual%20Machine%20via%20the%20Azure.pdf) 6 | 3. [**DEMO: Deploying and Connecting to a Linux Virtual machine via the Azure Portal**](https://github.com/sauravraghuvanshi/100-Days-of-Azure/blob/main/Microsoft_Certified_Solution_Architect_Expert/Labs/DEMO-Deploying%20and%20Connecting%20to%20a%20Linux%20Virtual%20machine%20via%20the%20Azure%20Portal.pdf) 7 | 4. [**Demo: Create an Availability Set**](https://github.com/sauravraghuvanshi/100-Days-of-Azure/blob/main/Microsoft_Certified_Solution_Architect_Expert/Labs/Demo-Create%20an%20Availability%20Set.pdf) 8 | 5. [**DEMO: Implementing a VM Scale Set with Autoscaling**](https://github.com/sauravraghuvanshi/100-Days-of-Azure/blob/main/Microsoft_Certified_Solution_Architect_Expert/Labs/DEMO-%20Implementing%20a%20VM%20Scale%20Set%20with%20Autoscaling.pdf) 9 | 6. [**DEMO: Deploying Software with VM Extensions**](https://github.com/sauravraghuvanshi/100-Days-of-Azure/blob/main/Microsoft_Certified_Solution_Architect_Expert/Labs/DEMO-Deploying%20Software%20with%20VM%20Extensions.pdf) 10 | 7. [**Demo: Deploying IIS with Custom Script Extension**](https://github.com/sauravraghuvanshi/100-Days-of-Azure/blob/main/Microsoft_Certified_Solution_Architect_Expert/Labs/Demo-%20Deploying%20IIS%20with%20Custom%20Script%20Extension.pdf) 11 | 8. [**Demo: Monitoring an Azure VM with Azure Monitor for VMs**](https://github.com/sauravraghuvanshi/100-Days-of-Azure/blob/main/Microsoft_Certified_Solution_Architect_Expert/Labs/Demo-%20Monitoring%20an%20Azure%20VM%20with%20Azure%20Monitor%20for%20VMs.pdf) 12 | 13 | 14 | ## **Day-37:-** 15 | 16 | ### **Description:-** 17 | * This learning path is designed to help prepare for the AZ-303 Microsoft Azure Architect Technologies exam and at the same time make ready for Azure Architect Role. 18 | 19 | * The AZ-303 and AZ-304 exams replace the older AZ-300 and AZ-301 exams, which will retire on September 30, 2020. These two exams are part of Microsoft’s role-based certification program. Candidates who pass both exams will earn the Microsoft Certified: Azure Solutions Architect Expert certification. 20 | 21 | * The AZ-303 exam tests your knowledge of four subject areas and that’s how we’ve structured this learning path as well. We’ll start with implementing and monitoring Azure infrastructure. This is the biggest section, and it covers a wide variety of topics, including storage, virtual machines, networking, Azure Active Directory, and more. Next, we’ll show you how to implement management and security solutions. After that, you’ll learn how to create and deploy apps using either Azure App Service or one of the container services, such as Azure Kubernetes Service. Finally, we’ll cover how to implement and manage data platforms. 22 | 23 | ### **Learning Objectives** 24 | * Implement and monitor an Azure infrastructure 25 | * Implement management and security solutions 26 | * Implement solutions for apps 27 | * Implement and manage data platforms 28 | 29 | ### **Intended Audience** 30 | * People who want to become Azure cloud architects 31 | * People preparing for Microsoft’s AZ-303 exam 32 | 33 | # **Module: Overview of Azure Services** 34 | 35 | ## It is really great place to start the prepration by knowing what all services Azure provied in different domain, so that when we start to design architecture for an application at that time we know what all options and alternatives we have for each services 36 | 37 | ## **Day-38:-** 38 | 39 | ### **Azure Overview:-** 40 | **For any core application we need 3 core services i.e Compute, Storage, and Networkng** 41 | * **Compute:-** 42 | 1. Azure Virtual Machine:- 43 | * Infrastructure as a Service Compute Option 44 | * Best for lift and shift 45 | 46 | 2. Azure App Service:- 47 | * PaaS Solution 48 | * This platform let you host web and mobile application without even thinking about the underline infrastructure 49 | * For most applicatiuon Azure App Service is better option then Azure VM but there are situation like if our application is neither web or mobile app then we can't able to use App Service 50 | 51 | 3. Azure Container Instances:- 52 | * These are self contained software environment 53 | * It contain complete application plus all the third-party package it needs 54 | 55 | 4. Azure kebernetes Service:- 56 | * Best for compex application that contain multiple containers 57 | 58 | 5. Azure Functions:- 59 | * It is the Serverless Compute Offering 60 | * It contain single function rather then compete application 61 | * It has consumption plan: Only use resource when a function is running 62 | 63 | ## **Day-39:-** 64 | 65 | ### **Azure Overview:-** 66 | * **Storage:-** 67 | There are even more storage option then for copmute. That's beacuse I included database and other data store in the same category. 68 | 1. **Azure Blob Storage:-** 69 | * It is simplest storage form 70 | * It is also called object storage 71 | * It is just a collection of files 72 | * It doesn't have hierarchical folder structure. It basically have the flat structure. 73 | * It is mainly used for unstructured data e.g images, videos, log etc. 74 | * It has multiple access tier:- 75 | - **Hot Tier:-** Preffered for frequently accessed data 76 | - **Cool Tier:-** Infrequently accessed 77 | - **Archive:-** Rarely Accessed 78 | 2. **Hierarchical file storage:-** 79 | * 1. **Azure File Storage:-** 80 | * Serves up file share that you can mount on window servers. 81 | * 2. **Azure Data Lake Storage Gen 2:-** 82 | * Hadoop-compatible storage for use with data application. 83 | 3. **Relational Database:-** 84 | * 1. **Azure SQL Database:-** 85 | * 2. **Open Source:-** 86 | * Azure Database for MySQL 87 | * Azure Database for MarioDB 88 | * Azure Database for PostgreSQL 89 | 4. **Azure Synapse Analytics:-** 90 | * It is a data warehouse solution 91 | 5. **NoSQL Database:-** 92 | * Sutable for application which have large 93 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/VMDeploymentTemplate/parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "location": { 6 | "value": "westus" 7 | }, 8 | "networkInterfaceName": { 9 | "value": "vmlinuxarm757" 10 | }, 11 | "networkSecurityGroupName": { 12 | "value": "VMLinuxARM-nsg" 13 | }, 14 | "networkSecurityGroupRules": { 15 | "value": [ 16 | { 17 | "name": "SSH", 18 | "properties": { 19 | "priority": 300, 20 | "protocol": "TCP", 21 | "access": "Allow", 22 | "direction": "Inbound", 23 | "sourceAddressPrefix": "*", 24 | "sourcePortRange": "*", 25 | "destinationAddressPrefix": "*", 26 | "destinationPortRange": "22" 27 | } 28 | } 29 | ] 30 | }, 31 | "subnetName": { 32 | "value": "default" 33 | }, 34 | "virtualNetworkName": { 35 | "value": "VMLinuxARM_group-vnet" 36 | }, 37 | "addressPrefixes": { 38 | "value": [ 39 | "10.0.0.0/16" 40 | ] 41 | }, 42 | "subnets": { 43 | "value": [ 44 | { 45 | "name": "default", 46 | "properties": { 47 | "addressPrefix": "10.0.0.0/24" 48 | } 49 | } 50 | ] 51 | }, 52 | "publicIpAddressName": { 53 | "value": "VMLinuxARM-ip" 54 | }, 55 | "publicIpAddressType": { 56 | "value": "Dynamic" 57 | }, 58 | "publicIpAddressSku": { 59 | "value": "Basic" 60 | }, 61 | "virtualMachineName": { 62 | "value": "VMLinuxARM" 63 | }, 64 | "virtualMachineComputerName": { 65 | "value": "VMLinuxARM" 66 | }, 67 | "virtualMachineRG": { 68 | "value": "VMLinuxARM_group" 69 | }, 70 | "osDiskType": { 71 | "value": "Premium_LRS" 72 | }, 73 | "virtualMachineSize": { 74 | "value": "Standard_D2s_v3" 75 | }, 76 | "adminUsername": { 77 | "value": "Saurav123" 78 | }, 79 | "adminPassword": { 80 | "value": null 81 | }, 82 | "diagnosticsStorageAccountName": { 83 | "value": "vmlinuxarmgroupdiag" 84 | }, 85 | "diagnosticsStorageAccountId": { 86 | "value": "Microsoft.Storage/storageAccounts/vmlinuxarmgroupdiag" 87 | }, 88 | "diagnosticsStorageAccountType": { 89 | "value": "Standard_LRS" 90 | }, 91 | "diagnosticsStorageAccountKind": { 92 | "value": "Storage" 93 | } 94 | } 95 | } -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/VMDeploymentTemplate/template.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "location": { 6 | "type": "String" 7 | }, 8 | "networkInterfaceName": { 9 | "type": "String" 10 | }, 11 | "networkSecurityGroupName": { 12 | "type": "String" 13 | }, 14 | "networkSecurityGroupRules": { 15 | "type": "Array" 16 | }, 17 | "subnetName": { 18 | "type": "String" 19 | }, 20 | "virtualNetworkName": { 21 | "type": "String" 22 | }, 23 | "addressPrefixes": { 24 | "type": "Array" 25 | }, 26 | "subnets": { 27 | "type": "Array" 28 | }, 29 | "publicIpAddressName": { 30 | "type": "String" 31 | }, 32 | "publicIpAddressType": { 33 | "type": "String" 34 | }, 35 | "publicIpAddressSku": { 36 | "type": "String" 37 | }, 38 | "virtualMachineName": { 39 | "type": "String" 40 | }, 41 | "virtualMachineComputerName": { 42 | "type": "String" 43 | }, 44 | "virtualMachineRG": { 45 | "type": "String" 46 | }, 47 | "osDiskType": { 48 | "type": "String" 49 | }, 50 | "virtualMachineSize": { 51 | "type": "String" 52 | }, 53 | "adminUsername": { 54 | "type": "String" 55 | }, 56 | "adminPassword": { 57 | "type": "SecureString" 58 | }, 59 | "diagnosticsStorageAccountName": { 60 | "type": "String" 61 | }, 62 | "diagnosticsStorageAccountId": { 63 | "type": "String" 64 | }, 65 | "diagnosticsStorageAccountType": { 66 | "type": "String" 67 | }, 68 | "diagnosticsStorageAccountKind": { 69 | "type": "String" 70 | } 71 | }, 72 | "variables": { 73 | "nsgId": "[resourceId(resourceGroup().name, 'Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroupName'))]", 74 | "vnetId": "[resourceId(resourceGroup().name,'Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]", 75 | "subnetRef": "[concat(variables('vnetId'), '/subnets/', parameters('subnetName'))]", 76 | "diagnosticsExtensionName": "LinuxDiagnostic", 77 | "storageAccountSasTokenRequestContent": { 78 | "signedServices": "bt", 79 | "signedResourceTypes": "co", 80 | "signedPermission": "acluw", 81 | "signedExpiry": "9001-01-30T18:30:00Z" 82 | } 83 | }, 84 | "resources": [ 85 | { 86 | "type": "Microsoft.Network/networkInterfaces", 87 | "apiVersion": "2018-10-01", 88 | "name": "[parameters('networkInterfaceName')]", 89 | "location": "[parameters('location')]", 90 | "dependsOn": [ 91 | "[concat('Microsoft.Network/networkSecurityGroups/', parameters('networkSecurityGroupName'))]", 92 | "[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]", 93 | "[concat('Microsoft.Network/publicIpAddresses/', parameters('publicIpAddressName'))]" 94 | ], 95 | "properties": { 96 | "ipConfigurations": [ 97 | { 98 | "name": "ipconfig1", 99 | "properties": { 100 | "subnet": { 101 | "id": "[variables('subnetRef')]" 102 | }, 103 | "privateIPAllocationMethod": "Dynamic", 104 | "publicIpAddress": { 105 | "id": "[resourceId(resourceGroup().name, 'Microsoft.Network/publicIpAddresses', parameters('publicIpAddressName'))]" 106 | } 107 | } 108 | } 109 | ], 110 | "networkSecurityGroup": { 111 | "id": "[variables('nsgId')]" 112 | } 113 | } 114 | }, 115 | { 116 | "type": "Microsoft.Network/networkSecurityGroups", 117 | "apiVersion": "2019-02-01", 118 | "name": "[parameters('networkSecurityGroupName')]", 119 | "location": "[parameters('location')]", 120 | "properties": { 121 | "securityRules": "[parameters('networkSecurityGroupRules')]" 122 | } 123 | }, 124 | { 125 | "type": "Microsoft.Network/virtualNetworks", 126 | "apiVersion": "2020-11-01", 127 | "name": "[parameters('virtualNetworkName')]", 128 | "location": "[parameters('location')]", 129 | "properties": { 130 | "addressSpace": { 131 | "addressPrefixes": "[parameters('addressPrefixes')]" 132 | }, 133 | "subnets": "[parameters('subnets')]" 134 | } 135 | }, 136 | { 137 | "type": "Microsoft.Network/publicIpAddresses", 138 | "apiVersion": "2019-02-01", 139 | "name": "[parameters('publicIpAddressName')]", 140 | "location": "[parameters('location')]", 141 | "sku": { 142 | "name": "[parameters('publicIpAddressSku')]" 143 | }, 144 | "properties": { 145 | "publicIpAllocationMethod": "[parameters('publicIpAddressType')]" 146 | } 147 | }, 148 | { 149 | "type": "Microsoft.Compute/virtualMachines", 150 | "apiVersion": "2021-03-01", 151 | "name": "[parameters('virtualMachineName')]", 152 | "location": "[parameters('location')]", 153 | "dependsOn": [ 154 | "[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName'))]", 155 | "[concat('Microsoft.Storage/storageAccounts/', parameters('diagnosticsStorageAccountName'))]" 156 | ], 157 | "properties": { 158 | "hardwareProfile": { 159 | "vmSize": "[parameters('virtualMachineSize')]" 160 | }, 161 | "storageProfile": { 162 | "osDisk": { 163 | "createOption": "fromImage", 164 | "managedDisk": { 165 | "storageAccountType": "[parameters('osDiskType')]" 166 | } 167 | }, 168 | "imageReference": { 169 | "publisher": "Canonical", 170 | "offer": "UbuntuServer", 171 | "sku": "18.04-LTS", 172 | "version": "latest" 173 | } 174 | }, 175 | "networkProfile": { 176 | "networkInterfaces": [ 177 | { 178 | "id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaceName'))]" 179 | } 180 | ] 181 | }, 182 | "osProfile": { 183 | "computerName": "[parameters('virtualMachineComputerName')]", 184 | "adminUsername": "[parameters('adminUsername')]", 185 | "adminPassword": "[parameters('adminPassword')]", 186 | "linuxConfiguration": { 187 | "patchSettings": { 188 | "patchMode": "ImageDefault" 189 | } 190 | } 191 | }, 192 | "diagnosticsProfile": { 193 | "bootDiagnostics": { 194 | "enabled": true 195 | } 196 | } 197 | } 198 | }, 199 | { 200 | "type": "Microsoft.Storage/storageAccounts", 201 | "apiVersion": "2019-04-01", 202 | "name": "[parameters('diagnosticsStorageAccountName')]", 203 | "location": "[parameters('location')]", 204 | "sku": { 205 | "name": "[parameters('diagnosticsStorageAccountType')]" 206 | }, 207 | "kind": "[parameters('diagnosticsStorageAccountKind')]", 208 | "properties": { 209 | "minimumTlsVersion": "TLS1_2" 210 | } 211 | }, 212 | { 213 | "type": "Microsoft.Compute/virtualMachines/extensions", 214 | "apiVersion": "2018-10-01", 215 | "name": "[concat(parameters('virtualMachineName'),'/', variables('diagnosticsExtensionName'))]", 216 | "location": "[parameters('location')]", 217 | "dependsOn": [ 218 | "[concat('Microsoft.Compute/virtualMachines/', parameters('virtualMachineName'))]" 219 | ], 220 | "properties": { 221 | "publisher": "Microsoft.Azure.Diagnostics", 222 | "type": "LinuxDiagnostic", 223 | "typeHandlerVersion": "3.0", 224 | "autoUpgradeMinorVersion": true, 225 | "settings": { 226 | "StorageAccount": "[parameters('diagnosticsStorageAccountName')]", 227 | "ladCfg": { 228 | "diagnosticMonitorConfiguration": { 229 | "eventVolume": "Medium", 230 | "metrics": { 231 | "metricAggregation": [ 232 | { 233 | "scheduledTransferPeriod": "PT1M" 234 | }, 235 | { 236 | "scheduledTransferPeriod": "PT1H" 237 | } 238 | ], 239 | "resourceId": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/', 'Microsoft.Compute/virtualMachines/', parameters('virtualMachineName'))]" 240 | }, 241 | "syslogEvents": { 242 | "syslogEventConfiguration": { 243 | "LOG_AUTH": "LOG_DEBUG", 244 | "LOG_AUTHPRIV": "LOG_DEBUG", 245 | "LOG_CRON": "LOG_DEBUG", 246 | "LOG_DAEMON": "LOG_DEBUG", 247 | "LOG_FTP": "LOG_DEBUG", 248 | "LOG_KERN": "LOG_DEBUG", 249 | "LOG_LOCAL0": "LOG_DEBUG", 250 | "LOG_LOCAL1": "LOG_DEBUG", 251 | "LOG_LOCAL2": "LOG_DEBUG", 252 | "LOG_LOCAL3": "LOG_DEBUG", 253 | "LOG_LOCAL4": "LOG_DEBUG", 254 | "LOG_LOCAL5": "LOG_DEBUG", 255 | "LOG_LOCAL6": "LOG_DEBUG", 256 | "LOG_LOCAL7": "LOG_DEBUG", 257 | "LOG_LPR": "LOG_DEBUG", 258 | "LOG_MAIL": "LOG_DEBUG", 259 | "LOG_NEWS": "LOG_DEBUG", 260 | "LOG_SYSLOG": "LOG_DEBUG", 261 | "LOG_USER": "LOG_DEBUG", 262 | "LOG_UUCP": "LOG_DEBUG" 263 | } 264 | }, 265 | "performanceCounters": { 266 | "performanceCounterConfiguration": [ 267 | { 268 | "annotation": [ 269 | { 270 | "displayName": "CPU IO wait time", 271 | "locale": "en-us" 272 | } 273 | ], 274 | "class": "processor", 275 | "condition": "IsAggregate=TRUE", 276 | "counter": "percentiowaittime", 277 | "counterSpecifier": "/builtin/processor/percentiowaittime", 278 | "type": "builtin", 279 | "unit": "Percent", 280 | "sampleRate": "PT15S" 281 | }, 282 | { 283 | "annotation": [ 284 | { 285 | "displayName": "CPU user time", 286 | "locale": "en-us" 287 | } 288 | ], 289 | "class": "processor", 290 | "condition": "IsAggregate=TRUE", 291 | "counter": "percentusertime", 292 | "counterSpecifier": "/builtin/processor/percentusertime", 293 | "type": "builtin", 294 | "unit": "Percent", 295 | "sampleRate": "PT15S" 296 | }, 297 | { 298 | "annotation": [ 299 | { 300 | "displayName": "CPU nice time", 301 | "locale": "en-us" 302 | } 303 | ], 304 | "class": "processor", 305 | "condition": "IsAggregate=TRUE", 306 | "counter": "percentnicetime", 307 | "counterSpecifier": "/builtin/processor/percentnicetime", 308 | "type": "builtin", 309 | "unit": "Percent", 310 | "sampleRate": "PT15S" 311 | }, 312 | { 313 | "annotation": [ 314 | { 315 | "displayName": "CPU percentage guest OS", 316 | "locale": "en-us" 317 | } 318 | ], 319 | "class": "processor", 320 | "condition": "IsAggregate=TRUE", 321 | "counter": "percentprocessortime", 322 | "counterSpecifier": "/builtin/processor/percentprocessortime", 323 | "type": "builtin", 324 | "unit": "Percent", 325 | "sampleRate": "PT15S" 326 | }, 327 | { 328 | "annotation": [ 329 | { 330 | "displayName": "CPU interrupt time", 331 | "locale": "en-us" 332 | } 333 | ], 334 | "class": "processor", 335 | "condition": "IsAggregate=TRUE", 336 | "counter": "percentinterrupttime", 337 | "counterSpecifier": "/builtin/processor/percentinterrupttime", 338 | "type": "builtin", 339 | "unit": "Percent", 340 | "sampleRate": "PT15S" 341 | }, 342 | { 343 | "annotation": [ 344 | { 345 | "displayName": "CPU idle time", 346 | "locale": "en-us" 347 | } 348 | ], 349 | "class": "processor", 350 | "condition": "IsAggregate=TRUE", 351 | "counter": "percentidletime", 352 | "counterSpecifier": "/builtin/processor/percentidletime", 353 | "type": "builtin", 354 | "unit": "Percent", 355 | "sampleRate": "PT15S" 356 | }, 357 | { 358 | "annotation": [ 359 | { 360 | "displayName": "CPU privileged time", 361 | "locale": "en-us" 362 | } 363 | ], 364 | "class": "processor", 365 | "condition": "IsAggregate=TRUE", 366 | "counter": "percentprivilegedtime", 367 | "counterSpecifier": "/builtin/processor/percentprivilegedtime", 368 | "type": "builtin", 369 | "unit": "Percent", 370 | "sampleRate": "PT15S" 371 | }, 372 | { 373 | "annotation": [ 374 | { 375 | "displayName": "Memory available", 376 | "locale": "en-us" 377 | } 378 | ], 379 | "class": "memory", 380 | "counter": "availablememory", 381 | "counterSpecifier": "/builtin/memory/availablememory", 382 | "type": "builtin", 383 | "unit": "Bytes", 384 | "sampleRate": "PT15S" 385 | }, 386 | { 387 | "annotation": [ 388 | { 389 | "displayName": "Swap percent used", 390 | "locale": "en-us" 391 | } 392 | ], 393 | "class": "memory", 394 | "counter": "percentusedswap", 395 | "counterSpecifier": "/builtin/memory/percentusedswap", 396 | "type": "builtin", 397 | "unit": "Percent", 398 | "sampleRate": "PT15S" 399 | }, 400 | { 401 | "annotation": [ 402 | { 403 | "displayName": "Memory used", 404 | "locale": "en-us" 405 | } 406 | ], 407 | "class": "memory", 408 | "counter": "usedmemory", 409 | "counterSpecifier": "/builtin/memory/usedmemory", 410 | "type": "builtin", 411 | "unit": "Bytes", 412 | "sampleRate": "PT15S" 413 | }, 414 | { 415 | "annotation": [ 416 | { 417 | "displayName": "Page reads", 418 | "locale": "en-us" 419 | } 420 | ], 421 | "class": "memory", 422 | "counter": "pagesreadpersec", 423 | "counterSpecifier": "/builtin/memory/pagesreadpersec", 424 | "type": "builtin", 425 | "unit": "CountPerSecond", 426 | "sampleRate": "PT15S" 427 | }, 428 | { 429 | "annotation": [ 430 | { 431 | "displayName": "Swap available", 432 | "locale": "en-us" 433 | } 434 | ], 435 | "class": "memory", 436 | "counter": "availableswap", 437 | "counterSpecifier": "/builtin/memory/availableswap", 438 | "type": "builtin", 439 | "unit": "Bytes", 440 | "sampleRate": "PT15S" 441 | }, 442 | { 443 | "annotation": [ 444 | { 445 | "displayName": "Swap percent available", 446 | "locale": "en-us" 447 | } 448 | ], 449 | "class": "memory", 450 | "counter": "percentavailableswap", 451 | "counterSpecifier": "/builtin/memory/percentavailableswap", 452 | "type": "builtin", 453 | "unit": "Percent", 454 | "sampleRate": "PT15S" 455 | }, 456 | { 457 | "annotation": [ 458 | { 459 | "displayName": "Mem. percent available", 460 | "locale": "en-us" 461 | } 462 | ], 463 | "class": "memory", 464 | "counter": "percentavailablememory", 465 | "counterSpecifier": "/builtin/memory/percentavailablememory", 466 | "type": "builtin", 467 | "unit": "Percent", 468 | "sampleRate": "PT15S" 469 | }, 470 | { 471 | "annotation": [ 472 | { 473 | "displayName": "Pages", 474 | "locale": "en-us" 475 | } 476 | ], 477 | "class": "memory", 478 | "counter": "pagespersec", 479 | "counterSpecifier": "/builtin/memory/pagespersec", 480 | "type": "builtin", 481 | "unit": "CountPerSecond", 482 | "sampleRate": "PT15S" 483 | }, 484 | { 485 | "annotation": [ 486 | { 487 | "displayName": "Swap used", 488 | "locale": "en-us" 489 | } 490 | ], 491 | "class": "memory", 492 | "counter": "usedswap", 493 | "counterSpecifier": "/builtin/memory/usedswap", 494 | "type": "builtin", 495 | "unit": "Bytes", 496 | "sampleRate": "PT15S" 497 | }, 498 | { 499 | "annotation": [ 500 | { 501 | "displayName": "Memory percentage", 502 | "locale": "en-us" 503 | } 504 | ], 505 | "class": "memory", 506 | "counter": "percentusedmemory", 507 | "counterSpecifier": "/builtin/memory/percentusedmemory", 508 | "type": "builtin", 509 | "unit": "Percent", 510 | "sampleRate": "PT15S" 511 | }, 512 | { 513 | "annotation": [ 514 | { 515 | "displayName": "Page writes", 516 | "locale": "en-us" 517 | } 518 | ], 519 | "class": "memory", 520 | "counter": "pageswrittenpersec", 521 | "counterSpecifier": "/builtin/memory/pageswrittenpersec", 522 | "type": "builtin", 523 | "unit": "CountPerSecond", 524 | "sampleRate": "PT15S" 525 | }, 526 | { 527 | "annotation": [ 528 | { 529 | "displayName": "Network in guest OS", 530 | "locale": "en-us" 531 | } 532 | ], 533 | "class": "network", 534 | "counter": "bytesreceived", 535 | "counterSpecifier": "/builtin/network/bytesreceived", 536 | "type": "builtin", 537 | "unit": "Bytes", 538 | "sampleRate": "PT15S" 539 | }, 540 | { 541 | "annotation": [ 542 | { 543 | "displayName": "Network total bytes", 544 | "locale": "en-us" 545 | } 546 | ], 547 | "class": "network", 548 | "counter": "bytestotal", 549 | "counterSpecifier": "/builtin/network/bytestotal", 550 | "type": "builtin", 551 | "unit": "Bytes", 552 | "sampleRate": "PT15S" 553 | }, 554 | { 555 | "annotation": [ 556 | { 557 | "displayName": "Network out guest OS", 558 | "locale": "en-us" 559 | } 560 | ], 561 | "class": "network", 562 | "counter": "bytestransmitted", 563 | "counterSpecifier": "/builtin/network/bytestransmitted", 564 | "type": "builtin", 565 | "unit": "Bytes", 566 | "sampleRate": "PT15S" 567 | }, 568 | { 569 | "annotation": [ 570 | { 571 | "displayName": "Network collisions", 572 | "locale": "en-us" 573 | } 574 | ], 575 | "class": "network", 576 | "counter": "totalcollisions", 577 | "counterSpecifier": "/builtin/network/totalcollisions", 578 | "type": "builtin", 579 | "unit": "Count", 580 | "sampleRate": "PT15S" 581 | }, 582 | { 583 | "annotation": [ 584 | { 585 | "displayName": "Packets received errors", 586 | "locale": "en-us" 587 | } 588 | ], 589 | "class": "network", 590 | "counter": "totalrxerrors", 591 | "counterSpecifier": "/builtin/network/totalrxerrors", 592 | "type": "builtin", 593 | "unit": "Count", 594 | "sampleRate": "PT15S" 595 | }, 596 | { 597 | "annotation": [ 598 | { 599 | "displayName": "Packets sent", 600 | "locale": "en-us" 601 | } 602 | ], 603 | "class": "network", 604 | "counter": "packetstransmitted", 605 | "counterSpecifier": "/builtin/network/packetstransmitted", 606 | "type": "builtin", 607 | "unit": "Count", 608 | "sampleRate": "PT15S" 609 | }, 610 | { 611 | "annotation": [ 612 | { 613 | "displayName": "Packets received", 614 | "locale": "en-us" 615 | } 616 | ], 617 | "class": "network", 618 | "counter": "packetsreceived", 619 | "counterSpecifier": "/builtin/network/packetsreceived", 620 | "type": "builtin", 621 | "unit": "Count", 622 | "sampleRate": "PT15S" 623 | }, 624 | { 625 | "annotation": [ 626 | { 627 | "displayName": "Packets sent errors", 628 | "locale": "en-us" 629 | } 630 | ], 631 | "class": "network", 632 | "counter": "totaltxerrors", 633 | "counterSpecifier": "/builtin/network/totaltxerrors", 634 | "type": "builtin", 635 | "unit": "Count", 636 | "sampleRate": "PT15S" 637 | }, 638 | { 639 | "annotation": [ 640 | { 641 | "displayName": "Filesystem transfers/sec", 642 | "locale": "en-us" 643 | } 644 | ], 645 | "class": "filesystem", 646 | "condition": "IsAggregate=TRUE", 647 | "counter": "transferspersecond", 648 | "counterSpecifier": "/builtin/filesystem/transferspersecond", 649 | "type": "builtin", 650 | "unit": "CountPerSecond", 651 | "sampleRate": "PT15S" 652 | }, 653 | { 654 | "annotation": [ 655 | { 656 | "displayName": "Filesystem % free space", 657 | "locale": "en-us" 658 | } 659 | ], 660 | "class": "filesystem", 661 | "condition": "IsAggregate=TRUE", 662 | "counter": "percentfreespace", 663 | "counterSpecifier": "/builtin/filesystem/percentfreespace", 664 | "type": "builtin", 665 | "unit": "Percent", 666 | "sampleRate": "PT15S" 667 | }, 668 | { 669 | "annotation": [ 670 | { 671 | "displayName": "Filesystem % used space", 672 | "locale": "en-us" 673 | } 674 | ], 675 | "class": "filesystem", 676 | "condition": "IsAggregate=TRUE", 677 | "counter": "percentusedspace", 678 | "counterSpecifier": "/builtin/filesystem/percentusedspace", 679 | "type": "builtin", 680 | "unit": "Percent", 681 | "sampleRate": "PT15S" 682 | }, 683 | { 684 | "annotation": [ 685 | { 686 | "displayName": "Filesystem used space", 687 | "locale": "en-us" 688 | } 689 | ], 690 | "class": "filesystem", 691 | "condition": "IsAggregate=TRUE", 692 | "counter": "usedspace", 693 | "counterSpecifier": "/builtin/filesystem/usedspace", 694 | "type": "builtin", 695 | "unit": "Bytes", 696 | "sampleRate": "PT15S" 697 | }, 698 | { 699 | "annotation": [ 700 | { 701 | "displayName": "Filesystem read bytes/sec", 702 | "locale": "en-us" 703 | } 704 | ], 705 | "class": "filesystem", 706 | "condition": "IsAggregate=TRUE", 707 | "counter": "bytesreadpersecond", 708 | "counterSpecifier": "/builtin/filesystem/bytesreadpersecond", 709 | "type": "builtin", 710 | "unit": "CountPerSecond", 711 | "sampleRate": "PT15S" 712 | }, 713 | { 714 | "annotation": [ 715 | { 716 | "displayName": "Filesystem free space", 717 | "locale": "en-us" 718 | } 719 | ], 720 | "class": "filesystem", 721 | "condition": "IsAggregate=TRUE", 722 | "counter": "freespace", 723 | "counterSpecifier": "/builtin/filesystem/freespace", 724 | "type": "builtin", 725 | "unit": "Bytes", 726 | "sampleRate": "PT15S" 727 | }, 728 | { 729 | "annotation": [ 730 | { 731 | "displayName": "Filesystem % free inodes", 732 | "locale": "en-us" 733 | } 734 | ], 735 | "class": "filesystem", 736 | "condition": "IsAggregate=TRUE", 737 | "counter": "percentfreeinodes", 738 | "counterSpecifier": "/builtin/filesystem/percentfreeinodes", 739 | "type": "builtin", 740 | "unit": "Percent", 741 | "sampleRate": "PT15S" 742 | }, 743 | { 744 | "annotation": [ 745 | { 746 | "displayName": "Filesystem bytes/sec", 747 | "locale": "en-us" 748 | } 749 | ], 750 | "class": "filesystem", 751 | "condition": "IsAggregate=TRUE", 752 | "counter": "bytespersecond", 753 | "counterSpecifier": "/builtin/filesystem/bytespersecond", 754 | "type": "builtin", 755 | "unit": "BytesPerSecond", 756 | "sampleRate": "PT15S" 757 | }, 758 | { 759 | "annotation": [ 760 | { 761 | "displayName": "Filesystem reads/sec", 762 | "locale": "en-us" 763 | } 764 | ], 765 | "class": "filesystem", 766 | "condition": "IsAggregate=TRUE", 767 | "counter": "readspersecond", 768 | "counterSpecifier": "/builtin/filesystem/readspersecond", 769 | "type": "builtin", 770 | "unit": "CountPerSecond", 771 | "sampleRate": "PT15S" 772 | }, 773 | { 774 | "annotation": [ 775 | { 776 | "displayName": "Filesystem write bytes/sec", 777 | "locale": "en-us" 778 | } 779 | ], 780 | "class": "filesystem", 781 | "condition": "IsAggregate=TRUE", 782 | "counter": "byteswrittenpersecond", 783 | "counterSpecifier": "/builtin/filesystem/byteswrittenpersecond", 784 | "type": "builtin", 785 | "unit": "CountPerSecond", 786 | "sampleRate": "PT15S" 787 | }, 788 | { 789 | "annotation": [ 790 | { 791 | "displayName": "Filesystem writes/sec", 792 | "locale": "en-us" 793 | } 794 | ], 795 | "class": "filesystem", 796 | "condition": "IsAggregate=TRUE", 797 | "counter": "writespersecond", 798 | "counterSpecifier": "/builtin/filesystem/writespersecond", 799 | "type": "builtin", 800 | "unit": "CountPerSecond", 801 | "sampleRate": "PT15S" 802 | }, 803 | { 804 | "annotation": [ 805 | { 806 | "displayName": "Filesystem % used inodes", 807 | "locale": "en-us" 808 | } 809 | ], 810 | "class": "filesystem", 811 | "condition": "IsAggregate=TRUE", 812 | "counter": "percentusedinodes", 813 | "counterSpecifier": "/builtin/filesystem/percentusedinodes", 814 | "type": "builtin", 815 | "unit": "Percent", 816 | "sampleRate": "PT15S" 817 | }, 818 | { 819 | "annotation": [ 820 | { 821 | "displayName": "Disk read guest OS", 822 | "locale": "en-us" 823 | } 824 | ], 825 | "class": "disk", 826 | "condition": "IsAggregate=TRUE", 827 | "counter": "readbytespersecond", 828 | "counterSpecifier": "/builtin/disk/readbytespersecond", 829 | "type": "builtin", 830 | "unit": "BytesPerSecond", 831 | "sampleRate": "PT15S" 832 | }, 833 | { 834 | "annotation": [ 835 | { 836 | "displayName": "Disk writes", 837 | "locale": "en-us" 838 | } 839 | ], 840 | "class": "disk", 841 | "condition": "IsAggregate=TRUE", 842 | "counter": "writespersecond", 843 | "counterSpecifier": "/builtin/disk/writespersecond", 844 | "type": "builtin", 845 | "unit": "CountPerSecond", 846 | "sampleRate": "PT15S" 847 | }, 848 | { 849 | "annotation": [ 850 | { 851 | "displayName": "Disk transfer time", 852 | "locale": "en-us" 853 | } 854 | ], 855 | "class": "disk", 856 | "condition": "IsAggregate=TRUE", 857 | "counter": "averagetransfertime", 858 | "counterSpecifier": "/builtin/disk/averagetransfertime", 859 | "type": "builtin", 860 | "unit": "Seconds", 861 | "sampleRate": "PT15S" 862 | }, 863 | { 864 | "annotation": [ 865 | { 866 | "displayName": "Disk transfers", 867 | "locale": "en-us" 868 | } 869 | ], 870 | "class": "disk", 871 | "condition": "IsAggregate=TRUE", 872 | "counter": "transferspersecond", 873 | "counterSpecifier": "/builtin/disk/transferspersecond", 874 | "type": "builtin", 875 | "unit": "CountPerSecond", 876 | "sampleRate": "PT15S" 877 | }, 878 | { 879 | "annotation": [ 880 | { 881 | "displayName": "Disk write guest OS", 882 | "locale": "en-us" 883 | } 884 | ], 885 | "class": "disk", 886 | "condition": "IsAggregate=TRUE", 887 | "counter": "writebytespersecond", 888 | "counterSpecifier": "/builtin/disk/writebytespersecond", 889 | "type": "builtin", 890 | "unit": "BytesPerSecond", 891 | "sampleRate": "PT15S" 892 | }, 893 | { 894 | "annotation": [ 895 | { 896 | "displayName": "Disk read time", 897 | "locale": "en-us" 898 | } 899 | ], 900 | "class": "disk", 901 | "condition": "IsAggregate=TRUE", 902 | "counter": "averagereadtime", 903 | "counterSpecifier": "/builtin/disk/averagereadtime", 904 | "type": "builtin", 905 | "unit": "Seconds", 906 | "sampleRate": "PT15S" 907 | }, 908 | { 909 | "annotation": [ 910 | { 911 | "displayName": "Disk write time", 912 | "locale": "en-us" 913 | } 914 | ], 915 | "class": "disk", 916 | "condition": "IsAggregate=TRUE", 917 | "counter": "averagewritetime", 918 | "counterSpecifier": "/builtin/disk/averagewritetime", 919 | "type": "builtin", 920 | "unit": "Seconds", 921 | "sampleRate": "PT15S" 922 | }, 923 | { 924 | "annotation": [ 925 | { 926 | "displayName": "Disk total bytes", 927 | "locale": "en-us" 928 | } 929 | ], 930 | "class": "disk", 931 | "condition": "IsAggregate=TRUE", 932 | "counter": "bytespersecond", 933 | "counterSpecifier": "/builtin/disk/bytespersecond", 934 | "type": "builtin", 935 | "unit": "BytesPerSecond", 936 | "sampleRate": "PT15S" 937 | }, 938 | { 939 | "annotation": [ 940 | { 941 | "displayName": "Disk reads", 942 | "locale": "en-us" 943 | } 944 | ], 945 | "class": "disk", 946 | "condition": "IsAggregate=TRUE", 947 | "counter": "readspersecond", 948 | "counterSpecifier": "/builtin/disk/readspersecond", 949 | "type": "builtin", 950 | "unit": "CountPerSecond", 951 | "sampleRate": "PT15S" 952 | }, 953 | { 954 | "annotation": [ 955 | { 956 | "displayName": "Disk queue length", 957 | "locale": "en-us" 958 | } 959 | ], 960 | "class": "disk", 961 | "condition": "IsAggregate=TRUE", 962 | "counter": "averagediskqueuelength", 963 | "counterSpecifier": "/builtin/disk/averagediskqueuelength", 964 | "type": "builtin", 965 | "unit": "Count", 966 | "sampleRate": "PT15S" 967 | } 968 | ] 969 | } 970 | }, 971 | "sampleRateInSeconds": 15 972 | } 973 | }, 974 | "protectedSettings": { 975 | "storageAccountName": "[parameters('diagnosticsStorageAccountName')]", 976 | "storageAccountSasToken": "[ListAccountSas(parameters('diagnosticsStorageAccountId'),'2019-04-01',variables('storageAccountSasTokenRequestContent')).accountSasToken]", 977 | "storageAccountEndPoint": "https://core.windows.net/" 978 | } 979 | } 980 | } 981 | ], 982 | "outputs": { 983 | "adminUsername": { 984 | "type": "String", 985 | "value": "[parameters('adminUsername')]" 986 | } 987 | } 988 | } -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/WebApp Deployment Template/appdeploymenttemplate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "appname": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "description" 9 | } 10 | }, 11 | "planname": { 12 | "type": "string", 13 | "metadata": { 14 | "description": "description" 15 | } 16 | } 17 | }, 18 | "functions": [], 19 | "variables": {}, 20 | "resources": [ 21 | { 22 | "name": "[parameters('planname')]", 23 | "type": "Microsoft.Web/serverfarms", 24 | "apiVersion": "2018-02-01", 25 | "location": "[resourceGroup().location]", 26 | "sku": { 27 | "name": "F1", 28 | "capacity": 1 29 | }, 30 | "tags": { 31 | "displayName": "[parameters('planname')]" 32 | }, 33 | "properties": { 34 | "name": "[parameters('planname')]" 35 | } 36 | }, 37 | { 38 | "name": "[parameters('appname')]", 39 | "type": "Microsoft.Web/sites", 40 | "apiVersion": "2018-11-01", 41 | "location": "[resourceGroup().location]", 42 | "tags": { 43 | "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('planname'))]": "Resource", 44 | "displayName": "[parameters('appname')]" 45 | }, 46 | "dependsOn": [ 47 | "[resourceId('Microsoft.Web/serverfarms', parameters('planname'))]" 48 | ], 49 | "properties": { 50 | "name": "[parameters('appname')]", 51 | "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('planname'))]" 52 | } 53 | } 54 | ], 55 | "outputs": {} 56 | } 57 | -------------------------------------------------------------------------------- /Microsoft_Certified_Solution_Architect_Expert/WebAppDeploymentTemplate/appdeploymenttemplate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", 3 | "contentVersion": "1.0.0.0", 4 | "parameters": { 5 | "appname": { 6 | "type": "string", 7 | "metadata": { 8 | "description": "description" 9 | } 10 | } 11 | }, 12 | "functions": [], 13 | "variables": {}, 14 | "resources": [ 15 | { 16 | "name": "[parameters('appname')]", 17 | "type": "Microsoft.Web/sites", 18 | "apiVersion": "2018-11-01", 19 | "location": "[resourceGroup().location]", 20 | "tags": { 21 | "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/appServicePlan1')]": "Resource", 22 | "displayName": "[parameters('appname')]" 23 | }, 24 | "dependsOn": [ 25 | "[resourceId('Microsoft.Web/serverfarms', 'appServicePlan1')]" 26 | ], 27 | "properties": { 28 | "name": "[parameters('appname')]", 29 | "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', 'appServicePlan1')]" 30 | } 31 | } 32 | ], 33 | "outputs": {} 34 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # **100-Days-of-Azure** 2 | ### In this Repository, I am going to mention my Azure Learning for Azure. In this till now i am done with Microsoft Certified DevOps Proffesional Expert learning path and continously working on Technologies for Microsoft Azure Architects (AZ-303) 3 | 4 | 5 | ### Both learning path will cover all the theory as well as lab that is required to clear the certification exam and at the same time make you equiped with all the basic requirement of idustry in that domain. 6 | 7 | ### **My Learning Path** 8 | 9 | ### [Microsoft Certified DevOps Engineer Expert](Microsoft_Certified_DevOps_Engineer_Expert) 10 | ### [Microsoft Certified Solution Architect Expert](Microsoft_Certified_Solution_Architect_Expert) 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman --------------------------------------------------------------------------------