# Techielass - A blog by Sarah Lean > Blog of Sarah Lean - Focusing on Cloud Computing. Specialist areas include Microsoft Azure and Windows Server. Public Ghost content for AI and LLM tooling. This file includes a bounded export of public pages first, then recent public posts. Append `.md` to any post or page URL to get the content in Markdown (for example, `/example-post.md`). ## Pages ### Speaking URL: https://www.techielass.com/speaking/ Last updated: 2025-05-25T18:38:51.000Z ## I'll come to your Events I've been involved in user groups and [conferences](https://www.techielass.com/tag/conferences/) as an attendee or organiser for several years now and love interacting with the community. I've also had the pleasure of speaking at many events worldwide. I'd be happy to speak at your event, conference, meetup user groups, podcast, or video interview. I'd love to be involved! 😀 ## Upcoming Events I will be speaking at these upcoming events: ## Previous Talks If you're interested to see previous talks, I've linked to videos and retrospects [here](https://www.techielass.com/tag/presenting/). Using Azure SQL and PowerBI I've complied a visualisation of my talk stats: ### About Me URL: https://www.techielass.com/about/ Last updated: 2026-07-23T11:25:56.000Z ### Sarah Lean With over 20 years of experience in IT across diverse industries, including service providers, manufacturing, Scotch Whisky, and local authorities, my career has evolved from resetting passwords and triaging support calls to maintaining platforms, building infrastructure, and migrating data centres. Alongside my technical expertise, I've been honoured with several awards and ambassador roles. In April 2022, I was awarded the Microsoft MVP award for Azure, which I retired upon rejoining Microsoft full-time in November 2022\. Since then, I've been a two-time HashiCorp Ambassador (first appointed March 2024 and recently renewed) and a GitKraken Ambassador (October 2022). Although the Lenovo Insider program was cancelled, I continue to engage with the tech community through other channels. I founded the [Glasgow Azure User Group](https://www.gaug.co.uk/?utm%5Fsource=techielass&utm%5Fmedium=blog&utm%5Fcampaign=about-page) in 2017 and organise meetups every two months to foster learning and networking among professionals. My passion for technology shines through in sharing knowledge globally via hands-on tutorials, technical insights, and honest reviews. I have over 3,800 [YouTube subscribers](https://www.youtube.com/techielass?ref=techielass.com), 5,000 blog subscribers, and a combined social media following across platforms totalling over 20,000. My content primarily focuses on Azure, servers, hybrid environments, and infrastructure as code, reaching IT professionals, tech enthusiasts, and learners worldwide. Committed to promoting STEM careers, I serve as a [STEM Ambassador](https://www.stem.org.uk/stem-ambassadors?ref=techielass.com), inspiring the next generation, and volunteer with The King's Trust to give back to the community. Besides tech, I have several hobbies, one of them is Pokémon, and I'm an active [seller on Cardmarket](https://www.cardmarket.com/en/Pokemon/Users/techielass?ref=techielass.com) \- if anyone else is interested in collecting Pokémon cards. Another hobby of mine is coffee, specifically decaf. I run [Decaf Discovered](https://decafdiscovered.co.uk/?utm%5Fsource=techielass&utm%5Fmedium=blog&utm%5Fcampaign=about-page), where I share honest reviews and guides to help other decaf drinkers find coffee that's actually worth drinking. I'm also a keen curler, and I've spent years serving on club and board committees within Scottish Curling. That's actually what led me to build [Rink Draw](https://www.rinkdraw.com/?utm%5Fsource=techielass&utm%5Fmedium=blog&utm%5Fcampaign=about-page) — a free online tool that helps curling clubs create fair, random team draws in seconds instead of by hand. It supports pairs, triples and fours, lets clubs import members straight from a spreadsheet, and doesn't store any player data. If you help run a curling club and it saves you a bit of admin time, it's done its job. ### Privacy URL: https://www.techielass.com/privacy/ Last updated: 2024-07-18T11:17:27.000Z Thanks to [Writers’ HQ](https://writershq.co.uk/?ref=techielass.com), our supreme writing commanders, glorious leaders and excellent but tiny overlords, who have verily granted us permission to use their splendid and sweary Privacy Policy. ##### TL;DR I am a one-woman blogger. I don’t have the time or energy to do anything nefarious with your data. It’s not that I’m not evil – I’m as corruptible as anyone – I’m just too tired to think up an evil plot to steal your identity. ##### Cookies Seriously who actually cares? Do you even know what a cookie is or does? Well then. Yes, I use cookies because that’s kinda how the Internet works. If you don’t want our delicious home-baked chocolate chip scripts, you need to block cookies on your browser but don’t come crying to me when nothing does what it’s supposed to. ##### Stalky Visitor Tracking Look, we’re following you, ok? I use Google Analytics primarily to stare at the real-time stats because they’re cool and to see what people are looking at so I can write more of the stuff you like. None of these things store any super personal data about you, but they probably nab your IP address, not that I know where to look for it or what to do with it. All I see is that a person or many people have interacted with the website in a particular way. You can mess with me by doing something unexpected on the website and skewing our stats. Or you could do something way more fun and helpful with your time, LIKE WRITING. ##### Data Storage DATA!! It’s all about the data, baby. A tonne of petabytes whirring around the world and what? What’s it all for? WHAT DOES IT ALL MEAN? What will future historians actually see of us and our slowly collapsing society? So. I store your data on this website. Are you ready for this? Honestly, I do nothing unsurprising or radical with your info. ##### Social Media I use social media a lot. If you talk to me on one platform and I become familiar with you, we might find you on Twitter and say hello. You can ask me to be less friendly if you wish, and we will respect your boundaries. ### Tags URL: https://www.techielass.com/tags/ Last updated: 2021-03-21T15:54:14.000Z _No content available._ ### Follow me URL: https://www.techielass.com/follow-me/ Last updated: 2023-12-14T19:53:35.000Z ![Sign post](https://images.unsplash.com/photo-1508237866955-4439ca21b062?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxMTc3M3wwfDF8c2VhcmNofDJ8fHNpZ258ZW58MHx8fHwxNjE2MzQ1MjI0&ixlib=rb-1.2.1&q=80&w=2000) Photo by Jens Johnsson / [Unsplash](https://unsplash.com/?utm%5Fsource=ghost&utm%5Fmedium=referral&utm%5Fcampaign=api-credit) ### Subscribe via RSS You can subscribe to my blog using this [RSS Feed](https://www.techielass.com/rss/) via your favourite RSS client. ### Follow me on Facebook You can subscribe to this blog via [Facebook](https://www.facebook.com/techielass). ### Follow me on X You can follow me on [X](https://www.twitter.com/techielass?ref=techielass.com) for my chat about Microsoft Azure, technology and my general chat. 😊 ### Follow me on Mastodon You can follow me on [Mastodon](https://mastodon.social/@techielass?ref=techielass.com), where you'll see my posts about Azure, technology and my thoughts on general things happening worldwide. ### Follow me on Instagram I have an [Instagram profile](https://www.instagram.com/%5Ftechielass/?ref=techielass.com) where I mostly post pictures from Scotland, but you do get occasional behind-the-scenes photos of the things I work on. ### Subscribe on YouTube I have a YouTube channel, you can find the channel [here](https://www.youtube.com/c/techielass?ref=techielass.com) and subscribe. ### Follow me on Bluesky You can follow on [Bluesky](https://bsky.app/profile/techielass.bsky.social?ref=techielass.com) if that is your preferred platform. ### Follow me on Threads You can follow me on [Threads](https://www.threads.net/@%5Ftechielass?ref=techielass.com) if you enjoy using that platform. ### Newsletter URL: https://www.techielass.com/newsletter/ Last updated: 2024-06-10T10:20:09.000Z Stay updated with the latest insights, tips, and exclusive content! Subscribe to our newsletter now and never miss out! ## Posts ### SQL Server 2016 End of Support: ESU dates, pricing and what to do next URL: https://www.techielass.com/sql-server-2016-end-of-support-esu-dates-pricing-and-what-to-do-next/ Last updated: 2026-08-27T07:01:39.000Z July 14, 2026 has come and gone. If you're still running SQL Server 2016, the deadline isn't a warning on a lifecycle page anymore, it's your current reality. Nothing crashed on July 15th. Your instances are still taking connections, your jobs are still running, and that's exactly the problem: an unsupported database doesn't announce itself. The risk just quietly accumulates from here. Here's where things actually stand, and what it's going to cost you to buy more time. ## **What changed on July 14th** SQL Server 2016 has reached the end of its 10-year support lifecycle. As of that date: - No more security updates - No more bug fixes - No more Microsoft support cases for the product - Every new vulnerability found in the 2016 codebase from now on stays open, permanently, unless you're paying for Extended Security Updates (ESU) 💡 ****One date people keep merging that shouldn't be merged:** SQL Server 2016 and Windows Server 2016 do not share a deadline. SQL Server 2016 support ended July 14, 2026\. [Windows Server](https://www.techielass.com/tag/windows-server/) 2016 doesn't hit its final security update until January 12, 2027\. If you've got a box running both, you're managing two separate lifecycle clocks on the same hardware, about six months apart, plan for both, not one. ## **ESU: A bridge, NOT a destination** Microsoft's Extended Security Updates (ESU) program gives you up to three more years of *critical* security patches only, no bug fixes, no new features, no general support. Coverage runs through **July 17, 2029**, split into three annual terms you buy separately: | **ESU Year** | **Coverage Window** | | ------------ | --------------------------- | | **Year 1** | Jul 15, 2026 – Jul 13, 2027 | | **Year 2** | Jul 14, 2027 – Jul 18, 2028 | | **Year 3** | Jul 19, 2028 – Jul 17, 2029 | Only Enterprise and Standard editions on the latest service pack qualify. If you've got 2016 Express instances tucked inside vendor appliances or under someone's desk, and let’s face it we’ve all seen that, there's no ESU option for them at any price. That's an upgrade-or-retire decision, full stop. ## **The pricing is not flat** This is the part that catches people out, and it's worth being precise about because the numbers are steep: ESU pricing for SQL Server 2016 is **not** a flat annual rate. It escalates every year: | **ESU Year** | **Cost** | | ---------------------------- | --------------------------------------- | | Year 1 (Jul 2026 – Jul 2027) | 75% of the current license price | | Year 2 (Jul 2027 – Jul 2028) | 150% of the current license price | | Year 3 (Jul 2028 – Jul 2029) | 300% of the current license price | | **Three-year total** | **525% of your original license price** | Run that against real numbers and it hurts. A SQL Server Enterprise 2-core pack that costs roughly $12,850/year at list price means Year 3 alone could run north of $38,000 per 2-core pack, before you factor in however many cores you're actually licensing. By the time you're through all three years, you've spent more than **five** times the price of a brand-new license just to keep receiving critical-only patches on a decade-old engine, with zero new capability to show for it. ## **What's new with pricing** Historically, running an out-of-support SQL Server on an Azure virtual machine (VM) got you Extended Security Updates for free, that was the deal for SQL Server 2014, and it's still the deal for 2014 today. People reasonably assumed the same logic would carry over to 2016. It doesn't. Because [SQL Server](https://www.techielass.com/tag/sql-server/) 2016's ESU program started as a new cycle after Microsoft's April 1, 2026 pricing-consistency change took effect, it's subject to the new model: **the same list price applies whether you're running in Azure, on-premises, or on another cloud.** The free-ESU-in-Azure perk that applied to earlier products doesn't extend to 2016. ## **How to actually buy it** There are two practical routes: - **SQL Server enabled by Azure Arc** — connect the instance (Azure VM, on-prem, or another cloud), turn on the ESU subscription through the SQL Server Configuration pane, and it bills as pay-as-you-go. [Azure Arc](https://www.techielass.com/tag/azure-arc/) registration is required for this path regardless of where the workload runs. - **Volume Licensing** — an annual purchase for eligible licenses with active Software Assurance. Even if you buy through Volume Licensing, Azure Arc registration is still required to activate ESU access. If you subscribe before July 14, 2026 passed, billing started at the beginning of the ESU term. If you're only sorting this out now, expect a one-time bill-back charge to the start of the current ESU year on top of your first invoice, signing up late doesn't mean you skip the backdated cost. ## **The plan should be modernisation** ESU buys you time, not a future. By Year 2 or 3 you're paying more for patches-only coverage than it would have cost to actually upgrade, with no performance gains, no new features, and every security issue that isn't rated "Critical" going unaddressed indefinitely. Here's the bit most teams skip, and it's the bit that makes everything above actually actionable: you can't make a sensible ESU-vs-modernise call until you know exactly what's sitting in your estate. Not the spreadsheet someone updated eighteen months ago, the real picture. How many SQL Server 2016 instances do you have, where are they, what edition, what patch level, and which ones are quietly Express and therefore not even eligible for ESU? The fastest way to get that picture is to onboard your on-prem (and other-cloud) servers to Azure Arc, then deploy the free Power BI dashboard from Azure Jumpstart:[ https://jumpstart.azure.com/azure\_jumpstart\_drops?drop=Arc%20Insights%20PBI%20Dashboards%20Powered%20by%20Jumpstart&fs=true](https://jumpstart.azure.com/azure%5Fjumpstart%5Fdrops?drop=Arc%20Insights%20PBI%20Dashboards%20Powered%20by%20Jumpstart&fs=true&ref=techielass.com) ![Server Inventory PowerBI Repor](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2026/08/image.png) Server Inventory PowerBI Repor The dashboard will gives you a single view of your inventory: OS and SQL Server versions across the estate, which machines are already out of support or heading that way, and a rough sense of what ESU is going to cost you versus what modernisation looks like for both your Arc enabled servers and Azure servers. Do this before you sign anything, not after. Knowing the actual scale of the problem is what turns "we should probably look at ESU" into an actual, defensible decision. ## **Takeaways** - **The deadline has passed** — this is operational reality now, not a planning exercise. - **ESU is critical-patches-only and escalates fast**: 75% → 150% → 300%, for 525% total across three years. - **Azure no longer gives SQL Server 2016 a free pass** — pricing is consistent everywhere, unlike the SQL Server 2014 ESU program. - **Windows Server 2016 has its own deadline** (January 12, 2027) — don't assume one plan covers both products on the same box. - **Express edition has no ESU path at all** — find those instances now if you haven't already. - Treat ESU as breathing room to execute a migration plan, not as a long-term operating model. ### Dev Containers in VS Code: Why every project needs one URL: https://www.techielass.com/dev-containers-vscode-infrastructure-engineers/ Last updated: 2026-07-28T07:01:57.000Z If you're an infrastructure engineer, you've probably lived this scenario more than once: you clone a repo, try to run it, and immediately hit a wall. Wrong version of Terraform. Missing Azure CLI extension. Python 3.9 installed when the project needs 3.11\. Someone on the team has a slightly different kubectl version and their manifests apply differently to yours. Or even if you are running the repo on a new or different laptop and don’t have all the bits installed you need, so a simple quick change you logged on to do becomes a chore. None of this is really about the code. It's about the environment around the code, and that's exactly what dev containers are built to fix. ## **What is a dev container?** A dev container is a fully defined, containerised development environment that VS Code can open a project inside of. Instead of installing tools directly on your laptop, you define everything the project needs, runtime versions, CLI tools, extensions, environment variables, in a couple of config files that live in the repo itself. VS Code then builds a Docker container from that definition and effectively "moves in" to it, so your terminal, debugger, and extensions are all running inside the container rather than on your host machine. The setup lives in a .devcontainer folder at the root of your project, usually containing: - **devcontainer.json** — the main config file. It points to a base image or Dockerfile, lists which VS Code extensions should be installed, sets environment variables, forwards ports, and can run setup commands after the container builds. - **Dockerfile (optional)** — if you need something more custom than an off-the-shelf base image. - **docker-compose.yml (optional)** — useful if your dev environment needs multiple services, like a database alongside your app. Here's a stripped-down example for an infrastructure repo that uses Terraform and the Azure CLI: ```json { "name": "azure-infra-dev", "image": "mcr.microsoft.com/devcontainers/base:ubuntu", "features": { "ghcr.io/devcontainers/features/terraform:1": {}, "ghcr.io/devcontainers/features/azure-cli:1": {} }, "customizations": { "vscode": { "extensions": [ "hashicorp.terraform", "ms-azuretools.vscode-azurecli" ] } }, "postCreateCommand": "terraform --version && az --version" } ``` Now anyone that opens and uses this repo within VS Code and clicks "Reopen in Container" gets the exact same Terraform version, the same Azure CLI, and the same extensions, without touching their host machine and having to install software on it. ## **Why this matters for infrastructure engineers specifically** Dev containers get talked about a lot in application development circles, but they're arguably even more valuable for infra work, for a few reasons. **You're often juggling multiple tool versions across projects**. One client or project is on Terraform 1.5, another has moved to 1.8\. One uses an older Ansible collection, another's on the latest. Managing that with tfenv, pyenv, and a pile of shell aliases works, but it's fragile and it's personal to your machine, the next engineer who picks up the project has to rebuild all of that context themselves. **"Works on my machine" is a bigger deal in infra than people admit.** If a Terraform plan behaves differently because of a provider version mismatch, or a script fails because someone's Python has a package installed that isn't in requirements.txt, that's not just annoying, it can mean a change gets applied to production infrastructure with different tooling than what was tested. Dev containers remove that variable entirely. **Onboarding shrinks from days to minutes.** New engineer joins the team, clones the repo, opens it in VS Code, container builds, they're working. No wiki page titled "Setup Instructions (probably out of date)". No Slack thread asking why az login isn't working. The environment is the documentation. **It plays nicely with how infra work actually gets tested.** You can bake in things like pre-commit hooks, tflint, checkov, or terrascan directly into the container so every engineer is running the same checks before a PR goes up, not just whoever remembered to install them locally. **Your host machine stays clean.** No more global installs of ten different CLI tools that only one project actually needs, and no risk of one project's tooling silently breaking another's. **Your Azure credentials stay isolated too**. This one's easy to overlook until it saves you. The container has its own filesystem, so az login inside it writes to its own token cache, completely separate from the Azure CLI session on your laptop. If you're juggling a client tenant in the container and your own internal tenant on your host, or you regularly switch between customer subscriptions, you're not stuck doing az account set back and forth or risking a script accidentally running against the wrong subscription because your host session was still authenticated to something else. Close the container, the session's gone. Nothing lingers, nothing carries over, and you never have to think about whether your laptop's \~/.azure folder is in the right state before you start work. ## **Why every project should have one** The honest answer: because the alternative is that the "setup" for your project lives in someone's head, a README that drifts out of date, or a Confluence page nobody updates. A .devcontainer folder is executable documentation, it can't go stale in the same way, because if it's wrong, the container simply fails to build and someone fixes it. It also removes a surprising amount of friction around collaboration between teams. If a security engineer needs to review your Terraform, or a colleague from another team needs to pick up an issue while you're on leave, they don't need a briefing on your local setup. They open the repo, reopen in container, and they're in the same environment you'd be in. Another reason devcontainers are worth having in every project: if your code lives in a GitHub repo, GitHub can read that same devcontainer config and spin up a matching Codespace for you. That means you can make changes straight from your browser, on a remote host, without touching your local machine at all. ## **Things worth knowing before you roll this out** To be fair to the reality of this, dev containers aren't completely free: - **First build can be slow.** Pulling base images and installing features takes a few minutes the first time. Subsequent starts are much faster thanks to caching, but it's worth setting expectations. - **Resource overhead.** Running your entire dev environment in a container adds some CPU/RAM overhead compared to running tools natively, which matters more on lower-spec machines. - **Not a replacement for CI parity.** A dev container makes your local environment consistent with your teammates', but you still want your CI pipeline using the same (or compatible) images so there's no gap between "works in my dev container" and "works in the pipeline." None of these are reasons to avoid dev containers, they're just things to plan for, the same way you'd plan for any new piece of standard tooling. ## **Getting started** If you want to try this on an existing project: 1. Install the Dev Containers extension in VS Code. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2026/07/data-src-image-a225660d-963e-4bc1-8638-6f592c8d54e8.png) 1. Add a .devcontainer/devcontainer.json file to your repo, you can start with one from the official templates if your stack is common (Terraform, Python, Node, etc.). To do this open the Command Palette → Dev Containers: New Dev Container → Terraform → Select an option from the list → Create Dev Container 2. It will ask you to install Docker in WSL if you haven’t already done so, it will then ask you to restart the machine to complete the installation. 3. When the computer has restarted, launch VS Code, open the repo and select Command Palette → Dev Containers: Rebuild and Reopen in Container 4. Once it's built, check that your usual commands (terraform version, az --version, whatever your project needs) come back clean. 5. Commit the .devcontainer folder so the rest of the team can use it also. ## **Let Copilot write your Dev Container** You don't have to build a devcontainer.json from scratch every time. If you've got GitHub Copilot (or another AI assistant) wired into your editor, it can generate a solid first pass based on what's actually in your repo, then you tidy up the details. Something like this works well as a starting prompt: ``` You are an expert DevOps engineer, software architect, and GitHub Codespaces specialist. Your task is to analyse this entire repository and create the most appropriate, secure, performant, and maintainable Dev Container configuration for the project. Instructions: 1. Repository Analysis - Scan the entire repository structure. - Identify all languages, frameworks, runtimes, SDKs, build tools, package managers, databases, infrastructure components, test frameworks, and developer tooling. - Examine configuration files such as: - package.json - requirements.txt - pyproject.toml - pom.xml - build.gradle - *.csproj - global.json - Dockerfiles - docker-compose files - Makefiles - scripts - CI/CD workflows - GitHub Actions - README documentation - environment configuration files 2. Determine Developer Requirements - Identify what developers need to build, run, debug, test, lint, and deploy the application. - Detect local services required by the application. - Identify common developer workflows. - Consider onboarding experience for new contributors. 3. Design an Optimised Dev Container - Create a complete .devcontainer configuration. - Use the smallest practical base image. - Optimise for startup speed, build speed, and developer productivity. - Follow Microsoft and GitHub Codespaces best practices. - Use the latest stable versions unless the repository explicitly requires specific versions. - Apply security best practices and least-privilege principles. 4. Recommend Supporting Components - Determine whether the project should use: - devcontainer.json - Dockerfile - docker-compose.yml - Features - Custom scripts - Post-create commands - Post-start commands - VS Code settings - VS Code extensions 5. Produce Deliverables First provide: - Executive summary of findings. - Technologies detected. - Assumptions made. - Risks or gaps discovered. Then provide: - Complete folder structure. - Full contents of every generated file. - Explanation of why each choice was made. 6. Validation - Verify the configuration supports building, debugging, testing, and running the application. - Highlight anything that cannot be determined automatically. - Suggest optional improvements. 7. Optimisation Pass - Review your own solution. - Identify opportunities to simplify, secure, or speed up the dev container. - Produce a final recommended version after optimisation. Important: - Do not make assumptions without stating them. - Prefer repository evidence over defaults. - If multiple valid approaches exist, compare them and recommend the best option. - Generate production-quality output that can be committed directly to source control. ``` ## **Takeaway** Dev containers won't fix bad infrastructure code, but they'll fix a huge chunk of the friction around working on infrastructure code as a team. If you've ever lost half a day to environment drift, or watched a new starter spend their first two days just getting their laptop set up, it's worth taking the time to create a dev container for your next project. And if you have access to AI assistant tools such as GitHub Copilot, you can ask it to look at your repo and create an appropriate dev container configuration file. Once it's there, "clone and go" stops being aspirational and starts being how the team actually works. ### Azure Environment Design: Stop Paying Production Prices for Dev URL: https://www.techielass.com/azure-environment-design-dont-pay-production-prices-for-dev/ Last updated: 2026-07-14T07:01:53.000Z *"We want our Development, Test, QA, Pre-Production, and Production environments to be identical."* I hear a version of this every time I sit down with a customer on environment design. On the surface it sounds sensible, after all, we've all heard the phrase "if it works in Dev, it should work in Prod." But that phrase gets misread constantly. It doesn't mean every environment needs the same Azure SKU. It means the same architecture, deployed consistently. Microsoft's Cloud Adoption Framework (CAF) and Well-Architected Framework (WAF) actually [back this up directly](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/environments?ref=techielass.com). CAF recommends separating production and non-production environments and explicitly points customers toward Azure Dev/Test pricing to bring non-production costs down. ### Architectural consistency and cost consistency are not the same thing This is the mistake I see most often: teams assume "production-like" means "production-priced." It doesn't. Architectural consistency means: - The same deployment model - The same infrastructure-as-code templates - The same networking patterns - The same application architecture - The same operational processes Cost consistency means deploying the exact same SKU in every environment, regardless of whether it's actually needed. That second one is where I've watched budgets quietly get destroyed. Microsoft's own cloud-native [guidance](https://learn.microsoft.com/azure/cloud-adoption-framework/cloud-native/build-cloud-native-solutions?ref=techielass.com) says non-production environments should closely mirror production configuration, but in the same breath it recommends cost controls and appropriate service tiers for development workloads. "Appropriate" is doing a lot of work in that sentence, and it's the word most teams skip past. ### Let's talk about API Management Azure API Management is the clearest example I keep coming back to. Most organisations run Premium in Production because they genuinely need it: - Higher scale requirements - Enterprise networking (VNet injection, private endpoints) - Premium resiliency capabilities - Production-grade SLAs All valid reasons. But ask the follow-up question: *does your Development environment need any of that?* If your developers are building APIs, testing integrations, validating deployments, and running CI/CD pipelines, the answer is almost always no, and the Developer SKU is entirely sufficient. Here's the number that usually gets the room's attention: APIM Premium in UK South runs around [$2,800 USD a month](https://azure.microsoft.com/pricing/details/api-management/?ref=techielass.com), per unit. The Developer SKU is around $48\. Same architecture, same deployment process, same APIs, a \~98% cost difference for capability your Dev environment was never using. One caveat worth being upfront about: [Developer tier](https://learn.microsoft.com/azure/api-management/api-management-features?ref=techielass.com) carries no SLA, and Microsoft is explicit that it isn't suitable for production use. That's not a hidden catch, it's the trade-off you're accepting in exchange for the cost saving, and it's exactly why this is a Dev/Test decision, not a Production one. I've walked into estates where five non-production environments were all quietly running Premium APIM, because nobody had revisited a decision made three years earlier. That's north of $150k a year spent on enterprise networking and SLA guarantees that not one of those environments used. ### When non-production genuinely should match production There are real exceptions, and they're driven by what you're testing, not by habit: - **Performance testing** — validating throughput, latency, or scalability needs production-sized infrastructure. - **Resilience testing** — failover and high-availability testing needs an environment that closely resembles Production. - **Pre-Production validation** — before major releases, a staging environment that mirrors Production closely is a legitimate safety net. If the requirement is driven by a testing objective, production-equivalent SKUs make sense. If it's driven by "that's just what we've always deployed," it's worth a second look. ### A practical pattern | Environment | Typical SKU Strategy | | -------------- | ------------------------------------------- | | Development | Lowest cost SKU that supports functionality | | Test | Lower-cost SKU unless performance testing | | QA/UAT | Depending on testing requirements | | Pre-production | Near-production or production-equivalent | | Production | Business-required SKU | This lines up with both CAF's Dev/Test guidance and the WAF cost optimisation pillar, it isn't a shortcut, it's the framework working as intended. ### The question every architect should ask Stop asking "how do we make every environment identical?" Start asking "how do we make sure every environment fulfils its purpose at the right cost?" That's a completely different conversation, and usually a much shorter one, because the answer tends to be obvious once you ask it properly. Cloud gives you the ability to right-size for what each environment actually needs to do, instead of defaulting to one-size-fits-all. So next time you're reviewing an Azure estate and see Premium SKUs deployed everywhere, pause and ask why. You might find that architectural consistency, held alongside the right service tier per environment, gets you the exact same engineering outcome, for a fraction of the bill. If you're reviewing your own estate this week, start with one question: which non-prod environment is running a Premium SKU it's never actually used? ### Deploying to Multiple Azure Subscriptions with Terraform Provider Aliases URL: https://www.techielass.com/terraform-azure-multi-subscription-provider-aliases/ Last updated: 2026-04-21T07:01:15.000Z If, like me, you've been using [Terraform](https://www.techielass.com/tag/terraform) for a while, you've probably deployed resources into a single Azure subscription. But what happens when your organization has multiple subscriptions, say, one for development, one for staging, and one for production, and maybe you want to deploy to both development and staging at the same time within one single Terraform project. In this post, I'll walk you through exactly how to do that using provider aliases, one of Terraform's most powerful (and beginner-friendly) features. ## The Problem By default, Terraform's *azurerm* provider targets one Azure subscription. If you need resources in two or three different subscriptions, you might think you need separate Terraform projects for each. That means multiple [state files](https://www.techielass.com/terraform-state-rm/), multiple *terraform apply* runs, and multiple sets of configuration to keep in sync. There's a better way. ## Terraform Provider Aliases [Terraform](https://developer.hashicorp.com/terraform?ref=techielass.com) lets you declare **multiple instances** of the same provider, each with a different configuration. You distinguish them using the *alias* argument. Think of it like opening different browser tabs, each logged into a different Azure subscription, they all work independently and simultaneously. Here's what that looks like in practice. ## Terraform Project Structure ``` ├── providers.tf # Provider configuration (one per subscription) ├── variables.tf # Input variables ├── main.tf # Resources for each subscription ├── outputs.tf # Output values └── terraform.tfvars # Your actual subscription IDs and overrides ``` ### Step 1: Define Your Variables First, we need variables for each subscription ID and its region. We also use a 'prefix' variable for consistent naming via the Azure CAF naming provider. ```hcl variable "subscription_id_1" { description = "Azure Subscription ID for environment 1" type = string } variable "subscription_id_2" { description = "Azure Subscription ID for environment 2" type = string } variable "subscription_id_3" { description = "Azure Subscription ID for environment 3" type = string } variable "location_1" { description = "Azure region for Subscription 1" type = string default = "switzerlandnorth" } variable "location_2" { description = "Azure region for Subscription 2" type = string default = "norwayeast" } variable "location_3" { description = "Azure region for Subscription 3" type = string default = "swedencentral" } variable "prefix" { description = "Project prefix fed into CAF naming (e.g. project or workload name)" type = string default = "demo" } ``` Each subscription gets its own location variable, so you can deploy to different Azure regions if needed. ### Step 2: Configure Multiple Providers This is the core of the technique. In *providers.tf*, we declare the required providers and then create **three aliased instances** of *azurerm*: ```hcl terraform { required_version = ">= 1.3" required_providers { azurerm = { source = "hashicorp/azurerm" version = ">= 3.71, < 5.0.0" } } } # ---------- Subscription 1 ---------- provider "azurerm" { alias = "sub1" subscription_id = var.subscription_id_1 storage_use_azuread = true features {} } # ---------- Subscription 2 ---------- provider "azurerm" { alias = "sub2" subscription_id = var.subscription_id_2 storage_use_azuread = true features {} } # ---------- Subscription 3 ---------- provider "azurerm" { alias = "sub3" subscription_id = var.subscription_id_3 storage_use_azuread = true features {} } ``` ### What's happening here? - Each provider *azurerm* block has a unique alias — sub1, sub2, sub3. - Each one points to a different subscription via subscription\_id. - 'storage\_use\_azuread = true' tells the provider to authenticate to storage data planes using Azure AD instead of shared access keys. This is required when your subscriptions enforce a policy that disables key-based authentication on storage accounts (which is a security best practice). When you run **terraform init**, Terraform initializes **all three provider instances** in parallel. There's no sequential "switching", it's three simultaneous connections. ### Step 3: Pin Resources to Providers Now the fun part. In *main.tf*, each resource declares which **provider instance** it belongs to using the *provider* meta-argument: ```hcl # This ensures we have unique CAF compliant names for our resources. module "naming_sub1" { source = "Azure/naming/azurerm" version = "0.4.2" prefix = [var.prefix] suffix = ["sub1"] } module "naming_sub2" { source = "Azure/naming/azurerm" version = "0.4.2" prefix = [var.prefix] suffix = ["sub2"] } module "naming_sub3" { source = "Azure/naming/azurerm" version = "0.4.2" prefix = [var.prefix] suffix = ["sub3"] } # ============================================================ # Subscription 1 # ============================================================ resource "azurerm_resource_group" "sub1" { provider = azurerm.sub1 name = module.naming_sub1.resource_group.name location = var.location_1 } resource "azurerm_storage_account" "sub1" { provider = azurerm.sub1 name = module.naming_sub1.storage_account.name_unique resource_group_name = azurerm_resource_group.sub1.name location = azurerm_resource_group.sub1.location account_tier = "Standard" account_replication_type = "LRS" account_kind = "StorageV2" https_traffic_only_enabled = true min_tls_version = "TLS1_2" } # ============================================================ # Subscription 2 # ============================================================ resource "azurerm_resource_group" "sub2" { provider = azurerm.sub2 name = module.naming_sub2.resource_group.name location = var.location_2 } resource "azurerm_storage_account" "sub2" { provider = azurerm.sub2 name = module.naming_sub2.storage_account.name_unique resource_group_name = azurerm_resource_group.sub2.name location = azurerm_resource_group.sub2.location account_tier = "Standard" account_replication_type = "LRS" account_kind = "StorageV2" https_traffic_only_enabled = true min_tls_version = "TLS1_2" } # ============================================================ # Subscription 3 # ============================================================ resource "azurerm_resource_group" "sub3" { provider = azurerm.sub3 name = module.naming_sub3.resource_group.name location = var.location_3 } resource "azurerm_storage_account" "sub3" { provider = azurerm.sub3 name = module.naming_sub3.storage_account.name_unique resource_group_name = azurerm_resource_group.sub3.name location = azurerm_resource_group.sub3.location account_tier = "Standard" account_replication_type = "LRS" account_kind = "StorageV2" https_traffic_only_enabled = true min_tls_version = "TLS1_2" } ``` The line *provider = azurerm.sub1* is the magic. It tells Terraform: "Create this resource using the provider instance aliased as sub1," which means it goes into Subscription 1\. Repeat the same pattern for azurerm.sub2 and azurerm.sub3, and you've got resources spread across three subscriptions. ### Step 4: Set Your Variables Create a *terraform.tfvars* file with your actual subscription IDs: ```hcl subscription_id_1 = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" subscription_id_2 = "ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj" subscription_id_3 = "kkkkkkkk-llll-mmmm-nnnn-oooooooooooo" # Optional: override the default regions # location_1 = "switzerlandnorth" # location_2 = "norwaywest" # location_3 = "swedencentral" ``` Remember to remove the hashtag on the location lines if you wish to override the default regions. If you’re wondering what a `terraform.tfvars` file is and why we’re using it here, I’ve written a separate guide that walks through it in detail. [Read it here ](https://www.techielass.com/what-is-a-tfvars-file-in-terraform-and-how-do-you-use-it/) ### Step 5: Deploy ```bash terraform init # Initializes all three provider instances terraform plan -out=tfplan terraform apply tfplan ``` That's it. One plan, one apply, three subscriptions. ### Step 6: Check Your Outputs The configuration exposes the created resource names as outputs: ```hcl # ---------- Subscription 1 ---------- output "sub1_resource_group_name" { description = "Resource group name in Subscription 1" value = azurerm_resource_group.sub1.name } output "sub1_storage_account_name" { description = "Storage account name in Subscription 1" value = azurerm_storage_account.sub1.name } # ---------- Subscription 2 ---------- output "sub2_resource_group_name" { description = "Resource group name in Subscription 2" value = azurerm_resource_group.sub2.name } output "sub2_storage_account_name" { description = "Storage account name in Subscription 2" value = azurerm_storage_account.sub2.name } # ---------- Subscription 3 ---------- output "sub3_resource_group_name" { description = "Resource group name in Subscription 3" value = azurerm_resource_group.sub3.name } output "sub3_storage_account_name" { description = "Storage account name in Subscription 3" value = azurerm_storage_account.sub3.name } ``` After *terraform apply*, you'll see all six names printed in your terminal. ## How Does Terraform "Switch" Between Subscriptions? Short answer: **it doesn't**. There's no switching at all. When you run \`terraform init\`, Terraform creates an authenticated session for each aliased provider. All three sessions exist simultaneously. When Terraform processes a resource, it looks at the \`provider\` argument and uses the corresponding session. It runs completely parallel, it doesn’t run sequentially. All of this is tracked in a **single state file**. You don't need multiple workspaces or separate runs. ## When to Use This Pattern This approach works well when: - You manage a small, fixed number of subscriptions. - You want a single state file and a single *terraform apply* for everything. - The resources in each subscription are similar but not identical. If you have many subscriptions or highly dynamic environments, consider using [Terraform modules](https://developer.hashicorp.com/terraform/language/modules?ref=techielass.com) with *for\_each* and passing providers explicitly. ## Wrapping Up Deploying across multiple Azure subscriptions doesn't require multiple Terraform projects. With provider aliases, you get: - One codebase to maintain. - One state file to track everything. - One *terraform apply* to deploy across all subscriptions. The key takeaway: *alias* creates named instances of a provider, and *provider = azurerm.* on a resource tells Terraform which instance (and therefore which subscription) to use. That's all there is to it. The full source code for this project is available on [GitHub](https://github.com/weeyin83/terraform-azure-multi-subscription-deployment.git?ref=techielass.com). Happy deploying! ### Terraform Plan vs Apply: A Beginner’s Guide to Understanding the Difference URL: https://www.techielass.com/terraform-plan-vs-apply-beginners-guide/ Last updated: 2026-03-03T08:01:07.000Z If you’re new to [Terraform](https://www.techielass.com/tag/terraform/) you’ll quickly come across these two commands: - terraform plan - terraform apply At first glance, they can feel confusing. Why do you need both? Why not just apply and get on with it? Understanding the difference between plan and apply is one of the most important concepts in Terraform. It’s also one of the things that helps prevent broken deployments, unexpected costs, and accidental deletions. In this post, we’ll break down what each command does, how they work together, and the [best practices](https://www.techielass.com/how-to-format-terraform-code/) for using them safely. ### What is Terraform plan? Terraform plan allows you to preview what Terraform is about to do. When you run terraform plan, it does the following: - Reads your Terraform configuration files - Compares them with the current [state file](https://www.techielass.com/store-terraform-state-in-azure-blob-storage/) - Shows you exactly what changes it plans to make But crucially, it makes no changes to your environment. Running the plan command will produce output that tells you whether your code will create new resources, update existing resources, or destroy resources that are no longer needed. Terraform plan allows you to check what would happen if you deployed the code, without actually deploying it. This ultimately gives you the chance to spot problems before anything happens. ### What is Terraform apply? Terraform apply is the command that actually makes changes. When you run terraform apply, Terraform does the following: - Takes the planned changes - Calls the cloud provider APIs - Creates, updates, or deletes resources - Updates the Terraform state file to reflect reality When running the terraform apply command, this is where things become real. Once apply runs, your infrastructure is changed. By default, with Terraform apply you do get a safety check. You are asked if you want to carry out the actions, so there is a pause for you to double-check before you commit anything. ### How Terraform plan and Terraform apply work together The normal Terraform workflow looks like this: 1. Write or update Terraform code 2. Run terraform init to prepare the working directory for use with Terraform. 3. Run terraform plan 4. Review the output carefully 5. Run terraform apply 6. Approve the changes ### Common beginner mistakes Often, when beginners are learning [Terraform](https://developer.hashicorp.com/terraform?ref=techielass.com), some of the mistakes they make are: - **Skipping terraform plan**. It’s very tempting to go straight to apply, especially when you are learning and just playing around with test infrastructure. However, doing this means you don’t get into the habit of using both commands, and you could cause accidental deletions or unexpected costs. - **Not reading the plan output**. Terraform will tell you exactly what it’s going to do, but only if you read it. Always take a look at it to understand what will happen when you run apply. - **Using -auto-approve too early**. There is a command, “terraform apply -auto-approve”, that skips the confirmation prompt. This can be useful in automation, but for beginners it removes an important safety net. Avoid using it while learning. ### Final thoughts If you take one thing away from this post, it should be this: - terraform plan helps you understand what will change. - terraform apply is what actually changes things. Terraform is powerful, but with that power comes responsibility. Using plan properly is how you stay in control of your infrastructure, avoid surprises, and deploy with confidence. ### Deploy Azure OpenAI with Terraform and use it in Microsoft AI Shell URL: https://www.techielass.com/deploy-azure-openai-terraform-microsoft-ai-shell/ Last updated: 2026-01-20T08:01:09.000Z There is a wealth of AI tools available to use nowadays. One I have been exploring recently is AI within my command line. The tool that helps me do that is Microsoft AI Shell. Microsoft AI Shell brings AI into your command line to help you either learn a language or assist you in writing commands. In a previous post,[ “Install and Use Microsoft AI Shell”](https://www.techielass.com/install-microsoft-ai-shell-copilot-in-azure/), I walked through how to get AI Shell up and running. In this blog, I will walk you through the journey of deploying Azure OpenAI Service using Terraform, retrieving the required endpoints and keys, and configuring Microsoft AI Shell to use your Azure-hosted GPT model securely from the command line. ## **Deploying Azure OpenAI Service via Terraform** In order to use the OpenAI-GPT agent within the AI Shell you will either need a public OpenAI API key or an Azure OpenAI deployment. There are two things needed to begin a chat experience with Azure OpenAI Service, an Azure OpenAI Service account and an Azure OpenAI Deployment. - **The Azure OpenAI Service account** \- the Azure resource that hosts models. - **The Azure OpenAI Deployment** \- a specific model instance you can invoke via API. Rather than clicking through the Azure Portal we can use Terraform to deploy everything we need in a repeatable, auditable way. ### **Prerequisites** Before you begin, ensure you have the following: - An active Azure subscription - Azure CLI installed - Terraform installed - Proper permissions to create resources in your Azure subscription ### **Terraform Template** Our Terraform template will: - Create an Azure OpenAI (AI Services) account - Assign a system-managed identity - Deploy a GPT-4o model Our main.tf file will look like this: ```terraform ## # Terraform Configuration ## terraform { required_version = ">= 1.10.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = ">= 4.57.0, < 5.0.0" } random = { source = "hashicorp/random" version = ">= 3.7.2, < 4.0.0" } azapi = { source = "Azure/azapi" version = ">= 2.8.0, < 3.0.0" } } } provider "azapi" { # Configuration options } provider "azurerm" { features {} subscription_id = var.azure_subscription_id } # This ensures we have unique CAF compliant names for our resources. module "naming" { source = "Azure/naming/azurerm" version = "0.3.0" } # This is required for resource modules resource "azurerm_resource_group" "rg" { location = var.location name = module.naming.resource_group.name_unique tags = { Environment = var.tag_environment Project = var.tag_project Creator = var.tag_creator } } resource "azurerm_cognitive_account" "openai_service" { name = var.aiserviceaccountname location = var.location resource_group_name = azurerm_resource_group.rg.name kind = "AIServices" sku_name = var.sku identity { type = "SystemAssigned" } } resource "azurerm_cognitive_deployment" "azopenaideployment" { name = var.modeldeploymentname cognitive_account_id = azurerm_cognitive_account.openai_service.id model { format = "OpenAI" name = var.model version = var.modelversion } sku { name = "Standard" capacity = var.capacity } } resource "azapi_update_resource" "openai_custom_subdomain" { type = "Microsoft.CognitiveServices/accounts@2025-10-01-preview" resource_id = azurerm_cognitive_account.openai_service.id body = { properties = { customSubDomainName = var.custom_subdomain_name } } depends_on = [ azurerm_cognitive_account.openai_service ] } ``` We also have a variables.tf file ```terraform ## # Variables ## ## # Common Variables ## variable "tag_environment" { type = string description = "The environment for the resources" default = "Testing" } variable "tag_project" { type = string description = "The project for the resources" default = "Foundry" } variable "tag_creator" { type = string description = "The creator for the resources" default = "TechieLass" } variable "location" { type = string default = "UK South" } variable "azure_subscription_id" { description = "Azure subscription ID" type = string sensitive = true } variable "aiserviceaccountname" { type = string description = "Name for the Azure AI (Cognitive) account" } variable "sku" { type = string description = "SKU name for the Azure AI (Cognitive) account (e.g. S0)" default = "S0" } variable "modeldeploymentname" { type = string description = "Name for the model deployment" default = "techielassmodel" } variable "model" { type = string description = "Model name (e.g. gpt-4o, gpt-5)" default = "gpt-4o" } variable "modelversion" { type = string description = "Model version identifier" default = "2024-11-20" } variable "capacity" { type = number description = "Deployment capacity units" default = 10 } variable "custom_subdomain_name" { description = "Custom domain name for the Azure AI Services endpoint" type = string } ``` A few things to call out: - The customSubDomaName must be globally unique and this isn’t a domain name like sarah.com, it’s a name for your service. - Capacity requirements vary by model, check Azure OpenAI quotas if deployment fails. ### **Deploying the Terraform Template** To deploy the Terraform template we should first create a new file within our project folder called “terraform.tfvars”, this file will allow us to define our variables for deployment. If you are unfamiliar with the tfvars file check out my post “[What is a tfvars file in Terraform and how do you use it?](https://www.techielass.com/what-is-a-tfvars-file-in-terraform-and-how-do-you-use-it/)”. Within your tfvars file, add the following: ```terraform tag_creator           = "YourName" tag_environment       = "EnvironmentName" tag_project           = "ProjectName" location              = "AzureRegion" azure_subscription_id = "YourSubcriptionID” aiserviceaccountname  = "ServiceAccountName" sku                   = "S0" modeldeploymentname   = "ModelName" model                 = "gpt-4o" modelversion          = "2024-11-20" capacity              = 10 custom_subdomain_name = "SubDomainName" ``` Once you have created the tfvars file, you can move on to deploying it. The first command you should run is: ```bash terraform init ``` You can then either run *terraform plan* to review the deployment, or start the deployment using: ```terraform terraform apply -auto-approve ``` Once the deployment has completed, run the following commands. These will retrieve the information you need to configure AI Shell to use this deployment. ```bash # Retrieve the Azure OpenAI service endpoint and API key. az cognitiveservices account show --name --resource-group --query "properties.endpoint" -o tsv ``` \# Retrieve the Azure OpenAI endpoint and API key. ```bash az cognitiveservices account keys list --name --resource-group --query "key1" -o tsv ``` Save the outputs as you will need them later on. ### Configure AI Shell Open up your terminal and start the AI Shell. Select **openai-gpt** ![Windows Terminal with AI Shell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2026/01/image.png) Windows Terminal with AI Shell Then type in ```bash /agent config ``` ![Windows Terminal with AI Shell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2026/01/image-1.png) Windows Terminal with AI Shell A JSON file should open. Configure the JSON with the information below, using the endpoint and key values you saved earlier: ```json {   // Declare GPT instances.   "GPTs": [       {         "Name": "ps-az-gpt4o",         "Description": "",         "Endpoint": "",         "Deployment": "",         "ModelName": "gpt-4o",           "Key": "",          "SystemPrompt": "1. You are a helpful and friendly assistant with expertise in PowerShell scripting and command line.\n2. Assume user is using the operating system `osx` unless otherwise specified.\n3. Use the `code block` syntax in markdown to encapsulate any part in responses that is code, YAML, JSON or XML, but not table.\n4. When encapsulating command line code, use '```powershell' if it's PowerShell command; use '```sh' if it's non-PowerShell CLI command.\n5. When generating CLI commands, never ever break a command into multiple lines. Instead, always list all parameters and arguments of the command on the same line.\n6. Please keep the response concise but to the point. Do not overexplain."       }   ],   // Specify the default GPT instance to use for user query.   // For example: "ps-az-gpt4"   "Active": "ps-az-gpt4o" } ``` Save the file and then go back into your AI Shell. Type the command: ```bash /refresh ``` You can now start to use your AI Shell with the AI model you just deployed. ## **Conclusion** Microsoft AI Shell is a great tool to integrate into your command line to assist with everyday tasks. Using Azure OpenAI Service alongside it means you retain control over your data, while deploying the service via Terraform gives you a repeatable and consistent way to provision resources whenever needed. ### LinkedIn Smart Links: How to Share Resources, Track Engagement, and Improve Outreach URL: https://www.techielass.com/linkedin-smart-links-guide/ Last updated: 2026-01-06T08:01:15.000Z Have you ever needed to send an email to a large group of customers, whether they’re long-standing clients or new contacts you’re hoping to engage, only to find your message held up by email filters because it contains attachments? Or perhaps you’ve sent useful content but were left wondering whether anyone actually opened it or read what you shared. This is exactly where [LinkedIn](https://www.linkedin.com/?ref=techielass.com) Smart Links can make a difference. Instead of attaching files, you can bundle multiple resources, videos, PowerPoint decks, PDFs, webpages, into a single, trackable link and make *that* your call to action. In this blog post, we’ll explore what LinkedIn Smart Links are, how they work, and how you can use them to improve customer engagement and make your outreach efforts more effective. ## What are LinkedIn Smart Links? LinkedIn Smart Links are a feature within [LinkedIn Sales Navigator](https://business.linkedin.com/sales-solutions/sales-navigator?ref=techielass.com) that allow you to package multiple pieces of content, such as PDFs, slide decks, videos, and webpages, behind a single, trackable link. Instead of attaching files to emails or sending several separate URLs, you can bundle everything neatly into one place and share it in just a few clicks. LinkedIn Smart Links act as a lightweight content hub. It can host material you want to share, it can load quickly, and avoid many of the issues that come with traditional attachments on emails like email filters blocking them or customers hesitating to open unknown files. Where LinkedIn Smart Links really stand out is in the insights they provide. Once someone opens your link, you can see which assets they viewed, how long they spent on each one and whether they returned later. This gives you visibility into engagement levels that standard emails and attachments simply can’t. LinkedIn Smart Links can also be updated over time. You can remove or replace a slide deck that’s out of date with a newer version without creating a new Smart Link, the link remains valid, but the content is updated. This makes it easy to keep your information current and relevant. ## Pricing for LinkedIn Smart Links LinkedIn Smart Links is part of [LinkedIn Sales Navigator](https://business.linkedin.com/sales-solutions/sales-navigator?ref=techielass.com). LinkedIn Sales Navigator is a premium tool within LinkedIn, it is designed for sales and business professionals. It can help you find, connect and engage with the right leads more effectively. It can integrate with your CRM tools and Smart Links is a feature depending on what plan you purchase. There are [three pricing plans](https://business.linkedin.com/sales-solutions/compare-plans?ref=techielass.com) for LinkedIn Sales Navigator, Core, Advanced or Advanced Plus. If you would like access to Smart Links you need to have Advanced or Advanced Plus. ## How to create and use LinkedIn Smart Links Let’s walk through creating your first LinkedIn Smart Link. Head over to[ www.linkedin.com](https://www.linkedin.com/?ref=techielass.com). If you have access, you should see a **Sales Navigator** icon in the top right-hand corner, click on this. ![LinkedIn, accessing Sales Navigator](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/11/image-5.png) LinkedIn, accessing Sales Navigator Once inside LinkedIn Sales Navigator, the top menu should include **Smart Links**. Click on it. ![LinkedIn Smart Links](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/11/image-6.png) LinkedIn Smart Links When the page loads, you’ll see a **New Smart Link** button, click this. ![Creating a new LinkedIn Smart Link](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/11/image-7.png) Creating a new LinkedIn Smart Link You’ll be asked to give your Smart Link a **title**, which will be visible to recipients. Below that, there’s an **Add** button. Click it to choose whether you want to add a file or a website link. You can upload video files (under 200MB), PowerPoint presentations, images, PDFs, essentially anything you want to share. If you’re adding a website, simply enter the relevant URL. ![Create LinkedIn Smart LInk](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/11/image-8.png) Create LinkedIn Smart LInk There’s also a checkbox that allows recipients to **download the material** you’ve shared, if you enable it. Once you’ve added all the content you want, and remember, you can always add, remove, or update material even after the link has been shared, click **Create**. Your new LinkedIn Smart Link will then appear on your dashboard. From here, you can copy the link to share with your audience, view analytics, modify the content, preview it, or even delete it. ![LinkedIn Smart Links Analytics](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/11/image-4.png) LinkedIn Smart Links Analytics ## Best Practices for using LinkedIn Smart Links effectively To get the most value from LinkedIn Smart Links, it helps to approach them with a bit of strategy. Here are some simple but effective best practices that can elevate your outreach and improve engagement. - **Keep your content focussed**: avoid cramming too many assets into a single Smart Link, keep the material on theme and relevant to the readers. - **Use clear, compelling titles**: When you create a Smart Link, the title is often the first thing your reader will see. Make it description and action-oriented so it stands out. - **Track the analytics and follow up**: One of the biggest advantages of Smart Links is the insight they provide. Check who has viewed your content, what they have clicked on, how much of the videos they have viewed. Use these signals to tailor your next conversation or send more relevant material. - **Refresh the content regularly**: If you reuse Smart Links over time keep the material up to date. Outdated decks or old product information can undermine trust. ## Final Thoughts LinkedIn Smart Links offer a simple yet powerful way to share multiple resources with your audience while gaining insights into how they engage with your content. Used strategically, Smart Links can improve engagement, streamline your outreach, and help you follow up more effectively. While it is a paid feature, exploring LinkedIn Sales Navigator and what it can do for you and your business is well worth considering. ### Looking back at 2025 URL: https://www.techielass.com/looking-back-at-2025/ Last updated: 2025-12-30T08:01:26.000Z As another year comes to a close, I’ve found myself pausing to reflect on what 2025 has meant for me, creatively, professionally, and within the communities I’m part of. I started the year with a simple but ambitious goal: to show up consistently and create something every week. No big reinventions, no dramatic pivots, just steady, thoughtful output that would help me grow as a writer and continue sharing knowledge with others. It hasn’t always been easy. Life, work, and everything in between shift constantly, but this year has reminded me that showing up, quietly, regularly, and with genuine intent, can be just as meaningful as hitting huge milestones. Looking back now, I can see how these small weekly actions have added up to something I’m genuinely proud of. With that in mind, I wanted to take a moment to look back over the year: the blogs, the videos, the speaking engagements, the meetups, and all the lessons tucked in between. Let’s start with the place where so much of my energy went this year: **blogging**. ## Blogging This year I set myself the goal of writing a blog per week, and I can now say when this blog goes live, I will have achieved that goal. So 52 blog posts written this year. What have I learnt by doing this? Blog required time, time to pick your topic, time to research and learn your topic, time to write it and time to capture images. I've been lucky, and I've never been writing a blog at the last minute. I've always been writing weeks in advance. But that has required effort to maintain. Have my viewing figures increased? Have I earned any money from my blogging? No is the answer to both those questions. Writing 52 blog posts this year has helped keep eyeballs on my content, whether it be here or on one of the syndicate platforms, [Medium](https://medium.com/@techielass?ref=techielass.com), [Dev.To](https://dev.to/techielass?ref=techielass.com) or [The Ops Community](https://community.ops.io/techielass?ref=techielass.com). I have received a few ["Buy me a coffee"](https://www.buymeacoffee.com/techielass?ref=techielass.com) donations from readers, so a massive thanks to those folks. ![Blogs written each year](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/blogs-written-each-year.png) Blo ### Most viewed blogs in 2025 It's always looking back at what has been popular over the year, and it's great to see some of my older blog posts still being popular and helping people. But it's also nice to see some new ones hitting that top ten list. 1. [How to push code from VS Code to GitHub](https://www.techielass.com/how-to-push-code-from-vs-code-to-github/) 2. [Connect to a SQL database with Visual Studio Code](https://www.techielass.com/connect-to-a-sql-database-with-visual-studio-code/) 3. [Convert a folder to a Git repository](https://www.techielass.com/convert-a-folder-to-a-git-repository/) 4. [Query DNS Records with PowerShell](https://www.techielass.com/querying-dns-records-with-powershell/) 5. [What is Azure Arc?](https://www.techielass.com/what-is-azure-arc/) 6. [Troubleshooting Azure Arc for Servers](https://www.techielass.com/troubleshooting-azure-arc-for-servers/) 7. [Terraform with Azure DevOps](https://www.techielass.com/terraform-with-azure-devops-ci-cd-pipeline/) 8. [Terraform with GitHub Actions](https://www.techielass.com/terraform-with-github-actions-ci-cd-pipeline/) 9. [Install GitHub CLI](https://www.techielass.com/install-github-cli-on-windows/) 10. [Updating the Azure Arc Agent](https://www.techielass.com//updating-the-azure-arc-agent-connected-machine-agent/) ### Most viewed videos in 2025 I'd had another year where prioritising video content hasn't been something I've done. I do have some ideas for video content, it's just the time that is my biggest struggle at the moment. But taking a look at what content has been popular is nice to see. 1. [How to delete a repository in GitHub](https://youtu.be/u4qVRJOqMH0?ref=techielass.com) **2022** 2. [How to delete a repository in GitHub 2024](https://www.youtube.com/watch?v=2lAiHlXTY0s&ref=techielass.com) 3. [Clone a repository with GitHub Desktop](https://youtu.be/PoZNIbs%5Fwx8?ref=techielass.com) 4. [How to log out of GitHub Desktop](https://www.youtube.com/watch?v=tgsDb-0XYL8&ref=techielass.com) 5. [Add existing repository to GitHub Desktop](https://www.youtube.com/watch?v=ucIoxMbzkoM&ref=techielass.com) 6. [How to create a .gitignore file in Visual Studio Code](https://www.youtube.com/watch?v=Y8pt41AJOgY&ref=techielass.com) 7. [Create a new repository with GitHub Desktop](https://youtu.be/JBW6-5%5FRhUU?ref=techielass.com) 8. [How to install GitHub Desktop on Windows](https://www.youtube.com/watch?v=P8z4MEGcxh0&ref=techielass.com) 9. [Connect to a SQL database with Visual Studio Code](https://www.youtube.com/watch?v=7MYn-3E7Gi8&ref=techielass.com) 10. [Terraform explained in 10 minutes](https://www.youtube.com/watch?v=h6rkauDhDUM&ref=techielass.com) ## Speaking This year I haven't spoken at any typical user groups or conferences. I've instead focussed on events that have measurable impact, I've spoke at events for young people looking to get into IT, or I've spoke at customer events that help them. That still amounts to 5 talks and over 500 people. I still enjoy speaking at events, but as it's something I have to self fund and do in my spare time it's not something I can always prioritise unfortunately. ## Glasgow Azure User Group This year, the [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com) has had 6 meetups, enjoyed over 50 pizzas, consumed a ton of drinks and learned a bunch of different topics. The group has been running since 2017, and this year we've seen some changes in the community. It's been an interesting change that has challenged us, but it's challenged us in a good way. We've been forced to think about some of the decisions we've made for the group and look at things differently. And in 2026 we are changing things up. We'll have 4 meetups next year instead of the usual 6 that we've been having. And we're hoping to try and mix up the format a little, with panel discussions and trying other interactive elements as well. At least that is the plan. We're hoping the community continues to support us in our endeavours. ## Final Thoughts As I look back over the year, a few themes really stand out: consistency, community, and quiet resilience. I may not have broken viewing records, launched a new channel, or travelled the world speaking at conferences, but what I *did* do was show up with purpose. I created something every week. I helped people learn. I supported the communities I care about. I tried new things, adjusted to changes, and kept moving forward. This year has been a reminder that impact isn’t always loud or flashy. Sometimes it’s found in the steady rhythm of publishing a blog, the familiar faces at a user group meetup, or the handful of people who say a session genuinely helped them. Those moments matter, and they’re the ones I’m taking with me into 2026. Next year will bring its own changes, especially for the [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com) as we experiment with new formats and find ways to keep things fresh. I’m excited to see where that leads. Creatively, I hope to carve out more space for video content and continue sharing the kind of honest, useful material that people return to year after year. To everyone who has read, watched, listened, attended, or supported in any way—thank you. Your encouragement, messages, and even those occasional [“Buy Me a Coffee” ](https://www.buymeacoffee.com/techielass?ref=techielass.com)donations genuinely keep me going. Here’s to a new year of learning, experimenting, showing up, and seeing where the journey takes us. **Bring on 2026.** ### Connect Microsoft AI Shell to Azure OpenAI Service URL: https://www.techielass.com/connect-ai-shell-azure-openai-guide/ Last updated: 2025-12-23T08:01:06.000Z If you’ve been exploring the world of AI tools, you may have already discovered how powerful language models can be when woven into your everyday workflows. But what if you could take that power right into your command line? That’s where Microsoft AI Shell comes in. In my previous post, [“Install and Use Microsoft AI Shell”](https://www.techielass.com/install-microsoft-ai-shell-copilot-in-azure/), I walked through how to get AI Shell up and running. Now, we’re taking the next step: connecting AI Shell to Azure OpenAI Service so you can use secure, enterprise-grade models directly inside your terminal. In this blog, we’ll walk through the entire journey of deploying Azure OpenAI Service using Bicep, retrieving the required endpoints and keys, and configuring Microsoft AI Shell to use your Azure-hosted GPT model securely from the command line. ## Deploying Azure OpenAI Service via Bicep In order to use the OpenAI-GPT agent within the AI Shell you will either need a public OpenAI API key or an Azure OpenAI deployment. There are two things needed to begin a chat experience with Azure OpenAI Service, an Azure OpenAI Service account and an Azure OpenAI Deployment. - The Azure OpenAI Service account - the Azure resource that hosts models. - The Azure OpenAI Deployment - a specific model instance you can invoke via API. Rather than clicking through the Azure Portal we can use Azure Bicep to deploy everything we need in a repeatable, auditable way. ### Prerequisites Before you begin, ensure you have the following: - An active Azure subscription - Azure CLI or Azure PowerShell installed - Azure Bicep installed - Proper permissions to create resources in your Azure subscription ### Bicep Template Our Bicep template will: - Create an Azure OpenAI (AI Services) account - Assign a system-managed identity - Deploy a GPT-4o model You’ll need to update the placeholder parameter values before deployment. ```bicep @description('This is the name of your AI Service Account') param aiserviceaccountname string = 'Insert own account name' @description('Custom domain name for the endpoint') param customDomainName string = 'Insert own unique domain name' @description('Name of the deployment ') param modeldeploymentname string = 'Insert own deployment name' @description('The model being deployed') param model string = 'gpt-4o' @description('Version of the model being deployed') param modelversion string = '2024-11-20' @description('Capacity for specific model used') param capacity int = 80 @description('Location for all resources.') param location string = resourceGroup().location @allowed([ 'S0' ]) param sku string = 'S0' resource openAIService 'Microsoft.CognitiveServices/accounts@2025-10-01-preview' = { name: aiserviceaccountname location: location identity: { type: 'SystemAssigned' } sku: { name: sku } kind: 'AIServices' properties: { customSubDomainName: customDomainName } } resource azopenaideployment 'Microsoft.CognitiveServices/accounts/deployments@2025-10-01-preview' = { parent: openAIService name: modeldeploymentname properties: { model: { format: 'OpenAI' name: model version: modelversion } } sku: { name: 'Standard' capacity: capacity } } output openAIServiceEndpoint string = openAIService.properties.endpoint ``` A few things to call out: - The customSubDomaName must be globally unique and this isn’t a domain name like sarah.com, it’s a name for your service. - Capacity requirements vary by model, check Azure OpenAI quotas if deployment fails. ### Deploying the Bicep Template From the directory containing your Bicep file, deploy it using the following Azure CLI commands. Deploy the resource group first: ```bash az group create --name --location ``` Now deploy the template file (change the parameters to suit your deployment): ```bash az deployment group create --resource-group "rg-bicepdeploy2" --template-file main.bicep --parameters aiserviceaccountname='myaiacct' customDomainName='techielassaideployment' modeldeploymentname='mydeployment' ``` Once the deployment has completed run these commands, and they will pull out the information you need to configure AI Shell to use this deployment. ```bash # Retrieve the Azure OpenAI service endpoint and API key. az cognitiveservices account show --name --resource-group --query "properties.endpoint" -o tsv ``` ```bash # Retrieve the Azure OpenAI endpoint and API key. az cognitiveservices account keys list --name --resource-group --query "key1" -o tsv ``` Save the outputs as you will need them later on. ### Configure AI Shell Open up your terminal and start the AI Shell. Select **openai-gpt** ![Windows Terminal with AI Shell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/12/image.png) Windows Terminal with AI Shell Then type in: ```bash /agent config ``` ![Windows Terminal with AI Shell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/12/image-1.png) Windows Terminal with AI Shell A json file should open. Configure the json with this information and the endpoint and key values you saved earlier: ```json { // Declare GPT instances. "GPTs": [ { "Name": "ps-az-gpt4o", "Description": "", "Endpoint": "", "Deployment": "", "ModelName": "gpt-4o", "Key": "", "SystemPrompt": "1. You are a helpful and friendly assistant with expertise in PowerShell scripting and command line.\n2. Assume user is using the operating system `osx` unless otherwise specified.\n3. Use the `code block` syntax in markdown to encapsulate any part in responses that is code, YAML, JSON or XML, but not table.\n4. When encapsulating command line code, use '```powershell' if it's PowerShell command; use '```sh' if it's non-PowerShell CLI command.\n5. When generating CLI commands, never ever break a command into multiple lines. Instead, always list all parameters and arguments of the command on the same line.\n6. Please keep the response concise but to the point. Do not overexplain." } ], // Specify the default GPT instance to use for user query. // For example: "ps-az-gpt4" "Active": "ps-az-gpt4o" } ``` Save the file, and then return to your AI Shell. Type the command: ```bash /refresh ``` You can now start to use your AI Shell with the AI model you just deployed. ## Conclusion By deploying Azure OpenAI Service with Bicep and integrating it with Microsoft AI Shell, you’ve created a secure, repeatable way to bring enterprise-grade AI directly into your command-line workflows. This approach eliminates the need for manual portal configuration, ensures your infrastructure is auditable, and aligns with best practices for infrastructure-as-code (IaC). With AI Shell now connected to your Azure-hosted model, you can start using natural language to assist with scripting, troubleshooting, and day-to-day operational tasks, all without leaving the terminal. This setup is a solid foundation for experimenting with AI-assisted operations in a controlled, enterprise-ready way, and a great next step if you’re looking to embed AI more deeply into your existing tooling and workflows. ### How Pre-Sales Techies can use BANT to qualify opportunities effectively URL: https://www.techielass.com/pre-sales-techies-bant-guide/ Last updated: 2025-12-16T08:01:01.000Z When you’re a pre-sales technical engineer who joins meetings with customers, you're often there to demo a product, answer technical questions, or validate that a proposed solution is the right fit. But there’s another layer to these meetings. The sales person needs to understand if this is a real opportunity worth pursuing. And that’s where BANT comes in. Even if you’re the technical expert in the room, knowing how BANT works lets you partner more effectively with the salesperson. You’ll notice key details, ask the right questions, and help move the project forward successfully. ## What is BANT? BANT is a simple framework used in sales to qualify opportunities. It stands for: - **Budget** – Does the customer have money allocated to solve this problem? - **Authority** – Are we speaking to the people who can make the decision? - **Need** – What is the actual business problem we’re solving? - **Timeline** – When does the customer want to move forward? For the sales person, it’s about knowing whether an opportunity is real. For techies, it’s about listening for clues and helping your sales person gather this information in a natural way. ## How Techies can help with BANT ### Budget Customers often raise cost concerns when discussing technical options. As a techie, you might hear things like: - “We already have Microsoft 365 E5 licenses, can we make use of any of that existing licensing? - “We’ve got a lot of tools, so we’re looking to consolidate, not add more..” These are comments techies genuinely hear and signal whether money exists, whether cost savings matter, or whether the customer expects re-use of existing investments. ### Authority You can often tell who has influence by the types of questions they ask. If someone digs into integration, security, or long-term support, they might be a decision maker or key influencer. To help techies spot influencers vs decision-makers, use clearer cues: - People asking things like *“How will this integrate with our existing identity platform?”* or *“What impact will this have on our security posture?”* often hold technical authority. - Someone asking *“Will this meet our compliance requirements?”* or *“How does this align with our wider IT strategy?”* is usually a senior stakeholder. These help the reader understand that authority isn’t always “the boss”, sometimes it’s the architect who holds the keys. **Need** This is where techies shine. When customers describe their current challenges, you can validate them and tie them back to outcomes. For example: - Customer: “We’re spending too much time checking logs manually” - Techie: “That’s driving up operational overhead, automation could free up your team for more valuable work. This is an example of a techie listening, and translating issues into solutions or outcomes. ### Timeline Customers drop hints about timing all the time: - “We need to present options to the CIO next month.” - “Year-end change freeze starts soon - can this be implemented before then?” When you hear these, take note. They are important details that you need to understand in order to help pull together a quote and understand how to prioritise this opportunity. ## Tips for keeping it natural You don’t need to sound like a salesperson to help with BANT. A few approaches that work well: - **Ask clarifying questions** – e.g., “What’s driving that timeline?” or “Who else will need to be involved in this project?” - **Summarise back to the customer** – “So the main issue is downtime, and that’s affecting customer orders?” - **Share observations with your sales person afterwards** – If something feels important in the conversation, mention it. The customer might come to the meeting and give you all the information on budget, authority, need and timeline and you won’t have to ask. But if they don’t then make sure you do ask. These are important pieces of information to have so you can provide the correct quote or information for a customer in order to win the deal or sale. ## Conclusion BANT isn’t just a sales tool — it’s a framework that helps technical experts understand the bigger picture. When you listen for Budget, Authority, Need and Timeline, you’re not selling, you’re helping the customer get to the right outcome faster. You make the conversation smoother, and you help shape solutions that genuinely solve problems. So next time you’re in a meeting, tune into the subtle hints customers drop. You’ll be surprised how much influence you have simply by noticing the details that others miss. ### How to Use Comments in Terraform URL: https://www.techielass.com/terraform-comments/ Last updated: 2025-12-09T08:01:18.000Z In any type of code, there are moments when comments are useful for adding context or clarification. They help others quickly understand the purpose behind your work, improving how they interact with the code and reducing confusion. In this blog, we’ll look at the different types of comments you can use in [Terraform](https://developer.hashicorp.com/terraform?ref=techielass.com) and how they can help keep your code clear and maintainable. ### Types of comments in Terraform [Terraform](https://www.techielass.com/tag/terraform) supports two main types of comments, both designed to help add context or explanations to your code. **Single-line comments**: Start with a # or // and are used for brief explanations or disabling specific lines of code. **Multi-line comments**: These are enclosed in a comment block between /\* and \*/ and are using longer explanations or commenting out blocks of code. Regardless of which type you use, Terraform ignores comments entirely—they have no impact on the execution of your code. ### How to add single-line comments in Terraform files Single-line comments either start with a # or //. Both are supported, and you can use them interchangeably. Which one you use is entirely up to your personal preference. I personally use #. Let’s look at some examples: ![Terraform comments example](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/11/data-src-image-f950a013-d656-4cd7-b10a-cd2fdbd2d0bd.png) Terraform comments example ![Terraform comments example](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/11/data-src-image-cbfcfaeb-fc5a-45c9-b74c-7ce4b6180e4f.png) Terraform comments example ### How to add multi-line comments in Terraform files For multi-line comments, Terraform uses the standard /\* ... \*/ syntax. Everything between these markers is treated as a comment and will not affect the execution of your code. Let’s take a look at an example: ![Terraform multi-line comment example](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/11/data-src-image-43174c3a-686d-45ca-a74e-60bfdd73e42b.png) Terraform multi-line comment example You can also use multi-line comments to temporarily disable code. In the example, you can see a section commented out, and my editor ([VS Code](https://www.techielass.com/tag/vs-code/)) changes the text colour to make that visually clear. ![Terraform multi-line comment example](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/11/data-src-image-b9d40ae0-a932-44dd-8f02-b5d40e84970b.png) Terraform multi-line comment example 💡 If you are enjoying this blog you might enjoy: \- [Estimate cloud costs with Terraform and Infracost](https://www.techielass.com/estimate-cloud-costs-with-terraform-and-infracost/) \- [What are Terraform modules and how to use them](https://www.techielass.com/what-are-terraform-modules/) ### Best practices for commenting in Terraform code Comments can be powerful when used well, helping future you (and your teammates) make sense of decisions, processes, and intent behind certain configurations. Below are some best practices to help keep your Terraform code clean and understandable. - **Focus on intent**: Your Terraform code should be mostly self-explanatory. Use comments only when they genuinely add value or explain decisions. - **Manual processes**: Some configurations require manual steps. Use comments to flag any actions that need to happen before the code is executed, helping ensure nothing is overlooked.. - **Avoid sensitive information**: Never include passwords, API keys, or other sensitive information in comments. - **Avoid over commenting**: Too many comments can clutter the code. Only include them where they genuinely help. - **Standardise the comment style**: Use a consistent format for comments, especially when working in teams, to help reduce confusion. ### Conclusion Comments can improve efficiency and collaboration, making your Terraform code easier to understand and maintain. The key is finding the right balance, too few comments and helpful context is lost, too many and your code becomes harder to read. Aim for a healthy balance between comments and documentation. Keep longer explanations in proper documentation, leaving your Terraform files clean, clear, and easy to follow. ### Can you recover a deleted Microsoft Entra Tenant? URL: https://www.techielass.com/recover-deleted-entra-tenant/ Last updated: 2025-12-02T08:01:34.000Z A question I am often asked is: *“If our Microsoft Entra tenant was ever deleted — could we recover it?”* It’s an uncomfortable thought, isn’t it? It’s not a scenario anyone wants to think about, but it is something you do have to think about as we rely so heavily on identities being available and secure and the thought of them not being there could be disastrous. So let’s take the fear out of this topic and break down what’s really possible — and what needs to be planned for. ### **The Reality: Deleted Tenants Don’t Come Back** Here’s the straightforward truth: **There is no restore option for a deleted Microsoft Entra tenant.** Once it’s gone, it’s gone. A tenant isn’t like a user account or group that has soft delete or recovery windows options. But before panic sets in, there’s something important to understand: **Microsoft has made deleting a tenant purposely difficult.** To delete a tenant multiple checks and conditions must be met first. All bills and invoices must be paid for, no users are in the Entra tenant, if you are syncing users from on-premises must be turned off, all subscriptions for [Azure](https://www.techielass.com/tag/azure/), [Microsoft 365](https://www.techielass.com/tag/microsoft-365/) etc must be removed. It’s not something that a rogue admin can casually click into existence. Those safeguards are outlined here in Microsoft’s official guidance: [https://learn.microsoft.com/azure/active-directory/enterprise-users/directory-delete-howto#prepare-the-organization](https://learn.microsoft.com/azure/active-directory/enterprise-users/directory-delete-howto?ref=techielass.com#prepare-the-organization) Still, even a very small possibility means organisations must treat tenant protection as a critical cybersecurity responsibility. ### **Defending the Irreplaceable** There isn’t one magic setting that guarantees protection and that’s actually good news. Instead, there are different layers that can be put in place to defend against the exact scenario we worry about. Those layers include: - Break-glass accounts locked down with strict policies - Privilege elevation that expires after use - Risk-based access decisions powered by Identity Protection - Conditional Access and multi-factor authentication (MFA) to stop one compromise becoming many - Alerting on high-impact directory changes Together, these significantly reduce the likelihood of a tenant-level disaster. ### **A Shared Responsibility** It’s easy to assume that because Microsoft delivers the identity platform, they must also guarantee tenant-level recovery. But that isn’t how the cloud works. There is a [shared responsibility model](https://learn.microsoft.com/azure/security/fundamentals/shared-responsibility?ref=techielass.com). ![Microsoft Azure Shared Responsibility Model](https://learn.microsoft.com/en-us/azure/security/fundamentals/media/shared-responsibility/shared-responsibility.svg) Microsoft Azure Shared Responsibility Model Microsoft provides: - The platform - The guard rails - The tooling Customers provide: - Their own risk-aligned configuration - Monitoring - Operational recovery planning It’s a partnership, and like any partnership, both sides have a role to play. ### **Planning for the conversation you hope you’ll never have** Nobody wants to have those doom-and-gloom cybersecurity discussions. But this one matters, because identity is the centre of your cloud universe. So ask those uncomfortable questions, what would we do, who would respond, and how quickly could we act. It’s important to plan and ensure you have prevention in place, as prevention is your only true recovery plan. ### What is a tfvars file in Terraform and how do you use it? URL: https://www.techielass.com/what-is-a-tfvars-file-in-terraform-and-how-do-you-use-it/ Last updated: 2026-01-13T08:41:39.000Z When you are using [Terraform](https://developer.hashicorp.com/terraform?ref=techielass.com), one of the key principles is that you can write reusable and scalable code that can be used in multiple environments without you having to rewrite or duplicate it. And this is where the tfvars file comes in. This file allows you to define and customise variable values quickly and efficiently making your deployments more consistent and much easier to manager. ## What is a tfvars file in Terraform? A tfvars file in [Terraform](https://www.techielass.com/tag/terraform/) is used to define input variable values for a Terraform configuration. This file allows you to supply values for variables, making it easy to customise deployments for different environments (such as dev, test, or prod). There are a number of ways you can customise variables within a Terraform deployment; however using a tfvars file is the most common and efficient. ## How to use tfvars files? The best way to show you how to use a tfvars file is to walk through some example code. Let’s set up a project to define an [Azure](https://www.techielass.com/tag/azure) resource group, ```terraform # Define the Resource Group resource "azurerm_resource_group" "resource_rg" {   name = "rg-example"   location = "uksouth"   tags = { Environment = "Demo" Owner   = "Sarah Lean"   } ``` You can find the full code [here](https://github.com/weeyin83/terraform-tfvars-example?ref=techielass.com). This base code works, however, we’ve hard coded information here, that will make it hard for us to use within other environments and we’ll need to duplicate code and ultimately waste a lot of engineer time changing those hard code values. So let’s create some variables, we want variables for: - The resource group name - Location - Tags Within your project folder, create a file called [variables.tf](http://variables.tf/?ref=techielass.com) and we’ll define our variables in there. Within each variable, we’ll include a description and a default value. ```terraform variable "Resource_group_name" {   description = "The name of the resource group"   type        = string   default     = "azurergtechielass" } variable "Location" {   description = "The Azure region to deploy resources in"   type        = string   default     = "Sweden Central" } variable "Environment" {     description = "The environment for the resources"     type        = string     default     = "Demo"   } variable "Owner" {     description = "The owner of the resources"     type        = string     default     = "Techie Lass"   } ``` Now that our variables are defined, we need to change the Terraform code to refer to the variables. ```terraform # Define the Resource Group resource "azurerm_resource_group" "resource_rg" {   name     = var.Resource_group_name   location = var.Location   tags = {     Environment = var.Environment     Owner       = var.Owner   } } ``` Now if we were to deploy the Terraform code it would work fine and deploy an Azure resource group, using all the default values we defined in our [variables.tf](http://variables.tf/?ref=techielass.com) file. ## Let’s create a tfvars file Instead of using the default values, let’s define our own using the terraform.tfvars file. Within your project folder, create the terraform.tfvars file and assign a value to each variable like this: ```json Resource_group_name = "techielass-demo-rg" Location = "France Central" Environment = "Blog" Owner = "Sarah" ``` If we run a terraform plan we’ll see that [Terraform](https://www.techielass.com/introduction-to-terraform/) is now pulling in the values from the tfvars file and not using any of the default values that we set initially. ![Terraform plan command with tfvars file](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/image-14.png) Terraform plan command with tfvars file ## Using multiple tfvars files for different environments The benefit of using tfvars files for your variables means you can separate tfvars files for each environment, for example: - Dev.tfvars - Test.tfvars - Prod.tfvars And then when you are running your deployment, you change your plan and apply commands to point to the correct tfvars file: ```bash terraform plan -var-file="dev.tfvars" terraform apply -var-file="dev.tfvars" ``` This means you don’t have to rewrite your code for each environment, and tweaking a tfvars file requires minimal time, meaning deployments can be faster. [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/blogcoffee-2-3-7.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) ## Summary Using a tfvars file as part of your Terraform deployments makes your code more flexible, reusable and efficient. By separating your variable values from your main configuration code you can avoid hardcoding values and make your code easier to maintain and scale across multiple environments. ### Deploying an Azure VM into an Availability Zone with Terraform URL: https://www.techielass.com/azure-vm-in-availability-zone-terraform/ Last updated: 2025-11-18T08:01:21.000Z High availability is a consideration that every Architect needs to think about when building cloud infrastructure. In [Azure](https://azure.microsoft.com/?ref=techielass.com), Availability Zones help you achieve resiliency by distributing your resources across physically separate locations within a region. This ensures that even if one zone experiences downtime, your resources remain available. [Terraform](https://developer.hashicorp.com/terraform?ref=techielass.com), as an [Infrastructure-as-Code (IaC)](https://www.techielass.com/tag/infrastructure-as-code/) tool, makes deploying these resources simple, repeatable, and allows you to version control deployments. In this post, I’ll show you how to deploy an Azure Virtual Machine (VM) in a specific Availability Zone using [Terraform](https://www.techielass.com/tag/terraform/). ## Prerequisites Before you start, you’ll need: - An Azure subscription. - Azure CLI is installed on your machine. - Terraform is installed on your machine. - Basic Terraform knowledge ## Terraform configuration overview I have uploaded the full Terraform configuration to GitHub so that you can retrieve the code from the [repository there](https://github.com/weeyin83/terraform-azure-vm-az?ref=techielass.com). I’ve tried to keep it small and tidy, with just three files: - variables.tf – defines the availability zone - main.tf – contains all the resource definitions - outputs.tf – prints out some deployment information at the end ## Choosing a zone: variables.tf We’ve defined a variable file, keeping it simple now, with the Azure Subscription ID and Azure Availability Zone in there. ```terraform variable "availability_zone" {   description = "Azure availability zone (1, 2, or 3)"   type        = string   default     = "1" } ``` This variable lets you choose which zone your VM should be placed in. Azure identifies zones with string values "1", "2", and "3", so the Terraform variable is a string rather than a number. ## Randomising the region: a quick detour Before we get to the VM, there’s a small but fun addition in main.tf: a random region selector. ```terraform locals {   azure_regions = [     "ukwest",     "westeurope",     "francecentral",     "swedencentral"   ]   selected_location = element(local.azure_regions, random_integer.region_index.result) } resource "random_integer" "region_index" {   min = 0   max = length(local.azure_regions) - 1 } ``` Each time you deploy, Terraform picks a random region from that list. This is something I use more often than not in my demos, but it might not be something you want to do in production, as you will probably need the predictability of where your resources are deployed. ## Placing the VM in a zone: main.tf The main.tf file might look busy at first glance. That’s because it handles a complete virtual machine deployment with all the necessary components within the file, such as resource group, virtual network, subnet, network security group (NSG), NIC, virtual machine and also saving the private key for access to the VM. I’ve included all of this configuration to make it a great starter set for you; however if you already have existing networking, you can plug the VM into that. The key section we want to focus on is when you are defining the VM configuration, you can define the availability zone that the VM should deploy into: ```terraform resource "azurerm_linux_virtual_machine" "vm" {   name                = module.naming.linux_virtual_machine.name_unique   resource_group_name = azurerm_resource_group.rg.name   location            = azurerm_resource_group.rg.location   size                = "Standard_B1s"   admin_username      = "azureuser"   network_interface_ids = [     azurerm_network_interface.nic.id   ]   zone = var.availability_zone   admin_ssh_key {     username   = "azureuser"     public_key = tls_private_key.vm_key.public_key_openssh   }   os_disk {     caching              = "ReadWrite"     storage_account_type = "Standard_LRS"   }   source_image_reference {     publisher = "Canonical"     offer     = "0001-com-ubuntu-server-jammy"     sku       = "22_04-lts-gen2"     version   = "latest"   } } ``` ## How to deploy To deploy this Terraform configuration, follow these steps: Open a terminal and download the code to your machine: ```bash git clone https://github.com/weeyin83/terraform-azure-vm-az.git ``` Open up your favourite editor, I like VS Code, and open up the Terraform folder you’ve just copied. Create a new file named terraform.tfvars in the project folder. Add your details to it: ```tfvars azure_subscription_id = "your-subscription-id" availability_zone     = "1"  # Options: "1", "2", or "3" ``` Specifying your specific information and choices. Once you’ve saved the file. Open up your terminal again, this time you need to log in to your Azure subscription. ```bash Az login ``` Once logged in you can start the Terraform deployment. Prepare Terraform and download provider modules: ```bash Terraform init ``` Then we can run the plan command to understand what the Terraform configuration will do: ```bash Terraform plan ``` Once you are happy, you can confirm the deployment using: ```bash Terraform apply -auto-approve  ``` Within a few minutes, the resources will have been deployed and you can SSH using the output information to the Linux VM. And you can also check the Azure portal to check the availability zone deployment. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/blogcoffee-2-3-6.png) ## Conclusion Deploying VMs in specific Availability Zones is a small Terraform configuration change, but can make a big difference in your resources’ resilience and allow you to follow design choices by your architects. Terraform helps you automate and manage this process efficiently, ensuring your infrastructure is reliable and easy to maintain. ### What is Chaos Engineering? URL: https://www.techielass.com/what-is-chaos-engineering/ Last updated: 2025-11-11T08:01:54.000Z Technology has come a long way, but no system is ever completely safe from failure. Over the years, I’ve worked on and designed systems that try to reduce the risk of outages or failures, but nearly all systems experience some kind of downtime. Even the big companies are not immune to it, so how do they make sure their systems and services are reliable when something inevitably goes wrong? That’s where chaos engineering comes in. It’s a practice that helps teams build more resilient systems by finding weaknesses before they cause real outages. In this blog post, we’ll explain what chaos engineering is in simple terms, how it relates to [DevOps](https://www.techielass.com/tag/devops/) and Site Reliability Engineering (SRE). ## What is Chaos Engineering? Chaos Engineering is a methodology that IT teams can use to identify vulnerabilities in complex systems by intentionally injecting failures into the system and observing how that system responds. Think of it like office fire drills, where they test that everyone knows where the fire exits are, fire alarm sounds, door opens etc. Chaos Engineering is rooted in the principle of intentionally introducing faults into the system to bring benefits to the system in the longer run, such as increased system resilience, improved incident response, and validation of redundancy and failover mechanisms. ## The evolution and history of Chaos Engineering Most people associate the creation of Chaos Engineering with Netflix, however an [AWS](https://www.techielass.com/tag/aws/) engineer called Jesse Robbins is also instrumental in the creation of chaos engineering practices. Jesse drew on his experiences of being a volunteer firefighter to introduce the concept of GameDay at Amazon in the early 2000s, to simulate major failures in Amazon’s systems, test and improve their resilience. Meanwhile, Netflix was looking at exploring ways to enhance resilience in their systems and in 2010 Netflix introduced a tool called Chaos Monkey which was designed to randomly terminate instances within their production environment to ensure that the system could tolerate failures without impacting users. While both were working independently, both contributions were essential in shaping the modern practices of chaos engineering that are widely adopted today. ## Chaos Engineering in SRE and DevOps Chaos engineering is not just a testing technique; it’s a mindset that fits perfectly with Site Reliability Engineering (SRE) and DevOps practices. SRE teams focus on building systems that are reliable, scalable, and resilient. Chaos engineering gives SREs a proactive way to validate system reliability before real incidents occur. By running controlled chaos experiments, SRE teams can measure system reliability against SLIs (Service Level Indicators) and SLOs (Service Level Objectives), confirming that uptime and performance targets are met as well as identifying hidden weaknesses in infrastructure, dependencies, and failover mechanisms before they cause downtime. And chaos engineering complements DevOps by promoting a culture of collaboration, continuous improvement, and shared responsibility for system reliability. DevOps teams often integrate chaos experiments into [CI/CD pipelines](https://www.techielass.com/ci-cd-pipeline-tools/), running small, controlled tests after each deployment to ensure new code doesn’t break critical services. They may also run “game days”, where developers and operations staff deliberately trigger failures in a safe environment to practice response and improve system resilience. By embedding chaos engineering into everyday DevOps and SRE practices, teams learn to anticipate failures, respond faster, and deliver more reliable systems and software. ## Azure Chaos Studio Chaos engineering is no longer just an experiment for a few tech giants, it’s becoming a standard practice for companies. Microsoft offers [Azure](https://www.techielass.com/tag/azure/) Chaos Studio, a managed service that enables teams to safely run chaos experiments in their Azure environments, helping organisations test resiliency across virtual machines, databases, and other cloud resources. You can configure tests to simulate real-world failures against your virtual machines, Kubernetes clusters, databases and network components, all within a safe and monitored environment. You can run tests and leverage Azure Monitor and Application Insights to track system behaviour and understand the impact of failures. [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/blogcoffee-2-3-5.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) ## Conclusion Chaos engineering isn’t about breaking things for the sake of it, although that can be interesting; chaos engineering is focused on building confidence in your systems and making them more resilient before real incidents happen. By intentionally testing failures your IT, DevOps and SRE teams can identify weaknesses, improve incident response and validate redundancy mechanisms. Have you introduced chaos engineering into your IT practices? ### Azure Storage Mover: How to migrate files from AWS S3 to Azure URL: https://www.techielass.com/azure-storage-mover-migrate-aws-s3-to-azure/ Last updated: 2025-11-04T08:01:15.000Z Moving files between environments can be a headache. Whether it’s from on-premises to Azure, or from AWS to Azure, there’s always the same challenge: how do you do it securely, at scale, and without reinventing the wheel? Traditionally, you might reach for tools like [AzCopy](https://www.techielass.com/azcopy-not-finish-operation-within-specified-timeout/), Azure Data Box, or [Azure Migrate](https://www.techielass.com/tag/azure-migrate/), but there’s a new option designed to make migrations smoother: Azure Storage Mover. In this post, I’ll walk you through what Azure Storage Mover is, highlight its new cloud-to-cloud migration capability for moving data from [Amazon S3](https://aws.amazon.com/s3/?ref=techielass.com) to Azure Blob Storage, and show you how to get started. ## What is Azure Storage Mover? [Azure Storage Mover](https://learn.microsoft.com/azure/storage-mover/service-overview?ref=techielass.com) became generally available in February 2022, it was launched as a fully managed hybrid migration service that made moving your files and folders to Azure easy. Azure Storage Mover can scale to meet the size of the migration you are trying to run, and jobs can be run as one offs or they can be run multiple times meaning you can sync deltas of any changes. Earlier in 2025, a new feature was added to Azure Storage Mover, cloud-to-cloud migration. This allows you to securely transfer data from Amazon Simple Storage Service ([Amazon S3](https://www.techielass.com/create-an-s3-bucket-using-aws-cloudformation/)) to Azure Blob Storage. This feature is still in public preview, so is subject to change and there are some limitations to the product at the moment: - Private networking is not currently supported. The cloud-to-cloud feature securely transfers data by limiting S3 access to trusted Azure IP ranges, thus ensuring a controlled move of data over the public internet. - Each job supports the transfer of up to 10million objects. - A maximum of 10 migration jobs can happen at one time within a subscription. - If the data is stored within AWS Glacier or Deep Archive you must rehydrate it before you start the migration. ## Create Azure Storage Mover resource The first step you need to do to migrate data from AWS is create an Azure Storage Mover resource. Go to the Azure Portal and in the top search bar search for **Storage Movers**. ![Azure Portal, storage mover](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/image.png) Azure Portal, storage mover Click on **Create** and you will be presented with the wizard asking for information about subscription, resource group, name and region for setting up the service. Fill in the relevant information and click on Next. ![Azure Portal, storage mover](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/image-1.png) Azure Portal, storage mover The next question set in the wizard is about monitoring, I’d recommend setting up logs that are sent to a Log Analytics workspace so you have logs to troubleshoot if things don’t go to plan. The next screens within the wizard are about Azure Tags and confirming you are happy with the choices you have made. Click on **Review + Create** when you are happy to create the resource. ## Create a multicloud connector for AWS The next step is to connect a multicloud connector that allows you to securely connect AWS to Azure. Navigate within the Storage Mover resource you just created and click on **Overview** then select the **Multicloud migration** tab. Within the **Multicloud migration** tab, click on **Create multicloud connector** to open the **Add AWS connector** page. ![Azure Portal, storage mover](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/image-2.png) Azure Portal, storage mover Within this wizard you will be asked for information around resource group, subscription, the name of the connector, the Azure region and then which AWS account to associate the connector with and read resources from. You have the option to pick a single account or use an organization account. For this example I am selecting a single account. ![Azure Portal AWS Connector](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/image-3.png) Azure Portal AWS Connector Within the next screen you are asked which solutions you’d like to use with this connector. You have the option of **Inventory**, **Arc onboarding** and **Storage - data management**. For this example we’re going to add **Inventory** and **Storage - data management**. ![Azure Portal AWS Connector](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/image-4.png) Azure Portal AWS Connector When you add the inventory solution you will be asked questions like which AWS services you wish to discover, which permissions you wish the connector to have, how often to want the scan to occur and which regions you want included in the scan. ![Azure Portal AWS Connector](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/image-5.png) Azure Portal AWS Connector Configure as appropriate to your organisation and needs. On the next screen, you will be given an [AWS CloudFormation template](https://www.techielass.com/aws-cloudformation-template-explained/) to download or copy. You should take this and deploy it within your AWS environment, then come back and complete the wizard within Azure. 💡 This CloudFormation template sets up AWS IAM roles and an OIDC identity provider to allow Microsoft Azure services to securely access AWS resources. Azure authenticates via the OIDC provider using a connector ID, and the template outputs the ARNs of both roles for easy reference. ## Configure source and target endpoints Now that your AWS connector is set up and configured. You need to concentrate on your source and target endpoints. Now it’s assumed that you already have an endpoint in AWS, which will be an S3 account filled with files and folders. If you don’t already have an Azure Storage account set up to receive the data, now is the time to do that. Also set up a container or file share within the storage account that you want the data to move to. [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/blogcoffee-2-3-4.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) ## Configure project and job definitions The setup is now complete, so it’s time to create a migration project and job definition. A project allows you to organise large migrations into smaller, more manageable chunks, while a job describes resources and migration options. For example you can have a job set up to migrate a specific folder within the S3 bucket to a specific Azure Storage blob container and then set up another job to move other folders to an Azure Storage file share. Within your Storage Mover resource click on **Project Explorer** on the left hand side. Then click on **Create Project**. Give your project a name and description and create. ![Azure Portal storage mover](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/image-6.png) Azure Portal storage mover Once your project is created, click within it and then click on **Create job definition**. ![Azure Portal storage mover](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/image-7.png) Azure Portal storage mover You’ll first be asked to give your job a name and description then asked to define the migration type, in this example we’re using **cloud to cloud (preview).** ![Azure Portal storage mover](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/image-8.png) Azure Portal storage mover The next questions ask about the source, this is where you can define which S3 bucket you are moving data from. You have the option to take the whole bucket, or specific folders. ![Azure Portal storage mover](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/image-9.png) Azure Portal storage mover Once you’ve configured this move to the next screen to configure the target, or Azure storage account you wish the files to move to. You have the choice of moving them to a Blob container or a File share within the storage account. And you also have the choice of defining a specific folder within either to move the files. ![Azure Portal storage mover](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/image-10.png) Azure Portal storage mover The last screen you need to select an option in is what type of copy you want to do, a **Merger content into target** or **Mirror source to target**. Understand which option suits your scenario best. ![Azure Portal storage mover](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/image-11.png) Azure Portal storage mover **Mirror source to target:** Makes the target an exact copy of the source. Extra files in the target are deleted, and everything else is updated to match the source. **Merge content into target:** Updates files in the target to match the source but keeps any extra files already in the target. Renamed folders can sometimes create duplicates. Once you’ve configured the job and it’s created you can now start it running. ![Azure Storage Mover](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/image-13.png) Azure Storage Mover ## Monitor migration progress Within the Azure Storage Mover blade itself, you can see some visual progress of your jobs, successful jobs, failed jobs, files copied, files failed, etc. And if you set up logs to go Log Analytics you are able to query logs there as well. If you run the KQL query **StorageMoverJobRunLogs** within your Log Analytics workspace you will see all the jobs that have run, success or failure. ![Azure Log Analytics](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/image-12.png) Azure Log Analytics For more sample KQL queries to use, you can check out the [official documentation](https://learn.microsoft.com/azure/storage-mover/log-monitoring?ref=techielass.com#sample-kusto-queries). ## Running regular syncs The Azure Storage Mover is great if you need to sync files once, and you can do multiple syncs. For example, you can run the job initially to get the files into Azure, but then if you want to do a delta sync a week later, you can run your job manually again. If you wish to run the job on a schedule or automate the running of it. You can use the Azure CLI command: ```bash az storage-mover job-definition start-job \   --resource-group \   --storage-mover-name \   --project-name \   --job-definition-name ``` Or you can use the PowerShell command: ```powershell Start-AzStorageMoverJobDefinition `   -ResourceGroupName `   -StorageMoverName `   -ProjectName `   -JobDefinitionName ``` Both commands need the following parameters defined: **\--resource-group**: The name of the resource group containing your Storage Mover resource. **\--storage-mover-name**: The name of your Storage Mover resource. **\--project-name**: The name of the project within your Storage Mover. **\--job-definition-name**: The name of the job definition you wish to execute. ## Final thoughts Azure Storage Mover can help make cloud migrations easier, more secure and flexible. Whether you need to move files from on-premises, another cloud or sync deltas regularly, Storage Mover gives you a fully managed and scalable solution. The new cloud-to-cloud migration feature even though still in preview simplifies the transfer of data from Amazon S3 to Azure Blog Storage while still maintaining security and cloud. ### Cost Optimization in Azure: Using the FinOps Toolkit to Save Money URL: https://www.techielass.com/azure-finops-toolkit-cost-optimization/ Last updated: 2025-10-29T08:33:15.000Z Cost optimisation. It’s important in all walks of life, whether you are looking after your household bills or your cloud environment. When we look at Azure there are tools and mechanisms that can help you monitor your costs, from [Azure Advisor](https://learn.microsoft.com/azure/advisor/advisor-get-started?ref=techielass.com) to Cost Alerts. Within this blog post we’ll look at some of the resources with the [Azure FinOps toolkit](https://microsoft.github.io/finops-toolkit/?ref=techielass.com#-available-tools) that can be deployed to help keep a monitor of your costs. ## What Is the Azure FinOps Toolkit for cost optimization in Azure? The [Azure FinOps toolkit](https://microsoft.github.io/finops-toolkit/?ref=techielass.com#-available-tools) is a set of resources that can help you manage your Azure Costs and [FinOps](https://www.techielass.com/tag/finops/) journey. There are alerts, [workbooks](https://www.techielass.com/azure-dashboards-azure-workbooks-power-bi/) and [PowerBI](https://www.techielass.com/tag/powerbi/) reports that can be deployed. It is an open-source project that is maintained and owned by Microsoft but the community over the years has also contributed to it. There are two resources within the toolkit that I would recommend you look at as the very minimum you can do for cost optimisation. ## How to use the FinOps Toolkit Alerts for Azure Cost Savings Within the toolkit is something called “FinOps alerts”. This resource is a Logic App than can be scheduled to run regularly and check if you have any of the following that might be costing you money unnecessarily: - Idle App Gateways - Idle disks - Idle IP Address - Idle Load Balancers - Disk snapshots older than 30 days - Stopped virtual machines The Logic App checks the subscriptions you tell it to and if it finds any of the above resources it generates an email that you can send to a person in your team or your IT Service Desk to action. It’s a light weight deployment that can be up and running within 5-10minutes. Let’s walk you through the deployment. The first step is to visit: [https://microsoft.github.io/finops-toolkit/alerts#deploy](https://microsoft.github.io/finops-toolkit/alerts?ref=techielass.com#deploy) Click on the correct Deploy button on the website, in this example I am selecting **Deploy to Azure**. ![Azure FinOps Toolkit](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/data-src-image-e007256e-f1b2-4680-9dc7-10bae3aa8e93.png) Azure FinOps Toolkit This will launch the Azure ARM template custom deployment within the Azure portal. You will be asked which subscription, resource group, Azure region, and the name you wish to use for the Logic App. Once you’ve filled in the information click on **Review + Create**. Then click on **Create.** ![Azure Portal custom deployment](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/data-src-image-91f56bfe-fdcd-4a3b-80e9-7d475186bc28.png) Azure Portal custom deployment It will take a few minutes for the deployment to complete. Once it has there are some things you need to configure for the Logic App to work. Go into the Logic App and click on **Edit**. ![Azure Logic App](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/data-src-image-0dfaf0de-96bf-4e16-b58d-568b416f8e6b.png) Azure Logic App If you click on the **Recurrence** step you can configure how often you want the Logic App to run, by default it will run once a week. Click on the **Set alert recipient** step. Within the value section, enter the email address where you want the email to be sent. ![Azure Logic App](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/data-src-image-7e574afd-ba28-4b01-b057-12ebc4c1f026.png) Azure Logic App Now click on **Included subscriptions**, within the value section enter the subscription ID or IDs you want the Logic App to scan. The format for just one subscription should be: ```bash ["12345678-aaaa-bbbb-cccc-1234567890ab"] ``` The format for multiple subscription IDs should be: ```bash [   "11111111-1111-1111-1111-111111111111",   "22222222-2222-2222-2222-222222222222",   "33333333-3333-3333-3333-333333333333" ] ``` ![Azure Logic App](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/data-src-image-5f948e5d-d320-4029-9642-5fc40bb85221.png) Azure Logic App If there are any subscriptions you’d like to exclude from being scanned, make sure you enter that information within the **Excluded subscriptions**. Next scroll down to the bottom of the Logic App and click on the **Send an email (v2)** step. Click on **change connection**, then select **Add new**. It will ask you to sign into your M365 account and confirm the connection with your M365 to be able to send the email. ![Azure Logic App](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/data-src-image-a945af45-7dcf-49e9-94af-0031f3445f1f.png) Azure Logic App Don’t forget to click on **Save** after you have made the changes. ![Azure Logic App](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/data-src-image-61e39b90-acbc-4831-980d-7780f3366ef0.png) Azure Logic App You can now manually start the Logic App by clicking on **Run**. ## Analysing Azure Costs with FinOps Toolkit Workbooks Azure workbooks can provide an interactive way to view and analyse data. Within the Azure FinOps toolkit are two workbooks, one called Governance and one called Optimisation. The Optimisation workbook gives you a comprehensive overview of your Azure environment's resource usage, aligning with the Well-Architected Framework Cost Optimisation pillar. The Governance one provides a comprehensive overview of the governance posture of your Azure environment. To deploy these workbooks, head over to [https://microsoft.github.io/finops-toolkit/workbooks](https://microsoft.github.io/finops-toolkit/workbooks?ref=techielass.com) Click on the deploy button for you, in this example, I am going to select **Deploy to Azure**. ![Azure FinOps Toolkit](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/data-src-image-b71484b1-3aa8-44b8-8250-0e375063da8f.png) Azure FinOps Toolkit This will launch the Azure Portal and the custom Azure ARM template deployment. You’ll be asked to select a subscription, a resource group, an Azure region and a name to prefix each workbook with. Click on **Review + Create.** Then click on **Create.** ![Azure custom deployment](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/data-src-image-e166937f-7b4b-471b-8c0d-cd197bdcf5e4.png) Azure custom deployment within the Azure Portal It will take a few minutes for the workbooks to be deployed. You can go to the deployed resources and start to view and interact with the workbooks. They are great for spotting issues with your governance and also where you can make some cost savings and optimisations within your environment. [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/blogcoffee-2-3-3.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) ## Final Thoughts on Cost Optimization in Azure The Azure FinOps toolkit is a powerful collection of resources to help you implement FinOps practices and monitor cost optimization in your Azure environment. Even using just the alerts and workbooks, you can quickly identify idle resources, spot opportunities to save money, and keep your cloud spending under control. Take the time to explore the [toolkit](https://microsoft.github.io/finops-toolkit/?ref=techielass.com#-available-tools), experiment with its features, and tailor it to your organisation’s needs. By proactively monitoring your environment, you’ll not only reduce costs but also gain better visibility into your cloud resources, a key step toward more efficient, sustainable cloud operations. ### How to onboard a Windows Server to Azure Arc URL: https://www.techielass.com/azure-arc-windows-server-setup/ Last updated: 2025-11-11T10:47:36.000Z Managing servers across on-premises, multi-cloud, and edge environments can quickly become complex. Microsoft Azure Arc helps solve this challenge by extending Azure’s management and security capabilities to servers running outside of Azure. In this guide, we’ll walk you through the process of onboarding a [Windows Server](https://www.techielass.com/tag/windows-server/) to [Azure Arc](https://www.techielass.com/tag/azure-arc/), from registering the required Azure resource providers to installing the Arc agent. Whether you’re testing with a single machine or rolling out at scale, you’ll see the different options available and how to get started. 💡 **If you are looking for a tutorial on how to onboard a Linux server check out my* [**Register and Manage Linux Servers with Azure Arc Tutorial*](https://www.techielass.com/register-and-manage-linux-servers-with-azure-arc-tutorial/) ### Prerequisites - A [Windows Server (2012 or later)](https://learn.microsoft.com/en-gb/azure/azure-arc/servers/prerequisites?ref=techielass.com#supported-operating-systems) with outbound internet access or proxy setup. - An active Microsoft Azure subscription ### Register Azure resource providers An Azure resource provider is a collection of REST operations that provide functionality for an Azure service. To use Azure Arc-enabled servers, the following Azure resource providers must be registered in your subscription: - Microsoft.HybridCompute - Microsoft.GuestConfiguration - Microsoft.HybridConnectivity - Microsoft.AzureArcData To enable them, you can use Azure PowerShell, Azure CLI or the Azure portal. We’re going to use Azure CLI this time. Head over to [https://shell.portal.com](https://shell.portal.com/?ref=techielass.com) ![Azure Portal CLI](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/09/image.png) Azure Portal CLI Paste the following code into your shell window: ```bash az provider register --namespace 'Microsoft.HybridCompute' az provider register --namespace 'Microsoft.GuestConfiguration' az provider register --namespace 'Microsoft.HybridConnectivity' az provider register --namespace 'Microsoft.AzureArcData' ``` ![Azure Portal CLI](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/09/image-1.png) Azure Portal CLI ### Options to onboard a Windows Server There are multiple ways to install the Azure Arc agent onto an existing Windows server: - Add a single server - Add multiple servers - Add Windows Server with the installer - Add servers from AWS - Use the built-in Azure Arc Setup within Windows Server 2022 and later For the “add a single server” and “add multiple servers” options, both require you to run a script on the server. The single server option is a script that is run on the target server and prompts you for your Azure login, so this is great for small environments, or maybe trying to get the agent installed on a troublesome server, but it’s not ideal if you have a large number of servers to get the Agent rolled out to. The multiple server option is a script that handles authentication through a service principal, and you have the ability to use the script as something you run on servers manually, or run through tools like Configuration Manager, Group Policy or Ansible, enabling you to scale quickly and easily with your roll out of the agent. The option to download a Windows Server Arc installer downloads an EXE that you run within the server and it will give you a graphical user interface to interact with to ensure the Arc agent is installed and registered to your Azure environment. With the multicloud connector within the Azure portal, you can connect AWS resources to Azure using the Azure Arc agent. And the last option available for Windows is within Windows Server itself. Since Windows Server 2022 an option has been built into the management of the server that allows you to walk through a wizard and connect your server to Azure using the Azure Arc agent. You can find the option to do that within the Server Manager. ![Windows Server management ](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/09/image5.png) ### Install Azure Arc on a single Windows server From the **Azure Portal**, search for **Server - Azure Arc** ![Azure Portal Azure Arc](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/09/image8.png) Click on the **generate script** box below **Add a single server** ![Azure Portal Azure Arc](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/09/image3.png) Azure Portal Azure Arc You will be met with a wizard asking for some information. You are asked to select the subscription, resource group, operating system (OS), connectivity and region. For this tutorial, ensure you select Windows as the OS and move to the next step. ![Azure Portal Azure Arc](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/09/image1.png) Azure Portal Azure Arc The next step is to populate any values for the suggested tags, or you can create your own. ![Azure Portal Azure Arc](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/09/image6.png) Azure Portal Azure Arc The last screen will show you the command to run on the Windows server. Copy this script and head over to your server. ![Azure Portal Azure Arc](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/09/image4.png) Azure Portal Azure Arc Open the **Terminal** on your server and paste in the script. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/09/data-src-image-72da4d5a-e6c1-4e4d-bc23-c5a370573b64.png) The script will run through and will open a browser for you to authenticate to your Azure environment. Once the script has finished running, it will have installed the Azure Arc agent and connected it to your Azure environment. If you head back into the Azure portal, you will see it listed as a connected server. ![Azure Portal Azure Arc](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/09/image2.png) Azure Portal Azure Arc [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/blogcoffee-2-3-2.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) ## What now? With your servers Azure Arc enabled you have a lot of new avenues open to you. One of the biggest advantages is the ability to manage your on-premises and multi-cloud Windows Servers using the same Azure tools you already rely on in the cloud, such as Azure Policy, Defender for Cloud, etc. If you are using Windows Server licences with Software Assurance (SA) you can also look at enabling [Advanced Windows Server Management capabilities](https://www.techielass.com/windows-server-management-enabled-by-azure-arc/), which will give you access to things like: - Azure Update Manager - Azure Change Tracking and Inventory - Azure Machine Configuration - Remote Support If you’re running older versions of Windows Server 2012, SQL Server 2012, or SQL Server 2014 Azure Arc can make obtaining and applying [Extended Security Updates (ESU)](https://learn.microsoft.com/en-us/windows-server/get-started/extended-security-updates-overview?ref=techielass.com) much easier. Traditionally, ESUs required Software Assurance and a fair bit of manual setup and commercial negotiating, but with Azure Arc you can: - Seamlessly enable ESUs on eligible servers through the Azure portal. - Centralise billing for ESUs alongside your other Azure resources. - Automate patch delivery by combining ESUs with Azure Update Manager, reducing the risk of missed critical updates. This integration means you can keep legacy systems secure while planning migrations or modernisation projects, without sacrificing visibility or adding extra complexity. ### What is Grafana? URL: https://www.techielass.com/what-is-grafana/ Last updated: 2025-10-29T08:32:46.000Z Monitoring is essential to the health and performance of any IT system, whether it’s running in the cloud, on-premises, or somewhere in between. Without the right visibility into your environment, issues can go unnoticed until they cause downtime or impact your users. In this blog post, let’s explore one of the monitoring tools, [Grafana](https://grafana.com/?ref=techielass.com). ### What is Grafana? Grafana is an open-source analytics and interactive monitoring platform. It allows you to ingest data from a variety of sources, query it, create alerts, and build dashboards to visualise trends and performance metrics. The visualisations and alerts help you transform raw metrics into actionable insights, allowing you to identify patterns, troubleshoot issues, and keep your infrastructure and applications healthy. Grafana is fully open-source and backed by a large, active community. This gives you the flexibility to develop and share your own plugins or take advantage of those built by others. You can choose to self-host Grafana, managing updates, backups, and scaling, or opt for a managed solution like [Azure Managed Grafana](https://azure.microsoft.com/products/managed-grafana?ref=techielass.com), which handles all of that for you. ### What data sources does Grafana use? Grafana supports a wide variety of data sources, both out of the box and through community-developed plugins. Out of the box, the built-in data sources Grafana supports are **Cloud platforms**: AWS CloudWatch, [Azure Monitor](https://www.techielass.com/configure-azure-monitor-diagnostic-settings/), Google Cloud Monitoring **Time-series databases**: InfluxDB, Graphite, OpenTSDB, Prometheus **SQL databases**: Microsoft SQL Server, MySQL, PostgreSQL **Tracing & logging**: Jaeger, Zipkin, Tempo, Loki **Other tools**: Alertmanager, Elasticsearch, Pyroscope, TestData ### Grafana features Grafana has a rich set of features designed to make monitoring and data visualisation intuitive and powerful. You can create highly customisable dashboards, these dashboards provide a central place to view your infrastructure and application health at a glance. Complementing this is the alerting system that allows you to set up rules based on your data queries so you can receive timely notifications through channels like email or Slack, helping you to act on issues quickly. For teams that want to integrate monitoring into their workflow or automate management tasks Grafana offers a comprehensive API that lets you programmatically manage dashboards, data sources and users. And sharing is straightforward too, you can easily share live dashboards or snapshots with colleagues helping to foster collaboration and work on troubleshooting any issues together. In addition to those core features, Grafana supports templating to create dynamic dashboards, annotations to mark significant events on graphs, and a wide range of plugins for extended functionality. ### When should Grafana be used? Grafana shines when you need to aggregate data from multiple sources and visualise it in one unified dashboard. It excels at querying time-series events, analysing logs, and building custom queries to surface the exact insights you’re after. Even if you only have a single data source, Grafana is still a powerful tool. It helps you track infrastructure utilisation, application performance, or even website user activity—all from one interface. ### Azure Monitor dashboards with Grafana In 2025, Microsoft introduced [Azure Monitor dashboards with Grafana](https://learn.microsoft.com/azure/azure-monitor/visualize/visualize-grafana-overview?ref=techielass.com) in public preview. This feature allows you to create Grafana dashboards free using data from Azure Monitor, metrics, logs, traces, Azure Monitor managed service for Prometheus and Azure Resource Graph data sources. ![Dashboards with Grafana](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/07/image-3.png) Dashboards with Grafana This preview feature enables you to use Grafana’s powerful visualisations without the burden of managing or paying for a full Grafana deployment. You can create and edit dashboards directly in the Azure portal or deploy them using ARM or Bicep templates. You can build dashboards from scratch or import existing ones from the Grafana community. There are some limitations with this feature as it doesn’t support Grafana evaluated alerts, reports, library panels, snapshots, playlists, app plugins, and copying panels across different dashboards. While available at no extra cost in preview, usage may incur charges depending on the underlying data sources and Azure Monitor usage. ### Azure Managed Grafana [Azure Managed Grafana](https://learn.microsoft.com/azure/managed-grafana/overview?ref=techielass.com) is a fully managed Grafana service operated and supported by Microsoft. It’s optimised for Azure, with built-in support for Azure Monitor and Azure Data Explorer, along with integrated user authentication via Microsoft Entra. This makes it ideal for organisations that want to use Grafana’s full capabilities without the operational overhead of managing infrastructure, updates, or scaling. ![Azure Managed Grafana](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/07/image-2.png) Azure Managed Grafana With high availability, automated upgrades, and integration into the Azure ecosystem, Azure Managed Grafana is a great option for teams focused on observability but short on time or resources for managing self-hosted deployments. [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/blogcoffee-2-3-1.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) ### Conclusion Monitoring is a critical part of maintaining a healthy environment, and Grafana offers a powerful, flexible platform to visualise and understand your data — no matter the system or source. If you’re already using Azure Monitor, the Azure Monitor dashboards with Grafana preview is an excellent way to start exploring Grafana’s capabilities without the setup burden. Why not try creating your first Grafana dashboard today and see how it can transform your approach to monitoring? ### Automating Azure SFTP deployment with Terraform URL: https://www.techielass.com/automate-azure-sftp-with-terraform/ Last updated: 2025-10-29T08:32:34.000Z In a [previous blog](https://www.techielass.com/set-up-sftp-in-azure), I walked through how to set up SFTP on [Azure](https://www.techielass.com/tag/azure/) step-by-step through the Azure Portal. That’s a great way to get familiar with the service, but if you're deploying this regularly, across different environments, for multiple clients, or as part of a DevOps process, you need a way to automate it. That’s where [Terraform](https://developer.hashicorp.com/terraform?ref=techielass.com) comes in. Terraform is an [Infrastructure as Code (IaC)](https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools/) tool that allows you to define and deploy Azure resources using configuration files. This means you can create your Azure SFTP setup in a version controlled way and replicate it in multiple environments with minimal effort. ## The Terraform Code I’ve published a [GitHub repository](https://github.com/weeyin83/sftp-azure-terraform?ref=techielass.com) containing the [Terraform](https://www.techielass.com/tag/terraform/) configuration you need to create: - An Azure resource group - A premium block blob storage account - SFTP enabled on that storage account - A local SFTP user with password authentication - An initial container for file storage You can clone the repo and follow the tutorial below to deploy the SFTP setup to suit your needs. ```bash git clone https://github.com/weeyin83/sftp-azure-terraform.git cd sftp-azure-terraform ``` ## Pre-requisites - An Azure subscription - Basic understanding of Azure - Basic understanding of Terraform - [Visual Studio Code](https://code.visualstudio.com/?ref=techielass.com) (or similar) installed on your machine - Azure CLI installed on your machine - Terraform installed on your machine ## Customising the deployment Within the GitHub repo I have created the following files: - main.tf - Main Terraform configuration - variables.tf - Variable definitions - outputs.tf - Output definitions Within the variables.tf file, I have defined defaults for each variable that needs inputs. You can either change that file directly, or, the way I prefer to work, create a .tfvars file and define the variable details there. To do that, create a new file and name it something like *prod.tfvars*. Within the file copy the following and then replace them with values that make sense for your deployment ```hcl location = "yourazurelocation" account_replication_type = "LRSorZRS" container_name = "containername" sftp_local_user = "username" tag_environment = "environmentname" tag_project = "projectname" tag_creator = "creatorname” azure_subscription_id = "azuresubscriptionid" ``` With this file in place we can start to deploy the Terraform code. Ensure that you are are logged into your Azure environment through your command line tool. First, run ***terraform init*** in the command line. This will download any required providers needed to deploy the Terraform code. Then run ***terraform plan -var-file="prod.tfvars"***. This will plan out any changes and new resources that need created within your environment to match the template file. Then you can run **terraform apply -var-file=”prod.tfvars”**, if you add on *\-auto-approve* then it will deploy the resources without any further prompts or confirmation from yourself. 💡 If you need a refresher on Terraform and the deployment process you can check out my ["Introduction to Terraform”](https://www.techielass.com/introduction-to-terraform/) blog post. Once the deployment is finished, the console will output the SFTP hostname and username you need to connect. The password will not be shown initially, as it is a sensitive value. ![Terraform output](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfdOs5ouzRT-nmHdJmUuRw3qyc4DNQCHemGnTtDzNnAUW6B_FxwJPx8FRHFVoUAz7MNpA6APclCAGLe90YAdx1yCU_NjQY7T7Zhh6gwLmLr__h_n4S-rCuF-y7sHPWhTyyXMGtz?key=mES29aq2eS_BdANProww-A) Terraform output To see the password you can type the following into the console: ```bash terraform output -raw sftp_password ``` This will display the password in clear text for you. You have now created the Azure SFTP setup and have the information required to connect to it and upload, download and share files. ## Managing costs Just like I mentioned in the manual setup guide, remember SFTP in Azure costs $0.30/hour while it’s enabled. If you don’t need it running 24/7, consider automating the enable/disable process. This can be handled with the Azure CLI, PowerShell, an Azure Automation Runbook, or you could even re-run the Terraform template, changing line 69 of the main.tf file to “false” to disable the SFTP feature. [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/blogcoffee-2-3.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) ## Wrapping Up Using Terraform to deploy Azure SFTP means you can spin up secure file transfer endpoints quickly and consistently. However, if you are new to the Azure SFTP offering, I recommend checking out my original blog post for a deeper explanation of what SFTP is, how Azure supports it, and how to connect. ### Estimate cloud costs with Terraform and Infracost URL: https://www.techielass.com/estimate-cloud-costs-with-terraform-and-infracost/ Last updated: 2025-09-30T07:01:49.000Z Costing out your infrastructure has always been a challenge. Trying to compare vendors and options. It can be very time-consuming. In this blog post, I aim to demonstrate how you can integrate a tool called Infracost into your [Infrastructure as Code (IaC)](https://www.techielass.com/tag/infrastructure-as-code/) workflow to help you accurately estimate cloud costs. ## What is Infracost? [Infracost](https://www.infracost.io/?ref=techielass.com) is a tool designed to estimate the cost of your infrastructure based on what you are deploying via your Infrastructure as Code (IaC) configurations. It analyses what is being defined and deployed within your IaC files and provides a detailed overview of what costs you will encounter. When using Infracost, it allows your engineering teams to understand what impact deploying those resources will have and allow them to have the correct information to make informed decisions. Currently, Infracost works with Azure, AWS and Google Cloud, but only works with [Terraform](https://www.techielass.com/tag/terraform/). But the team is hoping to extend support to Pulumi, [CloudFormation](https://www.techielass.com/tag/aws-cloudformation/) and Kubernetes. It can also be integrated into your CI/CD tooling, and support [GitHub](https://www.techielass.com/tag/github/), [GitLab](https://about.gitlab.com/?ref=techielass.com) and [Azure Repos](https://www.techielass.com/tag/azure-devops/). ## How to install Infracost and register There are a few options in terms of how to install Infracost. I run Windows and use Chocolatey to help me install software so I am going to use that. For the other options, see the [official documentation](https://www.infracost.io/docs/?ref=techielass.com#1-install-infracost). ```bash choco install infracost -y ``` After installing it, make sure it works by checking the version of it: ```bash infracost –version ``` Once you have the software installed, you need to register to be able to use the tool. You can either sign up using your GitHub or Google account by running the following command: ```bash infracost auth login ``` ## Estimating cloud costs with Infracost and Terraform Now let’s use Infracost to estimate the cost of an Azure deployment defined in Terraform. Let’s prepare some Terraform to estimate the cost of. ```terraform terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 3.0" } azapi = { source = "Azure/azapi" version = ">= 2.2.0, < 3.0.0" } } backend "azurerm" { resource_group_name = "rg-terraformstate" storage_account_name = "terraformstatetechielass" container_name = "tfstate" key = "tfdemo.env0.tfstate" } } provider "azurerm" { features {} } provider "azapi" { # Configuration options } resource "azurerm_resource_group" "rg" { name = "rg-demo-vm" location = "UK South" } resource "azurerm_virtual_network" "vnet" { name = "vnet-demo" address_space = ["10.0.0.0/16"] location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name } resource "azurerm_subnet" "subnet" { name = "subnet-demo" resource_group_name = azurerm_resource_group.rg.name virtual_network_name = azurerm_virtual_network.vnet.name address_prefixes = ["10.0.1.0/24"] } resource "azurerm_network_interface" "nic" { name = "nic-demo" location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name ip_configuration { name = "internal" subnet_id = azurerm_subnet.subnet.id private_ip_address_allocation = "Dynamic" } } resource "azurerm_windows_virtual_machine" "vm" { name = "win-vm-demo" resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location size = "Standard_D4s_v3" admin_username = "azureuser" admin_password = "P@ssword1234!" network_interface_ids = [ azurerm_network_interface.nic.id, ] os_disk { caching = "ReadWrite" storage_account_type = "Standard_LRS" } source_image_reference { publisher = "MicrosoftWindowsServer" offer = "WindowsServer" sku = "2019-Datacenter" version = "latest" } } ``` We're creating an Azure Virtual Machine (VM) and supporting resources within our Terraform. Using that, let’s look at what the cost will look like for them. To do that, you must first go to the directory that holds your configuration files and run the following command: ```bash infracost breakdown -- path . ``` ![Infracost output of estimated costs](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/07/image.png) Infracost output of estimated costs There is also a [VS Code Extension](https://marketplace.visualstudio.com/items?itemName=Infracost.infracost&ref=techielass.com) available for Infracost. It can help show you as you write the code what the price of your resources will be. ![Infracost within VS Code showing estimated costs](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/07/image-1.png) Infracost within VS Code showing estimated costs ## Infracost Pricing There are several plans available depending on how you want to use Infracost. There is a free plan with limited functionality that can be great for individual engineers or home projects. However, there are two paid plans available for those seeking more functionality and for larger teams. The paid plans offer the ability to create dashboards, tagging policies, [FinOps ](https://www.techielass.com/tag/finops/)policies, Jira integration, custom price books, and much more, which will improve your FinOps practices. ## Final Thoughts [Infracost](https://www.infracost.io/?ref=techielass.com) brings much needed cost visibility into your infrastructure workflow. Whether you are experimenting on your own projects or working on production workloads. It's a great way to align technical decisions with financial impact. ### Install and use Microsoft AI Shell URL: https://www.techielass.com/install-microsoft-ai-shell-copilot-in-azure/ Last updated: 2025-09-23T07:01:38.000Z The command-line interface (CLI) remains a key tool for IT operations and development workflows, sometimes it’s friendly, other times it’s syntax-heavy and frustrating. That’s where Microsoft’s new AI-powered shell tool can help - it’s called [AI Shell](https://learn.microsoft.com/powershell/utility-modules/aishell/overview?view=ps-modules&ref=techielass.com). ### What is AI Shell? AI Shell is an interactive command-line experience that combines a chat interface with language models. It integrates directly into Windows Terminal and iTerm2 on macOS, offering an AI-assisted way to work with CLI tools. AI Shell provides agents that connect to different AI models. In its initial release, AI Shell includes two: Azure OpenAI agent – connects to an instance of GPT-4o and handles general AI tasks. [Copilot in Azure](https://www.techielass.com/copilot-in-azure/) agent – assists specifically with Microsoft Azure questions and tasks. The Azure OpenAI agent connects to an instance of gpt-4o and is the agent for general AI tasks. While the Copilot in Azure agent can assist with Microsoft Azure knowledge. Launched in 2025, AI Shell is currently in version v1.0.0-preview.6\. As with many preview tools, some features may be unfinished or prone to issues, and functionality is subject to change. ### Install AI Shell To use AI Shell, you'll need to install both the CLI tool (aish) and the AI Shell [PowerShell](https://www.techielass.com/tag/powershell/) module. On Windows, run the following script: ```PowerShell Invoke-Expression "& { $(Invoke-RestMethod 'https://aka.ms/install-aishell.ps1') }" ``` For macOS or Linux, refer to the [official documentation](https://learn.microsoft.com/powershell/utility-modules/aishell/install-aishell?view=ps-modules&tabs=windows&ref=techielass.com#install-ai-shell-1) for platform-specific installation instructions. ![Install the AI Shell](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfFTEbkBRVt1OQtsf6bW4Azu80T_68sMWjGgTm2T_8o7AU1eFZqQvoh6jrg9ITaadpHnQWyza-eCOmOXR8GRA7Lmgg1jGpFhJvIABaMY2CT7-uuRKTJc9EYYYEZ7vifUS73KnzE?key=3xD3QggKoPTS39LsRzcGew) Install the AI Shell ### Get started with AI Shell Once installed, you can start AI Shell by launching your terminal and running: **Start-AIShell** ![Starting the AI Shell](https://lh7-rt.googleusercontent.com/docsz/AD_4nXf9CnprzqMLqmFsqAdYNgxPG4oh4Yu4AXWhZMY0yv2nfvuXKk0XOcVri-T2Y6xTk03duhowCPURMISoxXRVVzcmagzutQFiR21q0C98Hmq2HE3fWB3KxJFs8JAH9T_r2EnzD5ob?key=3xD3QggKoPTS39LsRzcGew) Starting the AI Shell You’ll be prompted to select an AI agent. Let’s choose the Copilot in Azure agent for this example. First of all make sure you are logged in to Azure via your shell, you can do this using the **az login** or **Connect-AzAccount** command, as Copilot in Azure will need to be able to login to your Azure environment to work correctly and answer your questions. Once you are logged in, select the “Azure” agent from the list. The agent should go through the log in process and you can start to interact with it. 0:00 /0:12 1× Using the AI Shell You can now ask questions like: *"Create an Azure CLI command to deploy a resource group."* The agent will respond with the exact CLI command to run. ![Using the AI Shell](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfbSvX_ILCjb7lGQ-X_8Ik99Eby55zcAJwr-7mhtN4WJ9a7U-Q0F3Yea_W1ATgB0H3wceUb-vtqRmzg1i8G9p_C_n1rCT-YFSYDE2N0q4l2mIyryN7kPAbUgQytU1I3THFGK4S7?key=3xD3QggKoPTS39LsRzcGew) Using the AI Shell To use the Azure OpenAI agent, you’ll need to connect it to either: an Azure OpenAI resource you’ve deployed, or a valid OpenAI API account. Both are paid services. To configure this connection, create a JSON file with the relevant keys and endpoint information. Full details are available in the [official documentation](https://learn.microsoft.com/powershell/utility-modules/aishell/how-to/agent-openai?view=ps-modules&ref=techielass.com). [![Buy me a coffee](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/blogcoffee-2-3.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) Buy me a coffee ### Conclusion The Microsoft AI Shell brings AI directly into your CLI, helping with common tasks and making using CLI more accessible. Whether you are managing Azure resources or exploring AI-powered command creation this preview tool is worth trying out, but keep in mind it is still evolving. ### How to set up SFTP in Azure URL: https://www.techielass.com/set-up-sftp-in-azure/ Last updated: 2025-09-16T07:01:24.000Z Sometimes there is a need to transfer files between two different parties, one way to do that is using SFTP (Secure Transfer Protocol). There is a native offering within [Azure](https://www.techielass.com/tag/azure/) that can be set up to enable you to use SFTP in Azure and transfer files. In this guide, I’ll walk you through what SFTP is, how Azure supports it, how much it costs, and the step by step process to get it up and running. ### What is SFTP? SFTP stands for Secure File Transfer Protocol. It’s a networking protocol that provides file access, transfer and management capabilities over a secure SSH connection. It’s widely used to transfer files between systems in a secure way, as it protects your data in transit using encryption. Unlike traditional File Transfer Protocol (FTP), SFTP only uses one port, port 22\. Which makes it easy to secure and manage in modern firewall environments. ### What is SFTP on Azure Azure Blob Storage (Premium Block Blob Storage) has SFTP support built in. This is a lightweight approach which avoids you having to manage infrastructure, patching and general administration. It is a secure and scalable option that can also integrate with your Azure workloads if needed. ### Azure SFTP Pricing With Azure Blob storage there are costs involved, for the amount of storage you are using, write operations, list, create and read operations. Then there is the SFTP cost, when the SFTP feature is enabled, it costs **$0.30 per hour to run**. 💡 ****TIP**: Only run SFTP when it is needed, look at automating it to be enabled or disabled on a schedule for your organisation's needs. This will save costs. ### Create and set up SFTP in Azure Head over to [https://portal.azure.com](https://portal.azure.com/?ref=techielass.com) Within the search bar, search for **Storage Accounts** Click on **Create** Select the relevant subscription and resource group, or create a new one to house your storage account. Next, give your storage account a name and select the region you want it to be stored in. Next, select the primary service as **Azure Blob Storage or Azure Data Lake Storage Gen 2** And select the **Premium** tier for performance. For the Premium account type, select **Block blob**. For the redundancy, you can select what is appropriate for your needs and requirements. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/image10.png) We can move on to the “Advanced” configuration screen within the wizard. Any existing default settings can be left as is, assuming they met your requirements, the two boxes we are concerned about are the **Enable hierarchical namespace** and **Enable SFTP** boxes. Ensure they are ticked. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/image6.png) The rest of the default settings are fine for testing purposes, so you can skip through to the **Review + Create** section. But obviously for production environments please do look at the other sections and ensure they are answered and configured appropriately for your environment and requirements. Once the storage account has been created we can start to interact with it and get the SFTP configured. Because we enabled the SFTP setting during setup, we don’t have to enable it again, however we do need to set up folders (containers) for information to be stored in and also we need to create users to give them permissions to the files and folders. Open up the storage account you’ve just created and select **SFTP** on the left hand side. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/image1.png) Click on **Add Local User**, this will open up a wizard asking you to help fill in some information about this new user. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/image13.png) First off is a username, put in an appropriate user name for your user. Then select which methods of authentication you'd like to use with this local user. You can associate a password and an SSH key or you can select to use just one. If you select SSH Password, then your password appears when you complete all of the steps in the Add local user configuration pane. SSH passwords are generated by Azure and are at least 32 characters in length. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/image2.png) Once you’ve configured the username and authentication method, select Next to move to the next section. The next section is all about permissions and where the user has access to. Each user needs to be given access to a folder or container as it’s referred to in Azure. We haven’t created any yet, but we have the ability to do so now within the “Local User” creation wizard. Click on **Create New** and give your container a name and click on **Ok**. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/image5.png) Now we need to give that user permissions to the container. Think carefully about what permissions the person should have, as you can grant them quite destructive permissions and not everyone needs those. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/image4.png) Set the Home directory to **/** to place the user in the root. You can adjust this later as your structure evolves. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/image8.png) Now click on **Add** to create the local user. ### Access your SFTP connection There are many ways to access your SFTP setup, through FTP clients, through command lines or even through web browsers. I’m going to walk you through how to connect to your Azure SFTP setup using the client FileZilla. To be able to log into the SFTP configuration you need three pieces of information, host, username and password or key pair. The host name is name up of the .blob.core.windows.net The username is made up of the .. Open up Filezilla Click on **New > Site Manager** ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/image12.png) Then select **New site** ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/image9.png) Within the Protocol box, select **SFTP** Within hostenter .blob.core.windows.net Within the Login Type box select the relevant option for your setup, either **password** or **key file** If you choose a key pair, you’ll be given the option to find the key pair and add it to the configuration. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/image7.png) Once the information is completed click on **Connect** FileZilla will now be connected to your SFTP and you can download or upload files to it as you require. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/image3.png) ### Disable Azure SFTP As mentioned in the pricing section SFTP incurs a charge per hour, so it's not something you necessarily want to run continuously. You can enable it or disable it manually via the Azure Portal, or through PowerShell, CLI, etc. So it can be disabled manually or automatically. Within the SFTP blade, you have a button called **Disable SFTP** ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/disable.png) Alternatively you can use the PowerShell command ```PowerShell # Define the resource group and storage account name $rg = 'rg-securefiles' # Replace with your resource group name $storageAccountName = 'techielasstransfer' # Your storage account name # Disable SFTP on the specified storage account Set-AzStorageAccount -ResourceGroupName $rg -Name $storageAccountName -EnableSftp $false ``` ### Conclusion Whether you are onboarding third parties, automating file drops or just need a secure way to move data Azure SFTP offers a powerful and manageable solution. This solution is native to Azure, allows for granular permissions. flexible authentication options and allows you to enable or disable it at will. ### Prompting GPT-5: How to write clear, effective prompts for maximum results URL: https://www.techielass.com/prompting-gpt5-guide/ Last updated: 2025-10-29T08:35:27.000Z Prompting is the practice of giving instructions or input to a language model like GPT-5, to guide its response. Think of it as a conversation starter, but with precision. A prompt can be a question, a command, or even a few keywords, and the way you phrase it can dramatically affect the quality, the tone and usefulness of the output. Prompting isn’t just about asking questions, though, it’s about knowing which model you’re speaking to, what it’s optimised for, and how to guide it effectively. [GPT-5](https://openai.com/index/introducing-gpt-5/?ref=techielass.com), for example, is highly obedient and precise, but that means vague or conflicting instructions can derail its reasoning. Earlier models might have guessed your intent, GPT-5 will try to follow it to the letter. In this post, we’ll explore how GPT models have evolved, what makes GPT-5 unique, and how understanding these differences can help you craft prompts that get the best results, whether you're coding, writing, analysing, or building agents. ## Understanding GPT Models and Prompting Evolution The journey from GPT-3.5 to GPT-5 has been less about adding raw power and more about refining how these models think, follow instructions and also interact with us. GPT-3.5 was a breakthrough for many uses; it could generate surprisingly human-like text, but would often need careful nudging. It also has a tendency to “hallucinate” facts and would sometimes prioritise sounding fluent over being accurate. Prompts that were short and simple worked best but complex tasks involved a lot of trial and error. When [GPT-4](https://openai.com/index/gpt-4-research/?ref=techielass.com) was introduced it had strong reasoning and context awareness. It became better at accepting layered instructions, and was able to produce more reliable and detailed answers. GPT-4 also introduced multimodal abilities in some versions meaning it could analyse not just text but images as well. However it relied on prompt clarity, vague instructions could send it off course completely. GPT-5 by contrast is a highly obedient and precise model. Where earlier models might have guessed your intent, GPT-5 tends to follow instructions to the letter. This means you can achieve great accuracy with the outputs, but it means that if you give it a poor or conflicting prompt it can completely derail the output. GPT-5’s reasoning is more structured, and its optimised for multitasking across coding, writing, analyst and even multimodal workflows that combine text and image inputs. In short the evolution from GPT-3.5 to GPT-5 has gone from “creative but sometimes unpredictable” to “structured, obedient and powerful”. Understanding this shift is crucial, because prompting GPT-5 isn’t about hoping it interprets your intent, it’s about telling it exactly what you want and in the clearest way possible. ## How to Write Effective Prompts for GPT-5 To get the most out of GPT-5, think about three key qualities that this model is based on: - **Precision**, it will do what you ask, not what you meant. - **Multimodal input**, it can handle text, images and even audio together. - **Reasoning depth**, it carries context across longer conversations and can break down problems step by step. These strengths bring some challenges. A single vague instruction like *“Help me with cybersecurity”* often produces a broad and unfocused answer. A clearer prompt would be: > *“Act as a cybersecurity consultant. Explain three common phishing techniques in nontechnical language, suitable for a business audience in under 300 words.”* This gives GPT-5 the framing it needs to deliver something useful. Also take note of how we’ve told it to act like someone, given it boundaries and a task, all built into the prompt. When you’re writing prompts, keep a few principles in mind: - Be **explicit** and structured, spell out the task and desired format. - Use **roles** or personas to shape the model’s perspective. - **Break down** complex jobs into steps rather than asking for everything at once. - Add **examples** or constraints if you want a specific style or output. [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/blogcoffee-2-3-10.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) ## Using Prompt Modifiers to Improve GPT-5 Responses When prompting GPT-5 you’re not just asking questions, you are giving instructions. One powerful way to guide the model’s behaviour is through instructional modifiers. These are short, directive phrases that you include in your prompt that include how GPT-5 thinks, responds and prioritises information. Think of them as behavioural nudges. They dramatically improve the quality and the relevance of the output you get from your prompts. Here are some modifiers you can start to build into your prompts: - **“Be quick”**. This encourages GPT-5 to respond concisely and with low latency, which is great for summaries code snippets or fast answers. - **“Do ultra thinking”** or **“Think deeply”**. These activate GPT-5’s reasoning mode. It will take longer for an output to be delivered, however it will give you a more thoughtful, structured and multi-perspective response. - **“Think step by step”**. When you write this in your prompt you are asking GPT-5 to break down its reasoning into clear, logical stages. This is great for problem solving or planning. - **“Challenge your assumptions”**. Having this within your prompt encourages critical thinning and self-reflection which can be useful when you are approaching a complex or controversial topic. - **"Ask me any clarifying questions before you begin"**. Helps you clarify the ask and find where things are vague. - **"Check answers, because I'll be fired if it's wrong"**. Triggers a review of the output. - **"Cite credible sources or evidence where relevant".** Gets your sources to check. - **"List all the assumptions you are making"**. This exposes hidden bias and flawed logic upfront. ## Advanced GPT-5 Prompt Engineering Techniques Once you are compatible with basic modifiers you can start to take your prompting to the next level with these advanced techniques. You can start to use what is called **meta prompting**, where you ask GPT-5 to evaluate or improve your prompt. This is useful when you aren’t sure how to phrase your prompt. You can say: > *“You are a prompt engineer. Review this prompt and suggest improvements: “insert prompt”.* You can also control how big the output you get from GPT-5 is. You can ask for a **“brief summary”** or a **“detailed summary”** or even set word limits. Such as saying: *“Summarise this in under 100 words. Be quick.”* Don’t forget to include roles or personas within your prompt. It can help to shape it’s tone, depth and approach as well. You can build a prompt such as: > *“Act as a gardening expert. Help create a crop rotation plan for an eight bed allotment that is in Glasgow, Scotland”.* Or you could say: > *“Act as a social media expert. I've just completed the first week of my new business and want to create an Instagram Reel thanking customers for their support, help create a script for me.* ## The takeaway GPT-5 is the latest model being used by [ChatGPT](https://www.chatgpt.com/?ref=techielass.com), and [Microsoft’s Copilot](https://copilot.microsoft.com/?ref=techielass.com), it can be a very effective model. Interacting with it is less like chatting with a helpful friend and more like briefing a brilliant strategist. But like any strategist you need to give it a detailed and strong brief. The way you shape your prompts directly influences the quality of the output you’ll receive. So by understanding how GPT-5 thinks and building your prompts in a way it will value you can unlock it’s full potential. ### Understanding AI: Common terms and acronyms made simple URL: https://www.techielass.com/ai-terms-explained/ Last updated: 2025-09-02T07:01:12.000Z Artificial Intelligence (AI) is on everyone’s lips these days, but it often comes with a flurry of acronyms and technical terms. Which can make you feel overwhelmed. Let’s break down some of the most common AI related terms and help you feel more confident in conversations and this fast-moving space. ### What is Artificial Intelligence (AI)? Artificial Intelligence (AI) is the ability of a computer system to perform tasks that normally require human intelligence, like understanding text, making decisions or spotting patterns in data. ### What is Machine Learning (ML)? Machine learning (ML) is a subset of artificial intelligence (AI) that focuses on enabling computers to imitate the way humans learn, perform tasks and try and improve their performance and accuracy through experience and exposure to data. ### What is big data? Big data refers to extremely large datasets that are too complex or massive to be processed by traditional tools. AI and ML thrive on big data; they can identify patterns, trends and insights. ### What is structured data? Structured data is highly organised information that is stored in a fixed format, like spreadsheets or databases. Structured data is easy for computers to search, analyse and use in models or reports. ### What are AI models? An AI model is a program that has been trained using a data set and has recognised patterns and can make certain decisions without further human intervention. Each model might use different data to train on, apply different algorithms to interpret inputs and process an output depending on how they have been programmed. GPT-4, DALL-E, BERT, are examples of models. ### What is Natural Language Processing (NLP)? Natural Language Processing (NLP) is a branch of artificial intelligence (AI) that aims to bridge the gap between human language and computer systems. NLP enables computers to understand, interpret, and generate human language. ### What is Natural Language Understanding (NLU)? Natural language understanding (NLU) is a subset of natural language processing (NLP) that focuses on enabling computers to comprehend and interpret human language. Unlike NLP the purpose of NLU is specifically concerned with understanding the meaning, context and intent behind the words and phrases that people use. ### What is a Large Language Model (LLM)? A large language model (LLM) is a type of artificial intelligence (AI) that can process and produce natural language. It learns from a massive amount of data from various sources, including books, articles, webpages, and images. ### What are Masked Language Models (MLM)? Masked language models (MLM) are a type of large language model (LLM) that is used to help predict missing words from text in natural language processing (NLP) tasks. MLM captures the meaning of words by looking at the entire context of a sentence, both to the left and right of the missing word to determine what the correct missing word is. ### What is Retrieval-Augmented Generation (RAG)? Retrieval-Augmented Generation (RAG) is the technique that helps AI models give more accurate and up to date answers by letting them look things up before responding. It’s a bit like the “phone a friend” option within the game show Who Wants to be a Millionaire, where the contestant can phone a friend to get some advice before answering the question. ### What is prompt engineering? Prompt engineering is the art of crafting effective instructions (called prompts) to get useful or accurate outputs from AI models, especially LLMs. It’s part science and part art, and it's a crucial skill to learn in order to get AI to do what you want. ### What is ChatGPT? ChatGPT is an AI chatbot that has been developed by OpenAI that uses a Large Language Model (LLM) to generate human-like responses to text input. It can answer questions, help with writing, explaining complex topics and much more. ### What is Agentic AI? Agentic AI refers to artificial intelligence that can act independently, make decisions and pursue goals without needing constant human input. Traditional AI waits for human input, a set of instructions and then responds, where as Agentic AI behaves more like a digital assistant that understands your goals and works proactively to achieve them. ### What is an MCP Server? A Model Context Protocol (MCP) server is a special kind of server that helps AI models connect to tools, data and services in a standardised way. AI models are smart, but they don’t know everything, especially when it comes to real time data or even private data. By using an MCP server you can connect live data, like your calendar to an AI model, to help give it additional context or access to perform tasks. ### What is OpenAI? [OpenAI](https://openai.com/?ref=techielass.com) is both an organisation and a technology. OpenAI the organisation was founded in 2015 as a research company with a mission to develop safe and beneficial artificial general intelligence (AGI) that can do tasks better than humans. OpenAI technology is known for creating AI models such as ChatGPT, GPT-4, DALL-E, Codex and Whisper. ### What is Azure OpenAI? [Azure OpenAI](https://azure.microsoft.com/products/ai-services/openai-service?ref=techielass.com) is a service from Microsoft that gives you access to AI models like GPT-4, DALL-E and Codex through the [Azure](https://www.techielass.com/tag/azure) cloud platform. It combines OpenAI’s cutting edge technology with Azure’s enterprise grade security, compliance and scalability. Think of it as a business ready version of ChatGPT you can plug into your open apps, websites and workflows. ### What is Azure AI Foundry? [Azure AI Foundry](https://ai.azure.com/?ref=techielass.com) is Microsoft’s all-in-one platform for building, testing and deploying AI applications. Think of it as a workshop for AI, a place where developers, engineers, data scientists and business teams collaborate and create smart solutions using tools and models. ### What is Responsible AI? Responsible AI means building and using artificial intelligence in a way that is safe, fair and trustworthy. It’s about making sure that AI systems are designed to help people and not cause any harm. AI systems should also follow ethical rules and legal standards. Microsoft’s Responsible AI principles and approaches can be found here: [https://www.microsoft.com/en-us/ai/principles-and-approach](https://www.microsoft.com/en-us/ai/principles-and-approach?ref=techielass.com) ### What is low-code? Low-code is a way to build software applications using visual tools that might have drag-and-drop type interfaces, instead of writing lots of complex code. Low-code’s aim is to make development faster and easier and open to people who aren’t developers. ### Wrapping up AI might seem full of buzzwords and acronyms, but once you break them down they can become less daunting. Whether you're experimenting with tools like ChatGPT or building solutions in Azure or even just trying to keep up with conversations, understanding these key terms gives you a solid foundation. Have you got a term or acronym you’d like me to explain? Drop it in the comments and I can get it answered for you! ### How to enable automatic upgrades for Azure Arc Agent (Public Preview) URL: https://www.techielass.com/azure-arc-agent-automatic-upgrade/ Last updated: 2025-08-26T07:01:56.000Z Previously I wrote about [updating the Azure Arc agent](https://www.techielass.com/updating-the-azure-arc-agent-connected-machine-agent/). Now, I’m pleased to share that a new [public preview](https://techcommunity.microsoft.com/blog/azurearcblog/public-preview-auto-agent-upgrade-for-azure-arc-enabled-servers/4442556?ref=techielass.com) feature enables automatic upgrades of the [Azure Arc](https://www.techielass.com/tag/azure-arc/) agent on enabled servers. This is a major step forward in keeping the agent secure, up to date, and equipped with the latest capabilities. In this post, I’ll walk you through how to enable automatic upgrades and how to report on their status. ## Azure Arc agent automatic upgrade Keeping the Azure Arc agent updated is important for several reasons: - Access to new server management capabilities - Reliability from bug fixes and agent improvements - Compliance by applying the latest security patches and enhancements In the past, upgrades had to be done manually or with tools like Windows Server Update Services (WSUS). With this public preview, agents running version 1.48 or later can use the **Auto Agent Upgrade** feature. This ensures the agent stays on the latest Azure Connected Machine agent version without disrupting workloads. To enable automatic upgrades, you need to set the *enableAutomaticUpgrade* property to true. Once set, agents will upgrade within one version of the latest release. This can be configured using PowerShell. Within Azure PowerShell you need to log in and set the context: ```PowerShell Connect-AzAccount Set-AzContext -Subscription "YOUR SUBSCRIPTION" ``` The input the following: ```PowerShell Set-AzContext -Subscription "YOUR SUBSCRIPTION" $params = @{   ResourceGroupName = "YOUR RESOURCE GROUP"   ResourceProviderName = "Microsoft.HybridCompute"   ResourceType = "Machines"   ApiVersion = "2024-05-20-preview"   Name = "YOUR MACHINE NAME"   Method = "PATCH"   Payload = '{"properties":{"agentUpgrade":{ "enableAutomaticUpgrade":true}}}' } Invoke-AzRestMethod @params ``` *Ensure you replace the relevant values with your own.* The above example updates a single machine. But what if you need to enable Auto Agent Upgrade on **multiple servers**? ### Option 1 – Enable on all servers in a resource group If all the Arc enabled servers are within the same resource group you can run the following script: ```PowerShell $machines = Get-AzResource -ResourceGroupName "rg-arc" -ResourceType "Microsoft.HybridCompute/machines" foreach ($m in $machines) {     Write-Host "Updating $($m.Name)..."     $params = @{       ResourceGroupName    = $m.ResourceGroupName       ResourceProviderName = "Microsoft.HybridCompute"       ResourceType         = "Machines"       ApiVersion           = "2024-05-20-preview"       Name                 = $m.Name       Method               = "PATCH"       Payload              = '{"properties":{"agentUpgrade":{ "enableAutomaticUpgrade":true}}}'     }     Invoke-AzRestMethod @params } ``` This will list all the Arc enabled servers within the resource group then loop round until all have the Auto Agent Upgrade feature enabled. ![Enable on all servers in a resource group](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/image.png) Enable on all servers in a resource group ### Option 2 – Enable on all servers in a subscription If you’d like to apply the setting to all Arc machines within your subscriptions regardless of the resource group they are listed in you can run this PowerShell script: ```PowerShell $machines = Get-AzResource -ResourceType "Microsoft.HybridCompute/machines" foreach ($m in $machines) {     Write-Host "Updating $($m.Name) in $($m.ResourceGroupName)..."     $params = @{       ResourceGroupName    = $m.ResourceGroupName       ResourceProviderName = "Microsoft.HybridCompute"       ResourceType         = "Machines"       ApiVersion           = "2024-05-20-preview"       Name                 = $m.Name       Method               = "PATCH"       Payload              = '{"properties":{"agentUpgrade":{ "enableAutomaticUpgrade":true}}}'     }     Invoke-AzRestMethod @params } ``` If you have hundreds of machines this could take a while since it will run sequentially, so you may wish to look at using a Parallel version instead which is available within PowerShell 7+. ## Monitor Azure Arc agent automatic upgrade status It’s important to monitor which Azure Arc enabled servers have Auto Agent Upgrade enabled. This helps you identify which agents update automatically and which require manual updates. In order to query which Arc enabled servers have the feature enabled or not you can run the Azure Resource Graph Explorer Kusto (KQL) query: ```KQL resources | where type =~ 'microsoft.hybridcompute/machines' | extend PropertiesObject = parse_json(properties) | extend agentUpgradeObj = parse_json(PropertiesObject.agentUpgrade) | project name, enableAutomaticUpgrade = tostring(agentUpgradeObj.enableAutomaticUpgrade) ``` This query will list the name of your Arc enabled server and whether or not the Auto Agent Upgrade feature is enabled or not. ![Azure Resource Graph Explorer](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/image-2.png) Azure Resource Graph Explorer I’ve also updated my [Azure Arc Windows and Linux Dashboard](https://www.techielass.com/azure-arc-windows-and-linux-dashboard/) to show this information as well. [![buy me a coffee](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/blogcoffee-2-6.png)](https://buymeacoffee.com/techielass?ref=techielass.com) buy me a coffee ## Wrapping Up Keeping agents up to date no longer needs to be manual or complex tasks. With the automatic upgrades in Azure Arc you can gain peace of mind that your servers always have the latest fixes, features and security improvements. Whether you manage a handful of servers or hundreds across subscriptions, enabling this preview feature can save time and reduce risk. Try it out, monitor the results, and let me know how you get on! ### Visualise your Certifications with the Exam Timeline Project URL: https://www.techielass.com/exam-timeline-project-visualise-certifications/ Last updated: 2025-08-19T07:01:12.000Z Throughout our tech careers, certifications often become milestones. We might earn them out of genuine interest, because our employer asks us to, or as part of a bigger career goal. Whatever the reason, it’s always satisfying, and quite motivating to be able to track our progress and see how far we’ve come. Recently, my colleague [Guy Gregory](https://www.linkedin.com/in/guygregory/?ref=techielass.com) has been working on something that makes this visualisation possible. Using [GitHub Copilot](https://github.com/features/copilot?ref=techielass.com), [GitHub](https://github.com/?ref=techielass.com), and [GitHub Actions](https://docs.github.com/en/actions?ref=techielass.com), he’s built a project that I think is worth sharing. So let’s talk about it. 0:00 /0:24 1× The Exam Timeline Project ## What is the Exam Timeline Project? [The Exam Timeline project](https://github.com/guygregory/exam-timeline?ref=techielass.com) started as Guy’s experiment to upskill on some [GitHub](https://www.techielass.com/tag/github/) components. With the help of [GitHub Copilot](https://www.techielass.com/tag/github-copilot/) to turn his ideas into working code, the result is a smart, automated tool for tracking certifications. It works by pulling information from your [Microsoft Learn](https://learn.microsoft.com/?ref=techielass.com) transcript and [Credly](https://www.credly.com/?ref=techielass.com) badges, then turning that data into a clean, interactive timeline you can explore. You can deploy the project to an [Azure Static Web App](https://www.techielass.com/azure-static-web-apps-are-awesome/), which means it’s available online at any time. Behind the scenes, it automatically fetches your latest data every day, keeps the visuals updated, and even includes a built-in AI feature that recommends your next exam based on what you’ve already achieved. You can also deploy this using free tiers within [GitHub](https://www.techielass.com/tag/github/) and [Azure](https://www.techielass.com/tag/azure/), so it’s a great wee project to try out. ## How it works - from data to interactive timeline The project is all about taking your certification history and visualising it, it does that through a mix of scripts, automation and then there is a sprinkling of AI on top. The first step is to gather the data, the two main data sources are your Microsoft Learn transcript and also your Credly badges. - **Microsoft Learn transcript** – details of all your Microsoft exams and certifications. - **Credly badges** – badges from Microsoft and other certification providers you’ve earned. Python scripts are used to fetch the information and stored in simple CSV files ready for the next stage. The section section is about building the timeline. The CSV files are visualised within a web page, that you can interact with. The third stage is keeping it up to date. On a daily schedule [GitHub Actions](https://www.techielass.com/tag/github-actions/): - Fetch your latest transcript and badge data - Update the CSV files - Rebuild the timeline - Deploy the changes automatically to your Azure Static Web App The last step in the process is the feature that is an AI-powered exam recommender. You can choose to use GitHub’s or Azure’s AI models to look at the certifications you have already earned and suggest the next certification you should try. It’s not just picking at random, it uses your history to guide you towards relevant and valuable certifications. ## Why you should give it a go Whether you’ve been collecting certifications for a while or you are just starting out, visualising it is a great way to track your progress for your own motivation or share with the tech community. The Exam Timeline Project that Guy has created is: - **Simple to set up** – You don’t need to be a full-time developer to get it running. - **Always up to date** – The automation means you set it up once and it looks after itself. - **Motivating** – Seeing your progress on a timeline makes the hard work feel more tangible. - **Forward-looking** – The AI recommendations can help you plan your next career step. And because it can be deployed entirely on free tiers in GitHub and Azure, the only thing it costs you is a bit of time to set up. ## How to Get Started Guy has written a step-by-step guide in the[ Exam Timeline GitHub repository](https://github.com/guygregory/exam-timeline?ref=techielass.com). In short, you: 1. Fork the repo. 2. Add your Microsoft Learn transcript ID and Credly username as secrets in GitHub. 3. Deploy it to an Azure Static Web App (free tier). 4. Watch your timeline come to life. If you give the project a go, post a link to your timeline in the comments below! ### GitOps and DevOps: Are they the same thing? URL: https://www.techielass.com/gitops-vs-devops/ Last updated: 2025-08-12T07:01:04.000Z GitOps and [DevOps](https://www.techielass.com/tag/devops/) are two terms that get thrown around in conversations, job specs or in tech blogs all the time. They sound similar though. They are both part of the modern software practices and yes sometimes they get mixed up, but they are not the same thing. Let’s break it down. ### What is DevOps? DevOps is a way of working. DevOps brings development and operations teams together, to deliver software faster, more reliably and with fewer silos. Instead of the developers writing code and then throwing it over the wall to the IT operations teams, the DevOps practice promotes and encourages collaboration from day one. Part of DevOps is also bringing in automation and tools like [CI/CD pipelines](https://www.techielass.com/ci-cd-pipeline-tools/) to speed things up and catch problems earlier. DevOps is a culture or a mindset. It’s not a single tool or platform. It’s about bringing people, processes, and products together to enable continuous delivery and value to end users. Remember the goal is always to deliver value to the end users, not just to automate the delivery of software. ### What is GitOps? GitOps is a way of managing infrastructure and application deployments using [Git](https://www.techielass.com/tag/git/) as the single source of truth. With GitOps, all your changes are made in code and stored in Git. The changes could be a new version of your application or it could be spinning up a new Kubernetes cluster. GitOps uses a central Git repository that contains the entire state of the system. It uses Git pull requests to automatically manage and deploy infrastructure or software. The Git repository gives you a trail of changes that’s auditable and version-controlled. GitOps is one of the ways in which we can work smarter. ### How DevOps and GitOps work together You shouldn’t be thinking of having to choose one or the other, in fact, most teams use both. - DevOps gives you the culture and automation mindset. - GitOps gives you a specific model for how to manage infrastructure and deployments. GitOps fits well in cloud-native environments like Kubernetes, but DevOps can apply anywhere, on-prem, cloud, containers or even your legacy systems. ### Final thoughts You shouldn’t look at GitOps and DevOps as rivals, they work better together. DevOps sets the stage, the culture whereas GitOps is one of the stars of the show. If you want better collaboration and faster delivery across your IT teams you should start with DevOps and if you want a version-controlled automated deployment process you should add in a little GitOps. ### What is Azure File Sync? Features, use cases and costs explained URL: https://www.techielass.com/azure-file-sync-guide-use-cases-costs/ Last updated: 2025-08-05T07:01:08.000Z Managing file servers across multiple locations can be complex, expensive and also time-consuming. Azure File Sync is a cloud service that allows you to centralise your file shares in Azure but also allows you to maintain local access with the performance of a traditional file service. In this blog post, we’ll explore what Azure File Sync is, explain its core components, walk through common use cases and pricing considerations, and show how it integrates with other [Azure](https://www.techielass.com/tag/azure) services. ### Introduction to Azure File Sync [Azure File Sync](https://learn.microsoft.com/azure/storage/file-sync/file-sync-introduction?ref=techielass.com) enables you to replicate file data from Windows servers to Azure Files, allowing centralised management, cloud-based backup and seamless access to data directly from the cloud or from on-premises locations. The service is particularly useful for organisations that want to maintain the performance of local file access but also benefit from the cloud scalability and resilience that Azure offers. One of the key features is [Cloud Tiering](https://learn.microsoft.com/azure/storage/file-sync/file-sync-cloud-tiering-overview?ref=techielass.com), which allows you to keep frequently accessed files on-premises, while offloading infrequently used data to Azure. Which allows you to reduce the amount of physical storage you have on-premises but you are not sacrificing user experience or the performance of file access or retrieval. ### Key components of Azure File Sync Azure File Sync is made up of several components that work together to provide seamless syncing and management. Here’s a breakdown of the key components that make up an Azure File Sync deployment that you need to understand while looking at the solution and deploying it. - **Storage Sync Service**: The control plane within Azure that manages all synchronisation relationships. - **Sync Group**: Defines the relationship between one cloud endpoint (Azure file share) and one or more server endpoints. - **Server Endpoint**: The specific folder path on a registered server that syncs with Azure. - **Cloud Endpoint**: The Azure file share that acts as the central sync location. - **Registered Server**: A Windows Server where the Azure File Sync agent is installed. - **Azure File Sync Agent**: Software installed on the server that enables synchronisation between on-prem and Azure. ### Common use cases for Azure File Sync One of the most common scenarios where Azure File Sync shines is in branch office environments. Many organisations operate multiple sites, each with its own file server. With Azure File Sync, you can consolidate these into a central Azure File Share while still maintaining local performance. This means that staff in each location continue to access files quickly from their local server, but those files are synchronised to a central repository in Azure. Not only does this simplify file management, but it also enables faster access for cloud-based applications and services. Azure File Sync also plays a valuable role in gradual cloud migrations. Rather than doing a large-scale cutover that risks downtime or disruption, organisations can use Azure File Sync to start syncing data from their existing file servers into Azure. This hybrid setup allows you to move at your own pace, trial workloads in Azure, and transition fully when ready, all without impacting end users. Another key use case is disaster recovery. Syncing data to Azure ensures that even if a local server fails or is lost, your files are still available in the cloud. This simplifies recovery efforts and reduces the risk of permanent data loss. Combined with Azure Backup or storage replication options, Azure File Sync becomes part of a comprehensive business continuity strategy. Finally, many organisations adopt Azure File Sync as part of a hybrid IT strategy. It enables you to reduce on-premises storage costs through Cloud Tiering, keep frequently accessed files close to users, and maintain control over legacy applications that still require traditional file shares. At the same time, it opens the door to scalable, centralised management in Azure, offering the best of both worlds. ### Azure File Sync cost considerations When looking at Azure File Sync as an option for your environment, there are a few cost factors to keep in mind. First, you'll need to account for Azure Storage costs. There is a couple of different billing models you can choice these days but ultimately you need to consider things like the amount of data you're storing, the media tier you choose (such as Standard or Premium), the access tier (Cool, Hot or Transaction Optimised) and the redundancy option configured on the storage account, like LRS (Locally Redundant Storage), ZRS (Zone Redundant Storage), or GRS (Geo-Redundant Storage). These choices will impact both performance and pricing. On top of that, bandwidth and transaction costs come into play. While uploading data to Azure (ingress) is free, downloading it (egress) is charged based on how much you pull out of the cloud. You’ll also incur costs for certain operations performed within the Azure Files service, things like reading, writing, and listing files all generate transactions that are billable depending on your tier and billing model. Then there’s the Azure File Sync service charge itself, which is currently priced at $6 per server, per month. This is a flat fee applied to each server you register with the service, regardless of how much data is synced. All of these elements, storage, redundancy, transactions, bandwidth, and agent licensing, need to be factored into your cost estimate. It’s worth using the[ Azure Pricing Calculator](https://azure.microsoft.com/en-us/pricing/calculator/?ref=techielass.com) to model your usage and test different configurations to find what’s most cost-effective. ### How Azure File Sync integrates with Azure Backup and other services Azure File Sync is a native Azure service, so as you can imagine it integrates well with a lot of other services within the Azure ecosystem. - Azure Backup can be used to protect your Azure file shares with scheduled backups and point-in-time recovery capabilities. - Azure Monitor can be used to monitor the status of the service and help with any troubleshooting issues. - Azure Networking, you can easily integrate your Azure File Sync group into private endpoint connections if necessary. ### Azure File Sync FAQ #### What is the difference between Azure File Sync and AzCopy? Azure File Sync focuses on synchronising files between Azure and on-premises file systems, whereas [AzCopy](https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-v10?tabs=dnf&ref=techielass.com) is designed for bulk data transfer between various Azure storage types. #### Is Azure File Sync the same as OneDrive? No. Azure File Sync is built for IT administrators managing shared file servers and enables hybrid scenarios by syncing on-premises file shares to Azure. OneDrive is a user-focused cloud storage solution for individuals or teams to access, sync, and collaborate on personal files across devices. #### How do I monitor Azure File Sync health? You can monitor the health of Azure File Sync using several tools and methods, within the Azure Portal you can go into the Storage Sync Service management blade, click on Sync groups and within the Sync group you can view the status. ![Azure File Sync status](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/06/sync.png) Azure File Sync status You can also use the Event Viewer on the server to view information. The Azure File Sync logs are detailed under the Applications and Services Logs > Microsoft > FileSync section. ![Azure File Sync Event viewer](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcal7NcWGc1RI_vQEqpLOODbWtX5Vls34IOZcSnq0GXyDsNH1X8Tw_ZeWoio1LDM1vYhxg0brgZXHQRuWAeZa9TQWnBLr9j95X5FlNmZVaj-oN13_nACfMIXMurX5g7LiV1ga1R6Q?key=ChoaVizkahvivfUHsMNeCw) Azure File Sync Event viewer ### Copilot in Azure explained URL: https://www.techielass.com/copilot-in-azure/ Last updated: 2025-10-29T08:35:46.000Z We’re all trying to achieve more these days. There’s so much to do, and never enough time. But we can’t rush or cut corners—every task comes with compliance, security, and cost considerations. And that’s where Copilot in Azure can help. It went [Generally Available (GA)](https://www.techielass.com/service-lifecycle/) [in April 2025](https://techcommunity.microsoft.com/blog/azureinfrastructureblog/microsoft-copilot-in-azure-is-now-generally-available/4402033?ref=techielass.com). And it’s available within the Portal, CLI clients and Azure Mobile App. And the best part? It’s free. Let’s dive into it more and learn about what it can do, and access the architecture behind it. ### What is Copilot in Azure? Copilot in Azure is your AI-powered assistant for managing cloud resources more efficiently—available via the Portal, CLI, and Mobile App. Copilot in Azure doesn’t have a memory, so it can’t remember what you did once you close your session. ### Copilot in Azure capabilities Copilot in Azure can enhance a wide range of scenarios such as: - Author [Azure Resource Graph](https://www.techielass.com/tag/azure-resource-graph/) queries - Understand service health events and statuses - Analyse, estimate, and optimise your Azure costs - Deploy Azure virtual machines - Build and deploy infrastructure using [Terraform](https://www.techielass.com/tag/terraform/) and [Azure Bicep](https://www.techielass.com/tag/azure-bicep/) - Create resources using interactive deployments - Work with AKS clusters - Generate Kubernetes YAML files - ...and more. Copilot in Azure is your assistant on hand to help with day-to-day tasks. Whether you’ve forgotten a command, are learning something new, or just need “another pair of eyes,” it’s there to support you. ### Managing Copilot in Azure access Before you can start using Copilot in Azure, it’s important to understand how access is controlled. Here’s what you need to know about availability, permissions, and security boundaries. Copilot in Azure is available in all Azure commercial cloud tenants, but is not available within Azure Government Cloud, yet. Depending on your tenant set up, you may or may not already have access to the Copilot button within Azure. - Sign in to the Azure portal. - Navigate to Copilot in Azure admin center management blade. - Click on the Settings > Access Management blade. ![Copilot for Azure admin center management blade](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/06/copilot1.png) Copilot for Azure admin center management blade Here, you can enable Copilot in Azure for all users by toggling the button. However, if you want to limit who has access to it, you can de-select this option then assign the “Copilot in Azure user” role to those you want to have access to it. ![Copilot for Azure admin center management blade](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/06/copilot2.png) Copilot for Azure admin center management blade Copilot in Azure operates using the authenticated user’s context. There is no Copilot in Azure identity that has permissions to your environment. Copilot in Azure only has access to resources that you have access to and can only perform actions that you have permission to perform, after your confirmation. Copilot in Azure will respect all existing access management and protections such as Azure Role-Based Access Control (RBAC), Privileged Identity Management (PIM), Azure Policy and resource locks. So you stay in control, and Copilot in Azure respects your permissions ### Microsoft Copilot in Azure Architecture Let’s walk through how Copilot in Azure is architected. At the top, we have the user interface layer, this is what you interact with within the Azure portal, or mobile app, or CLI clients. That context flows into the orchestrator layer, which is the intelligence engine. It grounds your query using Azure telemetry, resource graph, and documentation. This layer also handles any plugin calls, for example it will call Azure [Cost Management](https://www.techielass.com/tag/cost-management/) for financial insights. The orchestrator layer is also where all the safety, privacy and responsible AI principles are enforced. Finally, the AI infrastructure layer ensures the latest models and innovations from Microsoft’s AI stack are used. [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/blogcoffee-2-3-11.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) ### Final Thoughts Copilot in Azure is built to be your daily assistant—helping you navigate, manage, and optimise your cloud environment with ease. With its secure, permission-aware design and integration across the [Azure](https://www.techielass.com/tag/azure) Portal, CLI, and Mobile App, it's built for real-world use. And the best part? It’s completely free to use. Give it a try and see how it can make your Azure day-to-day just a little bit easier. ### How to use Terraform to generate secrets URL: https://www.techielass.com/how-to-use-terraform-to-generate-secrets/ Last updated: 2025-08-19T14:31:10.000Z Managing secrets like passwords or encryption keys is a critical part of deploying and managing a secure infrastructure. Doing it manually is risky and time-consuming and also can be error-prone. In this blog post, I’ll walk you through how you can automatically generate a secure password, set an expiry date, and then store it safely in Azure Key Vault all via Terraform. Let’s dive in. ### Pre-requisites Before we start, make sure you have the following: - Terraform v1.10.0 or later - Access to an Azure subscription - An existing Azure Key Vault - Basic familiarity with Terraform and Azure resources ### What we're building In this blog post we’re going to do the following: - Generate a secure 20-character password - Store the password in Azure Key Vault as a secret - Sets an expiry date on the password when stored within Azure Key Vault ### Terraform random module The [Terraform random provider](https://registry.terraform.io/providers/hashicorp/random/latest?ref=techielass.com) is a handy tool for generating unpredictable values during your infrastructure deployments. It’s often used to create random strings, passwords, or unique names — which is perfect for when you need something secure or something that is non-repeating. In this example, we’re going to use the random\_password resource to generate a strong 20-character password with a mix of upper-case letters, numbers, and special characters. It’s a simple but effective way to automate credential creation without hardcoding anything sensitive. ### Terraform code to generate a secret Let’s break it down step-by-step. We start by setting the minimum version for the providers to ensure compatibility and stability: ```terraform terraform { required_version = ">= 1.10.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = ">= 3.71, < 5.0.0" } random = { source = "hashicorp/random" version = ">= 3.5.1, < 4.0.0" } azapi = { source = "Azure/azapi" version = ">= 2.2.0, < 3.0.0" } time = { source = "hashicorp/time" version = "~> 0.9" } } } ``` We then configure the AzureRM and Azure AzAPI providers: ```terraform provider "azapi" { # Configuration options } provider "azurerm" { features {} subscription_id = "XXXX-XXXX-XXXX-XXXX" } ``` Next we need to start to pull in some useful data about our existing Azure Key Vault which is going to store our generated secret. This helps Terraform understand which Azure Key Vault to use and who the current Azure user is. ```terraform data "azurerm_key_vault" "key_vault" { name = var.key_vault_name resource_group_name = var.key_vault_rg } ``` Next we create the resource, or strong password using the Random module. This will create a random 20-character password that includes special characters, numbers and uppercase letters. ```terraform # Generate a random password resource "random_password" "password" { length = 20 special = true upper = true numeric = true sensitive = true } ``` So the secret doesn’t live forever, we give them a 30-day expiry. This code generates a date 30 days from now in RFC3339 format, perfect for use in Azure Key Vault. ```terraform resource "time_offset" "expiry" { offset_days = 30 } ``` And lastly we want to store the secret we’ve generated in the Azure Key Vault. This code ensures the secret is stored security, will automatically expire and can be managed centrally in Azure Key Vault. ```terraform # Store the generated password in the Key Vault resource "azurerm_key_vault_secret" "passwordstorage" { name = "generated-password" value = random_password.password.result key_vault_id = data.azurerm_key_vault.key_vault.id expiration_date = time_offset.expiry.rfc3339 } ``` I also have a variables.tf file to store some variables with this Terraform code: ```terraform ## # Variables ## variable "key_vault_rg" { description = "The resource group name of the key vault" type = string default = "rg-rk77" } variable "key_vault_name" { description = "The name of the key vault" type = string default = "kv-rk77" } ``` ### Best practices When you are working with secrets within your code it’s important to strike the right balance between automation and security. Within your Terraform code you want to make sure you mark any sensitive values like generated passwords as sensitive within outputs or variables. This prevents Terraform from accidentally printing them within the CLI output or logs during pipeline runs. Also, remember that Terraform state files store *everything*, including secret values. Using a secure remote backend, like an Azure Storage Account with encryption and access controls, is a must to avoid exposing credentials. Avoid using *terraform output* to pass secrets to other systems. Instead, ensure applications securely retrieve secrets directly from Azure Key Vault, that’s ultimately what it’s designed for. Lastly, ensure you define an expiry date for your secrets and keys. In this example, I used a 30-day offset, but it’s important to build in a regular rotation process too. That could mean rerunning Terraform on a schedule or triggering updates via your CI/CD tool. These small steps can help keep your automation secure, scalable and production-ready. [![Buy me a coffee](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/blogcoffee-2-2.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) Buy me a coffee ### Wrapping Up Automating your secret creation and management with Terraform helps to reduce manual effort and improve security. By generating secure passwords, applying sensible expiry policies and using something like Azure Key Vault to store those passwords in you are building a strong foundation for managing your sensitive data in the cloud. This is just one example of how infrastructure as code can help build in those secure and repeatable patterns from here you can introduce rotation policies or even integrate with Azure services, happy automation! ### How to deploy Azure Key Vault with Terraform: A Step-by-Step Guide URL: https://www.techielass.com/deploy-azure-key-vault-with-terraform/ Last updated: 2025-07-15T07:01:19.000Z Managing secrets, certificates, and keys securely is a critical part of any cloud infrastructure. [Azure Key Vault](https://learn.microsoft.com/azure/key-vault/general/basic-concepts?ref=techielass.com) is Microsoft’s go-to solution for secure key management, and in this blog, we’ll walk through how to deploy it using Terraform. We'll break down the [Terraform](https://www.techielass.com/tag/terraform/) configuration so that even if you’re new to deploying [Azure](https://www.techielass.com/tag/azure/) services as code, you’ll be able to follow along with confidence. ### Pre-requisites Before diving into the code, make sure you’ve got the following set up: - [Terraform](https://developer.hashicorp.com/terraform/downloads?ref=techielass.com) installed (version **1.10.0 or later**) - An active[ Azure subscription](https://azure.microsoft.com/free/?ref=techielass.com) - The[ Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli?ref=techielass.com) installed and logged in - A service principal or user account with sufficient permissions to deploy resources - Familiarity with basic Terraform concepts (providers, resources, variables) ### What is Azure Key Vault? Azure Key Vault is a handy tool for securely storing sensitive information like secrets, encryption keys, and certificates. Centralising the storage of your sensitive data makes it easier to manage. Plus, it gives you fine-grained control over who can access what, helping you maintain strong security practices. It’s never ideal to embed secrets into your code or configuration files, so storing them in Azure Key Vault and then calling the information as and when needed is the preferred solution. Azure Key Vault offers a lot of features that can improve your security posture, soft delete, purge protection, and integration with Azure role based access control (RBAC) and managed identities. It can also manage key rotation policies and work with hardware security modules (HSMs) for extra protection. There are two SKUs available with Azure Key Vault, Standard and Premium. The standard SKU supports most use cases, while premium adds support for HSM-backed keys and advanced scenarios. You can view full pricing details on the [Azure Pricing page](https://azure.microsoft.com/en-gb/pricing/details/key-vault/?ref=techielass.com). ### What we'll deploy This Terraform configuration will: - Randomly pick a region from a list - Create a new Azure resource group - Deploy an Azure Key Vault instance into that resource group - Assign an access policy to the current user or service principal running the code ### The Terraform configuration explained **1\. Setting up Terraform and providers** We start by declaring the Terraform version and required providers: ```terraform terraform { required_version = ">= 1.10.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = ">= 3.71, < 5.0.0" } random = { source = "hashicorp/random" version = ">= 3.5.1, < 4.0.0" } azapi = { source = "Azure/azapi" version = ">= 2.2.0, < 3.0.0" } } } provider "azapi" { # Configuration options } provider "azurerm" { features {} subscription_id = "XXXX-XXXX-XXXX-XXXX" } ``` We're using: - azurerm to deploy Azure resources - random to randomly select a region - azapi to support the modules we are using You must configure the providers with your Azure subscription details. The subscription\_id in the azurerm provider should be updated with your actual ID. **2\. Naming and region selection** We use a community module to generate Azure Cloud Adoption Framework (CAF) compliant resource names: ```terraform module "naming" { source = "Azure/naming/azurerm" version = "0.3.0" } ``` We also define a list of Azure regions and randomly pick one for deployment: ```terraform locals { azure_regions = [ "ukwest", "westeurope", "francecentral", "swedencentral" ] } resource "random_integer" "region_index" { max = length(local.azure_regions) - 1 min = 0 } ``` This gives us a bit of variability in testing deployments across regions. **3\. Creating the resource group** ```terraform resource "azurerm_resource_group" "rg" { location = local.azure_regions[random_integer.region_index.result] name = module.naming.resource_group.name_unique tags = { Environment = var.tag_environment Project = var.tag_project Creator = var.tag_creator } } ``` We create the Azure resource group and also assign some basic tags using variables to help keep things organised. **4\. Deploying the Azure Key Vault** Here’s the core of the deployment: ```terraform resource "azurerm_key_vault" "example" { name = module.naming.key_vault.name_unique location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name tenant_id = data.azurerm_client_config.current.tenant_id sku_name = "standard" soft_delete_retention_days = 7 purge_protection_enabled = true ``` We enable soft delete and purge protection, both best practices for protecting against accidental deletion. Next, we configure access policies: ```terraform access_policy { tenant_id = data.azurerm_client_config.current.tenant_id object_id = data.azurerm_client_config.current.object_id secret_permissions = [ "Get", "List", "Set", "Delete" ] key_permissions = [ "Get", "List", "Create", "Delete", "Update", "Import", "Backup", "Restore", "GetRotationPolicy", "Recover" ] } } ``` This grants the authenticated user/service principal access to manage secrets and keys. ### Variables file We keep the variables in a separate file from our main Terraform deployment. And in this file we set our tag information. ```terraform variable "tag_environment" { type = string default = "Testing" } variable "tag_project" { type = string default = "KeyVault" } variable "tag_creator" { type = string default = "TechieLass" } ``` These can be overridden at deployment time or left as-is for testing. ### How to deploy Once your Terraform configuration files are ready, open a terminal and navigate to the directory containing them. Make sure you're authenticated to Azure. The simplest way is by using the Azure CLI. You can do this by running: ```bash az login ``` This opens a browser window where you can log in with your Azure credentials. If you're using a service principal instead, you can authenticate with: ```bash az login --service-principal -u -p --tenant ``` After authenticating, run: ```bash terraform init ``` This will download the necessary provider plugins and initialise the working directory. Next, run the command: ```bash terraform plan ``` This will give you a preview of what resource will be created. This helps you confirm the configuration looks correct. When you're ready, deploy the infrastructure with the command: ```bash terraform apply ``` You’ll be prompted to confirm the action—type yes to proceed. ![Terraform deployment workflow](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/05/image-1.png) Terraform deployment workflow After deployment, log in to the Azure Portal to confirm the resource group and Key Vault were created successfully. You can also verify that the access policy has been applied by reviewing your permissions in the Key Vault settings. ### Wrapping Up Deploying Azure Key Vault with Terraform is a clean, repeatable way to manage your secure resources. With just a few lines of code, you can automate what would normally take several steps in the Azure Portal. ### Understanding Azure Hybrid Benefit URL: https://www.techielass.com/understanding-azure-hybrid-benefit-cost-savings/ Last updated: 2025-07-08T18:46:23.000Z Cost is king when a lot of people are making decisions, and cloud migrations or hybrid cloud strategies by organisations are no different. Cost can be the deciding factor for a lot of organisations. And this is why I want to highlight the powerful licensing advantage that exists inside Azure. Azure Hybrid Benefit. The Azure Hybrid Benefit can help you reduce costs across [Windows](https://www.techielass.com/tag/windows-server/), Linux, SQL and even [Azure Local](https://www.techielass.com/tag/azure-local/) workloads. In this blog post, we’ll explore what Azure Hybrid Benefit is, who it applies to, and how to make the most of it across your infrastructure estate. ## What is Azure Hybrid Benefit? Azure Hybrid Benefit (AHB) allows you to take or reuse your existing on-premises licences when moving workloads to Azure. Now it’s not quite that simple as your licensees have to have [Software Assurance](https://www.microsoft.com/en-us/licensing/licensing-programs/software-assurance-default?ref=techielass.com) attached to them (or qualifying subscriptions). Instead of paying for both on-premises and cloud licences, AHB gives you a way to leverage those existing investments you’ve made, reducing the cost of running virtual machines (VMs), SQL databases, and other services. It’s designed to support both cloud-first and hybrid cloud strategies by easing the financial transition from traditional infrastructure models to Azure-based ones. ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeu3jtn41sAOjRaQOtU-bL9K9nnpHbkQ6ng0YMPl0UNCKIpcKxhq9iXO4HTrtr16Xs87WPJSOqelYDC3b4XWZq9rlJwRdZpUYowKjqChNCJ4kwNhjLa6FPk7ZbwuYiETg0s1H64Gg?key=FFj5L4-ZHGMri7y70ggHHQ) 💡 ****Disclaimer**: This blog is intended to explain the Azure Hybrid Benefit feature at a high level and should not be considered formal licensing advice. Always review the official Microsoft licensing documentation or consult a qualified licensing specialist to ensure compliance with your specific scenario. ## Azure Hybrid Benefit for Windows Server Windows Server for a lot of IT departments has been the mainstay operating system deployed for workloads. And while a lot of customers are modernising and looking at alternative solutions to virtual machines (VMs) there are still a lot looking to modern their infrastructure and continue to run Windows Server within the club. If you have bought Windows Server licenses with Software Assurance or eligible server subscriptions you can use those licences to run Windows Server virtual machines in Azure and pay only for the base compute, significantly lowering your cloud bill. Each eligible Windows Server licence can be used to cover either one or two of your virtual machines, depending on your licensing model. This means you can run VMs in Azure at a reduced cost. You get: - Up to 40% savings compared to pay-as-you-go VM pricing. - Rights to run two VMs for every 16-core licence you own (or one VM per 8-core licence). ## Azure Hybrid Benefit for Linux A lot of people associate Azure Hybrid Benefit (AHB) with Windows and SQL server, however it’s also relevant for Linux workloads. If you're running Red Hat Enterprise Linux (RHEL) or SUSE Linux Enterprise Server (SLES) on-premises and have active subscriptions, Azure lets you bring those licences to the cloud. This means you can continue to use the Linux distributions you are familiar with, trust and avoid paying extra fees. You can use this benefit for a range of Azure services including virtual machines and Azure Kubernetes Services (AKS). Just like with SQL Server, there’s a cost-saving angle here too — by reusing existing licences, you avoid double billing and keep cloud spend in check. This is useful for organisations who have already invested a lot of money and training time into the Linux ecosystem and want to continue to use it within the cloud. ## Azure Hybrid Benefit for SQL When migrating SQL Server workloads to Azure, cost is often a major consideration. With Azure Hybrid Benefit (AHB) you can bring your [existing SQL Server licences](https://learn.microsoft.com/azure/azure-sql/azure-hybrid-benefit?view=azuresql&tabs=azure-portal&ref=techielass.com), as long as they’re covered by Software Assurance or a qualifying subscription. Instead of paying for the full SQL service in Azure, you only cover the base compute costs. This benefit applies whether you're running SQL Server in Azure Virtual Machines, using Azure SQL Database, SQL Managed Instance, or even integrating SQL with Data Factory’s SSIS runtime. Essentially, you get flexibility without starting from scratch on licensing. The number of virtual CPUs (vCPUs) your licences cover in Azure depends on the SQL edition. Enterprise Edition licences are particularly valuable, often allowing up to four vCPUs per on-prem core in certain service tiers, while Standard Edition maps closer to a one-to-one ratio. This can make a real difference to both performance planning and your budget. You can also apply AHB to [Azure Dedicated Hosts](https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/dedicated-host?view=azuresql&ref=techielass.com). If you have SQL Enterprise licences, you can assign them at the host level and licence only half the available vCPUs — a clever way to get more out of highly virtualized environments. And if you’re worried about overlap during migration, Microsoft offers a 180-day grace period where you can use your licence on-prem and in Azure at the same time. That’s especially useful for phased transitions or testing new environments. All of this adds up to serious savings — potentially up to 55% when combined with reserved instances and other Azure cost optimisation features — while helping you move to the cloud at your own pace and on your own terms. ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXe9Qzt93ywmt4S6_6zXkYK6bj4c1mhAEgipeEUOBdbtQccIHIHty_KELK-8thASRVa-pOE2YDpbyp91prvWCKbIsFDKr-ap2eem4BKKEr2izJtLhQnSBlKcKXxaH8cg6KpnrT9i1A?key=FFj5L4-ZHGMri7y70ggHHQ) ## Azure Hybrid Benefit for Azure Local As businesses look to use Azure closer to where they operate services like Azure Local are becoming more important. But running services locally doesn’t mean you miss out on the benefits available in the global Azure cloud. Azure Hybrid Benefit can be applied to Azure Local deployments too. In fact applying the benefit here can waive the Azure Local host service fee and Window Server guest subscription on your system. If you're curious about how Azure Local licensing works more broadly — including how pricing differs and what to watch out for — I’ve broken it down in[ this blog post](https://www.techielass.com/azure-local-licensing-explained/). ## Summary: Why Azure Hybrid Benefit matters Azure Hybrid Benefit is more than a cost-saving tool — it’s a bridge between the traditional and cloud-native worlds. Whether you're running Windows, Linux, SQL Server, or need to operate Azure services on local infrastructure, it enables a more flexible and financially sustainable cloud journey. To help you monitor and maximise the impact of this benefit across your estate, I’ve created a[ step-by-step guide to the Azure Hybrid Benefit dashboard](https://www.techielass.com/azure-hybrid-benefit-dashboard/). It walks you through how to access, interpret, and act on the data to ensure you're making the most of your licensing advantage. ### What the terraform providers command tells you URL: https://www.techielass.com/terraform-providers-command-explained/ Last updated: 2025-07-01T07:01:34.000Z When working with [Terraform](https://www.techielass.com/tag/terraform), especially on complex projects, you can end up managing a lot of Azure services and knowing which Terraform providers you are using, how they are sourced and version can be key to ensuring you have Terraform code that is maintainable, easy to debug and easy to collaborate on. One of the simplest yet most powerful commands in your Terraform toolkit is: **terraform providers** But what does it actually *do*? Let’s break it down. ### What is a Terraform provider? Before diving into the command, a quick refresher: Terraform **providers** are plugins that let Terraform interact with APIs of various platforms like Azure, AWS, GitHub, or Kubernetes. They define the *resources* you can create and manage. I have a Terraform file that deploys [Azure Communication Services](https://www.techielass.com/deploy-azure-communication-services-with-terraform) and at the start of the code I have these providers defined: ```terraform terraform {   required_version = ">= 1.10.0"   required_providers {     azurerm = {       source  = "hashicorp/azurerm"       version = ">= 3.71, < 5.0.0"     }     random = {       source  = "hashicorp/random"       version = ">= 3.5.1, < 4.0.0"     }     azapi = {       source  = "Azure/azapi"       version = ">= 2.2.0, < 3.0.0"     }   } } ``` ### What does the command terraform providers do? Running: terraform providers will list: - All the providers used in your configuration. - Which modules (if any) use which providers. - Which versions are actually being used. - Where the source of the provider is (e.g. hashicorp/azurerm). This is incredibly helpful when: - Debugging provider version mismatches - Auditing a repo for compliance - Understanding inherited providers in large or multi-module environments ### **Example output from your configuration** Using the [Azure Communication Services](https://www.techielass.com/deploy-azure-communication-services-with-terraform) Terraform code, if I run terraform init and then terraform providers, this is the output I get. ![Terraform providers command](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdCrAyReZSbncqm1XrG7vHOvD-xYfs58IPYIm2p7K29cElw_pvyn1Zah0T5Jr2aFirRU73uen7AkINcyzPz6U-Kkckz98QNd8YtY5hxYyGpEFVsxjYQkZTC_Tu_azy5D9pXeZ0S2Q?key=xKZbVqtD6aplbZEFZXW8UvHN) Terraform providers command Terraform returns a structured view showing which providers your configuration and state currently rely on. In my view, I have two sections, the first is the providers required by configuration sections tells us what providers are currently declared within my Terraform code. - azapi: Used to interact with Azure REST APIs - azurerm: The main provider for deploying Azure resources such as resource groups, etc. - random: I use this within my code to help randomise the Azure region I use. - module.naming: This module also uses the random provider independently, which is why it's listed under the module. Within my code, I have set a version range for each provider. This helps me safe within tested versions and avoid unexpected breaking changes when new versions are released. The section section is the providers required by state section which shows which providers are currently in use in the actual Terraform state file—that is, what has already been deployed. Ideally, what’s in your configuration and what’s in your state should match. In your case, they do, which means your project is in a healthy, expected state. If they didn’t match, it might mean: - You removed a provider from the config, but the resources it created are still managed in state. - You updated a module or version but haven’t run terraform apply yet. ## Why This Matters in Real-Life Projects At first glance, the output from terraform providers might seem like just a list of technical details — something you could ignore once your infrastructure is up and running. But in real-world projects, especially as they grow in complexity or involve multiple teams, understanding this output becomes essential. One of the key benefits of this command is clarity. It gives you a precise view of which Terraform providers your configuration is depending on, and more importantly, what’s actually in use within your state file. This becomes particularly valuable when you're troubleshooting. By running terraform providers, you get a clear picture of all dependencies, even the ones nested inside modules. This visibility helps you avoid version conflicts or issues where one part of your infrastructure behaves differently because it relies on a slightly older or newer version of a provider. ## In Summary The terraform providers command isn’t just for show — it’s a core part of understanding and controlling your project’s dependencies. Whether you're building advanced configurations or managing simpler infrastructure, this command gives you visibility into your project's backbone. ### How to secure your Azure Storage with Microsoft Defender for Storage URL: https://www.techielass.com/how-to-secure-azure-storage-defender-for-storage/ Last updated: 2025-06-24T07:24:26.000Z Ensuring your environment is secure goes beyond just installing an antivirus security product on your servers. You need to think about protecting your storage, your apps, containers, databases, identity and much more… And you need to pick the right product to protect those workloads. In this article, we’ll explore how [Defender for Storage](https://www.techielass.com/microsoft-defender-for-storage/) works, its key features, pricing, and how to enable it within the Azure portal. ## What is Microsoft Defender for Storage? Microsoft Defender for Storage is a cloud-native security solution that is designed to protect Azure Storage accounts from various threats. It provides threat detection by analysing data access patterns, scanning for malware and leveraging Microsoft’s threat intelligence. Defender for Storage supports Azure Blob Storage, Azure Files, Azure Data Lake Storage and Azure Queues and Tables. Defender for Storage integrates with Microsoft Defender for Cloud, ensuring you receive security alerts and recommendations to enhance your cloud security posture. ## How Defender for Storage works Defender for Storage provides multiple layers of protection. One of the layers is malware scanning. It scans any files uploaded to [Azure](https://www.techielass.com/tag/azure/) Blob storage for known threats and also uses Microsoft’s threat intelligence database to detect and prevent malware distribution. Another layer of protection is **anomaly detection**. Defender for Storage will identify any unusual access patterns that might indicate an insider threat or a cyberattack. It will look for anomalies such as massive file downloads, data exfiltration or repeated failed access attempts. The other area of protection Defender for Storage offers is **threat intelligence integration**, where it leverages Microsoft’s global security insights to detect threats. An example would be if a known malicious IP tries to interact with a storage account. The generated alerts or recommendations are displayed within Microsoft Defender for Cloud and can be integrated into Microsoft Sentinel for automated security responses if necessary. ## Defender for Storage pricing Defender for Storage can be enabled at the resource level or at the subscription level and you do have the ability to exclude specific storage accounts from being included if you wish. Defender for Storage is charged per storage account per month. Currently, the price is $10 per storage account per month (US Dollars). It’s worth noting that malware scanning is an add-on and is charged at $0.15/GB of data scanned. But you can configure a [monthly cap](https://learn.microsoft.com/azure/defender-for-cloud/defender-for-storage-introduction?ref=techielass.com#malware-scanning---billing-per-gb-monthly-capping-and-configuration) so that costs are predictable. ## Enable Defender for Storage with the Azure portal You can enable Defender for Storage at the subscription level or at an individual storage account level. It is recommended you enable it at the subscription level to ensure full coverage within your environment. To enable it at the subscription level follow these steps: - Sign in to the Azure portal. - Navigate to **Microsoft Defender for Cloud** management blade. ![Microsoft Defender for Cloud blade](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/03/image1.png) Microsoft Defender for Cloud blade - Expand **Management** then select **Environment settings**. ![Microsoft Defender for Cloud blade](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/03/image.png) Microsoft Defender for Cloud blade - Select the subscription for which you want to enable Defender for Storage. - Select the **three dots** on the right and then choose the **Edit settings** option. ![Microsoft Defender for Cloud environment settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/03/image-1.png) Microsoft Defender for Cloud environment settings - On the Defender plans page, locate **Storage** in the list and select **On and Save**. ![Microsoft Defender for Cloud defender settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/03/image-2.png) Microsoft Defender for Cloud defender settings Defender for Storage is now enabled across your subscription, including the malware protection. You can turn this off by going back into settings and turning it off. Any storage accounts that are created after enabling Defender for Storage will be protected up to 24 hours after creation. ## Conclusion Securing your environment requires a well-thought-out strategy and goes beyond traditional anti-virus solutions. Microsoft Defender for Storage provides a cloud-native solution to detect threats, prevent malware, and leverage Microsoft’s threat intelligence to keep your Azure Storage accounts secure. In today’s landscape, choosing the right security tools is essential, and Defender for Storage is a powerful addition to your overall security strategy. ### Mastering Azure Resource Graph: Query & Analyse Tags with KQL URL: https://www.techielass.com/azure-resource-graph-query-tags-kql/ Last updated: 2025-06-17T07:01:27.000Z [Azure Resource Graph](https://www.techielass.com/tag/azure-resource-graph/) is a tool that can be used to query information about your Azure resources. Using [Kusto Query Language (KQL)](https://www.techielass.com/tag/kusto) you can pull together tables and charts that can either be downloaded or displayed inside [Azure Dashboards or Workbooks](https://www.techielass.com/azure-dashboards-azure-workbooks-power-bi/). In this blog post I want to walk you through how to use Azure Resource Graph and KQL to work with Azure Resource Tags. ### Azure Resource Tags Best practice within Azure says you should tag your resource groups, resources etc, with meaningful metadata. Often people create resource tags to identify what resources are used in a specific project, used by a specific department, or even a tag to show when a resource was created. Tagging your resources is really helpful in identifying resources relating to project, department etc when you want to cross charge or even just doing audits. You can query tags with Azure Resource Graph explorer, however the data comes back as a block of JSON inside a single column. This means you cannot filter or aggregate the data on an individual tag. ### Tag Kusto query If we open up Azure Resource Graph Explorer and run the KQL query: ```kql resources | where type =~ 'microsoft.hybridcompute/machines' or type =~'Microsoft.Compute/virtualMachines' | project name, ['tags'] ``` We get the following result back ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeoa1kMkfAmeeAYXTxPABS4L40xwTvOlV59TGofeOtv_hGBA0Sh12SdQqCShNUjwIXta_52vV-c2WtU0xWEIqEHx59qRYINGebA3cnhAFBR9iHD5X3yVfU_8NylAfmmbGPDosjNvg?key=OMUAVlrib-GDMy_4VS5qRMu_) As you can see the tag result is given back to us in JSON format. If we use the [extend operator](https://www.techielass.com/understanding-kql-operators/) to parse the JSON string into a dynamic object we can start to pull the information into something we can work with. ```kql resources | where type =~ 'microsoft.hybridcompute/machines' or type =~ 'Microsoft.Compute/virtualMachines' | extend TagsObject = parse_json(tags) // Parse the JSON string into a dynamic object | project name, City = tostring(TagsObject.City), Environment = tostring(TagsObject.Environment) // Extract the City & Environment tags separately ``` ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXf-SYPHqbYJX-UhAaxLr2o8oG7a70bduPtrkY-Kyr-xc6JxxhIOTMxNynSHFszngLxx0sPpEhnKGxpQb3t-ex_SQd2588piTXlSQ0VAFgfJkyzuhsn4xZqsnjygg4-8_EsES7Hu?key=OMUAVlrib-GDMy_4VS5qRMu_) We can then use the [summarize function](https://www.techielass.com/understanding-kql-functions/) to group by the City tag and count how many occurrences we have of that. ```kql resources | where type =~ 'microsoft.hybridcompute/machines' or type =~ 'Microsoft.Compute/virtualMachines' | extend TagsObject = parse_json(tags) // Parse the JSON string into a dynamic object | project name, City = tostring(TagsObject.City), Environment = tostring(TagsObject.Environment) // Extract the City tag as a string | summarize CityCount = count() by City // Group by City and count occurrences ``` ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/04/image-7.png) This method is useful when you need to generate reports on how many resources belong to different locations, teams, or environments. ### Conclusion Azure Resource Graph, combined with KQL, provides a powerful way to extract, analyse, and report on Azure resource metadata. By using JSON parsing and aggregation techniques, you can transform raw data into actionable insights. If you’re managing multiple Azure resources and need to ensure proper tagging, Resource Graph Explorer can help you gain better visibility into your environment. Try out these queries in your own environment and see what insights you can uncover! ### Enable Azure Monitor Diagnostic Settings with Terraform URL: https://www.techielass.com/enable-azure-monitor-diagnostic-settings-terraform/ Last updated: 2025-08-19T14:32:27.000Z Most Azure resources support what is called an Azure Monitor Diagnostic setting. This diagnostic setting allows you to configure which logs or metrics you want to collect from a resource and where you want to send them. Your destination could be Azure Log Analytics, a storage account, an event hub or a 3rd party solution. In this blog post, I am going to walk you through the process of enabling [Azure Monitor](https://www.techielass.com/monitor-ssl-certificates-with-azure-monitor/) diagnostic settings using Terraform. ## What are Azure Monitor diagnostic settings? Within nearly all [Azure](https://www.techielass.com/tag/azure) resources, you can configure a setting called Azure Diagnostics to allow you to collect and route logs and metrics from that resource to different destinations for monitoring and analysis. Each Azure resource has different diagnostic logs and metrics available to it. You can route the logs and metrics to different destinations: - Log Analytics for querying and alerting. - Event Hub for streaming to external services. - Storage Account, for long-term retention. - Partner solutions such as Splunk or Datadog. ## How to configure Azure diagnostic settings using Terraform To enable Azure Monitor diagnostic settings using Terraform, you must define the *azurerm\_monitor\_diagnostic\_setting* resource. This resource allows you to configure logs and metrics for a given Azure resource and specify where to send them. Before you start, ensure you have: - A Log Analytics workspace, Event Hub, or Storage Account to send logs to. Below is a snipnet of Terraform configuration to enable diagnostic settings for an Azure Communication Services resource and send logs to a Log Analytics workspace: ```terraform # Deploy an Azure Communication Services resource resource "azurerm_communication_service" "acs" { name = "acsservice" resource_group_name = "rg-lpzt" data_location = "UK" } # Fetch information about an existing Azure Log Analytics workspace data "azurerm_log_analytics_workspace" "observability_log_analytics_workspace" { name = "log analytics space name" resource_group_name = "rg where log analytics resides" } # Turn on logs being sent to a Log Analytics Workspace resource "azurerm_monitor_diagnostic_setting" "acs-logs" { name = "acs-diagnostic-logs" target_resource_id = azurerm_communication_service.acs.id log_analytics_workspace_id = data.azurerm_log_analytics_workspace.observability_log_analytics_workspace.id log_analytics_destination_type = "Dedicated" enabled_log { category = "EmailSendMailOperational" } enabled_log { category = "Usage" } enabled_log { category = "EmailStatusUpdateOperational" } enabled_log { category = "EmailUserEngagementOperational" } metric { category = "AllMetrics" } } ``` We first use the *azurerm\_communication\_service* module to [deploy our Azure Communication Services resource](https://www.techielass.com/deploy-azure-communication-services-with-terraform). We then use a [data source](https://www.techielass.com/terraform-data-sources) to fetch information about our existing Azure Log Analytics workspace. Then, we use the azurerm\_monitor\_diagnostic\_serttings module to configure the logs we want to gather about the Azure Communication Service resource. In this instance, we will be using the Azure Communication Service to send emails, so we want to enable the related logs and send them to our Log Analytics workspace. We’ve also set the Log Analytics destination type to *Dedicated*. This means the logs will go to resource-specific tables instead of the legacy AzureDiagnotics table. 💡 If you are looking for my Terraform deployment files for Azure Communication Services you can find them fully within GitHub here: [https://github.com/weeyin83/terraform-acs-deployment](https://github.com/weeyin83/terraform-acs-deployment?ref=techielass.com) ## Best Practices for Azure Diagnostics Settings - **Enable diagnostics for all critical resources**, especially security-related ones like Key Vault, Azure Firewall, and Virtual Machines. Logs help with incident response and compliance audits. - **Use Log Analytics for structured analysis**, send logs to Azure Monitor Log Analytics to run queries, create dashboards, and set up alerts using [Kusto Query Language (KQL)](https://www.techielass.com/tag/kusto). - **Avoid sending everything**. Filter logs to only collect what’s necessary to reduce storage costs and noise. Prioritise security, performance, and availability-related logs. [![Buy me a coffee](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/blogcoffee-2-4.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) Buy me a coffee ## Conclusion We have explored how to enable Azure Monitor diagnostic settings using Terraform, allowing you to collect and route logs and metrics for better observability. By leveraging the azurerm\_monitor\_diagnostic\_setting resource, you can ensure that critical logs are sent to the appropriate destinations, such as Log Analytics, Event Hub, or Storage Accounts. Remember to enable diagnostics for the correct resources, but avoid capturing all the logs to help optimise your monitoring while managing costs. ### How to configure Azure Monitor Diagnostic settings in the Azure Portal URL: https://www.techielass.com/configure-azure-monitor-diagnostic-settings/ Last updated: 2025-06-03T07:01:53.000Z Most Azure resources offer a feature known as an Azure Monitor Diagnostic setting. This setting enables you to define which logs and metrics you want to capture from a resource and specify their destination. You can choose to send this data to Azure Log Analytics, a storage account, an event hub, or even a third-party solution. In this blog post, I’ll guide you through the steps to enable [Azure Monitor](https://www.techielass.com/monitor-ssl-certificates-with-azure-monitor/) diagnostic settings using the Azure Portal. ### What Are Azure Monitor Diagnostic Settings? Nearly all [Azure](https://www.techielass.com/tag/azure) resources include an option called Azure Diagnostics, which allows you to collect and direct logs and metrics from that resource to various locations for monitoring and analysis. The specific logs and metrics available depend on the resource type. You can send logs and metrics to different destinations, including: - **Log Analytics** – For querying and setting up alerts. - **Event Hub** – To stream data to external services. - **Storage Account** – For long-term data retention. - **Third-party solutions** – Such as Splunk or Datadog. ### How to configure diagnostic settings in the Azure Portal Let’s look at how to enable diagnostics settings with the Azure Portal. In this walkthrough, I am going to use an Azure Key Vault, but configuring the setting is the same or similar for all other resources that support this feature. - Go to Azure Portal - Select the relevant resource - Navigate to "Monitoring" and click on "Diagnostic settings". ![Azure Portal](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/04/image.png) Azure Portal - Click "Add diagnostic setting". ![Azure Portal - Diagnostic settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/04/image-1.png) Azure Portal - Diagnostic settings - Give the setting a relevant name. ![Azure Portal - Diagnostic settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/04/image-2.png) Azure Portal - Diagnostic settings - Choose log categories and metrics to collect. ![Azure Portal - Diagnostic settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/04/image-3.png) Azure Portal - Diagnostic settings - Select the destination or destinations. ![Azure Portal - Diagnostic settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/04/image-4.png) Azure Portal - Diagnostic settings - Save the settings. ![Azure Portal - Diagnostic settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/04/image-5.png) Azure Portal - Diagnostic settings ### Automation tip Not everyone likes to use the Azure Portal to configure resources and settings, and best practice does say that using [Infrastructure as Code (IaC)](https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools/) is the best way to manage resources. If you are trying to configure the diagnostic settings through IaC but your unsure of the log or metric options you can come into the Azure Portal and walk through configuring the setting and then clicking on “JSON View” in the right hand corner and it will show you the category names of each log or metric you can then use in your IaC. ![Azure Portal - Diagnostic settings JSON View](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/04/image-6.png) Azure Portal - Diagnostic settings JSON View ### Best Practices for Azure Diagnostic Settings - **Enable diagnostics for key resources** – Ensure diagnostics are turned on for critical services, particularly those related to security, such as Key Vault, Azure Firewall, and Virtual Machines. Logging is essential for incident investigation and meeting compliance requirements. - **Leverage Log Analytics for insights** – Direct logs to Azure Monitor Log Analytics to perform structured queries, build dashboards, and configure alerts using [Kusto Query Language (KQL)](https://www.techielass.com/tag/kusto). - **Be selective with log collection** – Avoid capturing everything to prevent unnecessary storage costs and excessive noise. Focus on logs related to security, performance, and system availability. ### Conclusion We have walked through the process of enabling the Azure Monitor diagnostic settings within the Azure Portal. By enabling this setting, you ensure that critical logs are sent to the appropriate destinations. ### Terraform Data Sources: What They Are & How to Use Them Effectively URL: https://www.techielass.com/terraform-data-sources/ Last updated: 2025-05-27T07:01:36.000Z [Terraform](https://www.techielass.com/tag/teraform) is an [Infrastructure as Code (IaC) tool](https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools/) that allows you to define, manage, and provision cloud resources efficiently. While Terraform is often used to create and modify resources, sometimes you need to retrieve information about existing infrastructure, whether it's managed by Terraform or provisioned externally. This is where data sources come in. In this blog, we’ll explore what data sources are, how they differ from Terraform variables and resources, and how to use them effectively in your configurations. ## What is a data source in Terraform? Data sources in Terraform allow you to dynamically retrieve information about existing infrastructure, whether it is managed within Terraform or provisioned externally. Data sources enable Terraform configurations to reference real-time data about cloud resources, services, or other dependencies without directly creating or modifying them. This is particularly useful when integrating Terraform with pre-existing environments, reusing shared infrastructure components, or querying dynamic attributes that may change over time. By leveraging data sources, you can ensure your configurations remain flexible, adaptable, and aligned with the current state of your infrastructure. ## What is the difference between Terrafrom variables and data sources in Terraform? Terraform variables and data sources serve different purposes within the infrastructure provisioning workflow. Variables are used to parameterise your Terraform configurations, they allow you to define reusable values. This allows you to configure different environments easily by having a centralised place where you can change values easily. Data sources are used to retrieve information that you can incorporate into your configuration. Data sources query for information they don’t change or move resources under Terraform management. ## Are Terraform resources and data sources in Terraform the same? Within Terraform, resources represent the infrastructure components that we want to create, update or delete. A resource could be a virtual machine, a database, a storage account or more. Data sources are used to retrieve information that you can incorporate into your configuration. Data sources query for information they don’t change or move resources under Terraform management. ## Terraform data sources vs locals Local variables within Terraform are used to store and reuse values within your Terraform configuration. They allow you to keep your configuration DRY (Don’t Repeat Yourself) by defining a value in one and then referencing it in multiple locations. Data sources are used to retrieve information that you can incorporate into your configuration. Data sources query for information they don’t change or move resources under Terraform management. 💡 Check out my other Terraform blogs: \- [What are Terraform modules](https://www.techielass.com/what-are-terraform-modules/) \- [Introduction to Terraform outputs](https://www.techielass.com/introduction-to-terraform-outputs/) ## How to use data sources in Terraform To use a data source and query information, use the following syntax: ```terraform data “provider_type” { #Configuration options } ``` In that syntax, the “provider\_type! Would be the type of object we want to query. And the name is something we define so we can refer to them elsewhere in the configuration. Within the resource block section, we can define options that help us filter conditions so we can fetch the data we need. An example would be: ```terraform data "azurerm_log_analytics_workspace" "observability_log_analytics_workspace" { name = “laworkspace” resource_group_name = “rgobservability” } ``` Here, I am fetching data about an Azure Log Analytics Workspace. I’ve told the Terraform configuration its name and the resource group it currently resides in. Once the data source is defined, you can use it within resources like any other variable. For instance, the following resource configuration enables diagnostic logging for an Azure Communication Service and sends logs to the queried Log Analytics Workspace: ```terraform # Turn on logs being sent to a Log Analytics Workspace resource "azurerm_monitor_diagnostic_setting" "acs-logs" { name = var.diagnostic_name target_resource_id = data.azurerm_communication_service.acs log_analytics_workspace_id = data.azurerm_log_analytics_workspace.observability_log_analytics_workspace.id log_analytics_destination_type = "Dedicated" enabled_log { category = "EmailSendMailOperational" } metric { category = "AllMetrics" } } ``` ## Refreshing data sources Terraform will refresh data sources before creating a plan. So you don’t necessarily need to refresh them manually; however, if you would like to, then you can use the[ \-refresh-only flag](https://www.techielass.com/how-to-use-terraform-refresh-only-to-prevent-state-drift-and-ensure-accurate-resource-management) along with Terraform plan or Terraform apply. ## Conclusion Terraform data sources are a great feature that allows you to dynamically retrieve information about existing infrastructure without making changes to it. By leveraging data sources, you can create more flexible, reusable, and scalable configurations that adapt to real-world environments. Whether you are integrating with pre-existing cloud resources, avoiding hardcoded values, or ensuring consistency across multiple deployments, data sources help you build smarter and more efficient Terraform code. Now that you have a solid understanding of how data sources work, try incorporating them into your Terraform projects to streamline your infrastructure management. ### Deploy Azure Communication Services (ACS) with Terraform URL: https://www.techielass.com/deploy-azure-communication-services-with-terraform/ Last updated: 2025-05-20T07:01:57.000Z Azure Communication Services (ACS) is an API communication service inside Azure that can help you send voice, video, chat, text messaging/SMS, email and more. In this guide, I’ll walk you through the steps to set up [Azure Communication Services (ACS)](https://www.techielass.com/high-volume-email-vs-azure-communication-services) with a custom domain using [Terraform](https://www.techielass.com/tag/terraform/). This process involves configuring Azure DNS, verifying your domain, and ensuring your domain is properly linked to ACS for seamless email communication. ## Pre-requisites - An Azure account - Terraform installed on your local machine - A code editor such as [Visual Studio Code](https://code.visualstudio.com/?ref=techielass.com) - An Azure DNS zone deployed for an external domain name To be able to send emails from Azure Communications Services (ACS), you need to associate a domain. You can select one that Azure spins up for you, or you can use an existing one you have hosted within an Azure DNS zone or another DNS provider. For this Terraform example, I am using an existing domain I have, which is hosted within an Azure DNS zone. You can, of course, modify the code to suit your needs. ## Terraform configuration I have split my Terraform configuration to deploy Azure Communication Services (ACS) into three files: - **Main.tf:** This holds my resource configuration. - **Variables.tf:** This holds any variables I need to populate and pull into my main.tf file. - **Providers.tf:** This lists my Terraform configuration and the providers I am using to deploy my resources. Below is my providers.tf file: ```terraform ## # Terraform Configuration ## terraform { required_version = ">= 1.10.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = ">= 3.71, < 5.0.0" } random = { source = "hashicorp/random" version = ">= 3.5.1, < 4.0.0" } azapi = { source = "Azure/azapi" version = ">= 2.2.0, < 3.0.0" } } } provider "azapi" { # Configuration options } provider "azurerm" { features {} subscription_id = "xxx-xxx-xxx-xxx" } ``` Below is my variables file: ```terraform ## # Variables ## ## # Common Variables ## variable "tag_environment" { type = string default = "Testing" } variable "tag_project" { type = string default = "AzureCommunicationServices" } variable "tag_creator" { type = string default = "TechieLass" } ## # Domain Variables ## variable "ttl_setting" { description = "The TTL setting for the DNS records" type = number default = 3600 } variable "custom_domain" { description = "The custom domain for the email communication service" type = string default = "ctrlaltscots.info" } variable "custom_domain_rg" { description = "The resource group for the custom domain" type = string default = "rg-lzpt" } ## # Communication Variables ## variable "acs_name" { description = "Name of the ACS service to be deployed." type = string default = "techielass-acs" } variable "data_location" { description = "The location of the email data." type = string default = "UK" # Or use Africa, Asia Pacific, Australia, Brazil, Canada, Europe, France, Germany, India, Japan, Korea, Norway, Switzerland, UAE, UK, usgov or United States as needed. } ``` Below is my main.tf file: ```terraform # This ensures we have unique CAF compliant names for our resources. module "naming" { source = "Azure/naming/azurerm" version = "0.3.0" } locals { azure_regions = [ "ukwest", "westeurope", "francecentral", "swedencentral" # Add other regions as needed ] } # This picks a random region from the list of regions. resource "random_integer" "region_index" { max = length(local.azure_regions) - 1 min = 0 } # This is required for resource modules resource "azurerm_resource_group" "rg" { location = local.azure_regions[random_integer.region_index.result] name = module.naming.resource_group.name_unique tags = { Environment = var.tag_environment Project = var.tag_project Creator = var.tag_creator } } resource "azurerm_communication_service" "acs" { name = var.acs_name resource_group_name = azurerm_resource_group.rg.name data_location = var.data_location } resource "azurerm_email_communication_service" "acsemail" { name = "${module.naming.resource_group.name_unique}-email" resource_group_name = azurerm_resource_group.rg.name data_location = var.data_location } resource "azurerm_email_communication_service_domain" "acsdomain" { name = var.custom_domain email_service_id = azurerm_email_communication_service.acsemail.id domain_management = "CustomerManaged" } # Create a TXT record for domain verification in the DNS zone resource "azurerm_dns_txt_record" "domain" { count = 1 name = "@" zone_name = var.custom_domain resource_group_name = var.custom_domain_rg ttl = var.ttl_setting # Add the TXT record for domain verification record { value = element(azurerm_email_communication_service_domain.acsdomain.verification_records[0].domain[*].value, count.index) } # Add record for SPF Verification record { value = element(azurerm_email_communication_service_domain.acsdomain.verification_records[0].spf[*].value, count.index) } # Ensure the ACS Email service & Azure DNS serviec has been deployed before creating these records depends_on = [azurerm_email_communication_service_domain.acsdomain] } # Create a CNAME record for DKIM verification in the DNS zone resource "azurerm_dns_cname_record" "dkim" { count = 1 name = element(azurerm_email_communication_service_domain.acsdomain.verification_records[0].dkim[*].name, count.index) zone_name = var.custom_domain resource_group_name = var.custom_domain_rg ttl = element(azurerm_email_communication_service_domain.acsdomain.verification_records[0].dkim[*].ttl, count.index) record = element(azurerm_email_communication_service_domain.acsdomain.verification_records[0].dkim[*].value, count.index) # Ensure the ACS Email service & Azure DNS serviec has been deployed before creating these records depends_on = [azurerm_email_communication_service_domain.acsdomain] } # Create a CNAME record for DKIM2 verification in the DNS zone resource "azurerm_dns_cname_record" "dkim2" { count = 1 name = element(azurerm_email_communication_service_domain.acsdomain.verification_records[0].dkim2[*].name, count.index) zone_name = var.custom_domain resource_group_name = var.custom_domain_rg ttl = element(azurerm_email_communication_service_domain.acsdomain.verification_records[0].dkim2[*].ttl, count.index) record = element(azurerm_email_communication_service_domain.acsdomain.verification_records[0].dkim2[*].value, count.index) # Ensure the ACS Email service & Azure DNS serviec has been deployed before creating these records depends_on = [azurerm_email_communication_service_domain.acsdomain] } # Initiate Domain Verification # API: https://learn.microsoft.com/en-us/rest/api/communication/resourcemanager/domains/initiate-verification?view=rest-communication-resourcemanager-2023-03-31&tabs=HTTP resource "azapi_resource_action" "validate_domain" { count = 1 type = "Microsoft.Communication/emailServices/domains@2023-03-31" action = "initiateVerification" resource_id = azurerm_email_communication_service_domain.acsdomain.id body = { verificationType = "Domain" # or use "SPF", "DKIM", "DMARC", "DKIM2" as needed } depends_on = [azurerm_dns_txt_record.domain] } # Initiate SPF Verification # API: https://learn.microsoft.com/en-us/rest/api/communication/resourcemanager/domains/initiate-verification?view=rest-communication-resourcemanager-2023-03-31&tabs=HTTP resource "azapi_resource_action" "validate_spf" { count = 1 type = "Microsoft.Communication/emailServices/domains@2023-03-31" action = "initiateVerification" resource_id = azurerm_email_communication_service_domain.acsdomain.id body = { verificationType = "SPF" # or use "SPF", "DKIM", "DMARC", "DKIM2" as needed } depends_on = [azapi_resource_action.validate_domain] } # Initiate DKIM Verification # API: https://learn.microsoft.com/en-us/rest/api/communication/resourcemanager/domains/initiate-verification?view=rest-communication-resourcemanager-2023-03-31&tabs=HTTP resource "azapi_resource_action" "validate_dkim" { count = 1 type = "Microsoft.Communication/emailServices/domains@2023-03-31" action = "initiateVerification" resource_id = azurerm_email_communication_service_domain.acsdomain.id body = { verificationType = "DKIM" # or use "SPF", "DKIM", "DMARC", "DKIM2" as needed } depends_on = [azapi_resource_action.validate_spf] } # Initiate DKIM2 Verification # API: https://learn.microsoft.com/en-us/rest/api/communication/resourcemanager/domains/initiate-verification?view=rest-communication-resourcemanager-2023-03-31&tabs=HTTP resource "azapi_resource_action" "validate_dkim2" { count = 1 type = "Microsoft.Communication/emailServices/domains@2023-03-31" action = "initiateVerification" resource_id = azurerm_email_communication_service_domain.acsdomain.id body = { verificationType = "DKIM2" # or use "SPF", "DKIM", "DMARC", "DKIM2" as needed } depends_on = [azapi_resource_action.validate_dkim] } # Association of the Email Domain with the Communication Service resource "azurerm_communication_service_email_domain_association" "email_domain_association" { communication_service_id = azurerm_communication_service.acs.id email_service_domain_id = azurerm_email_communication_service_domain.acsdomain.id depends_on = [azapi_resource_action.validate_dkim2] } ``` All of these files are stored within one directory. You can find a copy of the code on GitHub here: [https://github.com/weeyin83/terraform-acs-deployment-private/tree/main/acs-deployment](https://github.com/weeyin83/terraform-acs-deployment-private/tree/main/acs-deployment?ref=techielass.com) ## Terraform configuration files explained Let’s explore why I’ve got all the various lines within my files. ### **Providers.tf** In my provider.tf file I have a terraform block which defines the required Terraform version and providers that I need for this deployment. I’ve specified that I want to use Terraform version 1.10.0 or newer. I’ve said I need the *azurerm* provider, which is the Azure provider and helps to manage Azure resources. I’ve said I want to use version 3.71 or newer but below 5.0\. I’ve also said I want to use the *random* provider, which is used to generate random values, and I’ve said I want to use version 3.5.1 or newer but below 4.0\. And I’ve also said I need to use the *azapi* provider, which allows me to access the Azure API for deploying resources. And I’ve said I want to use version 2.2.0 or newer but below 3.0\. Within the provider block of this file, I have not specified any configuration options for the *azapi* provider, but I have specified my Azure subscription ID within the *azurerm* provider block, as that is necessary. ### **Variables.tf** Within the variables file, I have included information I need to input into my main Terraform file to help with deployment. I’ve split it up into three sections: variables that are generic, variables that relate to the existing Azure DNS zone that is deployed and then variables that will be used to create the new Azure Communication Services resources. Within the “Comm Variables” section, I have defined tags that are applied to the resource group to help me identify what environment this is for, the project the resources support and the creator. You can change the tag names, uses and definition to suit how you tag your resources. Within the “Domain Variables” section we have: - **ttl\_setting**: This variable defines the TTL (Time to Live) setting for the DNS records. It's a number and has a default value of 3600 seconds (1 hour). - **custom\_domain**: This variable is for specifying the custom domain to be used by the email communication service. - **custom\_domain\_rg**: Specifies the Azure resource group where my Azure DNS zone is deployed. Within the “Communication Variables” section we have: - **acs\_name**: This defines the name of the Azure Communication Services (ACS) service that will be deployed. - **data\_location**: This variable sets the location of the email data. You can specify Africa, Asia Pacific, Australia, Brazil, Canada, Europe, France, Germany, India, Japan, Korea, Norway, Switzerland, UAE, UK, usgov or United States as needed. You can modify this file to match your requirements. ### **Main.tf** This is the Terraform configuration deployment file. In the first section, I am calling the Azure naming module and have defined a local variable block. By calling the Azure naming module I ensure that resources follow an Azure Cloud Adoption Framework (CAF) compliant naming convention where possible. My local variable section defines which Azure regions I am happy for the resources to be created in and later on I use a random\_integer resource to select which one randomly. 💡 You can find which Azure resources can use the naming module to create CAF compliant names within the official documentation here: [Azure/naming/azurerm | Terraform Registry](https://registry.terraform.io/modules/Azure/naming/azurerm/latest?ref=techielass.com) The next part of the file is in place to create the resource group that we will ultimately deploy our resources into. The region is randomly selected, tags are applied and the name is created using the naming module. In the next section we’re starting to create the Azure Communication Services components. We first create the Azure Communication Services resource itself, and then we deploy the email service that’s associated with the ACS resource. As part of this deployment, I also associated the existing Azure DNS domain to the email services component. The next thing that Terraform creates as part of this deployment is several DNS records to verify the domain and configure email authentication for Azure Communication Services (ACS). These records ensure ACS can send emails on behalf of your domain while maintaining security and compliance. The key DNS records are: - **TXT Record (Domain Verification)** – Confirms domain ownership by adding a Microsoft-provided token to DNS. ACS checks this record to verify control over the domain. - **SPF Record (Sender Policy Framework)** – Specifies authorised mail servers to prevent spoofing. Without this, emails sent via ACS might be flagged as spam. - **CNAME Records (DKIM - DomainKeys Identified Mail)** – Enables cryptographic signing of emails to verify authenticity and prevent tampering. ACS requires two CNAME records pointing to Microsoft’s DKIM servers. Once the required DNS records are created, we need to ensure they are correctly set up and accessible. Azure Communication Services (ACS) requires verification of these records before the email service can function properly. This Terraform configuration triggers the verification process using Azure’s API. Each azapi\_resource\_action block calls the initiateVerification API to verify our TXT, SPF and CNAME records. Also written into the Terraform are [depends\_on statements](https://www.techielass.com/how-to-use-terraform-depends-on) to help enforce the correct order of execution, ensuring that each step completes before moving to the next. Without this verification step, ACS cannot confirm domain ownership, and emails sent through the service may fail authentication or be marked as spam. The final step in the deployment is to formally link the verified domain to the Azure Communication Services (ACS) email service. While we’ve already created DNS records and verified them, ACS still needs to recognize the domain as an authorized sender for email communications. Without this step, ACS would not be able to send emails from the configured domain, as the domain would not be recognized as a valid sender. By completing this association, ACS can securely and reliably send emails on behalf of your domain, ensuring compliance with authentication standards like SPF, DKIM, and DMARC. And this completes the deployment configuration. If you deploy this via Terraform you will end up with resources like below. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/03/acsdeployment.png) ## Deployment You can now take this Terraform code and deploy it using your usual Terraform workflow. If you need guidance on deploying Terraform using CI/CD tools, check out my guides: - [Using Azure Workload Identity Federation (OIDC) with Azure DevOps to deploy Terraform](https://www.techielass.com/using-azure-workload-identity-federation-oidc-with-azure-devops-to-deploy-terraform-2/) - [Terraform with GitHub Actions CI/CD Pipeline](https://www.techielass.com/terraform-with-github-actions-ci-cd-pipeline/) If you're new to Terraform and need a beginner-friendly guide on deploying Azure resources, you might find this helpful: - [Deploy Azure Resources with Terraform](https://www.techielass.com/deploy-azure-resources-with-terraform/). ## Conclusion This Terraform deployment enables you to provision Azure Communication Services (ACS) along with its email service and the necessary DNS records. Once deployed, you’ll be able to send emails through the service. Looking ahead, I plan to explore ways to enhance monitoring and security for ACS. Stay tuned for future posts on these improvements—be sure to subscribe so you don’t miss out! ## Sign up for Techielass - A blog by Sarah Lean Technical…Practical…From A Scottish Lassie Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### How to use Terraform refresh-only to prevent state drift and ensure accurate resource management URL: https://www.techielass.com/how-to-use-terraform-refresh-only/ Last updated: 2025-05-13T07:01:15.000Z Terraform relies on a state file to manage the infrastructure it manages. This state file acts as a source of truth, mapping real-world resources to the configurations defined in Terraform. By maintaining this state, Terraform can determine what changes need to be applied without recreating resources unnecessarily. However, there are times when infrastructure isn’t always modified through Terraform. Changes can be made directly in the infrastructure interfaces, through PowerShell, CLI, etc and this can be what is called state drift. State drift occurs when the actual infrastructure differs from what Terraform expects. This can lead to unexpected behaviours when new changes are applied via Terraform. To address this, Terraform provides a way to refresh its state by checking the current status of resources and updating the state file accordingly. In this blog post, we will explore how Terraform handles state refresh, including the -refresh-only flag, and the key considerations when updating your Terraform state file. ## What is Terraform refresh-only? If your Terraform state drifts because changes are made outside of your Terraform configuration, it’s important to make sure you refresh your state file to check the status of resources and update it accordingly so you can move forward with future changes. Terraform can refresh your state file; this was previously done with the *terraform refresh* command. However, as of Terraform 0.15.4, this command has been deprecated due to concerns about unintended state modifications and lack of user control over changes. Instead, Terraform has introduced the command *terraform plan -refresh-only* or *terraform apply -refresh-only*. With this approach, you can run the *terraform plan -refresh-only* you can see the plan showing exactly what Terraform detects as different in the infrastructure compared to its current state. You can review these differences before deciding whether to apply them. In contrast, the old terraform refresh command would immediately update the state file without showing you the changes first, potentially leading to unexpected updates that were difficult to track. Terraform follows a plan-and-apply model to minimise surprises. The -refresh-only flag fits into this model by ensuring that state updates are treated like a change, requiring user approval just like any infrastructure modification. This structured approach is particularly useful in team environments or [CI/CD pipelines](https://www.techielass.com/ci-cd-pipeline-tools/), where unintended state changes can lead to confusion or conflicts. ## How to use Terraform refresh-only Before running any commands, ensure that Terraform is initialised and has access to the state file by running the command: terraform init Then run the following command to compare the current infrastructure with the state file by running:Terraform plan -refresh-only This command checks for differences between the expected configuration and the actual deployed resources. You can see in the example screenshot below when I run the command it’s compared what the settings should be against what I have within my live Azure environment and highlights some changes. ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeDs-OVcWiCwEKegyDjZO3QF83R8HcLZMvpVQA5s7gTrH8KygtRLWt8QAWkVveB4EtpBILqm2R7hWdX5bKDl5PQ3mW6CHZoYW5pnF6PS36zdm9FkqIatT1JhP5RHHhDqw3Z6DUrIw?key=HU988tz1eB9W3j1oOQeAvwtB) To update the Terraform state file without modifying any resources, run: Terraform apply -refresh-only This refreshes the state file to reflect the actual environment, ensuring that future Terraform changes are based on the correct resource configurations. This is particularly useful before making further updates to your resources, as it prevents unintended modifications due to outdated state data. ## Best practices for using Terraform refresh-only Here are some best practices that I have started incorporating into my Terraform workflow: - **Run terraform plan -refresh-only before every apply**, this helps to flag up any issues with drift and prepare me to update my state file if needed before making any resource modifications. - **Review changes before applying**, if any changes are flagging up I make sure I review the changes before updating my state to understand why the changes have occurred. ## Conclusion The -refresh-only flag is an important one that you should be aware of to ensure your Terraform state files are kept up to date and help to prevent any unintended changes to your resources. ### Azure Local Solution Categories explained: Validated Nodes, Integrated Systems, and Premier Solutions URL: https://www.techielass.com/azure-local-solution-categories-explained/ Last updated: 2025-05-06T07:01:33.000Z Microsoft launched Azure Local (formerly Azure Stack HCI) in December 2020, the launch marked a new operating system (OS) specifically designed for hyper-converged infrastructure (HCI) enabling organisations to run virtualisation workloads on-premises while integrating Azure services for hybrid cloud capabilities. The rename from Azure Stack HCI to Azure Local happened in November 2024\. When evaluating an Azure Local deployment, it’s important to understand the three main solution categories available: **Validated Nodes**, **Integrated Systems**, and **Premier Solutions**. Each offers different levels of integration, flexibility, and support. In this article, we’ll break down the differences to help you choose the best fit for your environment. ### What is Azure Local? Azure Local is a hybrid infrastructure solution that allows you to run virtual machines and container workloads on-premises while seamlessly connecting to Azure services. It’s built on a purpose-specific operating system designed for hyper-converged infrastructure (HCI), enabling organisations to modernise their data centres, extend their cloud capabilities, and maintain control over data locality. Whether you're running workloads in a branch office, data centre, or edge environment, [Azure Local](https://www.techielass.com/tag/azure-local/) helps bridge the gap between on-premises and the cloud. ![Azure Local](https://lh7-rt.googleusercontent.com/docsz/AD_4nXc0LJbjJiieWFZrfl2fXHd6NwsOq_5berBbutHsriLMg7YiWa_0MhWMz6KP30S9ACtM-viZWbFWj8oRu0yalUO5WS8JsQ_KqoXnC0mJp393WI4RA5ddARosS2Zs33B3XpW9_78Pcw?key=2qfhBn4gFQvXpmsq3a5CcSau) Azure Local ### Understanding Azure Local’s Solution Categories: Premier, Integrated, and Validated When you look at purchasing Azure Local there are three distinct solution categories to suit different needs and levels of integration: premier solutions, integrated systems or validated nodes. While they all provide a path to hybrid infrastructure, they differ in how much is pre-integrated, how updates are managed and how flexible your deployment can be. ### What are validated nodes for Azure Local? Validated nodes give you the most flexibility. You can choose to purchase a complete setup from a hardware vendor, or build your own using individual components from the validated list. For example, if you have a spare server sitting in a cupboard but the network card isn’t on the Azure Local validated component list, you can simply swap it out for one that is. Once all components meet the requirements, you’ve got yourself a validated node ready for an Azure Local deployment. You're in full control with a validated node, the hardware, deploying the software, managing firmware, driver updates and keeping the Azure Local operating system up to date. For some end users this option might be daunting but for experienced IT teams or service providers who want a tailored experience this is a great option. ### What are integrated systems for Azure Local? With integrated systems you have hardware that has been validated by the hardware vendor and Microsoft as being compatible and working with Azure Local. And this validation happens anywhere between 2 and 4 times a year. You get a solution that is tested and supported, but you may need to do a bit more work to apply firmware or driver updates for the hardware before applying any software updates. One of the advantages of the integrated system is the integrated support queues between Microsoft and the hardware vendor. This means if you have an issue with your Azure Local deployment you can log a ticket with Microsoft who will help to triage it, and if it’s a hardware fault they will work with you and the hardware vendor. And vice versa you could log the ticket with your hardware vendor and if they discover the issue is software related they can work with you and Microsoft to resolve it. This avoids the need for you to log two tickets. The integrated system option gives you the reassurance of a validated setup but one still gets you some flexibility. ### What are Premier Solutions for Azure Local? With the premier solutions you are getting the most integrated, streamlined path to deploy and manage Azure Local. There is a close partnership with the hardware vendors and Microsoft from the operating system, drivers, firmware and management tools. The two teams are constantly talking and ensuring everything works together seamlessly. Updates for hardware and software are delivered in a coordinated way, reducing the risk of compatibility issues and also ensuring it’s a straightforward one step process to deploy those updates. The premier solution also has the advantage of the integrated support queues between Microsoft and the hardware vendor. You also have proactive call-home support services available which could automatically alert Microsoft or the hardware vendor of faults. Microsoft partners already offer more than 100 Azure Local solutions in the [Azure Local catalog](https://azurelocalsolutions.azure.microsoft.com/?ref=techielass.com#/catalog). ### Choosing the right solution category It’s important to pick the right solution category for your needs and budget. In very simplified terms you can look at the three options like this: - **Validated** \= DIY and customisable - **Integrated** \= Balance of control and support - **Premier** \= Turnkey, enterprise-ready solution You can compare the different solution categories [here](https://azurelocalsolutions.azure.microsoft.com/?ref=techielass.com#/Learn). ![Azure Local solution categories](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/04/image-8.png) Azure Local solution categories ### Conclusion Azure Local offers a flexible and modern path to hybrid infrastructure, and choosing the right solution category is key to a successful deployment and experience. Whether you need full control or a balanced approach or a full turnkey solution there is an option to suit your business goals, skills and budget. Take time to explore the [Azure Local catalog](https://azurelocalsolutions.azure.microsoft.com/?ref=techielass.com#/catalog) and speak to your hardware partner or Microsoft representative to explore options and find the right fit for you. ### Terraform Dependencies: Implicit vs. Explicit Explained URL: https://www.techielass.com/terraform-dependencies-implicit-explicit/ Last updated: 2025-04-29T07:01:28.000Z When you are creating resources through [Infrastructure as Code (IaC)](https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools/) either you or our coding tool have to understand how each resource needs to be created. Which order to deploy them in so they all deploy correctly. There are two ways of handling this challenge, implicit and explicit dependencies. In this blog post we’ll define what those two types of dependencies are, show you examples and share some best practices and common pitfalls. ## What are Terraform dependencies? In [Terraform](https://www.techielass.com/tag/terraform/), dependencies define the order in which resources should be created, updated, or destroyed. Since many infrastructure components rely on others (e.g., a virtual machine needing a network to connect to), Terraform must understand these relationships to deploy resources in the correct order. Terraform has a built-in dependency management system that automatically determines the correct order for most resources. However, sometimes Terraform needs additional guidance, which is where explicit dependencies come into play. There are two types of dependencies in Terraform: - **Implicit Dependencies** – Automatically detected when a resource references another resource’s attributes. - **Explicit Dependencies** – Manually defined using the [depends\_on meta-argument](https://www.techielass.com/how-to-use-terraform-depends-on/) when Terraform cannot infer dependencies correctly. ## Implicit dependencies in Terraform An implicit dependency within Terraform is when Terraform automatically detects dependencies when a resource references another resource’s attributes. In the example below Terraform automatically understands that there is a dependency that the resource group needs to be greeted before the virtual network because we’ve referenced the resource group name in our virtual network configuration. ```terraform resource "azurerm_resource_group" "example" { name = "rg-example" location = "UK South" } resource "azurerm_virtual_network" "example" { name = "networking" resource_group_name = azurerm_resource_group.example.name location = azurerm_resource_group.example.location address_space = ["10.0.0.0/16"] } ``` ## Explicit dependencies in Terraform An explicit dependency within Terraform is when Terraform doesn’t detect dependencies correctly and you need to use the depends\_on meta-argument to ensure resources are created in the correct order. In the example below we are making sure Terraform makes absolutely sure that things are created in the right order with our depends\_on. Even though Terraform should be able to figure it out from other references we’re making it crystal clear. ```terraform resource "azurerm_netapp_account" "example" { name = "example-netapp-account" location = azurerm_resource_group.example.location resource_group_name = azurerm_resource_group.example.name } resource "azurerm_netapp_pool" "example" { name = "example-netapp-pool" location = azurerm_resource_group.example.location resource_group_name = azurerm_resource_group.example.name account_name = azurerm_netapp_account.example.name service_level = "Premium" size_in_tb = 4 depends_on = [azurerm_netapp_account.example] } resource "azurerm_netapp_volume" "example" { name = "example-netapp-volume" location = azurerm_resource_group.example.location resource_group_name = azurerm_resource_group.example.name account_name = azurerm_netapp_account.example.name pool_name = azurerm_netapp_pool.example.name volume_path = "examplevolume" service_level = "Premium" subnet_id = azurerm_subnet.example.id protocol = "NFSv4.1" depends_on = [ azurerm_netapp_account.example, azurerm_netapp_pool.example ] } ``` ## Common pitfalls and best practices Implicit dependencies should be your first port of call in Terraform since they are automatically detected and Terraform handles the ordering and deployment for you. To minimise potential issues: - Always document why you’ve included an explicit dependency in your code so others looking at your code can understand why it was included. - Try to use implicit dependencies as much as possible and avoid over use of explicit dependencies as it can add in complexity when it is not needed. - Think about how you write your code, sometimes organising your resources into modules can help management dependencies more efficiently. - Remember to run *terraform plan* before applying changes as this can help detect any misconfigurations around dependencies. ## Conclusion Terraform can automatically handle dependencies based on resource references but sometimes it needs help and you have to manually build dependencies into your code using the depends\_on meta-argument. However, if you understand the concepts of implicit and explicit dependencies you can help to build smoother Terraform deployments and more robust infrastructure. ### Terraform depends_on: What it is, When to use it, and Best Practices URL: https://www.techielass.com/how-to-use-terraform-depends-on/ Last updated: 2025-04-22T07:01:41.000Z When working with [Terraform](https://www.techielass.com/tag/terraform/), managing resource dependencies effectively is key to avoiding deployment issues. Terraform is great at automatically determining the order of resource creation, but sometimes it needs a little help, this is where depends\_on comes in. In this guide, we’ll explain Terraform depends\_on, how to use it, when to use it, and best practices for writing clean and efficient Terraform code. ## What is Terraform depends\_on? Terraform’s depends\_on is a meta-argument that allows you to specify an explicit relationship between resources. When you use it you can enforce an order in which resources should be created or updated. When you configure Terraform, it analyses its dependency graph to understand the relationships between different resources. This graph helps Terraform determine the order in which resources should be created, updated, or destroyed. But, this might not always be enough when you are dealing with complex or non-obvious relationships between resources. This is where the Terraform depends\_on meta-argument can be used to add explicit dependencies. ## How to use depends\_on in Terraform Using the depends\_on meta-argument in Terraform is straightforward. Here is an example of syntax: ```terraform resource "azure_resource_type" "resource_name" { #resource configuration depends_on = [azure_resource_type.dependent_resource_name] } ``` A bit more of a working example would be: ```terraform resource "azurerm_resource_group" "example" { name = "example-rg" location = "East US" } resource "azurerm_storage_account" "example" { name = "examplestoracct" resource_group_name = azurerm_resource_group.example.name location = azurerm_resource_group.example.location account_tier = "Standard" account_replication_type = "LRS" } resource "azurerm_virtual_machine" "example" { name = "example-vm" resource_group_name = azurerm_resource_group.example.name location = azurerm_resource_group.example.location network_interface_ids = [] vm_size = "Standard_B1s" depends_on = [azurerm_storage_account.example] } ``` *Now in the example above you don't necessarily need to ensure the storage account to be created before the virtual machine, but you may have a specific use case for doing this.* Remember that the depends\_on meta-argument will accept a list of resources, enabling you to tell the Terraform code that multiple dependencies exist. ## When to use depends\_on in Terraform You should only really use the depends\_on within your Terraform code when the implicit dependencies are not enough. Here are some situations where the depends\_on will make sense: - Sometimes resources take a long time to fully provision, you can use the depends\_on to help you manage this timing issue. - When working with Terraform provisioners (like local-exec and remote-exec) run scripts or commands during deployment. Terraform doesn’t track script execution state so depends\_on may help ensure things are deployed in the correct order. - Terraform modules may not always recognise dependencies between separate module calls, you can use depend\_on to force execution order. ## Best practices for Terraform depends\_on The depends\_on meta-argument is a powerful tool, however, overuse or incorrect use of it can lead to complications in your Terraform configurations. Here are some best practices to consider when working with it: - Rely on implicit dependencies whenever possible, only resort to depends\_on when there is no other viable option. - When you do use the depends\_on option, make sure you document why so other team members, or you at a later date understand why it’s there and can avoid adding in unintended complexity. - Be sure to check during version upgrades or providers or modules if any changes affect the implicit or explicit dependencies, as sometimes updates can lead to unexpected behaviour in your code. - Best sure to test any dependencies you implement into your code and ensure it causes no issues. ## Conclusion Terraform’s depends\_on meta-argument is a useful tool when implicit dependencies aren’t enough, ensuring that resources are created in the right order. By following best practices, such as relying on implicit dependencies where possible, documenting explicit dependencies, and testing your configurations, you can keep your Terraform code clean, efficient, and maintainable. Use depends\_on wisely, and your Terraform deployments will be more reliable and predictable—helping you avoid unnecessary complexity and troubleshooting headaches. ### Microsoft 365 vs. Azure: Choosing the Right Service for High-Volume Emails URL: https://www.techielass.com/high-volume-email-vs-azure-communication-services/ Last updated: 2025-10-09T07:58:56.000Z Sending high-volume emails is common for large organisations. They need to reach employees, customers, or both. Some use mailing services like [Mailchimp](http://mailchimp.com/?ref=techielass.com), SendGrid, or MailerLite. Others prefer to handle bulk emails in-house. If your organisation uses Microsoft 365, recent changes may affect you. Microsoft has introduced new restrictions on high-volume emails to improve security and system stability. As a result, many businesses are rethinking their email strategy. In this article, I’ll explore two Microsoft solutions for high-volume email: - High Volume Email (HVE) – A built-in option within [Microsoft 365](https://www.techielass.com/tag/microsoft-365/). - [Azure](https://www.techielass.com/tag/azure/) Communication Services (ACS) – A cloud-based alternative for large-scale email campaigns. Let’s dive in. ## High Volume Email (HVE) Service In April 2024 Microsoft introduced the High Volume Email (HVE) service. At the time of writing, it is still in public preview but is expected to become a production service by September 2025\. The HVE service is designed to allow users to send up to 100,000 INTERNAL emails per day per tenant. With the HVE service you do not have the ability to send emails externally. Within your Microsoft 365 tenant, you can create up to 20 HVE accounts, they are mail user accounts, but you should avoid giving any license to your HVE accounts. You might want to set up different HVE accounts for different use cases, for example, one for emails your Human Resources (HR) department sends out, or maybe accounts related to the regional offices you have. It's important to note that HVE is primarily intended for internal communications. For high-volume EXTERNAL email needs, Microsoft recommends using Azure Communication Services (ACS), which is designed to handle large-scale transactional, bulk, and marketing emails to external recipients. ## Azure Communication Services (ACS) Azure Communication Services (ACS) is a multichannel communication API you can use to send voice, video, chat, text messaging/SMS, email and more. This is a service that has been generally available since 2021\. In terms of the email side of things, it is designed to send out large volumes of emails to external recipients. It does have a limit of only being able to send an email to 50 recipients at a time and also the maximum size of the email, including attachments is 10MB. ACS provides REST APIs and SDKs that allow engineers to integrate email functionality into their applications. You can associate domains with Azure Communication Services (ACS) so you can send emails from known domains that your customers will recognise. ACS charges per email sent and also per MB transferred. Each email you send costs $0.00025 and each MB transferred costs $0.00012\. So if you were to send 1,000 emails, each 1MB in size the total cost would be: $0.25 (emails) + $0.12 (data) = $0.37 ## Conclusion Both services have their merits, it’s about understanding your requirements and picking the service that meets your requirements. If you're looking to send emails internal to your organisation, High Volume Email (HVE) in Microsoft 365 is a built-in option. For large-scale external email campaigns, Azure Communication Services (ACS) offers a flexible, API-driven approach that allows organisations to send high volumes of emails from recognised domains at a cost-effective rate. By understanding these differences, you can make an informed decision on which service to use. ### Microsoft Defender for Storage URL: https://www.techielass.com/microsoft-defender-for-storage/ Last updated: 2025-05-25T18:44:34.000Z Ensuring your environment is secure goes beyond just installing an anti-virus security product on your servers. You need to think about protecting your storage, your apps, containers, databases, identity and much more… And you need to pick the right product to protect those workloads. In this article, we’ll explore how Defender for Storage works, its key features, pricing, and how to enable it within the Azure portal. ## What is Microsoft Defender for Storage? Microsoft Defender for Storage is a cloud-native security solution that is designed to protect Azure Storage accounts from various threats. It provides threat detection by analysing data access patterns, scanning for malware and leveraging Microsoft’s threat intelligence. Defender for Storage supports Azure Blob Storage, Azure Files, Azure Data Lake Storage and Azure Queues and Tables. Defender for Storage integrates with Microsoft Defender for Cloud, ensuring you receive security alerts and recommendations to enhance your cloud security posture. ## How Defender for Storage works Defender for Storage provides multiple layers of protection. One of the layers is malware scanning. It scans any files uploaded to Azure Blob storage for known threats and also uses Microsoft’s threat intelligence database to detect and prevent malware distribution. Another layer of protection is **anomaly detection**. Defender for Storage will identify any unusual access patterns that might indicate an insider threat or a cyberattack. It will look for anomalies such as massive file downloads, data exfiltration or repeated failed access attempts. The other area of protection Defender for Storage offers is **threat intelligence integration**, where it leverages Microsoft’s global security insights to detect threats. An example would be if a known malicious IP tries to interact with a storage account. The generated alerts or recommendations are displayed within Microsoft Defender for Cloud and can be integrated into Microsoft Sentinel for automated security responses if necessary. ## Defender for Storage pricing Defender for Storage can be enabled at the resource level or at the subscription level and you do have the ability to exclude specific storage accounts from being included if you wish. Defender for Storage is charged per storage account per month. Currently, the price is $10 per storage account per month (US Dollars). It’s worth noting that malware scanning is an add-on and is charged at $0.15/GB of data scanned. But you can configure a [monthly cap](https://learn.microsoft.com/azure/defender-for-cloud/defender-for-storage-introduction?ref=techielass.com#malware-scanning---billing-per-gb-monthly-capping-and-configuration) so that costs are predictable. ## Enable Defender for Storage with the Azure portal You can enable Defender for Storage at the subscription level or at an individual storage account level. It is recommended you enable it at the subscription level to ensure full coverage within your environment. To enable it at the subscription level follow these steps: - Sign in to the Azure portal. - Navigate to **Microsoft Defender for Cloud** management blade. - Expand **Management** then select **Environment settings**. ![Microsoft Defender for Cloud](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/02/image-5.png) ****Microsoft Defender for Cloud** - Select the subscription for which you want to enable Defender for Storage. - Select the **three dots** on the right and then choose the **Edit settings** option. ![Microsoft Defender for Cloud environment settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/02/image-6.png) ****Microsoft Defender for Cloud** environment settings - On the Defender plans page, locate **Storage** in the list and select **On and Save**. ![Microsoft Defender for Cloud environment settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/02/image-7.png) ****Microsoft Defender for Cloud** environment settings Defender for Storage is now enabled across your subscription, including the malware protection. You can turn this off by going back into settings and turning it off. Any storage accounts that are created after enabling Defender for Storage will be protected up to 24 hours after creation. ## Conclusion Securing your environment requires a well-thought-out strategy and goes beyond traditional anti-virus solutions. Microsoft Defender for Storage provides a cloud-native solution to detect threats, prevent malware, and leverage Microsoft’s threat intelligence to keep your Azure Storage accounts secure. In today’s landscape, choosing the right security tools is essential, and Defender for Storage is a powerful addition to your overall security strategy. ### Dev Container Setup for Hugo URL: https://www.techielass.com/dev-container-setup-for-hugo/ Last updated: 2025-04-02T07:01:09.000Z Imagine a development environment where you never have to worry about mismatched library versions, missing dependencies, or spending hours setting up a new project. [Dev containers](https://www.techielass.com/what-are-dev-containers) in Visual Studio Code (VS Code) are here to make that a reality. These Docker-powered environments are tailored to your codebase, ensuring everything runs smoothly, consistently, and with minimal setup. In this guide, I’ll walk you through the process of setting up a dev container from scratch and setting it up for your [Hugo](https://www.techielass.com/tag/hugo/) project. Let’s get started! ## What are Dev containers in VS Code? Development containers, or dev containers within Visual Studio Code (VS Code), are Docker containers configured to provide a fully featured development environment you can work within. ## What is the point of Dev containers? Dev containers can configured to run an application, to have separate tools, libraries runtimes, dependencies, or whatever is needed to run your codebase. How many times have you worked on a project and had problems trying to set up your laptop to have the right version of a library or runtime and had trouble and wasted hours? If you set up a dev container you can be sure the environment is set up for that codebase, and better yet you can share the dev container with colleagues making their life easier to work on that codebase as well. ## Prerequisites Whether you are a macOS user or a Windows user, you need to have the following installed: - Visual Studio Code (VS Code) - [Dev Containers extension installed](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers&ref=techielass.com) *I have prepared this guide as a Windows user, steps may be different for macOS users.* ## Dev Container Setup In the bottom left-hand corner of VS Code click on the container button. ![VS Code dev container setup](https://lh7-rt.googleusercontent.com/docsz/AD_4nXf6lMD8yWFfErGOpVNChTjpIn-ABk3iA0DJWvPYMTnMYv2yGXdD43VeLQcwJUc9DjY40IGXfoXjBAhfv_56Kl5EHlisrgAZNttlleaw76Li87ICvOMhcRF592bJdVvns_ERmjgB8g?key=EUlqXI37745Y8-dm3LOFBEIM) VS Code dev container setup The setup wizard will pop up at the top of your screen. When it does click on **New Dev Container** ![VS Code dev container setup](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcPH8WchpQREoQ8iafTWJs2tqWiterUJrzbggTvGDCnyUiKy7YHa8ZQal0rCgE3bfDc5Iu4pIL2JvXvkvetK3DJFp2nvEXEsv5QocFgK8POMeUzE1UkEx_qdRRBUU5Zb_h4aAch?key=EUlqXI37745Y8-dm3LOFBEIM) VS Code dev container setup The setup wizard will check if Docker is already installed, if it’s not it will ask if you want to install **Docker within WSL**, say **Install**, as this will install Docker within the Windows Subsystem for Linux. ![VS Code dev container setup](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfpqAWbVbIZLXDaBrkMttuIawPKuSAkDA9Div1YjUBAMJOXx2DoXXWAiHtoh2-Rvjmpur9aOYi2KkkXctcv2tON0vf9P4PUQ9KOayqFu5P5kFlhtBUj3QvrKAxPAUSZfeI6MsYsZw?key=EUlqXI37745Y8-dm3LOFBEIM) VS Code dev container setup Once the installation has been completed, restart your laptop and relaunch VS Code. Click on the button in the button in the left-hand corner of VS Code again. ![VS Code dev container setup](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfd9VyCluLJnpXdVFZPyNQLAONYQfO99WUz84C3P-GcYvOdJpVsRqNvQU0ljmsSNRNKgGWvx6JTVsZ2d4S4bPbs63CF-1PvjNyChcAhnMcjkga3Fa5PIkBw6p6EfnqaVm8QbCc2bg?key=EUlqXI37745Y8-dm3LOFBEIM) VS Code dev container setup The setup wizard will pop up at the top of your screen. When it does click on **New Dev Container** ![VS Code dev container setup](https://lh7-rt.googleusercontent.com/docsz/AD_4nXd_aF1TcUtXn25JuYlnzYSlcvm3vQpfcGNTHSMk4dgsKXJzWf-Pw14hZBpKxz5kAaGlfxg6xI-qElZT2a6hrlSywU1pM99cwlfXDR1AaBLAUXdiSDK4KT-0J01k1cGv10zYSl6E?key=EUlqXI37745Y8-dm3LOFBEIM) VS Code dev container setup The next step is to select the template you would like to use. In this case, I am going to select the **Ubuntu** configuration template. This template already has Git installed. ![VS Code dev container setup](https://lh7-rt.googleusercontent.com/docsz/AD_4nXflJtY7hHM4JwIbuKpVXjyZyh1WIHLiOIS-tYTCYP51EiSgqxqleyS-t7rk1otFaFWueezVcD0iBJ_TF-vR01u6-V2RH-5k_D9_4rAfUy5gogfNUOHEZ_W307dMb1eS_GJ1pEyDRg?key=EUlqXI37745Y8-dm3LOFBEIM) VS Code dev container setup The container will launch and start to set up the necessary parts for it to be usable. When it finishes loading click on the container button in the left-hand corner again. This will pop up the menu again. Be sure to select **Configure Container Features**. We are now going to install Hugo and Go. ![VS Code dev container setup](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcag887ekcfmg7zWlTcBXoXqhBU8ljVp_BUoNJ7-XgBBuFhx6IPBKLeysbqjK4qnXjoQJiv9JDsFRfUYur2Zz9wS7snvT-UltCyPJL8CYpcxfXTqLwlRoQUqdXNyOpDvOXPH-hBWw?key=EUlqXI37745Y8-dm3LOFBEIM) VS Code dev container setup Search for **Go**. There are several options, but I use the official dev containers version. Click **OK.** ![VS Code dev container setup](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdUlJ5EosEj-SbbH5reVltUd2CJgyX_VMXQ0r_ys9MPCW9rT3FIXqvCESMYOyOEzpyDaUMj9FRp5_tAyNWXrnN7GNQ5TjH8fVrDCJWiy1sLQrDj9jemOG1KiFV2fQqYDVO92QZkWA?key=EUlqXI37745Y8-dm3LOFBEIM) VS Code dev container setup You’ll be asked how you want to configure this installation, select **Keep Defaults.** Next search for **Hugo.** There should only be one option, select it and click **OK.** This time you want to select **Configure options.** Select the version you want to install, I always go for the **latest.** Next, you will be asked if you want to install the extended version of Hugo or not, again I always select yes to this as some themes need it. ![VS Code dev container setup](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfGopipt656bpM7LBw3E-YszWJF2VGitnn8KugWoOWnzD42GWS898c44Uh9ZEAPfnRkSSQ_W1jLXEZ8hajc6zIWGIKPUr_PmIm9NqrKvlR_WOnL0Ls_TL6dj8pFwUjMkj1zr0xMJA?key=EUlqXI37745Y8-dm3LOFBEIM) VS Code dev container setup When you’ve selected these options, VS Code will alert you that your container configuration has changed and needs to be rebuilt. Be sure to rebuild it. ## Create Hugo website First of all, we have to create a new site. In the root folder then run: ```bash hugo new site . --force ``` In the project I have created, I have installed Hugo bigspring-light theme. Let’s see how. In the root folder run: ```bash git clone https://github.com/gethugothemes/bigspring-light-hugo themes/bigspring-light ``` And the last step, let’s copy the example content located in *mynewsite/themes/bigspring-light/exampleSite/*. ```bash cp -r themes/bigspring-light/exampleSite/* . ``` We are now ready to build and serve our new site. Let’s run: ```bash hugo server ``` The VS Code dev container will automatically configure any port forwarding for you. *It’s worth noting that this Hugo theme shows the example website at https://ipadress:port/bigspring/site* If we want to automate the building and the serving actions, we can add a **postStartCommand** property, with Hugo server set, to the devcontainer.json file. ```json { "name": "Ubuntu", // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile "image": "mcr.microsoft.com/devcontainers/base:jammy", "features": { "ghcr.io/devcontainers/features/go:1": { "version": "latest" }, "ghcr.io/devcontainers/features/hugo:1": { "extended": true, "version": "latest" } }, "postStartCommand": "hugo server" } ``` In this way, the next time you start the container again, the hugo server command will be run automatically. ## Wrap Up Dev containers in [VSCode](https://code.visualstudio.com/?ref=techielass.com) can be a game changer for engineers working on multiple projects as it offers a consistent, reliable and shareable environment for your individual project. By following this guide, you’ve learned how to set up a dev container from scratch, configure it for a Hugo project, and even automate tasks like building and serving your site. Whether you’re working on a team or solo, dev containers eliminate the headaches of environment mismatches and setup struggles. Plus, the ability to share your container configuration ensures everyone can hit the ground running. Happy coding! ### Azure immutable backups: Protecting your data from ransomware and insider threats URL: https://www.techielass.com/azure-immutable-backups/ Last updated: 2025-03-25T08:01:16.000Z Data protection is a critical aspect of designing any IT system, in the cloud or on-premise. Organisations must take proactive steps to safeguard their backups against threats. One of the most effective ways to ensure backup integrity is by using immutable backups—a solution that prevents data from being altered or deleted within a specified retention period. Whether defending against ransomware, meeting regulatory compliance, or mitigating insider threats, [Azure’s immutable backup vaults](https://learn.microsoft.com/azure/backup/backup-azure-immutable-vault-concept?tabs=recovery-services-vault&ref=techielass.com#restricted-operations) provide an extra layer of security. In this blog, we’ll explore why immutable backups are essential, how they work in Azure, and what operational considerations to keep in mind. ## The importance of immutable backups in cloud security There are a number of reasons that immutable backups can help an organisation and are worth considering. ### Ransomware Protection Immutable backups are a defence mechanism against ransomware attacks, which often involve deleting data or encrypting data to extort victims. With [Azure’s write-once, read-many (WORM)](https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview?ref=techielass.com) storage it enables you to ensure backup data cannot be altered or erased within the set retention period. Alongside general security and identity best practices this helps to ensure that even if attackers infiltrate your environment and gain elevated privileges, they cannot compromise the integrity of immutable backups. ### Regulatory Compliance There are industries that require strict regulations around preserving data in its original form for a long period of time. Azure immutable backups can help meet those requirements. ### Insider Threats There is also the threat of insider threats, which could be malicious or accidental. Employees with access to systems may attempt to modify, delete or misuse backup data, either intentionally or through negligence. Azure immutable backups can provide additional protection by locking data from any changes during the retention period. ## Immutable backup vaults in Azure It’s key to remember that enabling immutability for an Azure vault is a reversible operation. However, you can enable the immutability to be enabled and locked, which is **irreversible**. ### Enabling immutable vaults To enable immutability you can enable it by following these steps: 1. Navigate to the desired vault in the Azure portal 2. Under **Settings,** select **Properties**, then **Immutable vault** and then click on **Settings** ![Enable Azure immutable vaults](https://lh7-rt.googleusercontent.com/docsz/AD_4nXebnxsZSgIv504NToC7Kpz9bwVrnjhFwyFWnwvw8WlX4_mdEDyxkgoF2venNOlpMlM7UH9ctIL7YH0n4PzBKUQNnEZj3VqDbNQgdl9iD1WzpkrTw1llV-t1E9kNqpyuYVPh4XTJAw?key=sJF61U-juQ1vA8aoRj0s6x5a) Enable Azure immutable vaults 1. Check the box to enable immutability for the vault. This setting is reversible. 2. To make immutability permanent, lock the setting. This ensures backups use WORM storage, once this setting is locked immutability cannot be disabled. ![Enable Azure immutable vaults](https://lh7-rt.googleusercontent.com/docsz/AD_4nXefX9mIWQyARU3IVdfeZFfHpdiTLnFyOakGINebanUElCgoFNoEN3t75B-9OVb1buaOSEE9Gacj9qY8rcKws9X40BYGKVDeYrqws0mg_gCkUMEH_7I1Vv8HozVI7OYtI8cG2DP_gg?key=sJF61U-juQ1vA8aoRj0s6x5a) Enable Azure immutable vaults It’s important that you test and validate your configurations before you lock the immutability setting to ensure it aligns with your requirements. As locking the setting can’t be undone. ### Operational restrictions When you enable immutable vaults it imposes restrictions. You can’t decrease retention periods for recovery points, but you can increase retention periods. These controls are there to prevent accidental or unauthorised deletion of backup data while still allowing updates that enhance data preservation. ## Immutable Vault Availability Immutable vault functionality is widely available, however the use of WORM storage for immutable vaults in locked state is currently in [General Availability (GA)](https://www.techielass.com/service-lifecycle/) for Recovery Services Vaults in the following regions only; Australia Central 2, Switzerland West, South Africa West, Korea Central, Germany North, Korea South, Spain Central. And it’s worth noting that WORM storage for immutable vaults in locked state is applicable for the following workloads: Azure Virtual machines (VM), SQL in Azure VM,, SAP HANA in Azure VM, Azure Backup Server, Azure Backup Agent, Data Protection Manager (DPM). So it’s key when you are looking at using the locked state for immutable vaults, you are aware of regional availability as well as which workloads it will work for. ## Conclusion Implementing immutable backups is a powerful strategy for enhancing data security and resilience in the cloud. By leveraging Azure’s immutable vaults and WORM storage, organisations can protect their critical backup data from ransomware attacks, insider threats, and accidental deletions while ensuring compliance with industry regulations. However, it’s crucial to carefully assess your requirements, validate configurations, and consider operational restrictions before enabling and locking immutability. With the right approach, immutable backups can be a cornerstone of your cloud security strategy, providing long-term data integrity and peace of mind. ### What are Dev Containers? URL: https://www.techielass.com/what-are-dev-containers/ Last updated: 2025-08-19T14:33:54.000Z With modern development it can be complex, Engineers and developers juggle multiple projects, each with unique tools, dependencies, and configurations. Switching between these environments or collaborating with others often leads to frustration and wasted time. This is where Dev Containers can play a huge role. In this article, we’ll explore what Dev Containers are, why they’re worth using, and how they can simplify your workflow while boosting collaboration and productivity. ### What Are Dev Containers? Have you ever heard the phrase, “It works on my machine”?, it’s a common frustration among software developers, or anyone who works within development environments. Maintaining a development environment that works for all your projects can be a frustrating and never-ending battle. This is where Dev Containers can help, no matter what machine you are working on. Dev Containers are portable, lightweight environments configured using Docker containers. They allow engineers to define and share their development environment through configuration files. With Dev Containers your entire environment - all the dependencies, tools, and extensions are defined within code and that means it’s easy to spin up a container and reproduce that environment and share it with colleagues to ensure consistency. So we can stop hearing that “it works on my machine” phrase. ### Why Use Dev Containers? Beyond the consistency reason to use Dev Containers there are a number of benefits you can see if you start to work with them. 1. **Solve dependency issues:** We’ve all faced it. Mismatched library versions or incompatible runtime environments. When we encapsulate our environment all inside a Dev Container those issues don’t exist, you can spend time working on the code instead of trying to find the right library to install. 2. **Portability:** Maybe you have a Windows laptop and a MacBook you work on. Dev Containers work on either, you can switch between those two machines, fire up your Dev Container and have a consistent environment to work on, regardless of the hardware you are using or the operating system. 3. **Experimentation without risk:** If you want to try a new tool or new library or framework, you can spin up a Dev Container and try it without breaking your local environment. Experiment without causing issues is a great way of learning. 4. **Seamless integration with tools**: Dev Containers work seamlessly with tools like [Visual Studio Code (VS Code)](https://code.visualstudio.com/?ref=techielass.com), if you install the [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers&ref=techielass.com) within VS Code it will automatically detect the Dev Containers configuration file and sets up the environment for you. 💡 Looking to build a Dev Container for Hugo development? Check out my guide here: [Dev Container Setup for Hugo](https://www.techielass.com/dev-container-setup-for-hugo/) ### Best Practices for Using Dev Containers When you are running Dev Containers there are some best practices you should follow: - Include your .devcontainer folder in your version control system, this ensures that everyone on your team can access the same configuration and changes to it are tracked. - Only include tools and dependencies you actually need, don’t make it to complex. - When you are creating your devcontainer.json configuration file make sure you add in comments so that others can understand the setup and stay informed of any changes to it. - Containers can sometimes introduce performance overhead, particularly on systems with limited resources. Optimize your Docker settings and ensure that your base image is lightweight. [![Buy me a coffee](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/blogcoffee-2-5.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) Buy me a coffee ### Conclusion Dev Containers can be game changers to ensure that everyone has a consistent and reliable workspace to develop within. Whether you are collaborating with a large team, working on open-source projects, or even just looking for a cleaner way to manage your development environment, Dev Containers are work exploring. ### Visualising data with KQL URL: https://www.techielass.com/visualising-data-with-kql/ Last updated: 2025-03-29T14:50:09.000Z Ever struggled to make sense of endless rows of raw data? With Kusto Query Language (KQL), you don’t have to. Built-in data visualisation tools allow you to turn complex datasets into intuitive charts and graphs, making insights easier to grasp and share. Read on to explore how to harness these features and take your data storytelling to the next level. ### What is data visualisation in KQL Kusto Query Language (KQL) has data visualisation capabilities built into the language. So you can turn raw data into graphical representations. This can include charts, graphs, and other visual formats that make the data more comprehensible and actionable. With this feature, it means you can start to build out [Azure Monitor workbooks or Azure Dashboards](https://www.techielass.com/azure-dashboards-azure-workbooks-power-bi/) visualisations to help make the raw data more accessible to a wider audience and easier to understand at a quick glance. ### KQL Render Operator The render operator within the KQL language has eleven different options for rendering your data. - Anomaly Chart - Area Chart - Bar Chart - Card - Column Chart - Line Chart - Pie Chart - Scatter Chart - Stacked Area Chart - Table - Time Chart The render operator should be the last operator used in any of your queries. It can only be used with queries that produce a single tabular data stream result. The render operator doesn’t modify the data; instead, it injects a visualisation into the query result’s extended properties. An example query would be: ```kql StormEvents | summarize EventCount = count() by State | sort by EventCount desc | where State != "" | take 10 | render columnchart ``` ![Azure Data Explorer data visualisation](https://lh7-rt.googleusercontent.com/docsz/AD_4nXc-bp-kq1OhkekKIi6wuKLPu7sGzOyXZbtKJO9imP-o_xPKLIhQ0mJD1enN2pJ6XmLjk1Qrqx4IaMUV-UrcO2oy-2wUtsJYygak3m0bTJ1U0tkJdy2ntFu0arrTIwJqnOzcA7Eo?key=ba586KHyA1Zyl7NiojJ7fpN1) Azure Data Explorer data visualisation Other supported properties are optional for you to build your chart as well. If we look at the query below we can elaborate on the render line: ```kql StormEvents | summarize sum(DamageProperty)by State | lookup PopulationData on State | project-away State | render scatterchart with (xtitle="State population", title="Property damage by state", legend=hidden) ``` The render line of the query carries out the following: - Creates a scatter chart to visualise the data. - X-axis (xtitle) represents the state population. - Y-axis implicitly represents property damage (from DamageProperty). - The chart title is set to "Property damage by state." - The legend is hidden for a cleaner visualisation. ![KQL data visualisation](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcT1KFjsd8Uu7qOnABSVOQQaTOTj6XMCURNBtAne01f8zHGq2mkbeuVrRX5l2N3j1a1bw0Qhzv37H-76nPrEKvB9pZUG23DGiRP-JaztE0yDmqKey15rA-4cWL0571beb9MaQtmAA?key=ba586KHyA1Zyl7NiojJ7fpN1) KQL data visualisation 💡 Check out my other Kusto blogs: \- [Documenting your KQL queries](https://www.techielass.com/documenting-your-kql-queries/) \- [Understanding KQL functions](https://www.techielass.com/understanding-kql-functions/) \- [Understanding KQL operators](https://www.techielass.com/understanding-kql-operators/) ### Data visualisation in PowerBI While you can build Azure Monitor Workbooks or Azure Dashboards using the KQL queries and visualisations there are times when you might want to visualise the data in PowerBI. You can pull data from your KQL databases or Azure Resource Graph from your Azure environment into a PowerBI report. Check out the video tutorial showing you how to pull in Azure Resource Graph data into PowerBI. ### Conclusion KQL’s data visualisation capabilities open up a world of possibilities for transforming raw data into meaningful insights. Whether you’re using Azure Monitor Workbooks, Dashboards, or PowerBI, these tools make it easier to understand and communicate your data’s story. Ready to dive deeper into [KQL](https://www.techielass.com/tag/kusto/)? Check out my other blogs for more tips and examples, and don’t forget to subscribe to stay updated with the latest content. Let’s unlock the full potential of your data together! ### Advanced Windows Server Management Enabled by Azure Arc URL: https://www.techielass.com/windows-server-management-enabled-by-azure-arc/ Last updated: 2025-09-05T08:11:26.000Z At Microsoft Ignite 2024 Microsoft announced the general availability of Windows Server management enabled by [Azure Arc](https://www.techielass.com/tag/azure-arc/). This allows [Windows Server](https://www.techielass.com/tag/windows-server/) customers with Software Assurance access to certain Azure management services at no extra cost and add some additional management features that are only available through this offering. Also as part of this announcement you can now buy Windows Servers licenses for your Arc Arc enabled servers on a Pay As You Go basis through the Azure Portal. Let’s break down what these announcements mean and how you can actually make them work for you within your environment. ## Windows Server Pay-as-you-go licensing Licensing can be complicated and also expensive. And depending on your procurement processes purchasing a new Windows Server license may take too long for your project timeline. This is where the new Azure Arc Pay-as-you-go licensing option for Windows Server 2025 can be quite useful. You can deploy a Windows Server device on-premises, Arc enable the device and then license it, and you only pay for as much as you use. So if that new Windows Server 2025 device is live for 30 days and then deleted, you only pay for the license for those days. The charges will be billed via your Azure subscription. While I am no expert in licensing and you should also check the documentation or consult your licensing provider there are some things you should be aware of with the Pay-as-you-go license: - There are no client access licenses (CALs) required for standard functionality. However, Remote Desktop Services (RDS) CALs are still required. - It doesn’t provide additional rights for virtual machines (VMs) running on the same server. - Pay-as–you-go licensing is only available for Windows Server 2025 Standard or Datacenter edition. ## Set up Windows Server Pay-as-you-go When you install Windows Server 2025 the setup will ask you the licensing method you wish to use, ensure you select Pay-as-you-go, this will allow you to continue the install without providing a product key. Once the operating system is installed on your device, you need to install the [Azure Arc agen](https://www.techielass.com/install-azure-arc-onto-your-server/)t onto the server. The next step is to enable the license via the Azure Portal. - Head to [https://portal.azure.com](https://portal.azure.com/?ref=techielass.com) - Locate the **Azure Arc** management blade - Click on **Azure Arc resources** \> **Machines** - Select the machine you wish to license - Expand **Licenses** \> **Windows Server** ![Windows Server Pay-as-you-go licensing via Azure Arc](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/02/image-3.png) Windows Server Pay-as-you-go licensing via Azure Arc - Tick the **Pay-as-you-go with Azure** box - Click Confirm ![Windows Server Pay-as-you-go licensing via Azure Arc](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/02/image-4.png) Windows Server Pay-as-you-go licensing via Azure Arc The server is now licensed and you will be billed via your Azure subscription. ## Key features and benefits for Windows Server Management enabled by Azure Arc If you are using Windows Server Pay-as-you-go licensing or have Windows Server licenses with Software Assurance (SA) Microsoft are offering a lot of management services within Azure, many of which are included at no additional cost. Additionally, some new management features are available: - **Azure Update Manager:** This feature allows you to assess the update status of your servers and deploy updates ensuring you are always up-to-date with the latest security patches and improvements.*Available to Windows Server 2012 and above.* - **Azure Change Tracking and Inventory:** This tool within Azure allows you to monitor changes made to your server such as software, services, files and registry helping you to quickly identify any changes that have been made.With this there are additional costs of storing data within Log Analytics. *Available to Windows Server 2012 and above.* - **Azure Machine Configuration:** This feature allows you to configure machine properties using Azure Policy, ensuring a consistent configuration across all servers. *Available to Windows Server 2012 and above.* - **Windows Admin Centre in Azure for Arc:** This tool allows you to be able to manage your server from anywhere, without the need for VPNs or public IP addresses. It includes capabilities like RDP, Hyper-V management and event viewer. *Available to Windows Server 2016 and above.* - **Remote Support:** This feature offers professional support with just-in-time access, revocation rights and more. *Available to Windows Server 2016 and above.* - **Network HUD:** A host networking diagnostics and operational tool that runs spot checks, health checks, and cluster-wide checks to ensure optimal network setup. Available to Windows Server 2025 only. - **Best Practices Assessment:** This collects and analyses server data to help provide guidance on how to optimise performance, security, and adhere to best practices. With this there are additional costs of storing data within Log Analytics. *Available to Windows Server 2016 and above.* - **Azure Site Recovery Configuration:** Helps to configure Azure Site Recovery to ensure business continuity and provides replications and data resilience for critical workloads.With this there are additional costs with the VM replication.*Available to Windows Server 2016 and above.* ## Set up Windows Server Management enabled by Azure Arc - From your browser head to [https://portal.azure.com](https://portal.azure.com/?ref=techielass.com) - Navigate to the **Azure Arc** management blade. - Under **Licenses** select **Windows Server Azure benefits and licenses** ![Set up Windows Server Management enabled by Azure Arc](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/02/image.png) Set up Windows Server Management enabled by Azure Arc - Select the Azure Arc-enabled servers that are eligible for enrolment (those that have Windows Server Software Assurance licenses or using the Pay-as-you-go licensing) - Now select **Activate Azure benefits** ![Activate Windows Server Management benefits](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/02/image-1.png) Activate Windows Server Management benefits - Review the terms and select the checkbox - Now select **Activate** ![Activate Azure benefits](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/02/image-2.png) Activate Azure benefits It may take up to 10 mins for the activation to happen. 💡 Learn how to enable [automatic upgrades for the Azure Arc agent.](https://www.techielass.com/azure-arc-agent-automatic-upgrade/) ## Conclusion The introduction of Pay-as-you-go licensing for Windows Server 2025, alongside the expanded benefits for Windows Server Software Assurance customers, provides greater flexibility and cost efficiency for organisations. With enhanced management capabilities through Azure Arc, businesses can streamline operations, improve security, and simplify licensing. If you haven’t yet Arc-enabled your on-premises servers, now is the perfect time to explore these new capabilities and make the most of what Azure Arc has to offer. ### Documenting your KQL queries URL: https://www.techielass.com/documenting-your-kql-queries/ Last updated: 2025-03-29T14:51:45.000Z Documentation is important. It helps your colleagues to understand why you did something. It helps you later on remember why you did something. Documenting your [Kusto Query Language (KQL)](https://www.techielass.com/tag/kusto/) queries is just important. In this blog, we’ll explore why documenting your queries matters, how to write effective comments in KQL, and practical tips for maintaining clarity and structure. ### Why documenting queries matters There are several benefits to documenting your queries. 1. When something breaks, clear comments and documentation make troubleshooting faster. 2. Team members can quickly understand your query logic, even if they didn’t write it. 3. Documentation reduces the learning curve for new team members. 4. Clear notes help you (or someone else) understand the query’s purpose months or years later. Imagine encountering this query months after writing it: ```kql SecurityEvent | where EventID == 4625 | summarize count() by AccountName ``` Without comments, you might not remember the query’s purpose. Proper documentation solves this problem. ### How to add comments in KQL Within KQL you can denote a comment using two forward slashes: // You can use this either on a single line or multiple lines. An example query would be: ```kql // Filter for failed login attempts SecurityEvent | where EventID == 4625 ``` Alternatively, you could write a more in-depth description in your query like this:// Show Microsoft Defender for Cloud pricing per subscription ```kql // Returns Microsoft Defender plans’ pricing per subscription. //  // The query uses 'project' to show the listed properties in the results. You can add or remove properties. //  securityresources | where type == 'microsoft.security/pricings' | project Subscription= subscriptionId, Azure_Defender_plan= name, Status= properties.pricingTier ``` Every line that you want to to write a comment on, or if you are leaving blank lines need to start with the two forward slashes. If not they might be mistaken as part of the query, which could cause problems when you run the query. You can also add comments per line such as this: ```kql SecurityEvent // The dataset | where TimeGenerated > ago(1h) // Activity in the last hour | where EventID == 4624 // Successful logon | where AccountType =~ "user" // case insensitive ``` Over the years I’ve learnt that well-placed documentation or comments in queries can be really helpful. Some of the things I include in comments on my queries: - The purpose of the query and what it is trying to achieve. - Explaining key steps, especially on multi step or complex queries. - Assumptions or limitations. For example if a time or date is part of the query, I explain if it’s using American date format (MM/DD/YYYY) or if it’s using European/International date format (DD/MM/YYYY). - Who created the query and when. 💡 Check out my other Kusto blogs: \- [Visualising data with KQL](https://www.techielass.com/visualising-data-with-kql/) \- [Understanding KQL functions](https://www.techielass.com/understanding-kql-functions/) \- [Understanding KQL operators](https://www.techielass.com/understanding-kql-operators/) ### Conclusion Documenting your KQL queries isn’t just best practice - it’s necessary to help with collaboration, debugging and future-proofing. Add purposeful comments to your queries and they’ll become a valuable library over time. Start documenting your queries today, and share your favourite tips in the comments! ### Azure Local licensing explained URL: https://www.techielass.com/azure-local-licensing-explained/ Last updated: 2025-02-18T10:48:25.000Z When planning your hybrid cloud strategy, it's crucial to consider not just the technical capabilities but also the costs involved. [Azure Local](https://learn.microsoft.com/azure/azure-local/overview?ref=techielass.com) (formerly Azure Stack HCI) is an excellent solution for organisations looking to run virtualised, containerised, and virtual desktop workloads while maintaining a hybrid setup. By bridging on-premises systems with Azure, it provides flexibility for workloads that can't—or shouldn't—be fully moved to the cloud. However, understanding the hardware and licensing costs is vital to properly budgeting for your Azure Local deployment. In this post, we’ll break down the various licensing options available and how they can impact your overall costs. ### Azure Local hardware costs There is of course the cost of the hardware. Which you would buy direct from the hardware vendor, whether that be Dell, HP, Lenovo, or another vendor. Microsoft provides an up-to-date [catalog](https://azurelocalsolutions.azure.microsoft.com/?ref=techielass.com#/catalog) of certified Azure Local solutions, making it easy to find options that suit your budget and computing needs. There are lots of options available to suit your budget, location and computing needs. ![Azure Local catalog](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/01/image.png) Azure Local catalog ### Azure Local licensing models Beyond the hardware costs you need to think about the software or licensing costs. It costs to run Azure Local. But there are a number of ways you can pay for that. #### Per-core licensing With per-core licensing, purchased directly from Microsoft, costs are calculated based on the physical processor cores in your hardware. This option is priced at $10 USD per month per physical processor core. *This cost doesn’t include the guest operating system (OS) licensing for any virtual machines (VM) running within the Azure Local configuration.* #### OEM licensing The [OEM licensing option](https://learn.microsoft.com/azure/azure-local/license-billing?ref=techielass.com) is something that exclusively comes from your OEM partner. It is a pre-installed license that is activated in Azure. The license is valid for the lifetime of the hardware that the Azure Local is installed on. #### Azure Hybrid Benefits [Azure Hybrid Benefit](https://learn.microsoft.com/windows-server/get-started/azure-hybrid-benefit?tabs=azure&ref=techielass.com) was first introduced to help reduce the costs of running your workloads in the cloud. Enabling those customers who had purchased Windows Server with Software Assurance to use that license in Azure and avoid having to pay licensing costs on any virtual machines there. Since Azure Local is considered an Azure service, you can access Azure Hybrid Benefits on Azure Local. But it goes one step further, as it waives the Azure Local host costs as well. So let’s look at this in terms of a real-world example. You are refreshing your on-premises virtualisation solution. For non-Microsoft solutions you will need to consider both the hardware and hypervisor licensing costs. And hypervisor licenses can be expensive and you still need to purchase any Windows Server licenses you need for your Windows workloads. This means your total cost includes hardware, hypervisor licensing, and Windows Server licensing. With Azure Local, you can use your Windows Server Datacenter licenses with Software Assurance to cover the hypervisor license and the Windows server workload costs as well. So you only have the HARDWAREcosts to consider. 💡 For detailed licensing requirements and how to activate the Azure Hybrid Benefit for Azure Local, see ["What is Azure Hybrid Benefit for Azure Local". ](https://learn.microsoft.com/azure/azure-local/concepts/azure-hybrid-benefit?view=azloc-24112&tabs=azure-portal&ref=techielass.com#what-is-azure-hybrid-benefit-for-azure-local) ### How to buy Azure Local licenses Depending on the license type that you wish to use there are different people you need to talk to. For the per-core licensing, you can buy that direct through the Azure portal. For the OEM licensing your hardware vendor should be able to facilitate that cost and conversation with you. And for Windows Server licenses with Software Assurance you should chat to your Licensing Solution Provider (LSP). They’ll be able to advise you of what licenses you currently have and quote for any additional licenses you need. 💡 ****Disclaimer** Licensing can be complex and nuanced. There are lots of caveats and gotchas in each licensing model for Azure Local, so be sure to speak to the relevant people. Read the terms and conditions, the small print. And understand it fully for your scenario. This blog post is intended to be an explainer to the licensing options you have, so you can cost up your Azure Local project properly and be able to compare it to other options out there fairly. It's not intended to be a deep dive into all the options and small print. ### Conclusion Azure Local provides a powerful and flexible solution for hybrid cloud scenarios, allowing you to modernise your infrastructure while leveraging existing investments like Windows Server licenses with Software Assurance. But remember to make a truly information decision you need to understand the licensing models and ensure the option you choose aligns with your organisation’s needs. To ensure success, consult with hardware vendors, Licensing Solution Providers, and Microsoft to evaluate your licensing needs and calculate costs effectively. When approached thoughtfully, Azure Local can be a cost-effective and future-ready solution for your hybrid cloud journey. ### Understanding KQL Functions URL: https://www.techielass.com/understanding-kql-functions/ Last updated: 2025-02-11T08:01:36.000Z [Kusto Query Language (KQL)](https://www.techielass.com/what-is-kusto-query-language/) is a powerful querying language that is used across a number of Azure products. In this post, we’ll dive into some of the most commonly used KQL functions, explain how they work, and provide practical examples to help you write more efficient and insightful queries. ### KQL Functions Functions within KQL allow you to manipulate, analyse, and derive meaningful insights from data. Sometimes they are used on their own or they are combined with [KQL operators](https://www.techielass.com/understanding-kql-operators/) to pull out insight information from your dataset. ### Scalar Functions Scalar functions are used to look at individual values and perform basic operations like string manipulation, mathematical calculations, or type conversions. These functions operate on a single value and return a single result. The **tolower()** function is an example of a scalar function that converts a string to lowercase. We can use it in a query to convert the EventType column to lowercase making it easier to compare or analyse case-insensitive data. ```kql StormEvents | extend LowerCaseEvents = tolower(EventType) ``` ### Aggregating Functions Aggregating functions are used to perform calculations on multiple rows of data, providing insights like counts, averages, sums, and other statistical measures. These functions are commonly used with the **summarize** [operator](https://www.techielass.com/understanding-kql-operators/) to group and summarize data. In an example query we can calculate the average value of the DamageProperty column, helping to understand the typical property damage for storm events. ```kql StormEvents | summarize AverageDamage = avg(DamageProperty) ``` ### Date and Time Functions Within KQL there are a variety of date and time functions that can be used when querying data that has time-based information. These functions can allow you to extract specific data based on timestamps, or allow you to calculate durations or manipulate time values. The **ago()** function returns a period relative to the current time, in this example we can query data that happened in the last 7 days. ```kql StormEvents| where TimeGenerated > ago(7d) ``` Or we can use the **datetime()** function to create a specific date and time value, in this example, we are looking for events that are greater or have happened after the 1st of January 2025\. ```kql StormEvents | where TimeGenerated > datetime(2025-01-01) ``` ### String Functions The string functions can be used to manipulate or analyse text data. They can help you extract substrings, match patterns or clean data for further analysis. We can use the **endswith** function to filter records that end with a specific word or phrase. For example, to search the StormEvents dataset and find records in the EventType column that end with the word “wind,” the query would be: ```kql StormEvents | where EventType endswith "wind" ``` ### Conditional Functions Conditional functions when used in KQL queries allow you to perform different actions based on specific conditions, similar to *if-else*programming logic. These functions can help add flexibility to your queries. One conditional function is the **iif()** function that returns one value if the condition is true and another value if it is false. If we build an example query using the **iif()** function we can check if the DamageProperty column is greater than 1,000,000 and label the event as either “Severe” or “Moderate” based on the result. ```kql StormEvents | extend StormSeverity = iif(DamageProperty > 1000000, "Severe", "Moderate") ``` ### Collection Functions The collection functions within KQL allow you to work with arrays, sets, and other collections of data. These functions help you analyse groups of valves and perform operations on them. For example, we can use the **in()** function to check if a value exists in a list or set. And in this query example, we are looking to show only events, hurricane, tornado or flood. ```kql StormEvents | where EventType in ('Hurricane', 'Tornado', 'Flood') ``` ### Mathematical Functions With mathematical functions we can perform calculations, from basic arithmetic to more complex operations like logarithms and rounding. We can use the **round()** function to round the data to a specified number of decimal places, in this example query we are looking to round the DamageProperty output to two decimal places. ```kql StormEvents | extend RoundedDamage = round(DamageProperty, 2) ``` ### Conclusion Functions within KQL are a great way of manipulating or analysing data. Whether you're working with individual values, performing aggregations, or analyzing time-based data, KQL functions can help streamline your queries and enhance your data analysis. With practice, you can unlock the full potential of this query language, stay tuned for more insights into KQL! ### Using Azure Workload Identity Federation (OIDC) with Azure DevOps to deploy Terraform URL: https://www.techielass.com/using-azure-workload-identity-federation-oidc-with-azure-devops-to-deploy-terraform-2/ Last updated: 2025-02-04T08:01:51.000Z I previously wrote blogs on deploying Terraform via [Azure DevOps](https://www.techielass.com/terraform-with-azure-devops-ci-cd-pipeline/) and [GitHub Actions](https://www.techielass.com/terraform-with-github-actions-ci-cd-pipeline/). One piece of feedback I received stood out: we should move away from using Azure service principals for authentication and instead adopt workload identity as the preferred method. That feedback was spot on. In this blog, I’ll walk you through how to set up a new Azure DevOps project, create a workload identity, and configure the project to deploy a Terraform configuration file. ### Prerequisites Before proceeding, ensure you have the following: 1. Azure Subscription: Required to host resources. If you don’t have one, sign up for a free trial. 2. Azure DevOps Account: To create CI/CD pipelines. If you don’t have one, you can sign up[ here](https://dev.azure.com/?ref=techielass.com). ### What is Workload identity federation and how does it work [Workload identity federation](https://learn.microsoft.com/entra/workload-id/workload-identity-federation?ref=techielass.com) is an Azure feature that leverages OpenID Connect (OIDC) to enable secure, short-lived, credential-free authentication for accessing Azure resources. Instead of relying on traditional methods like secrets or service principles, it allows you to establish a trusting relationship between your Azure environment and external systems, such as Azure DevOps. This trust enables seamless, automated authentication without exposing sensitive credentials. ### Why use Workload identity federation Adopting workload identity federation enhances your security posture by eliminating the need to manage, share, and rotate long-lived secrets or credentials. It addresses the challenges posed by Azure service principals, providing a more secure and scalable way to authenticate and authorise workloads in your Azure environment. ### How to run Terraform in an Azure DevOps Pipeline **Create identity** The first thing to do is to create an *app registration* in Entra ID (formerly Azure AD). - Go to the **Azure Portal.** - Search for **Microsoft Entra ID.** - Click on **App Registrations** down the left-hand side menu. - Click on **New Registration.** ![Microsoft Entra ID app registration](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfp9JlLxscYHvk2MY0YP9gjbdR27s7CFih3OjVoEgRpuBI9w1PLADMx3PANdRPqTDv0t9Scy9k73TRaaO9shqvp7JP2X8kvLoXX2KBfsXl-uSAnKNMMZ-MKQwy4r8oL1MaizI_Z?key=kb3SYkDolARgeJ-vfhpieI_O) Microsoft Entra ID app registration - Give it a name and keep the other settings as the default. **Set Azure subscription permissions** The app registration also needs permission to deploy the Azure resource to the wider subscription. Setting the appropriate permissions is a whole topic in itself, but for this example, we’re going to grant the app registration *Contributor*permissions on the entire subscription. - Within the Azure portal browse to **Subscriptions** then select the subscription you want to deploy the resources to. - Select **Access control (IAM)** - Click on **Add** and then **Add role assignment** ![Azure access control (IAM)](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdUlyK4_JWf0-LnO4WQC3KpW_w4gY1qo-8hRgCeluwFDJAqzM8K4g_pqSQVZS35_fwHJy26Gz9YywB3M14rYUCnTzRWKynpB73WZPEkoxvLkvuYITU-5ssuhppjPq3Rq1VcIwibjQ?key=kb3SYkDolARgeJ-vfhpieI_O) ol (IAM) - Select **Privileged administrator roles** then **Contributor** - Select the app registration you created earlier and assign the permissions. **Set up a Azure DevOps Project** With your account set up, you next need to sign into [Azure DevOps](https://spacelift.io/blog/what-is-azure-devops?ref=techielass.com) and create a project where you’ll be setting up your CI/CD pipelines. - Go to the [Azure DevOps website](https://dev.azure.com/?ref=techielass.com) and sign in with your Microsoft account or organizational account. - Navigate to **Organization**: If you’re part of multiple organizations, select the organization where you want to create the project from the top right corner of the page. - Click on the **New Project** button. - In the **Create a new project** form, fill in the Project Name and visibility and optionally, provide a description for your project, then click on the **Create** button. ![New Azure DevOps Project](https://lh7-rt.googleusercontent.com/docsz/AD_4nXf_0v7ome79uUL-eMRSUnlgDnMV7d25EI9vWyCI8P7L22Kic1OJf2nMel7PJuxpBhn7fLn3nEfBgvGhNuLWmOPp11ch-XujGRRjPqEgjtGuBMV0JTHyrqGdPk_k_UHNLrZurt3V?key=kb3SYkDolARgeJ-vfhpieI_O) New Azure DevOps Project - Once the project is created, you’ll be redirected to the project’s dashboard. Depending on your needs, you may want to add team members, and permissions, or integrate other services to this project. **Create service connection** An Azure DevOps service connection in Azure is a secure, managed connection that links Azure DevOps to Azure. This connection allows DevOps pipelines to securely access and deploy resources, configure infrastructure, or execute commands on these services without requiring manual credential input each time. Let’s create one we can use in this example. - Click on **Projects Settings** in the bottom left-hand corner. - Click on **Service Connection,** then **New Service Connection.** - Select **Azure Resource Manager**. ![Azure DevOps Service connection creation](https://lh7-rt.googleusercontent.com/docsz/AD_4nXd4MYqmG6M4rAHkU4usP-_FpopNZO6vZHyCx-US_mocR17x26-aIAdWECP6rwXsDuHc_g_95ZrYK580PMDi2NOkww_0wrgYAbR8DKjc0uyWakyMEPOuA5rpkH6iyHQN5EDrfVwR?key=kb3SYkDolARgeJ-vfhpieI_O) Azure DevOps Service connection creation - Then select **Workload Identity federation (manual)**. ![Azure DevOps Service connection creation](https://lh7-rt.googleusercontent.com/docsz/AD_4nXct05nafXRSjgoPNsNf-88AOSPCy0Gb9abIKr1LAP0NAhbV6Hp1Q4E_V4KGZfyDtL94SThRWl3lN1tFpwZy_EoQcxIqxkcF5vkWguVhbxnDztgcOw7qQw0woqukOag7tasE4craTw?key=kb3SYkDolARgeJ-vfhpieI_O) Azure DevOps Service connection creation - Give the service connection a name and then select **Next.** - Copy the information in the **Issuer** line and head over to the Azure Portal. - Search for **Microsoft Entra ID.** - Click on **App Registrations** down the left-hand side menu. - Find the app registration that you created earlier. - Click on **Certifications & secrets**, then select **Federated credentials**. - Click on **Add credential.** ![Microsoft Entra ID app registration setup](https://lh7-rt.googleusercontent.com/docsz/AD_4nXc8ZMjj9prkTi6ogpKjxzZ2zkT13YXd8AQcBb4o3ULEgUd2JzHrePEup8avw0AY0Ugod7hpFSRNvb9JgP5P_F_fkw83PAOzhgROw2VXWlxvmQ8GRpTp6w7AulQiOP-5ZJ5KzOsU9g?key=kb3SYkDolARgeJ-vfhpieI_O) Microsoft Entra ID app registration setup - For the **federated credential scenario** select **Other issuer.** ![Microsoft Entra ID federated credential setup](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfRdTDopV45yhF5pLrErvEbTlh9rwOeoWIb_uGUs3xiP4ktxadP71XinXaf3VHZsdTYE4So5RJTkhsp8yuTKxKBI8zlNuBFpXM_OjSQwAOiV1izXskVPgk35ndNWNNKqhO4kXXmng?key=kb3SYkDolARgeJ-vfhpieI_O) Microsoft Entra ID federated credential setup - Paste the value you got from Azure DevOps into the **Issuer** box. - Go back to Azure DevOps. - Copy the value of the **Subject identifier.** - Go back to the Azure Portal. - Paste the value into the **Value** box. - Give it a name and click on **Add.** - Go back to Azure DevOps. - Fill in the **Subscription Id** and **Subscription Name** boxes with your Azure subscription information. - Within the **Service Principal Id** box, paste the **Application (client) ID** from your app registration. - And fill in the **Tenant ID** of your Azure tenant. - Click on **Verify and Save**. **Create Terraform configuration files** In order to create the Azure resource we need to create the Terraform file within a repository for storage. You can create the file in a repository within Azure DevOps or somewhere else, like GitHub. We’re going to use the Azure DevOps repository. Click on **Repos** on the left-hand menu and then select **Files.** The repository will be empty so we need to initialize it with a readme file and a .gitignore file. Ensure the box is ticked for **Add a README** and select **Terraform** within the **Add a .gitignore box** then click on **Initalize.** ![Azure DevOps repo initialization](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeWuCduXdX1-CgtLh0EuZd9FNJ5_uROr-rWEJN07qCP6X1y2Jv3HYjKLzM6FaEb75trua-1fZiVpJs916h8_6FPeXVJxres7P3jASdBGBFYe9IWzBXmeKc10cWqORS80uvK6ZKqyQ?key=kb3SYkDolARgeJ-vfhpieI_O) Azure DevOps repo initialization We can now create a file with our Terraform. To do this, click on the three ellipses button in the left-hand corner near your project name and select **New > File**. Give the file an appropriate name like *main.tf* and click on **Create.** Copy the following Terraform making sure to copy in your Azure subscription ID. ```terraform terraform {   required_providers {     azurerm = {       source  = "hashicorp/azurerm"       version = ">=4.14.0"     }   } } provider "azurerm" {   features {}   subscription_id = "XXXX-XXXX-XXX-XXXX" } variable "resource_group_name" {   description = "The name of the Azure resource group"   type        = string   default     = "oidcrgexample" } variable "location" {   description = "The Azure location where the resource group will be created"   type        = string   default     = "EastUS" } resource "azurerm_resource_group" "example" {   name     = var.resource_group_name   location = var.location } output "resource_group_id" {   value = azurerm_resource_group.example.id } ``` Then click on **Commit.** **Configure the Azure DevOps Pipeline** We need to set up our pipeline, we’re going to do this by writing the code needed in the YAML file. Follow these instructions: - Click on **pipelines** in the left-hand side then click on **Create pipeline.** ![Azure DevOps pipeline setup](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfcuDYsOts94ZLYbWbr6nasR_0E00_YodDis-s27cb5ONcS5LSGPftdYRdXE67gwLZc8yWBVu8EHIkBUgw5q553xpZB4I9rXuKNLkrfrWyR-CpFll5aRVqUu_2a55-vSknKOUyC_g?key=kb3SYkDolARgeJ-vfhpieI_O) Azure DevOps pipeline setup - Select **Azure Repos Git** as the place to store the YAML file. - Select your project repository. - Then select **Starter pipeline.** ![Azure DevOps pipeline setup](https://lh7-rt.googleusercontent.com/docsz/AD_4nXddfdrB5X1RO_0csrlwU1Gmy87TONhMGYoNk9kszAW6KmOjUwPVX2jjVm6sG5YqSgMAKQnZjWGmujuIkKnTUAxF-qf25BGL-RE9z3HB4SjFHn2k5_AgLMOHQ9gJCr5kP-naCLImBQ?key=kb3SYkDolARgeJ-vfhpieI_O) Azure DevOps pipeline setup - Copy the following code into the editor: ```yml trigger: - main pool:   vmImage: ubuntu-latest steps:   - task: AzureCLI@2     name: RunTerraform     inputs:       azureSubscription: INSERT NAME OF YOUR SERVICE CONNECTION # The name of your service connection goes here       scriptType: bash       scriptLocation: inlineScript       addSpnToEnvironment: true       inlineScript: |         export ARM_TENANT_ID="$tenantId"         export ARM_CLIENT_ID="$servicePrincipalId"         export ARM_OIDC_TOKEN="$idToken"         terraform init         terraform apply -auto-approve ``` Once you’ve inputted the code, click the **save** button to commit the code to your repository. ### Run the pipeline Within the YAML code that we wrote in the stage above is the trigger to run the pipeline whenever code changes within the repository. To check the pipeline run follow these instructions: - Click on **Pipelines** in the left-hand menu then **Pipelines.** - If the pipeline is running you can check on its progress, if not you can click on **Run pipeline**. ### Conclusion By following this guide, you’ve learned how to set up and deploy Terraform using workload identity federation in Azure DevOps. This approach not only enhances security by eliminating the need for long-lived credentials but also simplifies authentication management in your CI/CD pipelines. Workload identity federation is a step forward in modernising how we authenticate and deploy resources in Azure. As organisations strive for more secure and scalable solutions, adopting features like this becomes essential. There are lots of other things we could do to improve this setup, those are things for another blog post, but for now, I hope you’ve found this useful or, if you have any questions, feel free to leave a comment or reach out—I’d love to hear your feedback and experiences! ### Understanding KQL Operators URL: https://www.techielass.com/understanding-kql-operators/ Last updated: 2025-01-28T15:00:15.000Z [Kusto Query Language (KQL)](https://www.techielass.com/what-is-kusto-query-language/) is a powerful query language that is used in a wide variety of Microsoft products, such as [Azure Monitor](https://www.techielass.com/monitor-ssl-certificates-with-azure-monitor/), Log Analytics, and Microsoft Sentinel. Like any language, there are some core parts you need to learn to be able to use it effectively. Below, we’ll explore some of the most commonly used KQL operators and how they can be used to write powerful queries. ## KQL Operators When writing queries in Kusto Query Language (KQL) operators are the building blocks. They allow you to filter, shape, aggregate, and manipulate data efficiently, making it easy to derive insights and identify trends. ### Project The project operator allows you to shape the results of a query output by allowing you to select or rename the columns that appear in the output. This is useful when you have a dataset that has a lot of columns and you only want to focus on the data from three or four columns. ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfND-lcx4zslldolQTWO4wsfaDxoTUAi8t9SGdAUbdx7BtIPo488IGAGI5aikc2rCd0iEowVC3orZsnnYI_ZBIVKT2sdE-qaYvIPJ28hW5Y8cBIMo5Fq8ikvs7PNHaHZ1Z8fgG_Tg?key=V-VVSsaomPBFaBCW3tVn7c03) ### Summarize The summarize operator can be used for aggregating data. It performs operations such as counting, averaging, summing or finding minimum and maximum values over specified groups or the entire dataset you are querying. Using the StormEvents dataset I can summarize how many of each type of storm event happened. ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfQsz8FYp0KN-kYXvTBfYlb8hyIXniZV-YBol_Wlu2AXoxXcf-Cq6BvF0C_d9Q5PFW7omG-pZOSUd8g1Vqnnd0RoyxrGaazCPNrSqB9acmvcrMPXkcmFSimU_pNwP-0Nd7mwDOD?key=V-VVSsaomPBFaBCW3tVn7c03) I could also use the summarize operator to calculate the average property damage for each combination of state and event type. ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeGweNV7tz2808X_9EHwIzj7dC7KQ3wyItEnr6XrW36A356mrD4GItg0a9czZGoJtqRxmYUf_ZOGw70KOg4Fo2kCZR7n5OW_xenH6kCqby0lXFEk-7ek_0CMVwhYbtkhE4wRVDdpA?key=V-VVSsaomPBFaBCW3tVn7c03) ### Extend The extend operator gives you the power to create new columns or modify existing ones. Now remember that KQL is a read-only language, so the extend operator only affects the output results, not the original dataset. In the example below I am creating a new column by multiplying what is in the “TotalCost” column. ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXddNQBshpmQRS6PirO_OmY8XdHyVIDtTqrb950D9ZkRuXymy8YHKxEmHdbg_u75RQ5w7TxraZG7VhTBPsF_XqlB5SrFOBluffB6hzRpEprCk8g75vboP-y8C7iHwLqGjTWNAGP9?key=V-VVSsaomPBFaBCW3tVn7c03) ### Where The where filter helps to give you precise results in your query, by only showing rows based on specific conditions. In the example below, I am filtering so that the State column equals Florida. You can also see I am using the project operator and only showing certain columns. ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfV5p0mQm5OITOo7WVew11bziXfVbdLZZ7eW-37MoJOWhEeM7P7CxfwzfGId5dQ8qie3ENLFxXJB8Dqg97dm9MPrXRwCuceFJK-zpWHYyUi3V6J8J1njzsMJUf3EApcsCyt-qviOQ?key=V-VVSsaomPBFaBCW3tVn7c03) ### Distinct The distinct operator is used to return unique values from a specific column or a combination of columns in a dataset. It effectively removes duplicates, showing only distinct rows based on the columns' specified. In the example here I only want to see the distinct enters for the EventType in the StormEvents dataset. ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfR8MAWpADEy1QQusvL7o_gPgSnBv8No6MfOfwaKS0m6PJ1_dmFI17YYwEk41I0nCeBUF579mYCW5kk3CxiO7nbllN1H5eEWxMArXABHYVyh92YGJHxBsPCvIxoRiJjPnA3DuO_?key=V-VVSsaomPBFaBCW3tVn7c03) ### Join The join operator combines rows from two datasets based on a matching condition. In the example below I am joining the Products and SalesFact tables using the ProductKey column. I am then able to build out the result that shows me the Product name, Product Key, Sales Amount and Total Cost. ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdIB56h5J6sKXkMWd5z1q2zJ1-9cLaZxBUXg0ejdAB5nBgQLyR9oTGBP0zCAz7CSgVUanxLTaKqQgMprrODhInAP0XIXhIpxIy3ThtHL8_uJ9bs7Qo85wGRfSLZIsX71LvBdozT?key=V-VVSsaomPBFaBCW3tVn7c03) ### Order By The order by operator can be used to sort the rows of a dataset based on one or more columns in either ascending or descending order. It helps you organise your data for better analysis. Using the StormEvents dataset again I can order the results of my query based on the DamageProperty column in descending order and project out the columns I need to see. ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXewx8GgkRccDJAY9GlFVn3Q8R7QdfYn8t3j8XVRhWCapMvg78hqvk2MFT6jIbF10-NWe3DnG8VyqPBSind3gNcjn1zOtN74Pdaw3HmHP1gCP1wh_u9PDiqrLWtYbWHcZNnAJZzkeg?key=V-VVSsaomPBFaBCW3tVn7c03) I can use it multiple times in my query though, I can first group by State in ascending order and then sort by Damage Property in descending order within each state. The result is the output is organised alphabetically by state, and within each state, events are sorted by the highest damage first. ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcNCr31RPJJbMbsyI516vvXoKph6lxeCAls9FNskvLUa7YP_1ezzISt92VJ1zARnutBgvuM7VI1A4X9PB1q9AfkFa8TnOn_ollG7MjXZkbMEguGseHpvlO48dx-5DfyXg2xN9kr?key=V-VVSsaomPBFaBCW3tVn7c03) ### Render The render operator must be the last operator in a query. It doesn't modify data instead it visualises the data in different forms. There are eleven different visualisations such as area chart, line chart, pie chart or time chart. ### Conclusion These Kusto Query Language (KQL) operators will help you write powerful queries and pull out the data you are looking for within a dataset. There is a lot to learn with KQL, understanding the operators is just the start. Stay tuned for more KQL insights here! ## Sign up for Techielass - A blog by Sarah Lean Technical…Practical…From A Scottish Lassie Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### What are Terraform Modules and how to use them URL: https://www.techielass.com/what-are-terraform-modules/ Last updated: 2025-04-18T18:35:43.000Z [Infrastructure as Code (IaC)](https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools/) can help you manage your infrastructure, however your code base can quickly become complex as your infrastructure grows. Terraform modules can help bring simplicity, consistency and reusability to your deployment. Whether you're orchestrating a single resource or a sprawling multi-region architecture, Terraform modules let you package configurations into tidy, reusable components. In this post, we’ll explore what Terraform modules are, why they’re invaluable, and how they can transform the way you build and manage your infrastructure. ### What is a Terraform Module? A [Terraform](https://www.techielass.com/tag/terraform) module is a container for multiple resources that are used together to achieve a specific goal. It simplifies the management and reuse of infrastructure-as-code (IaC) by packaging related configurations into a single, reusable entity. For example, instead of defining individual [Azure](https://www.techielass.com/tag/azure/) resources like a virtual network, subnets, and network security groups repeatedly, you can bundle them into a single module. This approach streamlines deployments and ensures consistency across environments. ### Types of Terraform Modules #### Root Modules A root module is the starting point of any [Terraform](https://www.techielass.com/introduction-to-terraform/) configuration. It comprises all the files in your working directory, such as main.tf, variables.tf, and outputs.tf. When you run Terraform commands like terraform apply, the root module is what Terraform executes. #### Child Modules Child modules are reusable modules called by the root module or another child module. You define these in separate directories or reference external sources, such as public module registries or private Git repositories. For instance, you might use a public Azure Resource Group module from the Terraform Registry to create resource groups consistently across different projects. #### **Public Modules** Available on the Terraform Registry, these are pre-built modules created by the community or providers like Azure. #### Private Modules Custom-built for internal use, private modules are often stored in a private Git repository or an enterprise registry. These are tailored to your organisation’s specific needs. ### When should you use Terraform Modules? It depends on your IaC journey, your organisation policies but ultimately the answer is always. Terraform modules help you manage multiple environments and provide consistent infrastructure. As well as helping with reusability. There are times when your Terraform code can become large, so defining modules can help keep code straightforward. When I was learning Terraform I didn’t use modules until I understood the basic concepts of the language and then started to incorporate modules in my code. ### How to use Terraform Modules Create a directory for your module and add the necessary .tf files. For example, a module for an Azure storage account might include: - main.tf: Defines the storage account resource. - variables.tf: Defines input variables like the resource group name and location. - outputs.tf: Specifies outputs such as the storage account name and endpoint. ![Terraform module structure](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/12/modules.png) Terraform module structure First you can define the resources in main.tf: ```terraform resource "azurerm_storage_account" "example" {   name                     = var.storage_account_name   resource_group_name      = var.resource_group_name   location                 = var.location   account_tier             = var.account_tier   account_replication_type = var.account_replication_type   tags = var.tags } ``` Then set up the variables within the variables.tf file ```terraform variable "storage_account_name" {   description = "The name of the storage account."   type        = string } variable "resource_group_name" {   description = "The name of the resource group."   type        = string } variable "location" {   description = "The Azure region where the storage account will be created."   type        = string } variable "account_tier" {   description = "The performance tier of the storage account (Standard or Premium)."   type        = string   default     = "Standard" } variable "account_replication_type" {   description = "The replication type of the storage account (LRS, GRS, RAGRS, ZRS)."   type        = string   default     = "LRS" } variable "tags" {   description = "A mapping of tags to assign to the resource."   type        = map(string)   default     = {} } ``` And then lastly within the outputs.tf file define the relevant outputs: ```terraform output "storage_account_name" {   value = azurerm_storage_account.example.name } output "primary_blob_endpoint" {   value = azurerm_storage_account.example.primary_blob_endpoint } ``` You can then call the module within your main Terraform configuration file: ```terraform module "storage_account" {   source = "./modules/storage-account"   storage_account_name = "mystorageaccount"   resource_group_name  = "my-resource-group"   location             = "East US"   account_tier         = "Standard"   account_replication_type = "LRS"   tags                 = {     environment = "dev"     project     = "example-project"   } } ``` Remember to customise the deployment by passing in variables that relate to your environment and deployment. 💡 **Be sure to keep an eye out for a tutorial I will be releasing on creating and using Terraform modules soon!* ### Versioning Terraform modules When calling a module you can specify a version argument. The version argument only works with modules that are stored on a Terraform module registry. It won’t work for modules that are located in local file systems or git repositories. For example if we were to call the [Azure Verified Modules (AVM)](https://azure.github.io/Azure-Verified-Modules/?ref=techielass.com) to provision Azure Stack HCI use can specify to use version 0.12.0: ```terraform module "avm-res-azurestackhci-cluster" {   source  = "Azure/avm-res-azurestackhci-cluster/azurerm"   version = "0.12.0" } ``` When we run *terraform init* Terraform will look for version 0.12.0 of the module and download it. You can also specify a range of versions and Terraform will use the newest version of the module that matches within the constraint you have given. ### What problems do Terraform Modules solve? Using modules solves quite a few problems in your code. As your infrastructure managed by Terraform grows so will your code, using modules can help save you from copy-pasting an entire stack of code to create a single instance of something. Good code is readable code, which is where modules can help with. A modular approach to code keeps it clean, simple and readable. Modules allow teams to work in parallel by providing isolated, reusable components that can be integrated seamlessly. For example, using a module to manage Azure Kubernetes Service (AKS) clusters ensures that networking, node pools, and monitoring configurations follow best practices, regardless of who is deploying them. ### Conclusion Terraform modules are an essential tool for anyone managing infrastructure with Terraform. By organizing your configurations into reusable, consistent components, they simplify your code, improve scalability, and enhance collaboration across teams. Whether you're just starting your Terraform journey or are already managing complex multi-region architectures, embracing modules can dramatically improve your infrastructure-as-code practices. If you're not using Terraform modules yet, now is the perfect time to start! Experiment with creating a module for a small project or leverage public modules from the Terraform Registry to see how they can streamline your deployments. ### What is Kusto Query Language? URL: https://www.techielass.com/what-is-kusto-query-language/ Last updated: 2025-05-15T06:43:01.000Z Being able to query large data sets is a good skill to have, whether you work in security, IT operations, or data analytics. This is where Kusto Query Language or KQL can help. In this blog, we'll take a look into what KQL is, where it's used, and how its components help you get the most out of your data. ## What is KQL Kusto Query Language (KQL) was developed by Microsoft in 2017\. It was first introduced with Azure Data Explorer. KQL is a read only language. Which means it is used solely for querying data and not for modifying or deleting data. This makes KQL particularly powerful and safe for data exploration. It also means that when you are learning or using the language your queries can’t inadvertently alter your data. Since its first introduction KQL has become widely used among a number of Azure services. You’ll find it being used in the following products: - **Azure Data Explorer (ADX)**: The primary platform for KQL, used for big data analytics and interactive data exploration. - **Azure Monitor**: For monitoring the performance and health of applications and infrastructure. - **Log Analytics**: A part of Azure Monitor, it uses KQL to analyse log and telemetry data from various sources. - **Application Insights**: Also part of Azure Monitor, it uses KQL to monitor and diagnose performance issues in applications. - **Microsoft Sentinel**: A security information and event management (SIEM) system that uses KQL to analyse security data and detect threats. - **Microsoft Defender for Cloud**: Uses KQL to provide security insights and threat detection for cloud resources. - **Azure Graph Explorer:** allows users to efficiently explore and query their Azure resources across multiple subscriptions and resource groups, providing comprehensive visibility. There is a wide community that supports and shares knowledge around KQL. It’s not just a tool for data professionals, it’s used by Security professionals, and IT pros alike. 💡 Check out my other Kusto blogs: \- [Documenting your KQL queries](https://www.techielass.com/documenting-your-kql-queries/) \- [Understanding KQL functions](https://www.techielass.com/understanding-kql-functions/) \- [Understanding KQL operators](https://www.techielass.com/understanding-kql-operators/) ## Basic components of KQL To use KQL it’s important to understand some of the basic components. ### Operators Operators are essential to KQL’s functionality, they enable users to filter, project, summarize and join data, just to name a few. ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfhJMBV2LukyDD1JrLPNyz_PR5CilIe5Pv9H1FCcCiTws5uCfZ-DMjC1NOBIlQf8UaOtm3bo_iDV4VQQdyaBenL3QXb9Olt3O3n_VzUgv-FzWPApTM8mdgHf9Mz5TAAjbIkRdjcPg?key=8bJ3FtiHsYqdPr2G572Px_SK) ### Functions Functions in KQL are predefined commands that perform specific operations on the data. These functions allow users to perform things such as calculations, and transformations on their datasets. Examples of functions are: - **Count**: to count the number of rows. - **Avg**: to calculate average values. - **Max**: to find maximum values. - **Min**: to find minimum values. ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXecCKXMrQd8sT_uJA2yVSX-hIQge8J1kYD2jif0KqHkWzLvcIwqpn_wNpDcp0CWHlOCBSnuFq-UTGY8RiGPFWxNirAp_N4KXcXGMEn0X7M5JdLGQKI1EN37dUtCkz8r_GXl4mgaRg?key=8bJ3FtiHsYqdPr2G572Px_SK) ### Clauses Clauses are segments of a query that defines specific actions or conditions. They are critical to structuring KQL queries and ensuring that the desired data is retrieved. The most common clause is the **where** clause. The where filter puls out data from the dataset that matches the criteria given. ![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXefcsARoAxuYOzjyG7ARhBqxd-uNmI_uloWt_WTMRhNLAvqC4G7jtbXsqLBHVtRLnsegl7lYHbE73EGZwfn_fK_kcKQMau28YZwfl5nxanNEhnQrVOye84XyMyw_xeaBITLjS7UgA?key=8bJ3FtiHsYqdPr2G572Px_SK) ## Conclusion Kusto Query Language (KQL) is an invaluable tool for querying and analysing lots of different types of data in Azure. Its read-only nature ensures that data remains intact, making it both a safe and reliable option for exploration and troubleshooting. Whether you're just starting out or you're looking to deepen your knowledge, KQL is a skill worth mastering. Explore its capabilities, engage with the active community, and begin leveraging KQL to gain deeper insights into your data. ### Looking back at 2024! URL: https://www.techielass.com/2024-in-review/ Last updated: 2025-10-28T19:41:22.000Z Wow! The end of 2024 is upon us! Let’s take a look back at what I’ve been up to this year! ## Career In January I was onboarded as a [HashiCorp Ambassador](https://www.hashicorp.com/ambassador?ref=techielass.com) for all the community work I had done around [Terraform](https://www.techielass.com/tag/terraform). It's a yearly award, so hopefully I'll be renewed in 2024\. In April I changed role at Microsoft, I am now a Senior Technical Specialist, which translates into being a Pre-Sales Technical Architect. I'm closer to the sales side of conversations now and while I'm still on a learning curve adapting to the Microsoft sales side of things, it's exciting to be helping customers solve their challenges with technology. ## Blogging It’s interesting looking back at the amount of blog posts I’ve written each year. I haven't written the same amount of blogs as I used to, but much like last year, I've become much more strategic about what I write. I write about the things like I enjoy and want to share. I do syndicate what I write across a couple of platforms, [Medium](https://medium.com/@techielass?ref=techielass.com), [Dev.To](https://dev.to/techielass?ref=techielass.com) and [The Ops Community](https://community.ops.io/techielass?ref=techielass.com), which has helped to grow my readership. Which is the important thing, I want to ensure what I write helps people. ![Blogs written each year](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/12/White---Blue-Modern-Line-Chart-Graph-1.png) Blogs written each year ### Most viewed blog posts in 2024 It's always good to look back at what blog posts are popular and what have dropped down in popularity. This year's top 10 looks very different from last year, and it's good to see some newer blogs I've written appear in the top ten list. This year my top 10 most visited blog posts have been: 1. [Install Exchange Online PowerShell modules](https://www.techielass.com/install-exchange-online-powershell-modules/) 2. [Connect to a SQL database with Visual Studio Code](https://www.techielass.com/connect-to-a-sql-database-with-visual-studio-code/) 3. [Convert a folder to a Git repository](https://www.techielass.com/convert-a-folder-to-a-git-repository/) 4. [Enable external email warning tag in Exchange Online](https://www.techielass.com/enable-external-email-warning-tag-in-exchange-online/) 5. [How to push code from VS Code to GitHub](https://www.techielass.com/how-to-push-code-from-vs-code-to-github/) 6. [What is Azure Arc?](https://www.techielass.com/what-is-azure-arc/) 7. [Troubleshooting Azure Arc for Servers](https://www.techielass.com/troubleshooting-azure-arc-for-servers/) 8. [Trigger GitHub Actions workflow when a folder changes](https://www.techielass.com/trigger-a-github-action-workflow-when-a-folder-changes/) 9. [Using Terraform with Azure Key Vault to retrieve secret values](https://www.techielass.com/using-terraform-with-azure-key-vault-to-retrieve-secret-values-2/) 10. [ConfigMgr Query for Name, Serial Number, BIOS Version, IP Address and MAC Address](https://www.techielass.com/configmgr-query-for-name-serial-number-bios-version-ip-address-and-mac-address/) ## Video I've not had a lot of time to create video content this year, unfortunately, but it's still nice to look at what content is popular and still popular on YouTube. ### Most viewed videos in 2024 1. [How to delete a repository in GitHub](https://youtu.be/u4qVRJOqMH0?ref=techielass.com) 2. [Clone a repository with GitHub Desktop](https://youtu.be/PoZNIbs%5Fwx8?ref=techielass.com) 3. [How to log out of GitHub Desktop](https://www.youtube.com/watch?v=tgsDb-0XYL8&ref=techielass.com) 4. [How to create a repository in GitHub](https://www.youtube.com/watch?v=IX4%5F12SFxak&ref=techielass.com) 5. [How to delete a repository in GitHub 2024](https://www.youtube.com/watch?v=2lAiHlXTY0s&ref=techielass.com) 6. [Connect to a SQL database with Visual Studio Code](https://www.youtube.com/watch?v=7MYn-3E7Gi8&ref=techielass.com) 7. [Create a new repository with GitHub Desktop](https://youtu.be/JBW6-5%5FRhUU?ref=techielass.com) 8. [How to install GitHub Desktop on Windows](https://www.youtube.com/watch?v=P8z4MEGcxh0&ref=techielass.com) 9. [How to push code to GitHub](https://www.youtube.com/watch?v=9823okRijgU&ref=techielass.com) 10. [GitLens Tutorial: How to use GitLens in VS Code](https://www.youtube.com/watch?v=QY5CBJ7cQ9Q&ref=techielass.com) ## Speaking I haven't really focussed on public speaking this year. I've delivered 10 talks to just under 500 people. I've spoken about Azure resilience, [Terraform](https://www.techielass.com/tag/terraform/), [Kusto Query Language](https://www.techielass.com/find-orphaned-azure-resources/), [Azure Bicep](https://www.techielass.com/tag/azure-bicep/) and career development. Speaking at events is something I do enjoy, but it's all self funded so I've had to reduce ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/12/image-4.png) ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/12/image-3.png) ## Certifications This year I have been focussing on the [Microsoft Applied Skills certifications](https://learn.microsoft.com/credentials/support/appliedskills-process-overview?ref=techielass.com). These are certifications that focus on being given tasks to carry out and then you are marked on them. Such as configuring Azure Log Analytics to have a certain data retention. They are open book tests, but they are quite challenging none the less as you need to be able to interrupt the tasks and then carry them out. This year I have earned the following Applied Skills: - [Administer Active Directory Domain Services](https://learn.microsoft.com/credentials/applied-skills/administer-active-directory-domain-services/?ref=techielass.com) - [Deploy and manage Microsoft Azure Arc–enabled servers](https://learn.microsoft.com/credentials/applied-skills/deploy-and-manage-microsoft-azure-arc-enabled-servers/?ref=techielass.com) - [Secure storage for Azure Files and Azure Blob Storage](https://learn.microsoft.com/credentials/applied-skills/secure-storage-azure-files-azure-blob-storage/?ref=techielass.com) - [Deploy and configure Azure Monitor](https://learn.microsoft.com/credentials/applied-skills/deploy-and-configure-azure-monitor/?ref=techielass.com) - [Implement information protection and data loss prevention by using Microsoft Purview](https://learn.microsoft.com/credentials/applied-skills/implement-information-protection-and-data-loss-prevention-by-using-microsoft-purview/?ref=techielass.com) - [Configure SIEM security operations using Microsoft Sentinel](https://learn.microsoft.com/credentials/applied-skills/configure-siem-security-operations-using-microsoft-sentinel/?ref=techielass.com) Applied Skills are free to try out, so if you haven't already done so I would encourage you to give them a go. ## Glasgow Azure User Group This year, the [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com) has had 6 meetups, enjoyed over 50 pizzas, consumed a ton of drinks and learned everything from Entra Security to Azure AI. I'm looking forward to seeing where the community goes in 2025\. 0:00 /0:40 1× ## Social Media Social media used to be something I would check constantly and put a lot of effort into. Over the last few years I've definitely pulled back from it. I no longer have the apps installed on my phone and I only check on the platforms if I am on a laptop/computer. But it's very sporadic. I feel the benefits, more time and less anxiety. I do still have a presence on a lot of the social media platforms if you do want to follow me: - [X](https://www.twitter.com/techielass?ref=techielass.com) - [Instagram](https://www.instagram.com/%5Ftechielass?ref=techielass.com) - [Threads](https://www.threads.net/@%5Ftechielass?ref=techielass.com) - [Bluesky](https://bsky.app/profile/techielass.bsky.social?ref=techielass.com) ### ### Enhancing Terraform Deployments with TFLint in GitHub Actions URL: https://www.techielass.com/enhancing-terraform-deployments-with-tflint-in-github-actions/ Last updated: 2024-12-17T08:01:55.000Z Infrastructure as Code (IaC) has changed the way we manage and deploy cloud environments. By combining Terraform with CI/CD tools like GitHub Actions, we can automate infrastructure deployment, ensuring consistency and reliability. But even the most well-designed workflows can benefit from an extra layer of validation. That’s where [TFLint](https://github.com/terraform-linters/tflint?ref=techielass.com), a Terraform linter, comes into play. In this blog, we’ll dive into how you can enhance your Terraform workflows in GitHub Actions by incorporating TFLint. We’ll explore what TFLint is, why it’s essential, and how to seamlessly integrate it into your deployment pipeline. ### Why use TFLint? TFLint is a tool designed to catch potential issues in your Terraform code before they cause deployment errors. It enforces best practices, detects misconfigurations, and identifies code inconsistencies. Here’s why it’s worth adding to your workflow: - You can spot problems like misaligned provider versions or unused variables before they reach production. - You can ensure your Terraform code adheres to industry or team-specific standards. - It can help prevent failed deployments and reduce debugging efforts. - Use custom rules and plugins tailored to your needs. Incorporating TFLint into your GitHub Actions workflow ensures that every deployment is backed by thorough code checks, saving time and reducing risk. ### Integrating TFLint into your workflow Let’s walk through how to integrate TFLint into a GitHub Actions pipeline that already deploys Terraform. **Prerequisites** - A GitHub repository with your Terraform configuration files. - A .tflint.hcl file to configure TFLint rules. - Secrets for accessing your cloud provider (e.g., Azure credentials). **Create your tflint.hcl file** We are going to build on work we did previously in the [Terraform with GitHub Actions CI/CD Pipeline](https://www.techielass.com/terraform-with-github-actions-ci-cd-pipeline) blog. So please check there to see how to build up your GitHub repository and create the relevant Terraform and GitHub files. And then come back here to build on that and add the TFLint checks. The first thing we’re going to do is add the relevant .tflint.hcl file to our GitHub repository. Head over to [https://www.github.com](https://www.github.com/?ref=techielass.com) and browse to the repository where your files are. Click on **Add file > Create new file** ![Add new file to GitHub repository](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/12/image.png) Add new file to GitHub repository Name the file .tflint.hcl and then paste in the following code: ```hcl plugin "azurerm" { enabled = true version = "0.27.0" source = "github.com/terraform-linters/tflint-ruleset-azurerm" } # General Terraform rules rule "terraform_deprecated_interpolation" { enabled = true } # Disallow variables, data sources, and locals that are declared but never used. rule "terraform_unused_declarations" { enabled = true } # Disallow // comments in favor of #. rule "terraform_comment_syntax" { enabled = false } # Disallow output declarations without description. rule "terraform_documented_outputs" { enabled = true } # Disallow variable declarations without description. rule "terraform_documented_variables" { enabled = true } # Disallow variable declarations without type. rule "terraform_typed_variables" { enabled = true } # Azure-specific rules # Additional customisations as needed ``` Once you’ve pasted in the code, **Commit changes**. ![Commit changes to GitHub file](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/12/image-1.png) Commit changes to GitHub file This TFLint configuration file enables the Azure provider plugin to enforce Terraform best practices and custom rules during linting. It includes general Terraform rules, such as requiring outputs and variables to have descriptions, ensuring variables have types, and checking for deprecated interpolation usage. Azure-specific rules can also be added, but I haven’t defined any in this file yet. #### **Updating Your GitHub Actions Workflow** The next thing we need to do is modify our GitHub Actions workflow so that it includes the TFlint check using the file we’ve just created. Within your repository browse to the **.github** folder and open your GitHub Actions workflow file. Edit it and paste in the following code: ```yml name: Terraform deploy Log Analytics with TFLint checks on: workflow_dispatch: jobs: terraform: runs-on: ubuntu-latest env: ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} ARM_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} ARM_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} TF_VAR_client_id: ${{ secrets.AZURE_CLIENT_ID }} TF_VAR_client_secret: ${{ secrets.AZURE_CLIENT_SECRET }} TF_VAR_subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} TF_VAR_tenant_id: ${{ secrets.AZURE_TENANT_ID }} steps: - name: Checkout code uses: actions/checkout@v4.2.2 - name: Set up Terraform uses: hashicorp/setup-terraform@v2 with: terraform_version: 1.5.5 - name: Cache plugin dir uses: actions/cache@v4 with: path: ~/.tflint.d/plugins key: ${{ matrix.os }}-tflint-${{ hashFiles('.tflint.hcl') }} - name: Setup TFLint uses: terraform-linters/setup-tflint@v4 with: tflint_version: v0.52.0 - name: Show version run: tflint --version - name: Init TFLint run: tflint --init env: # https://github.com/terraform-linters/tflint/blob/master/docs/user-guide/plugins.md#avoiding-rate-limiting GITHUB_TOKEN: ${{ github.token }} - name: Run TFLint run: tflint -f compact - name: Terraform Init run: terraform init - name: Terraform Plan run: terraform plan - name: Terraform Apply if: github.ref == 'refs/heads/main' run: terraform apply -auto-approve ``` Once pasted **Commit changes** to the file. ### Breaking Down the Workflow **Caching TFLint Plugins** The **actions/cache step** speeds up workflows by caching downloaded TFLint plugins. This is especially useful for large configurations or frequent deployments. **Setting Up TFLint** The **terraform-linters/setup-tflint** action installs the specified TFLint version, ensuring compatibility with your codebase. **Running TFLint** - The **tflint --init** command initialises the plugins specified in **.tflint.hcl**. - The **tflint -f compact** command runs TFLint, formatting the output for readability. If TFLint detects any issues, the workflow will fail, prompting you to fix the errors before deployment proceeds. **Terraform steps** After TFLint checks, the workflow continues with the usual Terraform steps (terraform init, terraform plan, and terraform apply). ### Run the pipeline We’ve configured this pipeline to only run when it’s manually triggered. To run it follow these steps: - Click on **Actions** at the top of your repository. - Select the pipeline name. - Click on **Run workflow**. ![Run GitHub Actions workflow](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/12/image-2.png) Run GitHub Actions workflow - Refresh your browser and you will see the pipeline running and can monitor it. ### Best Practices for TFLint - Adjust **.tflint.hcl** to include rules specific to your project or organisation. - Use the latest version to benefit from new features and bug fixes. Use TFLint alongside tools like [Terrascan](https://www.techielass.com/what-is-terrascan/) or Checkov for a comprehensive IaC security strategy. ### Conclusion Integrating TFLint into your Terraform deployment pipeline ensures that your infrastructure code is robust, consistent, and error-free. By catching issues early, TFLint saves time and reduces the risk of costly mistakes in production. Whether you’re managing simple deployments or complex cloud environments, TFLint is an invaluable addition to your CI/CD workflows. Take the next step in improving your Terraform practices—integrate TFLint today! ### Understanding Microsoft’s Terraform Providers for Azure: AzureRM vs AzAPI URL: https://www.techielass.com/terraform-providers-for-azure/ Last updated: 2024-12-15T16:08:47.000Z Managing Azure resources effectively requires powerful and flexible tools. This is where Infrastructure as Code (IaC) comes into play. IaC enables you to define and manage your resources through code, ensuring consistency, scalability, and reliability across your environment. Among the many IaC tools available, Terraform stands out as a popular choice, offering a robust framework for provisioning and managing infrastructure. Two primary providers are available when working with Azure: Azure Resource Manager (AzureRM) and AzAPI. Choosing the right provider depends on your use case, whether you need production-grade stability or cutting-edge feature adoption. In this blog post, we’ll delve into the concept of Terraform providers, explore the AzureRM and AzAPI providers in detail, and compare the two to help you make informed decisions for your Azure infrastructure needs. ### What are Terraform providers? In Terraform, providers are plugins that enable Terraform to interact with different infrastructure platforms, services, or APIs. They serve as the bridge between Terraform and the systems it manages, translating Terraform's declarative configurations into API calls to the targeted platform. Each provider focuses on a specific set of resources and services, allowing you to define and manage infrastructure as code consistently and efficiently. ### The AzureRM provider Microsoft developed and maintains the Azure Resource Manager (AzureRM) provider, which provides a reliable and structured way to define, deploy, and manage Azure resources using Terraform. The AzureRM provider offers a high level of stability, making it the go-to choice for a production environment where consistency and predictability are key values. Each provider release undergoes extensive validation, providing users with confidence that their configurations will function as expected. Below is an example of how you would call the provider within your Terraform code: ```terraform terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "4.12.0" } } } provider "azurerm" { # Configuration options } ``` ### The AzAPI provider The AzAPI provider is also developed and maintained by Microsoft. This provider is designed for users who need early access to the latest Azure features and services, providing flexibility in defining, deploying, and managing Azure resources. The AzAPI provider keeps up with rapid changes, ensuring compatibility with new Azure services as soon as they become available. While it may not offer the same stability as AzureRM, it is useful for those who want to experiment and adopt the latest features quickly. This makes it a preferred choice for testing and proof-of-concept environments. For a rich authoring experience, users are strongly recommended to install the [AzAPI VSCode Extension](https://marketplace.visualstudio.com/items?itemName=azapi-vscode.azapi&ref=techielass.com). This extension enhances usability by providing features such as syntax highlighting, autocompletion, and other tools tailored to streamline AzAPI provider configurations. Below is an example of how you would call the provider within your Terraform code: ```terraform terraform { required_providers { azapi = { source = "Azure/azapi" version = "2.1.0" } } } provider "azapi" { # Configuration options } ``` ### AzureRM v AzAPI: Key differences Here’s a comparison table highlighting the key differences between the AzureRM and AzAPI Terraform providers: __AzureRM vs AzAPI: Key differences__ | Aspect | AzureRM | AzAPI | | ---------------- | ------------------------------------------------------- | --------------------------------------------------------------- | | Stability | High stability; well-tested and mature. | Moderate stability; newer and less tested. | | API Coverage | Focuses on widely adopted Azure services. | Covers all Azure APIs, including the latest. | | Speed of updates | Slower to adopt new features due to stability focus. | Rapid updates to support new Azure features. | | Complexity | Simplified resource management with abstractions. | Requires deeper knowledge of Azure APIs. | | Use cases | Ideal for production environments and stable workloads. | Best for experimental setups and testing cutting-edge features. | ### Conclusion Selecting the right Terraform provider for your Azure environment is crucial for managing your infrastructure effectively. Whether you need a provider that delivers a consistent, production-ready experience or one that offers early access to the latest Azure features, Terraform gives you the flexibility to choose the solution that best fits your needs. ### Terraform with GitHub Actions CI/CD Pipeline URL: https://www.techielass.com/terraform-with-github-actions-ci-cd-pipeline/ Last updated: 2025-01-23T10:28:14.000Z By using [Terraform](https://www.techielass.com/tag/terraform/) with GitHub Actions, IT professionals can automate and streamline the deployment of resources across Azure environments in a consistent and reliable way. This guide will walk you through setting up Terraform in GitHub Actions, from configuring the necessary secrets and permissions to writing Terraform configuration files and automating deployments. Whether you're new to [CI/CD practices](https://www.techielass.com/ci-cd-pipeline-tools/) or looking to integrate Terraform into your GitHub workflows, this step-by-step tutorial will provide you with the tools and techniques to get started. ## Prerequisites Before we get started, make sure you have the following in place: 1. Azure Subscription: To host the resources provided by Terraform. If you don’t have one, you can sign up for a free trial. 2. GitHub account: You need a free GitHub account to take advantage of their CI/CD pipeline tools. You can sign up for one [here](https://www.github.com/?ref=techielass.com). ## How to run Terraform in an GitHub Actions pipeline ### Create the Service Principal A Service Principal (SPN) is required to allow Terraform on the GitHub Actions build agent to authenticate against the Azure subscription and create Azure resources. - Within the Azure portal open **Microsoft Entra ID**. - Click on **Add** and select **App registration.** ![Azure app registrations](https://lh7-rt.googleusercontent.com/docsz/AD_4nXewUTMQo1WyUrBZ8YxgriYme9mlahP4Ijx3n302yO2Yio4D5ejQvNkuAUDEzeTVQGioxmNak8vtbyAzi85RCzwXhkeCGpa2AV-SjJ9iiFhAq7konkMx-hBI_hJJxA_SgwHGbeZ1oQ?key=WZ4acGoHxQDOYsr9ZmrMrYVV) Azure app registrations - Give the application a name and accept all the default settings and click on **Register**. - Make a note of the **Application (client) ID** and **Directory (tenant) ID** as we need them later. - When the App registration is created click on **Manage > Certificates & Secrets.** - Click on **Client Secrets** and click on **New client secret.** - Give the secret a description and expiry date and click on **Add**. - Make a note of the **value**, as you’ll need it later on. ### Create the Terraform State storage account In Terraform, the "state account" typically refers to the storage solution used to house the "state file," a critical file that keeps track of the existing infrastructure's configuration and status. This state file contains information about resources that have been deployed, helping Terraform identify what changes are required when the configuration is modified. Centralising the state file supports collaborative work among team members by preventing conflicting updates. In this guide, we’ll demonstrate how to configure an Azure storage account to store the Terraform state file. Open [https://shell.azure.com](https://shell.azure.com/?ref=techielass.com) in a browser and copy the following PowerShell to create the resource group, storage account, and relevant blob container. Change the variable information to suit your requirements. ```Powershell # Define variables  $resourceGroupName = "tfstate-gademo-rg"  $location = "Sweden Central"  $storageAccountName = "tfstategademo"  $containerName = "tfstate"  # Create a new resource group  New-AzResourceGroup -Name $resourceGroupName -Location $location  # Create a new storage account within the resource group  New-AzStorageAccount -ResourceGroupName $resourceGroupName  -Name $storageAccountName  -Location $location  -SkuName Standard_LRS  -Kind StorageV2  # Retrieve the storage account context  $storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName  $context = $storageAccount.Context  # Create a blob container within the storage account  New-AzStorageContainer -Name $containerName -Context $context ``` Navigate to the storage account within [https://portal.azure.com](https://portal.azure.com/?ref=techielass.com) and under **Access Control (IAM)** grant the *Storage Blob Data Contributor role*to the Service Principal (SPN) that you just created. This allows the SPN to write the tfstate file to the storage account. ### Set Azure subscription permissions The SPN also needs permission to deploy the Azure resource in the wider subscription. Now setting the appropriate SPN permission is a whole topic in itself, but for this example we’re going to grant the SPN *Contributor*permissions on the entire subscription. - Within the Azure portal browse to **Subscriptions** then select the subscription you want to deploy the resources to. - Select **Access control (IAM)** - Click on **Add** and then **Add role assignment** ![Azure subscription access controls](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdcjDAeNYSOd6ymfo5Rhp5Dich8sxyHEZO5iAY7_RRhQoYT6LrX5tgdKAM7uH7NxFWi781TWiPGpA_K18PGu9Hik0x45CUnr9HuP3wemY3H34JI0XTkU7rpx5JV64Y_glwytY3k9Q?key=WZ4acGoHxQDOYsr9ZmrMrYVV) Azure subscription access controls - Select **Privileged administrator roles** then **Contributor** - Select the SPN you created earlier and assign the permissions. ### Set up a GitHub repository With your account set up, you next need to sign into [GitHub](https://www.github.com/?ref=techielass.com) and create a repository where you’ll be setting up your CI/CD pipeline. Within GitHub click on **Repositories** on the top menu. Now click on **New** on the top right hand side. ![Create new GitHub Repository](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/11/image-4.png) Create new GitHub Repository You’ll be asked to answer some questions to create a new repository. Fill in the detail as follows: - **Owner & repository name**: Select your GitHub account and give the repository a name that will make sense to you. - **Description**: This is an optional field. - **Visibility**: Select Public - **Initialize the repository**: Tick the **Add a README file** box and then select Terraform as the .gitignore template - **License:** You can leave this as **None** Now click on the **Create Repository** button. ![Create New GitHub repository](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/11/image-5.png) Create New GitHub repository ### Create GitHub secrets We don’t want to store our Azure connection information in plain text so we’ll take advantage of GitHub’s ability to store secrets securely that can be called by our GitHub Actions pipeline. - Click on **Settings** at the top of your repository. - Then click on **Secrets and Variables** on the left hand menu then **Actions.** - Click on **New repository secret** and create the the following secrets: - AZURE\_CLIENT\_ID - AZURE\_CLIENT\_SECRET - AZURE\_TENANT\_ID - AZURE\_SUBSCRIPTION\_ID Within each secret make sure you store the right information. We’ll be calling these secrets as part of our GitHub Action pipeline. ### Create Terraform configuration files In a previous blog post [Deploying an Azure Log Analytics Workspace with Terraform](https://www.techielass.com/deploying-an-azure-log-analytics-workspace-with-terraform/), I designed a Terraform template using [Azure Verified Modules](https://azure.github.io/Azure-Verified-Modules/?ref=techielass.com) to deploy an Azure Log Analytics workspace. For this example, we’ll build on that template by adding a new section called backend. The backend block in this updated Terraform template specifies the location and configuration for storing the Terraform state file. Here, we reference the storage account and resource group that were set up in a previous step. - Within your GitHub repository click on **Add file > Create new file.** - Name the file **main.tf.** - Paste the Terraform code below into the file. - Click on **Commit changes**. ```terraform terraform {   required_version = ">= 1.3.0"   required_providers {     azurerm = {       source  = "hashicorp/azurerm"       version = ">= 3.71, < 5.0.0"     }     random = {       source  = "hashicorp/random"       version = ">= 3.5.0, < 4.0.0"     }   }   backend "azurerm" {     resource_group_name  = “tfstate-gademo-rg”     storage_account_name = "tfstategademo"     container_name       = "tfstate"     key                  = "tfdemo.ga.tfstate"   } } provider "azurerm" {   features {}   subscription_id = "XXXX-XXXX-XXXX-XXXX" } # This ensures we have unique CAF compliant names for our resources. module "naming" {   source  = "Azure/naming/azurerm"   version = "0.3.0" } locals {   azure_regions = [     "ukwest",     "westeurope",     "francecentral",     "swedencentral"     # Add other regions as needed   ] } variable "enable_telemetry" {   description = "Enable or disable telemetry for the log analytics workspace"   type        = bool   default     = true # Set a default value if desired } # This picks a random region from the list of regions. resource "random_integer" "region_index" {   max = length(local.azure_regions) - 1   min = 0 } # Add a new random_pet resource to generate a unique, human-readable name resource "random_pet" "log_analytics_workspace_name" {   length    = 2   separator = "-" } # This is required for resource modules resource "azurerm_resource_group" "rg" {   location = local.azure_regions[random_integer.region_index.result]   name     = module.naming.resource_group.name_unique } # This is the module call module "log_analytics_workspace" {   source = "Azure/avm-res-operationalinsights-workspace/azurerm"   # source             = "Azure/avm-res-operationalinsights-workspace/azurerm"   enable_telemetry                          = var.enable_telemetry   location                                  = azurerm_resource_group.rg.location   resource_group_name                       = azurerm_resource_group.rg.name   name                                      = "law-${random_pet.log_analytics_workspace_name.id}"   log_analytics_workspace_retention_in_days = 60   log_analytics_workspace_sku               = "PerGB2018"   log_analytics_workspace_daily_quota_gb    = 200   log_analytics_workspace_identity = {     type = "SystemAssigned"   } } ``` ### Configure the GitHub Actions pipeline We now need to write the GitHub Actions pipeline file. - Within your GitHub repository click on **Add file > Create new file.** - Name the file **.github/workflows/deploy.yml.** - Paste the code below into the file. - Click on **Commit changes**. ```yml name: Terraform deploy Log Analytics on:   workflow_dispatch: jobs:   terraform:     runs-on: ubuntu-latest     env:       ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}       ARM_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}       ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}       ARM_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}          steps:       - name: Checkout code         uses: actions/checkout@v2       - name: Set up Terraform         uses: hashicorp/setup-terraform@v2         with:           terraform_version: 1.5.5       - name: Terraform Init         run: terraform init       - name: Terraform Plan         run: terraform plan         env:           TF_VAR_client_id: ${{ secrets.AZURE_CLIENT_ID }}           TF_VAR_client_secret: ${{ secrets.AZURE_CLIENT_SECRET }}           TF_VAR_subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}           TF_VAR_tenant_id: ${{ secrets.AZURE_TENANT_ID }}       - name: Terraform Apply         if: github.ref == 'refs/heads/main'         run: terraform apply -auto-approve         env:           TF_VAR_client_id: ${{ secrets.AZURE_CLIENT_ID }}           TF_VAR_client_secret: ${{ secrets.AZURE_CLIENT_SECRET }}           TF_VAR_subscription_id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}           TF_VAR_tenant_id: ${{ secrets.AZURE_TENANT_ID }} ``` This GitHub Actions workflow is named *"Terraform deploy Log Analytics"*. It allows users to manually trigger a Terraform deployment to set up a Log Analytics environment in Azure. It authenticates using Azure secrets stored in GitHub, initialises Terraform, runs a plan to preview changes, and, if the workflow is run from the main branch, applies the changes automatically. ### Run the pipeline We’ve configured this pipeline to only run when it’s manually triggered. To run it follow these steps: - Click on **Actions** at the top of your repository. - Select the pipeline name. - Click on **Run workflow**. - Refresh your browser and you will see the pipeline running and can monitor it. ## Conclusion The integration of Terraform's robust infrastructure-as-code capabilities with GitHub's CI/CD pipelines simplifies complex deployments, ensuring efficiency, reliability, and consistency across environments. Now that you’ve set up and run your pipeline, the possibilities are endless—explore further by adding modules, integrating testing steps, or expanding deployments to additional regions. Happy automating! ### Terraform with Azure DevOps CI/CD Pipeline URL: https://www.techielass.com/terraform-with-azure-devops-ci-cd-pipeline/ Last updated: 2025-01-23T10:29:26.000Z By using [Terraform](https://www.techielass.com/tag/terraform/) within an [Azure DevOps](https://www.techielass.com/tag/azure-devops/) pipeline, IT professionals can deploy resources consistently and reliably across Azure environments. This guide will walk you through setting up Terraform in Azure DevOps, from creating the necessary service connections and permissions to writing configuration files and running automated deployments. Whether you're new to [CI/CD practices](https://www.techielass.com/ci-cd-pipeline-tools/) or looking to integrate Terraform into your [Azure](https://www.techielass.com/tag/azure/) workflows, this step-by-step tutorial will equip you with the tools and techniques to get started. ## Prerequisites Before we get started, make sure you have the following in place: 1. Azure Subscription: To host the resources provided by Terraform. If you don’t have one, you can sign up for a free trial. 2. Azure DevOps Account: To create [CI/CD pipelines](https://spacelift.io/blog/ci-cd-pipeline?ref=techielass.com). If you don’t have one, you can [sign up here](https://azure.microsoft.com/en-us/services/devops/?ref=techielass.com). 💡 Looking to connect with me? You can follow me on BlueSky here: [https://bsky.app/profile/techielass.bsky.social](https://bsky.app/profile/techielass.bsky.social?ref=techielass.com) ## How to run Terraform in an Azure DevOps pipeline ### Create the Service Principal A Service Principal (SPN) is required to allow Terraform on the Azure DevOps (ADO) build agent to authenticate against the Azure subscription and create Azure resources. - Within the Azure portal open **Microsoft Entra ID**. - Click on **Add** and select **App registration.** ![Microsoft Entra ID app registration](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcNXeyXtyI0f5DwkfB36N3kuiueSWnvZDM1w27Z9WCe-Ftl722gWteesgc1Ji-H4ItQYgGKmVWEXdkZ5i0ObphaBn3C6EKkIVMwhXFc1WR30_D_v2x7_dnIPB5NRS_7l1T9vLXR?key=BLgNg5gNvzli2_FgGktB759n) Microsoft Entra ID app registration - Give the application a name accept all the default settings and click on **Register**. - Make a note of the **Application (client) ID** and **Directory (tenant) ID** as we need them later. - When the App registration is created click on **Manage > Certificates & Secrets.** - Click on **Client Secrets** and click on **New client secret.** - Give the secret a description and expiry date and click on **Add**. - Make a note of the **value**, as you’ll need it later on. ### Create the Terraform State storage account In Terraform, the "state account" typically refers to the storage location that maintains the "state file," which is crucial for tracking the current infrastructure status. This state file records information about your deployed resources, ensuring that Terraform knows which resources to create, update, or delete when changes are made to the configuration. By centralising the state, multiple team members can collaborate without conflicting updates, and remote storage provides enhanced security, versioning, and backup capabilities. We’re going to create an Azure storage account so we can store our state file. Open [https://shell.azure.com](https://shell.azure.com/?ref=techielass.com) in a browser and copy the following PowerShell to create the resource group, storage account, and relevant blob container. Change the variable information to suit your requirements. ```powershell # Define variables $resourceGroupName = "tfstate-demo-rg" $location = "Sweden Central" $storageAccountName = "tfstatesademo" $containerName = "tfstate" # Create a new resource group New-AzResourceGroup -Name $resourceGroupName -Location $location # Create a new storage account within the resource group New-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName -Location $location -SkuName Standard_LRS -Kind StorageV2 # Retrieve the storage account context $storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName $context = $storageAccount.Context # Create a blob container within the storage account New-AzStorageContainer -Name $containerName -Context $context ``` Navigate to the storage account within [https://portal.azure.com](https://portal.azure.com/?ref=techielass.com) and under **Access Control (IAM)** grant the *Storage Blob Data Contributor role*to the Service Principal (SPN) that you just created. This allows the SPN to write the tfstate file to the storage account. ### Set Azure subscription permissions The SPN also needs permission to deploy the Azure resource in the wider subscription. Now setting the appropriate SPN permission is a whole topic in itself, but for this example we’re going to grant the SPN *Contributor*permissions on the entire subscription. - Within the Azure portal browse to **Subscriptions** then select the subscription you want to deploy the resources to. - Select **Access control (IAM)** - Click on **Add** and then **Add role assignment** ![Azure subscription permissions](https://lh7-rt.googleusercontent.com/docsz/AD_4nXe2Ffe9y_PWGuYL_a8qcGs6mEcHA4XhlDeqBQvATNFq3IGY56bmUw4mX7fsCe2_CCHHsO0idql1aNIx5ZMx9wHXANWNnX8Otipt-YGdpncy8JO9ryjrYMx4jDxSjn1Cp52p37GXZA?key=BLgNg5gNvzli2_FgGktB759n) Azure subscription permissions - Select **Privileged administrator roles** then **Contributor** - Select the SPN you created earlier and assign the permissions. ### Set up An Azure DevOps Project With your account set up, you next need to sign into [Azure DevOps](https://spacelift.io/blog/what-is-azure-devops?ref=techielass.com) and create a project where you’ll be setting up your CI/CD pipelines. - Go to the [Azure DevOps website](https://dev.azure.com/?ref=techielass.com) and sign in with your Microsoft account or organizational account. - Navigate to **Organization**: If you’re part of multiple organizations, select the organization where you want to create the project from the top right corner of the page. - Click on the **New Project** button. - In the **Create a new project** form, fill in the Project Name and visibility and optionally, provide a description for your project, then click on the **Create** button. ![Azure DevOps new project](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcAa6ORJZfQvli7c0dx0pN4_1A5UUaDMXvG3vPq49zeSTfPCDUSfu_VHGImsPjeqcDmida5IRfPOPZTDb3pU6HEnTofdrzg9_cITGUJKgpDqEqiYpPnqhzrwqtq1_6Go2t28zuS0Q?key=BLgNg5gNvzli2_FgGktB759n) Azure DevOps new project - Once the project is created, you’ll be redirected to the project’s dashboard. Depending on your needs, you may want to add team members, permissions, or integrate other services to this project. ### Create service connection An Azure DevOps service connection in Azure is a secure, managed connection that links Azure DevOps to Azure. This connection allows DevOps pipelines to securely access and deploy resources, configure infrastructure, or execute commands on these services without requiring manual credential input each time. Let’s create one we can use in this example. - Click on **Projects Settings** in the bottom left-hand corner. - Click on **Service Connection,** then **New Service Connection.** - Select **Azure Resource Manager.** - Then select **Service Principal (manual).** - Fill in the information from your subscription and the Service Principal (SPN) that you created earlier. Ensure you *Grant access permissions for all pipelines* before creation. ### Create Terraform configuration files In a previous blog post [Deploying an Azure Log Analytics Workspace with Terraform](https://www.techielass.com/deploying-an-azure-log-analytics-workspace-with-terraform/), I designed a Terraform template using [Azure Verified Modules](https://azure.github.io/Azure-Verified-Modules/?ref=techielass.com) to deploy an Azure Log Analytics workspace. We’re going to use the base of that template in this example. I have added a section to the template called *backend.* The *backend* block in this Terraform template defines where and how the state file for your Terraform deployment is stored. We’re specifying the storage account and resource group we created in an earlier step. ```terraform terraform {   required_version = ">= 1.3.0"   required_providers {     azurerm = {       source  = "hashicorp/azurerm"       version = ">= 3.71, < 5.0.0"     }     random = {       source  = "hashicorp/random"       version = ">= 3.5.0, < 4.0.0"     }   }   backend "azurerm" {     resource_group_name  = "tfstate-demo-rg"     storage_account_name = "tfstatesademo"     container_name       = "tfstate"     key                  = "tfdemo.env0.tfstate"   } } provider "azurerm" {   features {}   subscription_id = "XXXX-XXXX-XXXX-XXXX" } # This ensures we have unique CAF compliant names for our resources. module "naming" {   source  = "Azure/naming/azurerm"   version = "0.3.0" } locals {   azure_regions = [     "ukwest",     "westeurope",     "francecentral",     "swedencentral"     # Add other regions as needed   ] } variable "enable_telemetry" {   description = "Enable or disable telemetry for the log analytics workspace"   type        = bool   default     = true # Set a default value if desired } # This picks a random region from the list of regions. resource "random_integer" "region_index" {   max = length(local.azure_regions) - 1   min = 0 } # Add a new random_pet resource to generate a unique, human-readable name resource "random_pet" "log_analytics_workspace_name" {   length    = 2   separator = "-" } # This is required for resource modules resource "azurerm_resource_group" "rg" {   location = local.azure_regions[random_integer.region_index.result]   name     = module.naming.resource_group.name_unique } # This is the module call module "log_analytics_workspace" {   source = "Azure/avm-res-operationalinsights-workspace/azurerm"   # source             = "Azure/avm-res-operationalinsights-workspace/azurerm"   enable_telemetry                          = var.enable_telemetry   location                                  = azurerm_resource_group.rg.location   resource_group_name                       = azurerm_resource_group.rg.name   name                                      = "law-${random_pet.log_analytics_workspace_name.id}"   log_analytics_workspace_retention_in_days = 60   log_analytics_workspace_sku               = "PerGB2018"   log_analytics_workspace_daily_quota_gb    = 200   log_analytics_workspace_identity = {     type = "SystemAssigned"   } } ``` In order to create the Azure resource we need to create the Terraform file within a repository for storage. You can create the file in a repository within Azure DevOps or somewhere else, like GitHub. We’re going to use the Azure DevOps repository. Click on **Repos** on the left-hand menu and then select **Files.** The repository will be empty so we need to initialize it with a readme file and a .gitignore file. Ensure the box is ticked for **Add a README** and select **Terraform** within the **Add a .gitignore box** then click on **Initalize.** ![Initalize the Azure DevOps repo](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdOiUR5IclEj56vv1q4RoWw5z-is3oAEpuyrAymtMIjBnhOvPBXM6GKIu1hJngt7-XCNEDChLPfwlYjL-qXLusxUcc0QtcBEsuTgGVlIiMOc1tWJTGmy8Xmv_e2dNu_TQw6sNh1vg?key=BLgNg5gNvzli2_FgGktB759n) Initalize the Azure DevOps repo We can now create a file with our Terraform. To do this, click on the three ellipses button in the left-hand corner near your project name and select **New > File**. Give the file an appropriate name like *main.tf* and click on **Create.** Paste the Terraform code into the file and then click on **Commit.** ### Configure the Azure DevOps Pipeline We need to set up our pipeline, we’re going to do this by writing the code needed in the YAML file. Follow these instructions: - Click on **pipelines** in the left-hand side then click on **Create pipeline.** ![Create Azure DevOps Pipeline](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcAxDKU_DGRBterFum1pJx2NoWfUXfd-LBKHAj0zc4Y7Qge--7K6jTsJygwyK3otmuaBrinhVGwoW_sy_cerXuL7kbGRd01H9epDH07h4mH1AXHZ5eLZLp0huLJTsHrvdn8rsoV?key=BLgNg5gNvzli2_FgGktB759n) Create Azure DevOps Pipeline - Select **Azure Repos Git** as the place to store the YAML file. - Select your project repository. - Then select **Starter pipeline.** ![Create Azure DevOps Pipeline](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeLXrS7e7hUuYo4XbocZMdbbFTAF55WJQP5yMiAgg3aBd9nPl6LRmJP-5Dw5CXUyZ18M9PhbVmgsE4U2TwXrFkONEIs6621-e_o1JptWSIBQC89udf_OwKWxO7vIQIiV-SAF8mgzw?key=BLgNg5gNvzli2_FgGktB759n) Create Azure DevOps Pipeline - Copy the following code into the editor: ```yml name: Terraform deploy Log Analytics trigger: - main pool: vmImage: 'ubuntu-latest' variables: azureServiceConnection: 'replacewith your service connectionname' stages: - stage: Plan displayName: 'Terraform Plan' jobs: - job: TerraformPlan displayName: 'Terraform Plan' steps: # Step 1: Initialize and Plan Terraform - task: AzureCLI@2 inputs: azureSubscription: $(azureServiceConnection) # The service connection defined in your pipeline scriptType: bash scriptLocation: inlineScript inlineScript: | echo "Setting up Azure authentication using the service principal credentials from the service connection" echo "Terraform init..." terraform init echo "Terrform plan..." terraform plan displayName: 'Terraform init and plan' # Step 2: Deploy - task: AzureCLI@2 inputs: azureSubscription: $(azureServiceConnection) # The service connection defined in your pipeline scriptType: bash scriptLocation: inlineScript inlineScript: | echo "Terraform apply" terraform apply -auto-approve displayName: 'Terraform apply' ``` Once you’ve inputted the code, click the **save** button to commit the code to your repository. ### Run the pipeline Within the YAML code that we wrote in the stage above is the trigger to run the pipeline whenever codes changes within the repository. To check the pipeline run follow these instructions: - Click on **Pipelines** in the left-hand menu then **Pipelines.** - If the pipeline is running you can check on it’s progress, if not you can click on **Run pipeline**. ### Conclusion By following this guide, you've set up a CI/CD pipeline that integrates Terraform with Azure DevOps, allowing you to automate infrastructure deployments and streamline workflows. Using Terraform within Azure DevOps provides consistency, version control, and enhanced collaboration for infrastructure management, all while minimising manual effort and reducing the risk of configuration drift. What will you use Azure DevOps and Terraform to deploy? ### How to use GitHub Copilot for Terraform URL: https://www.techielass.com/how-to-use-github-copilot-for-terraform/ Last updated: 2024-11-27T11:15:18.000Z In this article, we’re going to dive into GitHub Copilot, which is a generative AI tool. We’ll talk about the features, and how it can help us when writing Terraform configurations. ### **What is GitHub Copilot?** GitHub Copilot is a generative AI tool developed by GitHub, and is built on OpenAI’s GPT (Generative Pre-trained Transformer) architecture. Using machine learning models trained on public code repositories, GitHub Copilot provides real-time suggestions for entire lines or blocks of code based on the context of what you're typing. This can speed up the coding process, reduce errors, and help users explore different coding methods or languages with ease. ### **GitHub Copilot Features** GitHub Copilot is packed with features that make it ideal for Terraform users and developers in general: - **Intelligent code suggestions**: Copilot suggests code as you type, offering options that fit your coding style. - **Code completion**: It can complete lines, statements, or complex code snippets. - **Context-Aware**: Copilot understands what you're working on and adapts to the structure and syntax of the file. - **Multi-Language support**: Besides Terraform, Copilot supports many languages, including Python, JavaScript, and YAML. - **Comment-based commands**: By writing a comment with clear instructions, you can direct Copilot to generate specific code for you. - **Integrated with development tools**: It is seamlessly integrated with popular development environments, allowing you to access its features directly within your workflow. ## Sign up for Techielass - A blog by Sarah Lean Technical…Practical…From A Scottish Lassie Subscribe Email sent! Check your inbox to complete your signup. No spam. Unsubscribe anytime. ### **How to use GitHub Copilot** Getting started with GitHub Copilot in Visual Studio Code (VS Code) takes just a few steps. Here’s how you can install the GitHub Copilot extension and start using it: #### **Step 1: Install Visual Studio Code** If you haven't already, download and install Visual Studio Code (VSCode) from the[ official website](https://code.visualstudio.com/?ref=techielass.com). #### **Step 2: Install the GitHub Copilot extension** 1. Open VSCode. 2. Go to the **Extensions** view by clicking on the **Extensions** icon in the sidebar or pressing *Ctrl+Shift+X*. 3. In the search bar, type “GitHub Copilot”. ![GitHub Copilot extension in VSCode](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/11/image-3.png) GitHub Copilot extension in VSCode 1. Click **Install** next to the GitHub Copilot extension by GitHub. #### **Step 3: Log into GitHub** After installing the extension, you’ll be prompted to sign in to GitHub: 1. Click **Sign in to GitHub**. 2. Follow the prompts to complete the sign-in process. 3. Grant the necessary permissions for GitHub Copilot to work in VS Code. #### **Step 4: Start Using Copilot** Once you’re signed in, GitHub Copilot is ready to go. As you start typing code or comments, GitHub Copilot will offer code suggestions automatically. You can accept these suggestions by pressing *Tab*. ### **Does GitHub Copilot work with Terraform?** Yes, GitHub Copilot is compatible with Terraform and can assist in writing Terraform configuration files (.tf). As you type out Terraform commands, GitHub generates suggestions tailored to the syntax and structure of Terraform, which is useful for tasks like setting up resources, defining providers, and specifying variables. GitHub Copilot's suggestions can accelerate Terraform development and help you ensure that configurations are set up correctly, following best practices. However, always double-check the suggested code to ensure that it aligns with your infrastructure’s requirements and standards. ### **Examples of using GitHub Copilot to write Terraform configuration** In this section, we’ll explore how GitHub Copilot can help create an Azure resource using Terraform. Let’s say you want to provision an Azure App Service plan. If we create a new file within VSCode and save it with the name *main.tf*. Enter the following code to start: ```terraform resource “azurerm_app_service_plan” “my_appserviceplan” { ``` GitHub Copilot will automatically suggest the name, location, resource group, and SKU code that you would need to complete the deployment of the service plan. ![Terraform code within VSCode](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/11/image-2.png) Terraform code within VSCode You can accept the suggestion by pressing Tab. But you don’t have to start writing code to get GitHub Copilot to suggest code for you. You can start with a comment. Open a new file in VSCode and save it called storage.tf. Type the comment ```terraform # Terraform configuration to create an Azure storage account ``` GitHub Copilot will suggest the Azure provider code automatically for you. Accept it by pressing Tab. ![Terraform code VSCode](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/11/image.png) Terraform code VSCode It will then start to define the resource block to define the storage account for you, again select the suggestion using the Tab key. ![Terraform code VSCode](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/11/image-1.png) Terraform code VSCode ### **Conclusion** GitHub Copilot is an incredibly powerful tool for engineers working with Terraform. Its AI-powered suggestions can improve productivity, making it easier to write Infrastructure as Code (IaC) for platforms like Azure. With Copilot’s ability to suggest syntax, complete code blocks, and follow Terraform best practices, it’s a great assistant for those looking to manage their infrastructure more efficiently. Just remember, GitHub Copilot’s suggestions are based on existing patterns, so always review the generated code to ensure it fits your requirements before deployment. ### Deploying an Azure Log Analytics Workspace with Terraform URL: https://www.techielass.com/deploying-an-azure-log-analytics-workspace-with-terraform/ Last updated: 2025-03-29T14:38:14.000Z In this post, we’ll explore the creation of a [Terraform template](https://www.techielass.com/tag/terraform/) that can help you deploy an Azure Log Analytics workspace. Log Analytics is a powerful service in [Azure](https://www.techielass.com/tag/azure/) that helps you collect, analyse, and visualise your log and performance data across your Azure resources. By automating the deployment with Terraform, you can ensure consistency and streamline your infrastructure management. ### **Prerequisites** Before we dive into the code, ensure you have the following prerequisites: - An Azure account - Terraform installed on your local machine - A code editor such as [Visual Studio Code](https://code.visualstudio.com/?ref=techielass.com) - Familiarity with Azure Resource Manager (ARM) concepts ### **The Terraform template** We will create a simple Terraform configuration that provisions a resource group and a Log Analytics workspace. Below is the template we'll use: ```terraform terraform { required_version = ">= 1.3.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = ">= 3.71, < 5.0.0" } random = { source = "hashicorp/random" version = ">= 3.5.0, < 4.0.0" } } } provider "azurerm" { features {} } # This ensures we have unique CAF compliant names for our resources. module "naming" { source = "Azure/naming/azurerm" version = "0.3.0" } locals { azure_regions = [ "ukwest", "westeurope", "francecentral", "swedencentral" # Add other regions as needed ] } variable "enable_telemetry" { description = "Enable or disable telemetry for the log analytics workspace" type = bool default = true # Set a default value if desired } # This picks a random region from the list of regions. resource "random_integer" "region_index" { max = length(local.azure_regions) - 1 min = 0 } # Add a new random_pet resource to generate a unique, human-readable name resource "random_pet" "log_analytics_workspace_name" { length = 2 separator = "-" } # This is required for resource modules resource "azurerm_resource_group" "rg" { location = local.azure_regions[random_integer.region_index.result] name = module.naming.resource_group.name_unique } # This is the module call module "log_analytics_workspace" { source = "Azure/avm-res-operationalinsights-workspace/azurerm" # source = "Azure/avm-res-operationalinsights-workspace/azurerm" enable_telemetry = var.enable_telemetry location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name name = "law-${random_pet.log_analytics_workspace_name.id}" log_analytics_workspace_retention_in_days = 60 log_analytics_workspace_sku = "PerGB2018" log_analytics_workspace_daily_quota_gb = 200 log_analytics_workspace_identity = { type = "SystemAssigned" } } ``` ### **Template explained** This Terraform template is based on the [Azure Verified Module (AVM)](https://azure.github.io/Azure-Verified-Modules/?ref=techielass.com) for setting up a Log Analytics workspace on Azure. The template leverages and customises the AVM template to create a workspace, with enhancements for resource naming and region selection. 1. **Terraform Configuration Block**: The terraform block specifies required versions of both **Terraform** and **providers**: - **azurerm** provider is used to interact with Azure resources, requiring a version between 3.71 and 5.0.0. - **random** provider, used to generate random values for unique naming and region selection, requires version 3.5.0 or later. 2. **Provider Setup**: - **provider "azurerm"**: This configures the Azure provider with basic features. 3. **Naming Module**: - The Cloud Adoption Framework Compliant Naming Module (module "naming") is sourced from Azure’s naming conventions. It helps ensure that all generated resource names comply with [Azure's Cloud Adoption Framework (CAF) standards](https://learn.microsoft.com/azure/cloud-adoption-framework/?ref=techielass.com), keeping resource names unique and structured. 4. **Local Values**: - **local.azure\_regions**: Defines a list of Azure regions. The template randomly selects one of these regions for resource deployment, allowing flexibility across regions like ukwest, westeurope, etc. - You can add more regions to this list as needed. 5. **Variables**: - **variable "enable\_telemetry"**: A Boolean variable to enable or disable telemetry on the Log Analytics workspace. By default, this is set to true. 6. **Random Resource Selection**: - **random\_integer "region\_index"**: Picks a random integer within the index range of local.azure\_regions, enabling a random selection of a region for deployment. - **random\_pet "log\_analytics\_workspace\_name"**: Generates a unique, human-readable name for the Log Analytics workspace by concatenating two random words with a hyphen. 7. **Resource Group**: - **azurerm\_resource\_group "rg"**: Creates an Azure resource group in the randomly selected region. The name for this resource group is generated via the Cloud Adoption Framework compliant naming module (module.naming). 8. **Log Analytics Workspace Module**: - **log\_analytics\_workspace\_identity**: Assigns a System Assigned identity to the workspace, enabling it to interact with other Azure resources securely. - **module "log\_analytics\_workspace"**: Calls for the Log Analytics workspace to be set up with additional customisation: - **enable\_telemetry**: Configured based on var.enable\_telemetry, controlling whether telemetry data is collected. - **location**: Sets the workspace's location to match the resource group's region. - **resource\_group\_name**: The name of the resource group where the workspace will be deployed. - **name**: Sets a unique name for the workspace, based on the random\_pet resource (e.g., law-lively-panda). - **log\_analytics\_workspace\_retention\_in\_days**: Specifies that logs should be retained for 60 days. - **log\_analytics\_workspace\_sku**: Sets the workspace SKU to PerGB2018, allowing usage-based pricing. - **log\_analytics\_workspace\_daily\_quota\_gb**: Limits the daily log ingestion quota to 200 GB. 💡 Check out my other Terraform blogs: \- [What are Terraform modules](https://www.techielass.com/what-are-terraform-modules/) \- [Introduction to Terraform outputs](https://www.techielass.com/introduction-to-terraform-outputs/) ### **Conclusion** By leveraging Terraform, this customised template automates the deployment of Azure Log Analytics workspaces, ensuring consistency and reducing the risk of manual errors. Based on the Azure Verified Module for Log Analytics, it incorporates Cloud Adoption Framework compliant naming and randomised region selection to meet enterprise standards for resource organisation and regional flexibility. This approach not only enhances infrastructure management practices but also lays the foundation for scaling to more complex deployments as your environment grows. ### How to Set an Away Message on LinkedIn: A Step-by-Step Guide URL: https://www.techielass.com/how-to-set-an-away-message-on-linkedin/ Last updated: 2024-10-08T07:01:40.000Z LinkedIn is a great networking tool you can use to connect with peers, ex-colleagues or customers. As such there are times when people will reach out through the message functionality and you won't be around. Maybe you’re on holiday or tied up with a big project. Either way, setting an away message, or "out of office" message, on LinkedIn can be a lifesaver. Here’s a simple guide to help you set it up on your desktop. ## What is an away message on LinkedIn? An away message on LinkedIn lets others know you’re temporarily unavailable. It’s similar to the out-of-office response you’d set in email. When someone messages you on LinkedIn, they’ll receive an automatic response explaining why you’re not available. The away message is only sent to people who send you a message, it isn't visible on your profile. ## Do you need LinkedIn Premium to set an away message? Yes, you need to have a LinkedIn Premium account to send away messages. LinkedIn Premium offers additional perks beyond the away message, such as InMail messaging, profile insights, and advanced job search tools. ## How much does LinkedIn Premium cost? [LinkedIn Premium](https://premium.linkedin.com/?ref=techielass.com) comes in several tiers: - **Premium Career**: £24.98/month - **Premium Business**: £39.99/month - **Sales Navigator Core**: £64.99/month - **Recruiter Lite**: £119.95/month You can choose the one that fits your needs, with the "Premium Career" plan being the most affordable option for individuals looking to set an away message. ## Step-by-step guide to setting your LinkedIn away message - Open your browser and go to [LinkedIn.com](https://www.linkedin.com/?ref=techielass.com). Log into your account if you aren’t already. - Click on "Messages" on the top menu. - Click on the three dots at the top of the Messages section to access a menu. ![LinkedIn Messages](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/10/image-2.png) LinkedIn Messages - Select "Set away message" or "Update away message. ![LinkedIn Message settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/10/image-1.png) LinkedIn Message settings - This will open up a dialog box where you can toggle on your away message during certain times and also define the away message. ![LinkedIn Away message](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/10/image-3.png) LinkedIn Away message - Save the away message and now the away message will activate during the away period that you have configured. ### FAQs #### Can I use an away message without LinkedIn Premium? No, you cannot send away messages on a free account. If you have a free LinkedIn account, you’ll need to upgrade to LinkedIn Premium to use this function. #### What happens when someone messages me? Anyone who sends you a message will automatically receive your away message. Your custom message will let them know why you’re unavailable and when they can expect a response. ## Conclusion Setting an away message on LinkedIn is a helpful tool, especially if you’re stepping away for a while but want to keep your professional contacts informed. While it does require LinkedIn Premium, it can save you from missing important messages when you’re not available. ### My Experience with Technically Stable's Custom and Pre-Designed Desk Mats URL: https://www.techielass.com/custom-mouse-mat/ Last updated: 2024-09-26T08:36:31.000Z A desk mat might not be the first thing that comes to mind when you think about improving your workspace, but it can make a big difference in both the look and feel of your desk. Recently, I decided to upgrade my setup with a custom mouse mat from [**Technically Stable**](https://technicallystable.com/?ref=Techielass), a UK company that offers both pre-designed and custom desk mats. ### Why I Chose a Custom Mat The idea of having something unique on my desk really appealed to me, so I went with the custom option. The mat is **900mm by 400mm**, which is a great size for covering a large part of the desk and keeping everything from my mouse to my keyboard on one surface. I designed it with my own logo and branding, and I’m really pleased with how it turned out. The print quality is excellent, and the colours came out looking vibrant and sharp. ### Features I’ve Appreciated One of the things I’ve found really useful is that the mat is **waterproof**. We’ve all had those moments where a drink gets a little too close to the desk, so having a mat that can handle a spill without getting damaged is a big plus. The surface itself feels durable and well-made, so I’m confident it will hold up over time. ### Technically Stable's Pre-Designed Options If designing your own mat isn’t your thing, Technically Stable also offers a wide range of **pre-designed mats**. I browsed through their selection before deciding to go custom, and they have some really interesting options—everything from minimalistic designs to more creative and colourful ones. So, whether you’re looking for something simple or something that reflects your personality, there’s likely a design that fits. ### The Ordering Process The process of ordering the mat was simple and straightforward. I placed my order, and to my surprise, the mat arrived in just **24 hours**. It was well-packaged, and the quality lived up to my expectations. From start to finish, it was a positive experience. ### Final Thoughts Overall, I’ve been really happy with my mat from Technically Stable. Whether you’re after a pre-designed mat or something custom, their products offer a great way to improve your workspace—both in terms of aesthetics and functionality. It’s a small change, but it’s had a noticeable impact on my desk setup, and I’d recommend considering a desk mat if you’re looking for a simple way to refresh your space. **Want a discount?** Use the code **SARAHLEAN** for **10% off** your order. Click below to browse their collection or start designing your own: [https://technicallystable.com](https://technicallystable.com/?ref=Techielass) ### YouTube Live Q&A URL: https://www.techielass.com/youtube-live/ Last updated: 2024-08-30T07:01:22.000Z I will be doing a live stream on my [YouTube channel ](https://youtube.com/techielass?ref=techielass.com)this month, and this time it's a Q&A session around "What is in my bag as a speaker?" Come and join me as I talk about what I carry in my bag when I go to speak at a conference or user group. You'll have the chance to ask me any questions you might have. ### What to Expect You can participate live in the YouTube chat. The livestream will be taking place on the Tuesday 3rd September 2024, see below to check out when it will be happening during your time zone. - Tuesday 3rd September 9:00am PST - Tuesday 3rd September 9:30pm IST - Tuesday 3rd September 6:00pm CEST - Tuesday 3rd September 5:00pm GMT [Join me for this exciting livestream!](https://www.youtube.com/live/FasVC2%5FKm3A?si=zfXfVqR2nzncWWx0&ref=techielass.com) ### Jabra Panacast 20 Review URL: https://www.techielass.com/jabra-panacast-20-review/ Last updated: 2024-10-12T10:31:25.000Z Looking for a portable webcam with great video quality that’s easy to set up and use? The Jabra Panacast 20 might be what you need. In this review, I’ll dive into what comes in the box, the camera’s design and features, and how it performs in real-world use. I’ve been using it as my main work camera and even replaced my Sony A5100 mirrorless camera with it for everyday use. Let’s take a closer look at why the Jabra Panacast 20 stands out and whether it could be the right fit for your setup. ### What’s in the Box It’s quite a packed box full of goodies: - The Jabra Panacast 20 camera - USB-C cable (both ends) - Carry pouch ![Jabra Panacast 20](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/08/20240513_072956820_iOS.png) Jabra Panacast 20 ### Design and Features The Jabra Panacast 20 is a compact, portable webcam designed for both Mac and Windows users. It’s small in size (44 x 25 x 80mm, 136g), making it one of the tiniest webcams out there. It comes with a handy travel case that neatly fits the camera and its USB-C cable, both ends are USB-C. Setting it up is straightforward—just connect it to your computer using the USB-C port on the back. The Jabra Panacast 20 is designed to perch securely on top of your monitor with its fold-out foot, which I’ve used both on an external monitor and also on my laptop monitor without issue. ![Jabra Panacast 20 mounted on a monitor](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/08/IMG_1789.JPEG) Jabra Panacast 20 mounted on a monitor It also has a standard screw mount underneath if you’d rather attach it to a tripod. One of the features I like is that privacy has been well-considered here, with an integrated shutter you can easily control using a slider just below the lens. This webcam is equipped with three built-in MEMS microphones that help minimise echoes and block out background noise, ensuring clear audio wherever you’re working from. Although the camera is plug-and-play, you’ll get more out of it by installing the Jabra Direct software. This gives you control over the video settings. The camera has a 4K sensor, but you’ll typically only get Full HD during video calls since that’s the cap for most platforms. Still, the higher resolution is beneficial because it enhances image quality when downscaled and allows for smooth digital zooming without losing detail. Speaking of zoom, you have two main options. You can manually adjust the zoom and pan with on-screen controls, choosing the field of view that suits you—from a wide 90-degree angle to a more zoomed-in focus. You can even save two custom presets for quick access, which is useful if like me you have an adjustable desk and want to have a preset for when you are sitting and one for one you are standing. Alternatively, the Intelligent Zoom feature automatically tracks and zooms in on you, keeping you centred in the frame as you move around. ![Jabra video settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/08/image-8.png) Jabra video settings ### Performance I've been using the Jabra Panacast 20 as my main work camera, and the auto-tracking feature has mostly done a good job of finding me and zooming in. However, it can get a bit jerky and frantic if I’m moving around, like when I’m laughing. There have also been a few times when it zoomed in too close, giving my colleagues an uncomfortably up-close view. The image quality is impressive, with good sharpness and clarity. It handles tricky lighting well, too. Even when sunlight streams in through my office window, the camera balances the exposure so I don’t look too dark or washed out. The microphone is impressive however, I haven’t used it as the default option. Instead my microphone/speaker setup has been the [Jabra Speak2 75](https://www.techielass.com/jabra-speak2-75-review/) with the camera. ### Final Thoughts The Jabra Panacast 20 offers excellent microphones and crisp video thanks to its 4K sensor, all in a compact, portable design that’s easy to take anywhere. While the auto-tracking feature can be a bit jerky and distracting at times, the overall convenience and quality make up for it. I was even impressed enough to switch from using my Sony A5100 24.3 MP mirrorless camera to this Jabra webcam for my everyday needs. ### Where to buy? (Affiliate links) - [Amazon UK](https://www.stylink.it/yk04mIOVzx9?ref=techielass.com) ### Enable Microsoft 365 Backups URL: https://www.techielass.com/enable-microsoft-365-backups/ Last updated: 2024-08-27T07:37:19.000Z Microsoft has introduced a built-in backup solution within Microsoft 365 that simplifies data protection for users and organisations. This feature allows businesses to back up and quickly recover critical data such as SharePoint sites, OneDrive accounts, and Exchange mailboxes—all within the Microsoft ecosystem. By offering both fast backups and streamlined restoration processes, Microsoft aims to provide a robust business continuity solution, especially in cases of accidental deletion, ransomware, or other data loss incidents. ### Why Would I Need to Back Up My Microsoft 365? You might assume that Microsoft 365 already secures your data, and while it does offer some redundancy and failover capabilities, these are primarily aimed at service availability, not comprehensive data recovery. Traditional protection mechanisms in Microsoft 365 do not fully cover scenarios like: **\- Ransomware Attacks**: Malicious encryption or deletion of your data can leave your business stranded without a reliable way to revert to a pre-attack state. \- **Accidental Deletions or Overwrites**: Mistakenly deleted files or overwritten versions can be lost if not backed up properly. \- **Compliance Requirements**: Regulatory obligations often demand that businesses keep data accessible for extended periods, which may exceed Microsoft 365's native retention capabilities. Essentially, Microsoft 365 Backup offers additional layers of protection, ensuring that even large-scale or time-sensitive recovery needs can be addressed without leaving the Microsoft environment. ### What Can Be Backed Up from Microsoft 365? The native backup solution covers a broad range of key data sources: - **SharePoint Sites**: Complete site backups, preserving all content and metadata, with granular restoration options expected soon. - **OneDrive Accounts**: Full account recovery is available, ensuring that files can be restored to previous states, minimising disruptions. - **Exchange Mailboxes**: You can back up entire mailboxes or restore individual items like emails, contacts, and calendar events. This feature provides fine-tuned control over what data needs recovery. These backups are designed to maintain data integrity, providing geographically redundant copies to ensure high availability and security, all while staying within Microsoft’s trusted data boundaries. ### Enable Microsoft 365 Backup To enable Microsoft 365 Backup, follow these steps: 1\. Access the Microsoft 365 admin centre. 2\. In the admin centre, navigate to **Setup**. ![Enable Microsoft 365 from the admin portal](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/08/image-5.png) Enable Microsoft 365 from the admin portal 3\. Under **Files and content**, choose **Automate content processes with Syntex**. ![Configure Microsoft 365 backup](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/08/image-4.png) Configure Microsoft 365 backup 4\. On the Syntex setup page, click on **Go to Syntex settings**. ![Turn on Microsoft 365 backup](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/08/image-1.png) Turn on Microsoft 365 backup 5\. In the Microsoft Syntex section, select **Storage** from the left-hand menu. Choose **Backup** from the list of available products. ![Enable Microsoft 365 backup](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/08/image-2.png) Enable Microsoft 365 Backup 6\. Complete the wizard by configuring your pay-as-you-go options, pointing to your Azure subscription and resource group. ![Configure Microsoft 365 backup settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/08/image-3.png) Configure Microsoft 365 backup settings 7\. After confirming the billing settings, refresh the page and go back to **Storage** \> **Backup** in the Syntex settings. 8\. Click **Turn On** and then select **Save** to agree to the terms and conditions. ![Turn on Microsoft 365 backup](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/08/image.png) Turn on Microsoft 365 backup ### Create Backup Policies to Safeguard Your Data With Microsoft 365 Backup now enabled, proceed to establish policies that will protect your organisation’s content: 1\. In the Microsoft 365 admin centre, go to **Settings**. 2\. From the list of products, select **Microsoft 365 Backup**. 3\. Begin setting up backup policies to manage your data protection needs. ![Configure Microsoft 365 backup policies](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/08/image-7.png) Configure Microsoft 365 backup policies ### Conclusion The native Microsoft 365 Backup feature marks a significant step forward in integrated data protection. By keeping backups within the Microsoft 365 environment, businesses gain not only peace of mind but also faster, more secure recovery options. With flexible policies and granular control, this new capability can be tailored to fit any organisation’s backup strategy. ### Azure Arc-enabled servers Q&A URL: https://www.techielass.com/azure-arc-enabled-servers-q-a/ Last updated: 2024-08-12T19:18:02.000Z I will be doing a live stream on my [YouTube channel ](https://youtube.com/techielass?ref=techielass.com)this month, and this time it's a Q&A session around Azure Arc-enabled servers! Come and join me as we talk about Azure Arc-enabled servers and ask me any questions you might have. ### What to Expect You can participate live in the YouTube chat. The livestream will be taking place on the Tuesday 13th August 2024, see below to check out when it will be happening during your time zone. - Tuesday 13th August 9:00am PST - Tuesday 13th August 9:30pm IST - Tuesday 13th August 6:00pm CEST - Tuesday 13th August 5:00pm GMT [Join me for this exciting livestream!](https://youtube.com/live/162a6bkr%5Fro?feature=share&ref=techielass.com) ### Managing extensions for Azure Arc-enabled servers URL: https://www.techielass.com/azure-arc-enabled-server-extensions/ Last updated: 2025-02-14T11:29:13.000Z Azure Arc is a management tool that allows you to extend Azure management features to resources not hosted within Azure. A key feature of Azure Arc-enabled servers is the ability to use virtual machine (VM) extensions to enhance server functionality. These extensions, analogous to those available for Azure VMs, offer capabilities such as monitoring, patch management, and script execution. In this blog post, we will explore the basics of [Azure Arc](https://www.techielass.com/what-is-azure-arc/) VM extensions and provide detailed guidance on how to manage them, including how to allow or block specific extensions for enhanced security and control. ### What are VM Extensions for Azure Arc-Enabled Servers? VM extensions are add-ons that can be deployed on Azure Arc-enabled servers to provide additional functionality. These extensions are developed by Microsoft and select third parties and are stored in Microsoft-managed storage accounts. They are identical to extensions available for Azure VMs, ensuring consistency across different environments. ### How Extensions Work Extensions are downloaded from Azure Storage at the time of installation or upgrade unless private endpoints are configured, in which case extensions are proxied through regional URLs. A digitally signed catalogue file verifies the integrity of each extension package, ensuring that only trusted extensions are executed. ### Configuring Extension Settings Extensions can accept settings to customise their behaviour, such as proxy URLs or API keys. These settings can be classified into regular settings and protected settings. Protected settings are encrypted at rest on the local machine and are not persisted in Azure. [Support this blog](https://www.techielass.com/#/portal/support) ### Monitoring and Control via Azure All extension operations are initiated from Azure through API calls, CLI commands, PowerShell scripts, or portal actions. This design ensures comprehensive logging of all actions in the Azure Activity Log. Although extensions can be removed locally for troubleshooting, they will be reinstalled during the next sync if the service still expects them to be present. ### Security Controls: Allowlists and Blocklists Starting with agent version 1.16, Azure Arc allows you to control which extensions can be installed on your servers using allowlists and blocklists: - **Allowlists**: Only the specified extensions can be installed. This is the most secure option as it blocks any new or unauthorised extensions by default. - **Blocklists**: Any extension except those specified can be installed. ### Configuring an Allowlist To allow only specific extensions, such as allowing the custom script extension to be allowed on your Linux server you can use the command: ```bash azcmagent config set extensions.allowlist “Microsoft.Azure.Extensions/CustomScript” ``` ![Configure Azure Arc agent extensions in Linux](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdQCwdrHvxP-vXLt77_jkYdES1WFRTPjcUVCMeknBnNkc3NAJG0tq-TR6r1o5hAd081P0b8XQNScLI5U40YgAs7CqexYBxFzcewX3rUH9MVi1OCOf2kxpV_VVHUgZvdYEnS6rZ7NYID24un-nScrDGh4s6g?key=BSdYpCu9T_rKsbRnfO9eIQ) Configure Azure Arc agent extensions in Linux You don’t have to do each extension individually you can do multiple extensions at once. For example, if you want to allow the Microsoft for Defender extension and the Azure Monitor Agent on your Windows server you can use the command: ```bash azcmagent config set extensions.allowlist “Qualys/WindowsAgent.AzureSecurityCenter,Microsoft.Azure.Monitor/AzureMonitorWindowsAgent” ``` ![Configure Azure Arc agent extensions in Windows](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeLMGNr10R9XnMJ3nZ9KoUQIBTQo7zaHqv3G7fysA5VckpmSGCxS7c40a5qAKNBHfAfuXjfF644UTb61PV73vTLQmzZehXllkHs7S8WjHlC6RXQaeFCXq5CPfgyOiAOe7UorLc7aTnO2OdTq-cz4mrollRj?key=BSdYpCu9T_rKsbRnfO9eIQ) Configure Azure Arc agent extensions in Windows ### Configuring a Blocklist To block the extension for the Log Analytics agent you can run this command on your Windows machine: ```bash azcmagent config set extensions.blocklist “Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitorAgent” ``` This is a command block that I see customers putting in place as The Log Analytics agent, also known as the Microsoft Monitoring Agent (MMA), [is retiring in August 2024](https://techcommunity.microsoft.com/t5/microsoft-defender-for-cloud/microsoft-defender-for-cloud-strategy-and-plan-towards-log/ba-p/3883341?ref=techielass.com). You can find a full list of extensions available either on Windows or Linux on the official documentation page: [https://learn.microsoft.com/azure/azure-arc/servers/manage-vm-extensions#extensions](https://learn.microsoft.com/azure/azure-arc/servers/manage-vm-extensions?ref=techielass.com#extensions) ### Add an extension to an existing allow or block list If you have an existing allow or block list configured you may need an additional flag to add the extension. For example, if you want to add the Custom Script to an existing allow list you would append the *‘--add’* flag to the command, see below: ```bash azcmagent config set extensions.allowlist “Microsoft.Azure.Extensions/CustomScript” --add ``` ![Configure Azure Arc agent extensions in Windows](https://lh7-rt.googleusercontent.com/docsz/AD_4nXe2C25yPjcUy1D-My-t4Cp8bIEpNT-HlScIla7fzuXlWrUZ8QIEPdBGio9xVYRMs-gsT9j2pXxK3YVbKI_XykHAwu7aTzd7ebtmNR45MgKl1sXSukbgywuwHICmGFVhcuvnz3_0piwf6SNiHtcZnvgDoFw_?key=BSdYpCu9T_rKsbRnfO9eIQ) Configure Azure Arc agent extensions in Windows 💡 If you want to check if any network connectivity between your servers and Azure is blocked for the Azure Arc agent check out my blog post [**"Check if network connectivity for Azure Connected Machine Agent is blocked"* ](https://www.techielass.com/check-if-network-connectivity-for-azure-connected-machine-agent-is-blocked-azure-arc/) ### Remove an extension to an existing allow or block list If you have an existing allow or block list configured you may need an additional flag to remove an additional extension. For example, if you want to remove the Custom Script to an existing allow list you would append the *‘--remove’* flag to the command, see below: ```bash azcmagent config set extensions.allowlist “Microsoft.Azure.Extensions/CustomScript” --remove ``` ![Configure Azure Arc agent extensions in Windows](https://lh7-rt.googleusercontent.com/docsz/AD_4nXc05TsEht-wHZxYhLGV3Z59HCkCJA114HymPxAGutnDyuFUnSUBUyKv8nwim1s1U7uv6m8MLpRperFxyeRArPkL90FHUk2rIpkvjqeh3P4XK_8EBmECkYwT-tToLYEbVY3PSTCYPqFL_qGCidsgFQRI5RK0?key=BSdYpCu9T_rKsbRnfO9eIQ) Configure Azure Arc agent extensions in Windows ### Azure Arc-enabled server extension Security Practices For enhanced security, especially on sensitive servers like Active Directory Domain Controllers or servers handling payment data, you can use additional measures: 1\. **Use allowlists instead of blocklists** whenever possible to block unauthorised extensions by default. 2\. **Disable Guest Configuration** to prevent custom policies from changing the agent configuration. 3\. **Avoid including the Custom Script Extension** in your allowlist to prevent the execution of potentially harmful scripts. ### Using Agent Modes Agent modes simplify the configuration process for common scenarios: - **Full Mode**: Default mode allows all agent functionalities. - **Monitor Mode**: Restricts functionalities to monitoring and security-related extensions only. To enable monitor mode, use the following command: ```bash azcmagent config set config.mode monitor ``` ![Configure Azure Arc agent extensions in Windows](https://lh7-rt.googleusercontent.com/docsz/AD_4nXexJXjDmDXJfH12RAtwO7WaRoJhvW6irLiEO3u8rGq3rXUZKxxTITXsxzy0d3WR1XSrfiW-jYDBRjCuT8gSg43vwDQYnY4YXcd2ssHV1vo5yBxHSGrNLZrRFE2kT8OHvwDHfChQ2MxfaZ1Pfpyb_jMAVGqs?key=BSdYpCu9T_rKsbRnfO9eIQ) Configure Azure Arc agent extensions in Windows As new extensions become available that enable monitoring scenarios, Microsoft will update the allowlist and agent configuration to include or exclude the new functionality, as appropriate. ### Disabling the Extension Manager If you do not need any extensions, you can disable the extension manager entirely: ```bash azcmagent config set extensions.enabled false ``` ![Configure Azure Arc agent extensions in Windows](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdKYl4LqbYg7jup-eEPHfB8aYuomMyUi7GbXfXAUapCjT9jGZxpvIjHX4qrjqVJ_AdZu5TNZfAasA99p7xfUa-zPQnMuZCxrBPnHFDg9crDNgw9LA9MvUG24skdiRYmb4b98bnKD_ztiGALdwqltZpMF3C_?key=BSdYpCu9T_rKsbRnfO9eIQ) Configure Azure Arc agent extensions in Windows This step ensures that no extensions run on the server. ### Check the current status of extensions You can check the current mode of the agent and understand what extensions are allowed or blocked you can use the following command: ```bash azcmagent config list ``` ![Configure Azure Arc agent extensions in Windows](https://lh7-rt.googleusercontent.com/docsz/AD_4nXc_s7mwzM7QHa4WqCcUjEXqHvbOIJ-ei1LoaQuEbjgA2hfw5trU4SzfyVnuizgwF8Y4xuGA6X2lXv3rusFJdR3utrScv8lNCvoDO5VOTLTDF4decgqzrR5BGpobKbSPBx4Tkj4WrTzgBzZanE6CZr5W61Ua?key=BSdYpCu9T_rKsbRnfO9eIQ) Configure Azure Arc agent extensions in Windows ### Conclusion Azure Arc VM extensions offer powerful capabilities to enhance server management and functionality. By configuring allowlists and blocklists, you can maintain tight control over which extensions are installed, ensuring your servers remain secure and compliant with organisational policies. With the flexibility of Azure Arc, you can tailor the server management experience to fit your unique needs, whether for monitoring, security, or specific operational requirements. ### Windows Server 2012 Arc-enabled servers not installing updates URL: https://www.techielass.com/windows-server-2012-arc-enabled-servers-not-installing-updates/ Last updated: 2024-07-25T07:01:12.000Z If your Windows Server 2012 servers that are [Arc-enabled](https://www.techielass.com/tags/azure-arc) to receive their Extended Security Updates (ESU) aren’t receiving the updates or if you are receiving updates and they aren't being installed, here are some troubleshooting steps to work through to try and help resolve the issue. This blog post will explore the steps needed to troubleshoot the issue. ### Step 1 - Check the Azure Arc version installed The troubleshooting step to check is what version of the Azure Arc agent is installed. The ESU capability was enabled on version 1.34 of the Azure Arc agent. My recommendation is you have version 1.40 at the least installed on your machine. But you should really be running the latest version. You can find the latest version of the agent listed on the official website: [https://learn.microsoft.com/azure/azure-arc/servers/agent-release-notes](https://learn.microsoft.com/en-gb/azure/azure-arc/servers/agent-release-notes?ref=techielass.com#version-134---september-2023) To check the version of the Arc agent log onto the affected server. Launch a PowerShell command terminal and type in the following command: ```powershell azcmagent version ``` ### Step 2 - Check pre-requisite patches There are several pre-requisite patches that need installs on the server to ensure they can receive the relevant ESU updates. If you’ve been keeping your servers up to these should already be there. However if you have are signing up for ESU updates for Windows Server 2012 and haven't been receiving patches for several months, are there are some patches you might have to manually install first. There are three patches required. The patch numbers are different depending on whether you are using Windows Server 2012 or the R2 version. **Windows Server 2012** - Servicing Stack Update (SSU) [KB5029369](https://support.microsoft.com/help/5029369?ref=techielass.com) - Extended Security Update (ESU) Licensing Preparation Package [KB5017221](https://support.microsoft.com/help/5017221?ref=techielass.com) - Servicing Stack Update (SSU) [KB5037022](https://support.microsoft.com/en-us/topic/kb5037022-servicing-stack-update-for-windows-server-2012-april-9-2024-bc0266a4-e720-47c0-82d5-5dd8913a04b4?ref=techielass.com) **Windows Server 2012 R2** - Servicing Stack Update (SSU) [KB5029368](https://support.microsoft.com/help/5029368?ref=techielass.com) - Extended Security Update (ESU) Licensing Preparation Package [KB5017220](https://support.microsoft.com/help/5017220?ref=techielass.com) - Servicing Stack Update (SSU) [KB5037021](https://support.microsoft.com/en-us/topic/kb5037021-servicing-stack-update-for-windows-server-2012-r2-april-9-2024-69b3059c-0830-41c8-a441-e5a24668a649?ref=techielass.com) 💡 It's worth noting KB5037022 & KB5037021 were released in April 2024\. You might have to manually install them on servers to ensure they can be patched with new ESU updates. ### Step 3 - Check the ESU license within Azure The first step is to check the Azure portal to understand if the server has been assigned an ESU licence. Head to [https://portal.azure.com](https://portal.azure.com/?ref=techielass.com) Launch the Azure Arc blade. Click on **Machines** down the left-hand side. ![Azure Arc blade in the Azure portal](https://lh7-us.googleusercontent.com/xAOBNw9NF59XdP9Z_qrLg87llRWwv5u_l6zfVchnIs2Bq6-yem0coX0-iXNeR7r_s40t5edl4UQQ66JlH5e7Cf2xXceRCv3V21xno82R1ysBJpS8NqN3x9JkkaJ0niMt_T3xjGqmLb8btIw9FA6zXZ8) Azure Arc blade in the Azure portal Find the server that isn’t receiving updates. Click on the server name. When the server information loads, check under capabilities to ensure ESU is **Enabled**. ![Azure Arc machine status](https://lh7-us.googleusercontent.com/M_946o1BhQrKhocwreyu7iOBLVy_7Uyaa7tmIlL91yNA4b9DrSa9_qaXRyH-avUMnCAI6V-bUnqttmOqm8hEmNgvaVsYERg5Y9OHyDuduYzAQTbLj1ds6lS_tWO5_HsRzWq-NnuVDA2doR2SvVR7GYY) Azure Arc machine status If the server states that the ESU capability is **Not Enabled**, assign the correct ESU license to the server to enable it to receive updates. ### Step 4 - Check the ESU license locally The next step is to ensure the Azure Arc agent is connected and the license is being picked up locally. Launch a PowerShell command terminal and type in the following command: ```powershell azcmagent show ``` You are looking for two key pieces of information. The first one is the **Agent status** and **Agent Last Heartbeat.** They should state Connected and list a time or date close to your current time and date. The second piece of information you are looking for is the **Extended Security Updates Status**. That should read as active. ![Azure Arc agent status](https://lh7-us.googleusercontent.com/jI6okcAuZGfIEE0y-1vc7KgCKESIXMbEhepfFW1semcJXVUDpItrAoz-641R39S_3S3YNHQ-ACAOkekZJIjx972XVEfGFoCKNrFrrHDyqiXNDocGQXFxOmZWyy15gsQPiTRYH3hZEBUxJIcSBnNbqYI) Azure Arc agent status ### Step 5 - Recreate the signed license file If you have patches being downloaded but are failing to install then try this. Open a command line prompt and stop the Azure Hybrid Instance Metadata Service (himds) by issuing this command: ```bash Stop-Service himds ``` We want to rename the existing file and generate a new one, so still within your command prompt issue the command: ```powershell Rename-Item C:\ProgramData\AzureConnectedMachineAgent\Certs\license.json C:\ProgramData\AzureConnectedMachineAgent\Certs\license.bak ``` ### Step 6 - Log a Support Ticket If none of the steps above work, then it's time to log a support ticket via the Azure portal. The team there can help support you through the issue and escalate to the relevant Windows support team if needed. ![Azure support ticket](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/07/image-3.png) Azure support ticket ### Filter Azure costs by Tags URL: https://www.techielass.com/filter-azure-costs-by-tags/ Last updated: 2024-07-18T07:01:20.000Z Managing expenses is crucial, whether you're purchasing a new mobile phone or analysing your cloud spending. In the realm of cloud services, understanding and breaking down your costs can be complex yet essential for effective budgeting and resource allocation. Azure provides a powerful way to manage and analyse these costs through the use of tags. By tagging your resources, you can filter and display costs in a more meaningful and organized manner. Let's delve into how you can leverage tags in Azure Cost Management to gain deeper insights into your cloud expenses. ## Understanding Tags in Azure Tags are key-value pairs that can be applied to Azure resources, resource groups, and subscriptions. They are essential for organising and managing resources based on different criteria such as environment (e.g., development, staging, production), department, project, or cost centre. For example, you might tag resources with \`Project: Alpha\` to group all resources related to the Alpha project. ## Benefits of Using Tags Using tags has several benefits: - **Organisation**: Easily categorise and locate resources. - **Cost Allocation**: Assign costs to specific projects, departments, or teams. - **Automation**: Automate resource management tasks based on tags. - **Reporting**: Generate detailed reports and insights based on tags. ## Viewing costs by Tags in Azure Cost Management Azure Cost Management is a suite of tools that helps you monitor, allocate, and optimise your Azure spend. It provides detailed insights into your usage and costs, allowing you to identify trends, anomalies, and opportunities for optimization. To view the costs of all resources with a specific tag, follow these steps: - Log in to the Azure portal - In the left-hand menu, select “Cost Management + Billing” - Under the “Cost Management” section, click on “Cost analysis” In the Cost analysis view, you’ll see various filters at the top of the page. - Click on the “Add filter” option - In the dropdown, select “Tag” ![Azure Cost Management tags](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/07/image1.png) Azure Cost Management tags - Enter the key and value of the tag you want to filter by. For example, if you want to see costs for all resources tagged with \`demo\_cost\_centre:2000222\`, select “demo\_cost\_centre” as the key and “2000222” as the value. - Once you apply the filter, Azure Cost Management will display the costs associated with the tagged resources. ![Azure Cost Management tag filtering](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/07/costmanagement.png) Azure Cost Management tag filtering - You can customise the view by selecting different date ranges, grouping options, and visualisation types (e.g., charts, tables). ![Azure Cost Management grouping](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/07/costmanagementgroup.png) Azure Cost Management grouping If you’d like to download and share this report with colleagues you can do. - Click on the “Download” button to download the report in a CSV format. - You can also create and schedule automated reports to be sent via email to stakeholders. ## Advanced Tagging Strategies To maximise the benefits of tagging and cost management, consider the following strategies: - **Standardise Tagging Conventions**: Establish a consistent tagging policy across your organisation to ensure tags are applied uniformly. - **Automate Tagging**: Use Azure Policy and automation scripts to enforce tagging requirements and automatically tag resources. - **Review and Clean Up Tags Regularly**: Periodically audit your tags to ensure they are up-to-date and relevant. ## Conclusion Using Azure Cost Management in conjunction with tags is a powerful way to gain insights into your cloud spending. By filtering costs based on tags, you can allocate expenses accurately, identify cost-saving opportunities, and make data-driven decisions. Implementing a robust tagging strategy and leveraging the analytical capabilities of Azure Cost Management will help you optimise your Azure resources and control costs effectively. ### Unlocking Data Insights: A Guide to Azure Dashboards, Workbooks, and Power BI for Effective Visualization URL: https://www.techielass.com/azure-dashboards-azure-workbooks-power-bi/ Last updated: 2024-07-09T07:01:35.000Z Organisations depend on data visualisation tools to make informed decisions and gain insights into their operations. Azure provides a suite of powerful options, including Azure Dashboards, Azure Workbooks, and Power BI. Although all these tools are designed for visualising data, each has distinct features and specific use cases. In this blog post, we'll delve into the differences between these tools and highlight the scenarios where each one excels. ## Azure Dashboards Azure Dashboards give you a customisable canvas for monitoring your Azure resources and other external data sources. They allow you to create dashboards with widgets that display metrics, charts, and other visualisations that are important to you and your team. *Subset of Infra Specialists transitioning to the Desktop Virtualisation team"* ![Azure Dashboard example](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/07/image.png) Azure Dashboard example Azure Dashboards are primarily focused on real-time monitoring and offer a quick and easy way to track the health and performance of your resources. Dashboards aren’t designed to be very interactive, but they can refresh regularly and give you a view of what is happening in your environment. ### Key Features: - You can create dashboards tailored to your specific monitoring needs by adding and arranging widgets. - Azure Dashboards seamlessly integrate with various Azure services, allowing you to monitor metrics from Azure Monitor, Azure Resource Graph, Application Insights, and more. - Dashboards provide real-time updates, enabling you to monitor changes and respond quickly to issues. ### Use Cases: - Monitoring the performance and health of Azure resources such as virtual machines, databases, and web apps. - Tracking key metrics and KPIs for business operations and services hosted on Azure. - Creating executive dashboards for high-level visibility into organisational performance. ## Azure Workbooks Azure Workbooks also give you a blank canvas you can customise. The workbooks can provide an interactive way to view and analyse data. They provide an area where you can create rich interactive reports using data from various sources, including Azure Monitor, Log Analytics, and custom data sets. ![Azure Workbook example](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/07/image-2.png) Azure Workbook example ### Key Features: - Azure Workbooks offer a wide range of interactive visualisation options, including charts, tables, maps, and logs, to help you analyse and interpret your data effectively. - Workbooks can pull data from multiple sources, allowing you to combine data sets and perform advanced analysis. - You can share your workbooks with colleagues and stakeholders, enabling collaboration and knowledge sharing. ### Use Cases: - Analysing performance and usage trends across multiple Azure services and environments. - Investigating and troubleshooting issues using log data and metrics from Azure Monitor and Log Analytics. - Filtering and interacting with the data to produce data that gives you the insights that you need. ## Power BI Power BI is a business analytics tool that enables organisations to visualise data, share insights, and make data-driven decisions. It offers advanced features for data modelling, analysis, and visualisation, making it suitable for a wide range of business intelligence scenarios. ![Power BI report example](https://lh7-us.googleusercontent.com/IVZzsZkEXqVh4lapfIsE1_rcQMBItlW5seNpcNNo7CQMRPt7PcC1HagALbT91DQodk17jwv0XzboYrkRQOU799_6jzAk6kOCePMTljjTWAzNIVZN96m1Ty5pqGxgZ7Fi8dfF6TgAadnzCdCmZbuZ9SmnMMmLslG1TbwWeDSfHBcg1hhob-9O52BlfVM6Ag) Power BI report example ### Key Features: - Power BI provides data modelling capabilities, allowing you to create relationships between different data sources and perform complex calculations. - With Power BI, you can leverage advanced analytics features such as predictive modelling, clustering, and forecasting to uncover hidden insights in your data. - Power BI offers a vast library of visualisation options and customisation tools to create visually stunning and interactive reports and dashboards. ### Use Cases: - Building interactive reports and dashboards for business users to explore and analyse data from various sources. - Performing ad-hoc analysis and exploration of large datasets to identify trends, patterns, and outliers. - Creating data-driven applications and embedding analytics into custom applications and websites. ## Choosing the Right Tool When it comes to choosing the right tool for data visualisation in Azure, it's essential to consider your specific requirements and use cases. Here's a quick summary to help you decide: - **Azure Dashboards** are best suited for real-time monitoring and tracking of Azure resources and services. - **Azure Workbooks** excel in analysing and visualising data from multiple sources, making them ideal for interactive in-depth analysis and reporting. - **Power BI** is the go-to choice for comprehensive business intelligence and analytics, offering advanced features for data modelling, analysis, and visualisation. ## Conclusion In conclusion, Azure provides a diverse set of tools for data visualisation, each serving its own purpose and catering to different needs. Whether you need real-time monitoring, in-depth analysis, or comprehensive business intelligence, Azure has the right tool for the job. By understanding the differences between Azure Dashboards, Azure Workbooks, and Power BI, you can choose the tool that best fits your requirements and empowers you to derive actionable insights from your data. ### Maximize Your Savings with Azure Advisor's Cost Optimization Workbook URL: https://www.techielass.com/azure-cost-optimization/ Last updated: 2025-06-06T10:03:12.000Z The Azure Cost Optimization workbook is an invaluable tool designed to help you efficiently manage and optimise your Azure spending. By providing a detailed overview of your Azure environment, it offers actionable insights and recommendations grounded in the Well-Architected Framework's Cost Optimization pillar. This workbook is readily available FREE to all Azure users, and there's an editable version as part of the FinOps toolkit for more tailored needs. ## Getting Started If you haven't yet explored this feature, getting started is a breeze. The workbook template is available in the Azure Advisor gallery and requires no initial setup. Here's how to begin: - Navigate to the Azure Advisor blade within the Azure Portal - Down the left-hand side menu find “Workbooks” and click on it ![Azure Advisor portal](https://lh7-us.googleusercontent.com/docsz/AD_4nXc6wlTS1nDYwhYUEoVNAwkG2oYlxcdc3wSIpFcrUWvBsQat4zL3sjOxp-8bY5LcELAYupFl1tE5Q_CCeey8FS9h55KRppjfT5zudyQpO2rD76Y-G8csSdinVHwYZ6IVuctgwVEKnQhCS4IhSYB0hO0s-LJC?key=8bvOlJOKhbImhdjl3cDkSw) Azure Advisor portal - You will find the “Cost Optimization” workbook under the Azure Advisor workbook list ![Azure Advisor workbook deployment](https://lh7-us.googleusercontent.com/docsz/AD_4nXeQVM5C-vP-kRwVE9DnA2A1mElqDEgN33lURerx9GgdhRQVYqx3gdiGr5bGLI4vwRVC_3SC6dv3rM3MSwFPxaBpCnTS5UZ96MqD666ujaA6puuB-brEGp9UneP3EVPWwGyYg9ZcIkIhEbXSJdfIKKbbMnZw?key=8bvOlJOKhbImhdjl3cDkSw) Azure Advisor workbook deployment - If you click on that workbook, it will be available for you to view and interact with. ## Cost Optimization Workbook This workbook provides a dynamic view of your Azure costs across various dimensions. You can slice it down by subscription, resource group, location, service, and tag. There are several sections to the workbook for you to explore and use: ![Azure Advisor cost optimization workbook](https://lh7-us.googleusercontent.com/docsz/AD_4nXc8oFmJwTJrThvI8F9nl49QOUarpLNZ5WOViWQxSD6TCkEfU6rFHm0FdXNgmvZJo31vn6rl30-7ue9oLZtv0sOlbibWsEgGruajD6eI-aOJHeUHppQbF1svJIPlFF1aqszgcYXnsKBs_rXYyoq5AzSOOEY?key=8bvOlJOKhbImhdjl3cDkSw) Azure Advisor cost optimization workbook - **Overview**: This includes an Overview section, Rate Optimization section, and Workload Optimization section. - **Additional Sections**: These include Welcome, Resources Overview, Security Recommendations, and Reliability Recommendations. Let’s break down these sections and why you’d want to use each of them. ### Rate Optimization The Rate Optimization tab offers strategies to reduce your Azure costs by addressing rate-related factors. This includes: \- **Azure Hybrid Benefit**: Learn how much you can save with [Azure Hybrid Benefit (AHB)](https://www.techielass.com/azure-hybrid-benefit-dashboard/) for Windows, Linux, and SQL databases, and how to enable it. \- **Azure Reservations**: Discover potential savings with Azure Reservations for compute, storage, and SQL resources, along with steps to purchase or modify reservations. \- **Azure Savings Plan for Compute**: Find out how to save using the [Azure Savings Plan for Compute](https://www.techielass.com/understanding-azure-savings-plans-for-compute/) for virtual machines and app services, with guidance on purchasing or modifying savings plans. ### Workload Optimization The Workload Optimization tab focuses on maximising resource efficiency. It provides tips to identify idle resources, manage improperly deallocated virtual machines, and implement other efficiency recommendations. ![Azure Advisor cost optimization workbook](https://lh7-us.googleusercontent.com/docsz/AD_4nXfH4nR0rQhdsXD30SCY787xASewwy5CwZfiduk9sB39Xb2SmtoyDl2bprOy8lioHJs6wcJh6g3unMeDRCgMim4qCtxo0NKNljinODsJvCaTwIfX2VrE8RJBXRb4bS34I9eTBkRsSVxfZHT_Ii9SQVfxxgYs?key=8bvOlJOKhbImhdjl3cDkSw) Azure Advisor cost optimization workbook This section covers: - **Compute**: Best practices for optimising virtual machines and Virtual Machine Scale Sets (VMSS). - **Storage**: Strategies to optimise costs for storage accounts, disks, and backups. - **Networking**: Tips for reducing costs associated with virtual networks, load balancers, VPN gateways, ExpressRoute circuits, and more. - **Databases**: Optimization techniques for SQL databases and Cosmos DB. - **Sustainability**: Insights on reducing your environmental impact by lowering carbon emissions of your Azure resources. - **Top 10 services**: Cost-saving strategies for popular Azure services like Azure App Service, Azure Kubernetes Service, Azure Synapse and Monitoring. ### Resources overview This is a map view of where your resources are located, it’s a great simple view to understand where your resources are located and concentrated. ![Azure Advisor cost optimization workbook](https://lh7-us.googleusercontent.com/docsz/AD_4nXdvs8sR9c1YGkhS4EZO7gh5-d9NfvcmlR2ZbFB0l91kou-GkEA_tjZ1Zjee2XuQnVrHg5bviA9_yFTXnJ9888zwOwxIFVj0QQazstZwzjI4JcRZydO3azrKkfKAqhWyrs4zhf19cyQ2mATdAmO0nnB4SQI?key=8bvOlJOKhbImhdjl3cDkSw) Azure Advisor cost optimization workbook ### Security recommendations This section will surface any of the security recommendations that Azure Advisor has collected and help you view them and action them accordingly. ### Reliability recommendations This section will surface any of the reliability recommendations that Azure Advisor has collected and help you view them and action them accordingly. ![Azure Advisor cost optimization workbook](https://lh7-us.googleusercontent.com/docsz/AD_4nXdQ2Nf3YMmO_5GVSDMRPXBeVWGnctRMymPBVTslpwuYHOxFqjdC7F7asak2MkBPG2ScfJcqJekaCiawkha_hFuk43-k2KpzqVzyDLi-2C90y0Tzfe5zrNjtdAOvY-QArYZBdZLEsrC1oeXril4eQcPIaMM?key=8bvOlJOKhbImhdjl3cDkSw) Azure Advisor cost optimization workbook ## Conclusion In conclusion, the Azure Cost Optimization workbook is an essential resource for any Azure user looking to manage and reduce their cloud expenditure effectively. This free resource can be a great way of viewing and analysing what cost savings you can make. ### How to check if an Azure Marketplace image is marked for deprecation URL: https://www.techielass.com/how-to-check-if-an-azure-marketplace-image-is-marked-for-deprecation/ Last updated: 2024-06-18T07:01:17.000Z When working within the cloud you need to understand and plan for services or functionality that might be deprecated. One important aspect to keep an eye on is the deprecation status of Azure Marketplace images. Deprecated images can pose risks such as lack of support, security vulnerabilities, and incompatibility with newer services. This post will guide you through the process of determining whether an Azure Marketplace image is marked for deprecation using PowerShell commands. ### Why Monitor Azure Marketplace Image Deprecation? Images in Azure Marketplace are periodically updated, and older versions may be marked for deprecation. When an image is deprecated it is often removed from the Azure Marketplace, meaning it won’t be available for use anymore. It’s important to keep an eye on when an image will be deprecated so you have an understand of when it might not be available anymore. So you can plan accordingly. Sometimes images are deprecated and not removed from the Marketplace meaning they are still available for use, however, they might not be kept updated date so are open to security threats. Also using deprecated images might lead to you operating in a non-supported environment, meaning if issues occur you won’t receive any technical support. ### Finding the SKU Name Before you can check the deprecation status of an image, you need to identify the SKU name. If you don’t know the SKU name, use the following command to find all relevant images. For example, to search for Windows Server 2012 images in the West US 3 region, you can use this command: ```powershell $Location = "westus3" $PublisherName = "MicrosoftWindowsServer" $Offer = "WindowsServer" $Wildcard = "2012" Get-AzVMImageSku -Location $Location -PublisherName $PublisherName -Offer $Offer | Where-Object { $_.Skus -like "*$Wildcard*" } ``` ![Get-AzVMImageSKU output](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/06/image-1.png) Get-AzVMImageSKU output ### Finding the Versions of a Specific SKU Once you have identified the SKU name, the next step is to find the available image versions. For example, to find all versions of the Windows Server 2012 R2 Datacenter SKU, you can use: ```powershell $Location = "westus3" $PublisherName = "MicrosoftWindowsServer" $Offer = "WindowsServer" $Sku = "2012-R2-Datacenter" Get-AzVMImage -Location $Location -PublisherName $PublisherName -Offer $Offer -Sku $Sku ``` ![Get-AzVMimage output](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/06/image-2.png) Get-AzVMimage output ### Checking the Deprecation Status After identifying the version of the image you want to check, you can find out if and when an image is going to be deprecated by running this command: ```powershell $Location = "westus3" $PublisherName = "MicrosoftWindowsServer" $Offer = "WindowsServer" $Sku = "2012-R2-Datacenter" $Version = "9600.21620.231004" Get-AzVMImage -Location $Location -PublisherName $PublisherName -Offer $Offer -Sku $Sku -Version $Version | Select-Object -ExpandProperty "ImageDeprecationStatus" ``` ![Get-AZVMImage deprecation output](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/06/image-3.png) Get-AZVMImage deprecation output ### Conclusion Monitoring the deprecation status of Azure Marketplace images is a vital part of maintaining a secure and up-to-date cloud environment. By using the PowerShell commands provided in this guide, you can efficiently identify the deprecation status of any image, ensuring you remain proactive in managing your Azure resources. Keep these steps handy and incorporate them into your regular cloud management routines to avoid any surprises related to deprecated images. ### What is HashiCorp Vault? URL: https://www.techielass.com/what-is-hashicorp-vault/ Last updated: 2024-06-11T07:01:03.000Z Protecting sensitive data like passwords, API keys, and database credentials is a top priority for businesses. This is where HashiCorp Vault can help. ### What is HashiCorp Vault? [HashiCorp Vault](https://www.hashicorp.com/products/vault?ref=techielass.com) is a tool designed to securely store and manage sensitive information. Think of it as a highly secure digital safe where you can keep all your secrets. These "secrets" can be anything from passwords and API keys to certificates and encryption keys. ### What Problem Does HashiCorp Vault Solve? Before diving into the specifics of Vault, let's first understand the problems it aims to solve: - **Centralised Secret Management** \- In many organisations, sensitive information is scattered across different systems and applications. This makes it challenging to manage and secure these secrets effectively. Vault provides a centralised place to store and access all your secrets, simplifying management and improving security. - **Access Control** \- Who can access your secrets? When you have multiple users and applications, controlling who can see and use specific pieces of information becomes crucial. Vault allows you to define detailed access policies, ensuring that only authorised users and systems can access certain secrets. - **Secret Lifecycle Management** \- Secrets often need to be rotated or updated regularly to maintain security. Manually updating secrets across multiple systems is time-consuming and prone to errors. Vault automates the process of secret rotation and ensures that updates are applied seamlessly. - **Auditing and Monitoring** \- Keeping track of who accessed which secret and when is essential for security and compliance. Vault provides comprehensive audit logs, making it easy to monitor and review access to your sensitive information. ### How Does HashiCorp Vault Work? Vault operates based on the principles of identity-based access and encryption. Here’s a simplified overview of how it works: - **Initialisation** \- When you first set up Vault, it needs to be initialised, this involves generating encryption keys and setting up your initial configuration. - **Authentication** \- Users and applications authenticate with Vault using various methods, such as tokens, user credentials, or cloud-based identity services. Once authenticated, they can access the secrets they are authorised to use. - **Secret Storage** \- Secrets are stored in a highly secure manner, encrypted both in transit and at rest. Vault supports dynamic secrets, which are generated on-demand and expire after a certain period, adding an extra layer of security. - **Access Control Policies** \- Administrators define policies that control who can access specific secrets. These policies can be highly granular, allowing fine-tuned control over access permissions. - **Audit Logs** \- Every access request is logged, providing a detailed record of who accessed what and when. This is crucial for security monitoring and compliance. ### Is HashiCorp Vault Cloud-Based? Vault offers flexibility in terms of deployment. It can be used both as a cloud-based service and as an on-premises solution: - **Cloud-Based** \- HashiCorp provides Vault as a managed service, known as Vault Enterprise. This option is ideal if you prefer a hassle-free setup and maintenance experience. It allows you to leverage Vault's capabilities without worrying about infrastructure management. - **Manage your own install** \- If you prefer to have more control over your infrastructure, you can install and manage Vault on your own servers. This option is suitable for organisations with strict data residency requirements or those who want to integrate Vault with their existing on-premises systems. ### Pricing HashiCorp Vault comes in several versions: - **HCP Vault Secrets** \- This version of Vault is free to use and includes a small subset of the features of Vault. It’s a great starting point for individuals or small teams for small projects. - **HCP Vault Dedicated** \- This is a dedicated cloud version of Vault, that is priced per hour of usage and comes with all of the core Vault features. - **Enterprise** \- The enterprise version includes advanced features such as enhanced security, scalability, and support. Pricing for Vault Enterprise varies based on your specific needs and the size of your organisation. You would need to contact HashiCorp for detailed pricing information. ### Conclusion HashiCorp Vault is an essential tool for anyone looking to enhance the security of their sensitive information. Whether you're a small startup or a large enterprise, Vault provides the tools you need to manage secrets effectively and securely. By centralising secret management, controlling access, automating secret lifecycle, and providing detailed audit logs, Vault helps you maintain a robust security posture. So, if you’re concerned about protecting your sensitive data, give HashiCorp Vault a try! ### Tune In to "Talking Tech with Techielass" – Your Weekly Azure Update in Under 5 Minutes! URL: https://www.techielass.com/tune-in-to-talking-tech-with-techielass-your-weekly-azure-update-in-under-5-minutes/ Last updated: 2024-06-06T07:01:17.000Z Looking for a quick and easy way to stay updated on the latest from Azure? ***Talking Tech with Techielass*** is the podcast for you! Every week, I bring you the freshest updates from Azure, all packed into a concise episode of under 5 minutes. Whether you're on the go, at your desk, or just need a quick tech fix, my podcast is the perfect way to keep up with Azure’s ever-evolving landscape. No fluff, no filler—just straight to the point, so you can get back to your busy day informed and ahead of the curve. You can find ***Talking Tech with Techielass*** on your favourite podcast platforms: - [**Amazon Music**](https://music.amazon.co.uk/podcasts/39b95751-3f87-4593-a3a4-3c51654cd1ed/tech-talk-with-techielass?ref=techielass.com) - [**Spotify**](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) - [**Apple Podcasts**](https://podcasts.apple.com/us/podcast/sarah-leans-weekly-update-podcast/id1506712194?uo=4&ref=techielass.com) - [**YouTube**](https://www.youtube.com/playlist?list=PLbjernQTVXitqaDOIVD%5Fe5qjmSWErpRA1&ref=techielass.com) - [**Overcast**](https://overcast.fm/itunes1506712194/sarah-leans-weekly-update-podcast?ref=techielass.com) - [**Castbox**](https://castbox.fm/channel/id2752244?ref=techielass.com) Prefer using an [RSS feed](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com)? We've got you covered! Hit that subscribe button and never miss an episode. Stay informed, stay ahead, and let's talk tech! [**Listen Now and Subscribe!**](https://podfollow.com/talking-tech-with-techielass?ref=techielass.com) ### Retrieving API Fields from an Azure Static Web App Using a Bash Script URL: https://www.techielass.com/retrieving-api-fields-from-an-azure-static-web-app-using-a-bash-script/ Last updated: 2024-06-10T07:39:31.000Z Azure Static Web Apps provide a streamlined full-stack development experience for static site hosting and serverless API endpoints. If you need to retrieve detailed configuration information about your Azure Static Web App, you can use the Azure CLI combined with a simple Bash script to automate this task. In this blog post, I'll walk you through a Bash script that retrieves all the API fields from an Azure Static Web App. ### Prerequisites Before running the script, ensure you have the following: - Azure Account. - Access to Azure Shell: You want to launch [https://shell.azure.com](https://shell.azure.com/?ref=techielass.com) and run the Bash console. ### The Bash Script Below is the Bash script that retrieves all the API fields from an Azure Static Web App. ```bash #!/bin/bash # Variables subscriptionId="" resourceGroup="" appName="" apiVersion="2023-12-01" # Get the access token using Azure CLI echo "Retrieving access token..." accessToken=$(az account get-access-token --query accessToken --output tsv) if [ -z "$accessToken" ]; then echo "Error: Unable to retrieve access token. Make sure you are logged in with Azure CLI." exit 1 fi # URL for the GET request url="https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.Web/staticSites/${appName}?api-version=${apiVersion}" echo "Making GET request to URL: $url" # Make the GET request and store the response response=$(curl -s -w "\nHTTP_STATUS_CODE:%{http_code}" -X GET "$url" \ -H "Authorization: Bearer $accessToken" \ -H "Content-Type: application/json") # Extract HTTP status code from response http_status=$(echo "$response" | tail -n1 | sed 's/.*HTTP_STATUS_CODE://') # Extract the response body response_body=$(echo "$response" | sed '$d') # Check the HTTP status code if [ "$http_status" -ne 200 ]; then echo "Error: Received HTTP status code $http_status" echo "Response body: $response_body" exit 1 fi # Print the entire response body echo "Response body:" echo "$response_body" | jq . ``` ## Script Explanation Let's take a look at what each section of the script means. **Variable Definitions**: The script starts by defining the variables 'subscriptionId', 'resourceGroup', 'appName', and 'apiVersion'. Replace the placeholders with your actual Azure subscription ID, resource group name, and app name. **Access Token Retrieval**: ```bash accessToken=$(az account get-access-token --query accessToken --output tsv) ``` The script retrieves an access token using the Azure CLI. This token is required for authentication when making API requests to Azure. **URL Definition**: ```bash url="https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.Web/staticSites/${appName}?api-version=${apiVersion}" ``` The script constructs the URL for the GET request using the provided subscription ID, resource group, app name, and API version. **Making the GT Request**: ```bash response=$(curl -s -w "\nHTTP_STATUS_CODE:%{http_code}" -X GET "$url" \ -H "Authorization: Bearer $accessToken" \ -H "Content-Type: application/json") ``` The script makes a GET request to the constructed URL using \`curl\`. The \`-s\` flag suppresses progress output, and \`-w "\\nHTTP\_STATUS\_CODE:%{http\_code}"\` appends the HTTP status code to the response. **HTTP Status Code Handling**: ```bash http_status=$(echo "$response" | tail -n1 | sed 's/.*HTTP_STATUS_CODE://') response_body=$(echo "$response" | sed '$d') ``` The script extracts the HTTP status code and the response body from the \`curl\` output. If the HTTP status code is not 200, it prints an error message and exits. **Printing the Response**: ```bash echo "$response_body" | jq . ``` The script uses [jq](https://jqlang.github.io/jq/?ref=techielass.com) to pretty-print the JSON response body, which contains all the API fields of the Azure Static Web App. ### Running the Script - Open your web browser. - Navigate to [https://shell.azure.com/](https://shell.azure.com/?ref=techielass.com) - Log in with your Azure account credentials. - \- If you don't have an account, you will need to create one. ![Azure Cloud Shell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/05/image.png) Azure Cloud Shell - Select the Bash environment (if prompted to choose between Bash and PowerShell). - To create a new file to store your script in, type the following command and press Enter: ```bash touch get_static_web_app_details.sh ``` ![Azure Cloud Shell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/05/image-1.png) Azure Cloud Shell - To open the VS Code editor built into the Azure Cloud Shell, type in the following command: ```bash code get_static_web_app_details.sh ``` - Copy your bash script from above into the new file you've created. ![Azure Cloud Shell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/05/image-2.png) Azure Cloud Shell - After pasting your script, **save the file** by using the command **Ctrl + S** (Cmd + S on Mac). - To close VSCode and return to the Bash shell, use the command **Ctrl + Q**. We now need to make the file executable within our environment. Type in the following command: ```bash chmod +x get_static_web_app_details.sh ``` It's now time to run the script, we can do this by typing the command: ```bash ./get_static_web_app_details.sh ``` ![Azure Cloud Shell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/05/image-3.png) Azure Cloud Shell ### Conclusion This Bash script provides a simple and effective way to retrieve all the API fields from your Azure Static Web App. By leveraging the Azure CLI and \`curl\`, you can automate the retrieval of detailed configuration information, which can be helpful for monitoring, troubleshooting, or documenting your web app's setup. ### Querying DNS Records with PowerShell URL: https://www.techielass.com/querying-dns-records-with-powershell/ Last updated: 2025-10-23T13:39:48.000Z In the world of networking and system administration, efficiently managing DNS (Domain Name System) records is paramount. Whether you're troubleshooting connectivity issues, configuring mail servers, or ensuring proper domain mapping, having the ability to query DNS records quickly and accurately is indispensable. Fortunately, [PowerShell](https://www.techielass.com/tag/powershell/) provides a robust set of tools that make this task straightforward and efficient. PowerShell, with its versatile scripting capabilities, allows administrators to automate repetitive tasks and perform complex operations with ease. When it comes to querying DNS records, PowerShell offers several cmdlets within its NetTCPIP module that streamline the process. Let's delve into how you can harness the power of PowerShell to query DNS records effectively. ## MX Record Query MX (Mail Exchange) records play a crucial role in email delivery, specifying the mail server responsible for receiving email on behalf of a domain. Here's how you can use PowerShell to query the MX record for 'techielass.com': ```powershell Resolve-DnsName -Name techielass.com -Type MX ``` ![PowerShell MX Record query](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/04/image-1.png) PowerShell MX Record query This command utilises the *Resolve-DnsName* cmdlet, specifying the domain name and record type (MX). Upon execution, it returns information about the MX record(s) associated with the domain 'techielass.com', including the preference value and the mail server's hostname. ## TXT Record Query TXT records serve various purposes, such as domain verification for services like SPF (Sender Policy Framework) and DKIM (DomainKeys Identified Mail). Let's use PowerShell to query the TXT record for 'techielass.com': ![PowerShell TXT DNS record query](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/04/image-2.png) PowerShell TXT DNS record query Executing this command retrieves the TXT records associated with the domain, providing valuable information encoded within these records, such as SPF policies or verification keys. ```powershell Resolve-DnsName -Name techielass.com -Type TXT ``` ## CNAME Record Query CNAME (Canonical Name) records alias one domain name to another, allowing multiple domain names to resolve to the same IP address. Here's how you can query the CNAME record for 'autodiscover.techielass.com': ```powershell Resolve-DnsName -Name autodiscover.techielass.com -Type CNAME ``` ![PowerShell DNS CNAME record query](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/04/image-3.png) PowerShell DNS CNAME record query By running this command, you'll receive information about any CNAME records associated with the domain, indicating the canonical name to which 'techielass.com' resolves. [![Buy me a coffee](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/blogcoffee-2-1.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) Buy me a coffee ## Conclusion PowerShell simplifies DNS management with intuitive cmdlets, enabling administrators to efficiently investigate configurations, verify domains, and troubleshoot connectivity. Leveraging Resolve-DnsName, admins can quickly retrieve various records, from MX for email delivery to TXT for verification, and CNAME for aliasing. Mastering PowerShell's DNS querying is crucial for seamless network management, empowering admins with precision and confidence. So, next time you need to query DNS records, trust PowerShell to streamline the process. And with more organisations adopting hybrid cloud, knowing how to query DNS quickly is more important than ever 💡 👉 ****Want to log events with PowerShell?** Check out my guide on [Writing to Event Logs with PowerShell](https://www.techielass.com/writing-event-logs-with-powershell/) to learn how! ### How to push code from VS Code to GitHub URL: https://www.techielass.com/how-to-push-code-from-vs-code-to-github/ Last updated: 2025-10-23T13:38:42.000Z Are you ready to take your coding journey to the next level by sharing your projects on GitHub? Whether you're just starting out or already familiar with coding, understanding how to push your [Visual Studio Code](https://www.techielass.com/tag/vs-code/) (VS Code) project to [GitHub](https://www.techielass.com/tag/github/) is a fundamental skill for any developer. In this beginner-friendly tutorial, we'll walk you through the process step by step. ## Prerequisites Before we dive in, ensure that you have Visual Studio Code and [Git](https://www.techielass.com/installing-git/) installed on your machine. Additionally, you'll need to have a GitHub account set up. If you haven't already done so, head over to [GitHub.com](http://github.com/?ref=techielass.com) and create an account—it's free and only takes a few moments. ## Step 1: Prepare Your Project for GitHub in VS Code Open up your VS Code editor and ensure that your project is ready to go. For this tutorial, I am going to be using a small project that has an HTML file, CSS file and readme file in it. This is what I want to commit to a GitHub repository. ![VS Code editor](https://lh7-us.googleusercontent.com/OcQxU1PK3vz7JaWD2f1aV_Ft_E0LNzSbiwVUFVw8g-sc0TBrbrOdy_i5bxgSsETXmeOEMH6hQfNGkFpNFEcOYWnj-3X74cPau-3eeyyGIWNKMFo9o_DP6_vPeyuWXM42nv1a3ctARxh879NvxGyoVrM) VS Code editor ## Step 2: Initialise a Git Repository in VS Code Navigate to the source control view in Visual Studio Code. You can do this by clicking on the icon on the left-hand side or by pressing Ctrl + Shift + G. ![Initialise Git Repository in VS Code](https://lh7-us.googleusercontent.com/24vvVSN6ck9AKpigx3FVNFhlFsVVJqhVtKoEwI_bH2iKV0rPIYi6z16l9HEJkw_a-I0KoIQ0nzIyL8_2xGvWMwAGOdO1FbF5-B8aH-i11IrV5A5ashID4InQa6jVHsQfhauKXgbHOkMhobs-I4PysJs) Initialise Git Repository in VS Code When prompted, click on the "Initialise repository" button. This action creates a new Git repository in the current folder, allowing you to start tracking code changes. ![Initialise Git Repository in VS Code](https://lh7-us.googleusercontent.com/Ot20ByJlHe1c96ibi_b1Gx85m1GIL9Jir3_2RCv2bB-Jnm2OLWua2EEOhqoS7yVoMZHhVZDLwhtGnai601LGqMbRp1rzFwdzKafuis2xgzfHKzuowbmAaSqmgsD74eW3y8kZnOWLr2Kb77bF1uCMiMk) Initialise Git Repository in VS Code ## Step 3: Commit Code in VS Code Before Pushing The source control view will now list any changes you've made to your project. Select all the files you want to include in this commit and enter a descriptive commit message. Then, hit commit to save your changes. ![Commit source code in VS Code](https://lh7-us.googleusercontent.com/CyQxX8gDY0ogHOQWSIdGICU4hoq5FIkQyavWYD10xi8PXSYTBCi70IR0WBjwrBUMC9hHUrzdiy_kEm0kQBIs0GgjMPP5JmQo9Gbx9rHO1zCQN9QPkNbG0m-Am8Kf8-nEjMtOQnFQZ4U-dej5wKLcMoQ) Commit source code in VS Code ## Step 4: Push Your VS Code Project to GitHub Repository Head over to GitHub.com in your browser and create a new repository. ![Create GitHub repository](https://lh7-us.googleusercontent.com/KM39da3fYEamIBk_YjgvSCnG2_UkdQatGas-4OE8pT0RY2FtMbwlgm4GOegFwGN3FC3997mVZaHBiEXkguq8HrF_xaEzQO5v1cb_e-OTSjbB4IDZ9G4lYB-cW2dFfh4uXxOxbl9vqT-xRK3gn624hPI) Create GitHub repository Follow the wizard to set up your repository. ![Create GitHub repository](https://lh7-us.googleusercontent.com/QaUiDM8rL5nRt1zE5mCDLwKV2-2xGxRENzP3H_RpPMUDXMWjb-6p6CrQ6U5yrwclMTUAEbnBghf1KdiCdHrmtGU6QxXw-Z76znfYQpq0ChNTrOUoCD88E7uwu5W_W5bO5z9MvO6Z-TN6QtLOVO4GWVo) Create GitHub repository Once created, copy the repository's URL from the quick setup section. ![Copy GitHub url](https://lh7-us.googleusercontent.com/CN-HTQgDSbK9WBdzFnzF8ipRGaTvtqiZX6tyg97x9DPXN5fNja3k1017VyiCZ0XnmPPhegXe7mHLvbedluLbIc2n1Kgf4nvffFjoqtvkXW5ozvSH4GaB5LitzHBAssMO5vCQiLVAF3g1iAY9xa33jeM) Copy GitHub url Switch back to your VS Code editor. Click on the ellipsis (...) in the source control view, select Pull/Push from the drop-down menu, and choose Push to. ![Push code from VS Code to GitHub](https://lh7-us.googleusercontent.com/dRpCJQdHKP_ddTKrOQkpRIhKv0Im9bVq3edwMmrTZ39IG0zzcE3NdrcjZwtyoHn-IgsFlrK-w9NoD6qX1I612qNLd7HzT3jt74eHCDKFlwmg2EB5UPvALXzsaoIEtXu-wfTNTrLTjh_NSowvXhBnLCs) Push code from VS Code to GitHub You will be prompted that the repository has no remotes to push to, click on the "add remote" button. ![Push code from VS Code to GitHub](https://lh7-us.googleusercontent.com/fkCaFvEznW1w99UD99qlQs4ksWw1GU_84KX6O4V8ytawwC3UgZPhGT8UQW80x82M0B0YaIzAuW2WplUq4IU--Nsd0rkqV2EJbYp8USsYMQkSGVmg9jt8_MhV3sUFvWaF-e3m57NZsZ-gwDFkqZpt380) Push code from VS Code to GitHub Paste the URL you copied from GitHub and give it a name. ![Push code from VS Code to GitHub](https://lh7-us.googleusercontent.com/yso1qUheSfxlinMvHQwHDAeqGimOj582Uo9ErHEf4K44KGp15I5pwCsLkKmXRFbwG1inZGqF3htp-Of9o3_k2i0IHBJhkR1KsDEBpoy9_zkKi-4vThqJIAEnz_GKizPsKW8vvJJ4p_UFMHIGZAk6Xbk) Push code from VS Code to GitHub VS Code will now display a button allowing you to push your code into GitHub. Click on the "Publish Branch" button to complete the process. ![Push code from VS Code to GitHub](https://lh7-us.googleusercontent.com/dRlKKvLbNO_9JNT2AcCyhbB1whE_a1jI65Y2X9VD41GtnNLhe0KQ11VHaixARCt8cbHM5lAgANCA8gfQWTUHDlohOhlHSu-dQtumW9rpn2AN2SadGAGSXMIBXs0AWfyaWrbRYx0CEeQklseM6DwCmaQ) Push code from VS Code to GitHub [![buy me a coffee](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/08/blogcoffee-2.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) Buy me a coffee ## Step 5: Verify on GitHub Your code is now pushed to GitHub! You can head over to your GitHub repository in the browser and refresh the page to see your code there. ![View code in GitHub](https://lh7-us.googleusercontent.com/KITaB2OqchV3X1lw_lt0ELQ1LGz3P_-rOFkmWM9_o_tHyOGSNGcRBPTQvwe6bRFQCRJeMZdhnXjbS5QEzzfEnHLb1kgsXBS0-moNuR0Uj_NcXXdKjMguhBGfIUZqH_aCClonGr3Py4rMdHVpW60Kv9o) View code in GitHub Congratulations! You've successfully pushed your Visual Studio Code project to GitHub. From here, you can continue making changes to your code, committing them, and syncing them to GitHub. Remember, mastering this process is essential for collaborating with others and managing your code effectively. And now that your project is on GitHub, you can explore features like [GitHub Actions](https://www.techielass.com/tag/github-actions/) for automation, or even publish your project as a GitHub Page to showcase it online. ### Azure Hybrid Benefit Dashboard URL: https://www.techielass.com/azure-hybrid-benefit-dashboard/ Last updated: 2024-05-14T07:01:23.000Z Do you want a quick and simply way of understanding if you have applied Azure Hybrid Benefit to your Windows Server or your SQL instances? In this blog post we’ll show you how to deploy an Azure Dashboard that will give you that overview. ### Azure Hybrid Benefit Dashboard The [Azure Hybrid Benefit Dashboard](https://github.com/weeyin83/ahub-dashboard?ref=techielass.com) is an open-source project first created by myself to help administrators get an overview of what Windows Servers have Azure Hybrid Benefit (AHUB) enabled or not and also an overview of what SQL server instance have AHUB enabled or not. ### How to Enable Azure Hybrid Benefit Dashboard - Log in to [Azure Portal](https://portal.azure.com/?ref=techielass.com) - Click on **Dashboard** from the Azure Portal menu. You may already see the dashboard view by default ![Azure Portal](https://lh4.googleusercontent.com/wlyMcY9SJl3EDZW_2tDCl7YGBkVK9xtqeOLeXUdMAdHW2myFSlyrlBD_IpGgZ35hAonFnTCKTpXZQdvLF-FD1qOtCVsqa-JHpPcBidjwo_r7eUFTxNmmLEz2EbcXIsMi1YiFTN4E3bcd9eU7M628_n8) Azure Portal - Click on **Create** ![Azure Portal](https://lh5.googleusercontent.com/559vMtGJeQE1SeYjZzicVboIQcFtsjj2_Rq1TeaeVYlY257U9F8bY89uwkGTxVWWGXB71lsx8S5KTpH5fsBDiHxQqIt-HkzIXdmVE7aem-Lq2dkRBh-IHIVdlvZgRAl5kOquzY0Kz8vfl8RQnBY5EOQ) Azure Portal - Select **Custom** Dashboard ![Azure Portal](https://lh3.googleusercontent.com/scJTWa2z7faVGkvO4En55D4UZEiyP9F-nbs1iD8-qhces_maTRjNoOQ5R9OuoNgX8grGhsrf7v_j6IIjJ9coso6UHDq1H0c7opk9jipWPZ2_ZFn2LiczVpoT4GLACdPIhV734u9BUgmqUDWWebGzMnU) Azure Portal - You will be prompted to customise the new dashboard, click on **cancel** ![Azure Portal](https://lh6.googleusercontent.com/0jTFejL0KxjXZ2HsIq8CE0lECki5rivfkTdK5JW0QNvctVN5XkicOcl2U_h1DUIzIG9xHBJiCP3By_bYVBMIyJxC-fms3CmHkcajrpnhb7GuBvyMmW54saBdO_iy_JWrLbRgCWbbeTC9Vy0kHnQBTEY) Azure Portal - Now select **Upload** and upload the [AHUB-dashboard.json](https://github.com/weeyin83/ahub-dashboard/blob/main/AHUB.json?ref=techielass.com) ![Azure Portal](https://lh6.googleusercontent.com/v7Eas7PBkEvKuqKbv7ktKO-nl0lhHZfnsWcnGSnbK3j89nQqICShHtpam7Wai1TYrR7t-hX2twkVWVdz-GzIkedOCickNnHeqVYFJ9XN6A18YWZiMx3-YWHXwB9jyVbnvyOWLTOCA-3dykl8u1xszHE) Azure Portal - If you want to edit the dashboard, please refer to this [link](https://learn.microsoft.com/azure/azure-portal/azure-portal-dashboards?ref=techielass.com#edit-a-dashboard) ## Conclusion The [Azure ](https://github.com/weeyin83/ahub-dashboard?ref=techielass.com)Hybrid Benefit Dashboard gives you an overview of whether or not your environment is making the most of the Azure Hybrid Benefit you might be entitled to and if you are making the most of any costs savings you can be. You can build upon that yourself or use the [GitHub repository](https://github.com/weeyin83/ahub-dashboard?ref=techielass.com) to provide feedback and ideas back into this community based project. ### Join Me on a Journey with Memberships and Super Thanks on YouTube! URL: https://www.techielass.com/join-me-on-a-journey-with-memberships-and-super-thanks-on-youtube/ Last updated: 2024-05-08T08:41:23.000Z I'm thrilled to announce some exciting updates on my [YouTube channel](https://www.youtube.com/techielass?ref=techielass.com) that I've been eager to share with you all. As of today, I've activated Memberships and Super Thanks features, taking our community engagement to a whole new level. Let's dive into what this means for you and for the content we create together. ### Memberships: Join the Inner Circle [Joining the membership program](https://www.youtube.com/channel/UCQ8U53KvEX2JuCe48MxmV3Q/join?ref=techielass.com) is like becoming a VIP insider to the community. It's a fantastic way to show your support while unlocking some awesome perks and exclusive content tailored just for you. Here's why memberships are crucial for helping me continue creating videos: **Direct Support:** By becoming a member, you're directly supporting me in creating more videos, podcasts, and blogs. Your contributions play a vital role in fuelling the content creation process. **Community Connection:** Membership creates a tight-knit community where we can interact more closely. You'll have access to members-only posts, polls, and live chats, fostering deeper connections among us. **Exclusive Content:** Get ready for some special treatment! Depending on the tier you choose, you'll unlock exclusive badges, emojis, behind-the-scenes footage, and early access to new content. It's like being part of an exclusive club with front-row seats to all the action. 0:00 /0:09 1× YouTube membership joining demo ### Membership Tiers: **Techie Apprentice:** This tier is perfect for those who want to show their support and be part of the community. You'll get access to members-only posts, exclusive badges, priority replies to your comments and emojis to showcase your dedication. **Techie Enthusiast:** For those craving even more exclusivity, the Insider Tier offers everything in the Techie Apprentice tier plus exclusive live streams, and member shoutouts in videos. [Join the membership program today!](https://www.youtube.com/channel/UCQ8U53KvEX2JuCe48MxmV3Q/join?ref=techielass.com) ### Super Thanks: One-Off Gratitude, Endless Impact Super Thanks is a fantastic way to express your appreciation for a specific video. It's like leaving a digital tip to show your gratitude and support for the content you enjoyed. Here's why Super Thanks matter: **Instant Recognition:** Super Thanks is a one-off donation that allows you to express your gratitude for a particular video instantly. It's a way to say "thank you" in a meaningful and impactful manner. **Continued Support:** Your Super Thanks contributions go a long way in ensuring that I can continue creating high-quality content across various platforms. Every gesture of appreciation keeps the momentum going and inspires me to deliver more valuable content to you. Super Thanks is available on each video on my channel, so if you see a video you particularly grateful for, then please consider using the Super Thanks button. 0:00 /0:10 1× YouTube Super Thanks ### Wrapping Up As a content creator, I pour my heart and soul into every video, podcast, and blog post, all in my own time. Your support, whether through [Memberships](https://www.youtube.com/channel/UCQ8U53KvEX2JuCe48MxmV3Q/join?ref=techielass.com) or Super Thanks, fuels this passion and keeps the creative juices flowing. Together, we're not just building a channel; we're fostering a vibrant community of like-minded individuals who share a love for great content. So, if you've been enjoying the content and want to take your support to the next level, consider joining the membership program or sending a Super Thanks my way. Your support means the world to me, and I can't wait to continue this incredible journey with each and every one of you. Thank you for being amazing, and let's make some magic together! ### Introduction to Terraform Outputs URL: https://www.techielass.com/introduction-to-terraform-outputs/ Last updated: 2024-05-07T07:01:57.000Z In this post, we'll delve into the world of Terraform outputs, exploring what they are, how to create them, apply them, and harness their power in your infrastructure deployments, with Azure as our example platform. ## What are Terraform Outputs? Terraform outputs serve as a conduit for extracting essential information from your infrastructure once it's been provisioned. Whether it's an IP address, a URL, or a resource ID, outputs enable you to access key details about your resources. For example, consider provisioning an Azure Storage Account with Terraform. Once created, you might want to retrieve its name for further use. With Terraform outputs, you can easily access this information. ![Terraform output example](https://lh7-us.googleusercontent.com/85mykByyRkOCILEY4aGKMqRYI9LszO8Ge8gHw4j2ahhrj9lXIp5VJtbFRkYJmgFwSkies9aPJeBl8Mmii1M4Z1JyWA96NXmwW167dQUvYgvKb8dAcZ33CsJjyLVlB-_K9WMFT0ttgBU09l18CXYcLTE) Terraform output example ## How to Create Outputs Creating outputs in Terraform is straightforward. You define them within your configuration file using the '*output'* block. You can display one output or multiple. For example, if we want to deploy an Azure storage account we can define two outputs, the storage account name and the storage account URL. ```hcl ## # Terraform Configuration ## terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 3.100.0" } } } provider "azurerm" { features {} } ## # Deploy resource ## resource "azurerm_storage_account" "example" { name = "techielasstfoutputs" resource_group_name = "demo-rg" location = "westus3" account_tier = "Standard" account_replication_type = "LRS" access_tier = "Hot" } ## # Output ## output "storage_account_name" { value = azurerm_storage_account.example.name } output "storage_account_url" { value = azurerm_storage_account.example.primary_blob_endpoint } ``` ## How to Apply Outputs Once you've defined your outputs, you apply your Terraform configuration just as usual. Terraform will execute the configuration, provision the resources, and display the outputs once it's done. Below is an example of the outputs being displayed after the resource has been deployed. ![Terraform output example](https://lh7-us.googleusercontent.com/9FbJcP_y7geuL1Y4OQjH1oZDWHNArSpiZcaRD-3W1BjgNtEScO9FpYwLhv9EafTr2PziTqY2RiDJAimK0g-RumDamBUEDTlm9z_yjKJTHU2jKVqn3tRS4gqbgdRb_V9O5cZqKTsyF41VFIROWeJHfOM) Terraform output example ## Using the Outputs With outputs in hand, you can leverage them in other parts of your Terraform configuration. Suppose you want to reference the storage account name in another resource. By defining an output for the storage account name, you can easily retrieve this information and utilize it in subsequent deployments. In your CI/CD pipeline, you can set up Terraform to automatically execute these deployments one after another, ensuring a smooth and efficient workflow. As each deployment completes, the outputs generated can be captured and passed along to the next stage, enabling a cohesive and automated infrastructure provisioning process without manual intervention. This streamlined approach empowers beginners to leverage Terraform's capabilities effectively within their development lifecycle, facilitating the creation and management of cloud resources with ease. ## State Files and Outputs It's crucial to understand that outputs are stored in Terraform state files, which contain information about your infrastructure. Running \`terraform show\` displays the current state of your infrastructure, including the outputs you defined. ## Conclusion Terraform outputs are a powerful tool for extracting valuable information from your infrastructure deployments. By mastering outputs, you can enhance automation, streamline integration, and gain deeper insights into your environment. ### How to use Terraform Console Command URL: https://www.techielass.com/how-to-use-terraform-console-command/ Last updated: 2025-02-14T11:31:01.000Z The **terraform console** command allows you to experiment with Terraform functions and expressions. In this blog post, we will explore how to use the command. ## What is the Terraform console command? The **terraform console** command is part of the Terraform CLI. It will open an interactive console where you can experiment and test expressions before using them in production. ## Terraform Console Examples To enter the Terraform console type in the following command ```bash terraform console ``` From here you can try and test several different scenarios. The first example to try is some arithmetic, you can type in **2 + 5** and the **terraform console** will give you an output. ![Terraform console output](https://lh7-us.googleusercontent.com/HKgFeri2Th_OxVMTcek3COZ3NstXps7zo0RuB6Jo10Pv6e-Fx1gqAcPGPMXzeR4wAsDH4jxscHrFQ9pxrPBOCw4KkgpOWf8K76LI-oerrMBbPAzQWyQxUFo3HyEC1322LV-O3iW6Iz4ajRRozNVpoTM) Terraform console output Equally, you can input something like: ```bash format("Hello, %s!", "Techielass") ``` In this example, the format function is used to create a string with a placeholder %s that is replaced by the value "Techielass". The resulting string "Hello, Techielass!" is returned by the function. ![Terraform console output](https://lh7-us.googleusercontent.com/ZR7pfLEIIYnvjUueHizHhoXDi_cKapIeyb7jacd3pq_09PLy8u14ErWTE48T6lQy1_YkCfo-UEY9VsF6U6MxdaqawA4AXjojCiXiiqzwJQjRZXWvu4Kb-abPfTsnpDtX_5a3WOtiG5lqi16TxKDo4oE) Terraform console output You can also use the **terraform console** command to test and query Terraform files. Let’s take an example of Terraform code for deploying an Azure resource group using the Azure provider: ```hcl # Define Azure provider provider "azurerm" {   features {} } # Define variables variable "resource_group_name" {   type    = string   default = "techielass-resource-group" } variable "location" {   type    = string   default = "UK South" } # Create Azure resource group resource "azurerm_resource_group" "example" {   name     = var.resource_group_name   location = var.location } ``` Code explanation: - **Provider Block**: The provider block specifies that we are using the \`azurerm\` provider, which allows Terraform to interact with Azure resources. - **Variables**: Variables are used to parameterize the Terraform configuration. In this example, we have defined two variables: \- *resource\_group\_name*: Specifies the name of the Azure resource group to be created. This variable has a default value of "techielass-resource-group", which can be overridden when running Terraform. \- *location*: Specifies the Azure region where the resource group will be deployed. It has a default value of "UK South". - **Resource Block**: The resource block defines the Azure resource to be managed by Terraform. In this case, we are creating an Azure resource group using the \`azurerm\_resource\_group\` resource type. The \`name\` attribute is set to the value of the \`resource\_group\_name\` variable, and the \`location\` attribute is set to the value of the \`location\` variable. To test and query Terraform files using the **terraform console**: 1\. First, ensure that you have initialized the Terraform configuration in the directory containing your \`.tf\` files by running *terraform init*. ![terraform output](https://lh7-us.googleusercontent.com/RdD-lZkd8ar6mgkT75c92T3M0JhAmgz0UW3Ni6UfO1pHOkOnKZbNRC-DXJIzNdUvukg-5HIB397plPi47Ryie5M4k1P05zuygGmL-MHz5-De3FJN24jDMdyI1Z7YsPvtJ9jjg4DZe7mTPnfINuhOnX0) terraform output 2\. Once the initialization is complete, you can open the Terraform console by running **terraform console**. 3\. In the Terraform console, you can interactively evaluate expressions and query Terraform configuration elements. For example, you can query the value of variables or perform calculations. 4\. To use variables, you can simply reference them by name. For instance, you can type \`var.resource\_group\_name\` to see the current value of the \`resource\_group\_name\` variable. ![terraform output](https://lh7-us.googleusercontent.com/yvoAL8hSQJ7BWGnq8qi0jWBE-9M7ES1E0QrtB40qkY1scH8bN7J4kpkR7lWA_niJNxs3CEkCdmU7hSUzm2gen-dP5F0PiIzbWZ3YAejCZ3e7B6s1eqxK5QiAjFgZ9vIVzH5IU0zBKmsf7b0LqZcPcAo) terraform output 5\. To exit the Terraform console, you can type \`exit\` or press \`Ctrl+D\`. ## Conclusion In summary, the Terraform console command offers an interactive environment to experiment with Terraform functions and expressions before deploying them in production. By incorporating this tool into your Terraform workflow, you can streamline development processes and ensure the reliability of your infrastructure deployments. 💡 Check out my blog post [**Introduction to Terraform Outputs*](https://www.techielass.com/introduction-to-terraform-outputs/) ### Introduction to Azure Arc Site Manager URL: https://www.techielass.com/introduction-to-azure-arc-site-manager/ Last updated: 2024-05-24T14:31:28.000Z Microsoft has announced a new feature within the [Azure Arc](https://www.techielass.com/tag/azure-arc/) portfolio - [Azure Arc Site Manager](https://learn.microsoft.com/azure/azure-arc/site-manager/?ref=techielass.com)! This public preview feature is designed to help customers view and monitor their resources according to their physical locations. Site manager allows customers to create Arc sites to represent their on-premises environments and have a centralised view for monitoring the infrastructure on the edge. Currently, Azure Arc Site manager supports Azure Stack HCI, Azure Arc-enabled servers, Azure Arc-enabled Kubernetes and Azure IoT Operations Assets. Coming soon is support for more resource types, including Arc-enabled SQL servers, Arc-enabled VMware vSphere, and some cloud resources. ## Getting started with Azure Arc Site Manager To get started with Azure Arc Site Manager head over to your **Azure Portal**, and search for the **Azure Arc** management blade. On the left-hand side you will see **Site Manager (preview)** click on that. ![Azure Arc Site Manager](https://lh7-us.googleusercontent.com/3iLOq7y4kZ9rSDBIGQLMylqMfpx1ZVOAlZZWm9MrkjUcUJOVs9kymuaTmzX7AFZTClY1pxn5qq-cUPbtTlxVmquG7ZTmAsP9K9j5bEwBYpVql-9A2qOu5lZrUFkDYhzv9nnM5ctHNXrmEad09BUPkEA) Azure Arc Site Manager To create your first site click on the **Create** button. You will be prompted with the site creation wizard which will have five or six questions to answer. ![Azure Arc Site Manager](https://lh7-us.googleusercontent.com/7FmKMoZwonsgeuL_MhjdzG5BPYKNCbCGibc1v9M1bFmhsS6jkQsPx3MPwthj6wS_-CVSpb-tHGvPEA0PU0R4Hi6uuVrMqYUtbNSWBWyQ95-QUN207WJy8tKI0U9B-GMUPy5gA3klz81PlwB6mfpBKx0) Azure Arc Site Manager **Site Scope**: You can specify the scope as either a Subscription or a Resource Group during site creation, but it cannot be altered afterwards. Once defined, all resources within the selected scope are accessible and manageable through the site manager interface. *If you choose to scope the site to resource group, an additional question will appear asking you to specify which resource group you want the site scoped to.* **Site Name**: This is the name of the site, such as the building name or the location name that is easily identified by you and your team. **Display Name**: This is a custom name you want to give the site. **Subscription**: This is the Azure subscription you’d like the new site to be created within. **Address**: This is the physical address of the site. 💡 If you choose to create the scope by subscription all your Arc-enabled resources will be displayed within that site. So if you have one subscription for all your Arc-enabled resources but have split up different physical sites into resource groups, scope your site by resource group. ![Azure Arc Site Manager](https://lh7-us.googleusercontent.com/efraO7dpG9RtKwkkMz3WkZhuQo5Zurc1G2Gm6BU8Uj6zWaDCwzpGZe-MqA_jo6ts36SM7PsFZxLvQvAerys4bO6yvhKk6VaDyL92O3SS00nE9NhUMMCnnHPwC50NQVe46wOV_6PrmJeuPsfTEIWcN1o) Azure Arc Site Manager Once you’ve completed the form select **Review + Create**. You will be asked to confirm you are happy with the information and you want to proceed with the creation of the site. ![Azure Arc Site Manager](https://lh7-us.googleusercontent.com/YsTy2-hEqKtAkkoyqoVt1ZjRGR0XzCAKzs4engAunL3a9vK_Q-VFRybWFzuwcec2YlAwgMcdkLy0Q0p4GFOpAc2hqnTRgpdLVQehh_lXsk3Jg3XwOkgdvqyxWthrxrtagO1c_-QlwRhYcPlRu5QOSiE) Azure Arc Site Manager ## View a Azure Arc Site Manager Now you’ve created at least one site you can view it from the **Azure Arc** management blade in the portal, by selecting **Site manager (preview)** then **Sites** ![Azure Arc Site Manager](https://lh7-us.googleusercontent.com/cneON4WXN8Rw7Z8Ormy-CRGGG59VB38io1duwXXm4YSVG4ZbkwXGOFqhvQwjN5lxQBAqMG12ak_FccznTOtessqWtsq_yG_qOuU-B3KMT5kD33253Nnw1EIDXxyVyFkFVjPJncGuRVG2A_9CgIPjlbU) Azure Arc Site Manager You can drill into each specific site and view the following: - View resources - View connectivity status - View update status - View alerts - Add new resources - Modify resources ## Conclusion Azure Arc Site Manager looks like an interesting tool to help you monitor your Arc-enabled resources from one place and view any issues that need to be addressed. I look forward to seeing this product grow and offer more capabilities. ### How to push from GitHub Desktop to GitHub URL: https://www.techielass.com/how-to-push-from-github-desktop-to-github/ Last updated: 2024-04-23T07:01:00.000Z Welcome to our beginner's guide on uploading your project to [GitHub](https://www.techielass.com/tag/github) using [GitHub Desktop](https://www.techielass.com/streamline-your-workflow-with-github-desktop/)! GitHub is a powerful platform for version control and collaboration, and GitHub Desktop provides a user-friendly interface for managing your repositories directly from your desktop. In this blog post, we'll walk you through the step-by-step process of uploading your project from your local machine to GitHub using GitHub Desktop. Let's get started! ## Installing GitHub Desktop The first step is to install GitHub Desktop on your computer. You can download it for free from the [GitHub Desktop website](https://desktop.github.com/?ref=techielass.com) for Windows or macOS. Once downloaded, follow the installation instructions to set it up on your machine. You can view a step by step video tutorial here: ## Signing in to GitHub Desktop After installing GitHub Desktop, launch the application and sign in with your GitHub account. If you don't have a GitHub account yet, you can easily create one for free on GitHub's website. ![Log into GitHub desktop](https://lh7-us.googleusercontent.com/XXytQiF-cWTZUoZhxHmkI31Mbb2gj6XQTAcbviKmh3QzPj1hetjCoqPjyJ1Fhp-E-oTYEGS1dWBK1FUsZj53dz13jdllRo_nGHw-50vmKKqzcbVtMgInDW-dNuqVnqtjz-caVocehbiME_BWopjruvc) Log into GitHub desktop ## Creating a New Repository Next, you'll need to create a new repository in GitHub Desktop. Click on the "File" menu and select "New Repository" from the dropdown. Choose a name for your repository, add a description if you'd like, and select the location on your local machine where your project is stored. Then, click "Create Repository." ![Create a repository using GitHub desktop](https://lh7-us.googleusercontent.com/4zf05OGhOIzXADhEPLHKElGXo3YxPC5tTxrO8BJK9DX1PybLqUOku2FiIqnquKvinfjkJLRoZQ6nPeM3IptlJPw5kWYBJU5lvNFc9zsmCUC6a7Bp3CK5FnNokqFFZawJceLzJBNQ0mqfW_lJ2L-tLBA) Create a repository using GitHub desktop ## Step 4: Adding Your Project Files With your repository created, it's time to add your project files to it. If you already have some files created on your machine, click on the “Show in Explorer” icon and it will launch the Windows Explorer. You can now start to move/copy files into the new location. Alternatively if you don’t have any files created you can open up your favourite editor and start to create them saving them into the new folder location you have created. ## Step 5: Committing Your Changes Before you can upload your project to GitHub, you need to commit your changes. Review the changes you've made to your project files, enter a brief description of your changes in the summary field, and click "Commit to main." ![Commit changes in GitHub desktop](https://lh7-us.googleusercontent.com/iWcRzvgmQzCC6NUplSjV-89bJhKg-8Za4Pg32pTokrkwF2NteILog36jG5GcWDQhfHusa3hI0Qv9TjYbKofYkYvJ9vvzrDWHZHQJkMQr06w5Dd_jnuy_3vDAo6c5vXo2ZKfQ7W9uqv1TbIDeFrzugZg) Commit changes in GitHub desktop ## Step 6: Publishing Your Repository Once you've committed your changes, it's time to publish your repository to GitHub. Click on the "Publish repository" button, review the settings, and click "Publish repository" again to confirm. ![Publish changes to GitHub using GitHub desktop](https://lh7-us.googleusercontent.com/mmUQzM62ByYw4pmXsVUvqM9B_rrenDR3hPgcgTeQFaTNg-b4tx2gRVycQ8LOzQKhKPO7rgwGnF3uhpcMRmTB89th3rkA8-Nm2ktRUsHSDMCKVP81npPu8MmQs3ub08-ijRcj-i7EkMu-L7eVQ28Cc5c) Publish changes to GitHub using GitHub desktop And there you have it! You've successfully uploaded your project to GitHub using GitHub Desktop. Now, you can share your code with others, collaborate with fellow developers, and contribute to open-source projects. We hope this guide has been helpful to you in getting started with GitHub Desktop. Be sure to explore more features of GitHub Desktop to enhance your coding experience. Happy coding! ### What is Terrascan? URL: https://www.techielass.com/what-is-terrascan/ Last updated: 2024-04-09T07:01:52.000Z Let's dive into a tool that's making waves in the realm of cloud infrastructure security – Terrascan. If you've been exploring the vast landscape of [Infrastructure as Code (IaC)](https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools/), you might have stumbled upon this powerful tool. But fear not if you haven't! I'm here to guide you through what Terrascan is all about and why it's becoming a must-have in the toolkit of cloud engineers. ## What is Terrascan used for? Terrascan is a static code analysis tool specifically designed for IaC. In simple terms, it helps ensure that the code used to provision and manage cloud infrastructure adheres to best practices, compliance standards, and security policies. Whether you're using [Terraform](https://www.techielass.com/tag/terraform/), Kubernetes YAML, Helm charts, or other IaC tools. ## Terrascan features Now, let's take a closer look at what makes Terrascan shine: 1\. **Comprehensive Policy Checks**: Terrascan comes packed with a wide array of built-in policies covering security, compliance, and operational best practices. It can identify misconfigurations, security loopholes, and potential pitfalls in your infrastructure code. 2\. **Multi-Cloud Support**: Whether you're deploying on [AWS](https://www.techielass.com/tag/aws/), [Azure](https://www.techielass.com/tag/azure), Google Cloud, or any other major cloud provider, Terrascan supports them all. This flexibility makes it a go-to choice for organizations with multi-cloud environments. 3\. **Custom Policy Definition**: While the built-in policies cover many common scenarios, Terrascan also allows you to define custom policies tailored to your organization's specific requirements. This feature empowers teams to enforce internal standards and policies seamlessly. 4\. **Integration with CI/CD Pipelines**: Terrascan seamlessly integrates into [CI/CD pipelines](https://www.techielass.com/ci-cd-pipeline-tools/), enabling automated scanning of infrastructure code during the development and deployment process. This helps catch issues early in the development lifecycle, reducing risk and ensuring compliance. ## How to install Terrascan on Windows Here's a quick guide to help you install Terrascan on Windows: ### **Install Chocolatey (if not already installed)** [Chocolatey](https://www.techielass.com/chocolatey-what-is-it/) is a package manager for Windows that simplifies the process of installing software. If you haven't already installed Chocolatey, you can do so by opening PowerShell as an administrator and running the following command. ```powershell Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) ``` ### **Install Terrascan using Chocolatey** Once Chocolatey is installed, you can use it to install Terrascan by running the following command in [PowerShell](https://www.techielass.com/tag/powershell/) as an administrator: ```powershell choco install terrascan ``` This command will download and install Terrascan along with its dependencies. ### **Verify Terrascan installation** To ensure Terrascan has been installed correctly, you can verify its installation by running the following command in PowerShell: ```powershell terrascan --version ``` If Terrascan has been installed successfully, you should see the version number displayed in the output. And there you have it! Terrascan is now ready to help you secure your infrastructure code on Windows. ## How to use Terrascan to scan the IaC code Using Terrascan to scan your IaC code is a straightforward process. Here's a basic overview: **Navigate to Your IaC Directory**: Open a command prompt and navigate to the directory containing your Terraform, Kubernetes YAML, or Helm chart files. **Run Terrascan**: Simply execute the \`terrascan scan\` command. Terrascan will analyze your IaC files against its predefined policies and provide a detailed report of any violations found. **Review the Results**: Once the scan is complete, review the generated report to identify any issues or potential risks in your infrastructure code. ![Terrascan report](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/04/image.png) Terrascan report **Take Action**: Address any identified issues by making necessary adjustments to your IaC code, and rerun the scan to ensure compliance. ## Terrascan custom policies One of the standout features of Terrascan is its support for custom policies. Here's how you can define and use custom policies with Terrascan: - **Policy Definition**: Write your custom policies using the Rego language, following the Terrascan policy framework. - **Policy Configuration**: Configure Terrascan to load your custom policies alongside the built-in ones during scans. - **Scan with Custom Policies**: Run Terrascan as usual, and it will evaluate your infrastructure code against both built-in and custom policies. Custom policies empower organizations to enforce specific security and compliance requirements tailored to their unique needs, providing an extra layer of assurance when deploying cloud infrastructure. ## Conclusion In a world where security and compliance are paramount, tools like Terrascan are invaluable assets for cloud engineers and [DevOps](https://www.techielass.com/tag/devops/) teams. By integrating static code analysis into the infrastructure development lifecycle, Terrascan helps identify and mitigate risks early on, ensuring that your cloud deployments are secure, compliant, and resilient. So, whether you're a seasoned cloud architect or just dipping your toes into the world of Infrastructure as Code, give Terrascan a try, and experience the peace of mind that comes with knowing your infrastructure code is in good hands. Happy scanning! ### What is a large language model (LLM)? URL: https://www.techielass.com/what-is-a-large-language-model-llm/ Last updated: 2024-06-10T07:33:34.000Z In the world of artificial intelligence (AI), Large Language Models (LLMs) are garnering significant attention and making waves across various industries. But what exactly is an LLM, and why is it so important? Put simply, an LLM is a type of AI model that has been trained on vast amounts of text data to understand and generate human-like language. These models are built using deep learning techniques, specifically a branch of AI called natural language processing (NLP). At their core, LLMs are designed to comprehend and produce human language in a way that's eerily similar to how we humans communicate with each other. They can understand context, grammar, and semantics, and even generate coherent responses to prompts or questions. ## What are LLMs used for? LLMs have a wide range of applications across various industries, thanks to their ability to understand and generate natural language. Let's delve into some common use cases and real-world examples, particularly those showcased on the Microsoft website. **Language Translation:** LLMs are used to power machine translation services, enabling users to translate text from one language to another accurately. Microsoft's Azure Cognitive Services offers Translation services powered by LLMs, ensuring accurate and fluent translations in real-time. 💡 [**Microsoft's Translator*](https://www.microsoft.com/translator/?ref=techielass.com) *service utilizes LLMs to provide real-time translation capabilities for a multitude of languages across various platforms, including web, desktop, and mobile applications.* **Chatbots and Virtual Assistants**: LLMs form the backbone of chatbots and virtual assistants, allowing them to understand user queries and respond in a human-like manner. These AI-powered assistants can handle customer support inquiries, provide information, and even engage in casual conversations. 💡 [**The Bot Framework*](https://azure.microsoft.com/products/ai-services/ai-bot-service/?ref=techielass.com) *from Microsoft leverages LLMs to build intelligent chatbots and virtual agents that can communicate with users naturally, enhancing customer engagement and support experiences.* **Content Generation**: LLMs can generate human-like text based on prompts or input provided by users. This capability is utilized in various content generation tasks, including writing articles, generating product descriptions, and even composing poetry or prose. 💡 [**Microsoft's Power Platform*](https://www.microsoft.com/power-platform/?ref=techielass.com) *leverages LLMs to empower users to automate workflows and generate dynamic content using Power Automate and Power Virtual Agents, streamlining business processes and enhancing productivity.* ## What are some advantages and limitations of LLMs? ### Advantages: **Natural Language Understanding**: LLMs excel at understanding natural language, making them ideal for tasks requiring interaction with humans. **Versatility**: LLMs can be adapted for various applications, from translation to content generation, providing flexibility across industries. **Continuous Learning**: LLMs can be fine-tuned and improved over time with additional data, allowing for ongoing refinement and enhancement of performance. ### Limitations: **Data Bias**: LLMs may inherit biases present in the training data, leading to potentially biased or unfair outputs. **Computational Resources**: Training and deploying LLMs require significant computational resources, making them inaccessible for some organizations. **Ethical Considerations**: LLMs raise ethical concerns regarding privacy, misinformation, and potential misuse, necessitating careful consideration and oversight. ## How developers can quickly start building their own LLMs For developers eager to leverage LLMs in their projects, Microsoft Azure offers a suite of tools and services to kickstart the development process. [Azure's Cognitive Services](https://learn.microsoft.com/azure/architecture/data-guide/technology-choices/cognitive-services?ref=techielass.com) provides pre-built LLMs for various NLP tasks, including language understanding, translation, and text generation. By leveraging Azure's Cognitive Services, developers can quickly integrate LLM capabilities into their applications without the need for extensive AI expertise. Additionally, Azure offers resources and documentation to guide developers through the process of building and deploying LLM-powered solutions, ensuring a smooth development experience. In conclusion, Large Language Models (LLMs) represent a significant advancement in artificial intelligence, with diverse applications across industries. While they offer numerous advantages in natural language understanding and generation, developers must be mindful of the associated limitations and ethical considerations. By leveraging platforms like Microsoft Azure, developers can harness the power of LLMs to build intelligent, human-like language capabilities into their applications, driving innovation and enhancing user experiences. ### Git Clone Branch – How to Clone a Specific Branch URL: https://www.techielass.com/git-clone-branch-how-to-clone-a-specific-branch/ Last updated: 2024-07-02T11:51:32.000Z Since its inception in 2005 by Linus Torvalds, renowned for creating the Linux operating system kernel, Git has emerged as the predominant modern version control system globally. Within this article, I aim to show you the workflows of [Git](https://www.techielass.com/what-is-git/) cloning and branching. Furthermore, I'll demonstrate how you can clone a specific branch tailored to your requirements. Let's dive in! ## Prerequisites - Basic knowledge of the terminal - [Git installed](https://www.techielass.com/installing-git/) - A [GitHub](https://www.techielass.com/tag/github/) account ## A quick guide to Git and GitHub Git stands as a distributed version control system meticulously crafted to monitor the evolution of a project, particularly in the realm of software development. Its purpose is crystal clear: to foster seamless coordination, amplify collaboration, and infuse projects with a burst of speed and efficiency, ultimately empowering developers to conquer new frontiers with ease. In contrast, GitHub emerges as a dynamic web-based hosting service tailored for version control utilizing Git. It not only encapsulates all the elements of distributed version control and source code management inherent in Git but also elevates the experience by introducing a plethora of additional features specifically curated for engineers. ## Introduction to Git Clone Git allows you to manage and version control your project(s) in what is called a repository. This repository can be stored on a web-based hosting service, like GitHub. You can clone this repository to your local machines and have all the files and branches locally to work on. ![GitHub repository](https://lh7-us.googleusercontent.com/cxMHc-25_K7m-Q1H1D7UDVX_Aj-uI-0SVQN9fWt7WcvLogNb5RBkhW9RyWWc-hfoT_uQxevNSSWVjY44ddhUi6VhqXM3XAEpLIGNRAUh72C67vX4nbNH5RzvMxqRbI2FfBbnwWAz1-PBE3LCiDDfUgk) GitHub repository For example, you can clone this repository that I have using the following command: ```bash git clone https://github.com/weeyin83/WorkingRepo.git ``` ## Introduction to Git branches In any project, you're likely to juggle various features handled by multiple contributors. Branches serve as invaluable "playgrounds" within the project's framework. They provide a haven where you can tinker with the same files found in the main branch. Here, you're free to craft independent features, test novel ideas, implement daring changes, address issues, draft documentation, or experiment without jeopardising the stability of the production code. Once your work is polished, merging the branch back into the main branch seamlessly integrates your enhancements. Branching stands as a cornerstone in Git's philosophy, a concept seamlessly integrated into GitHub to streamline the management of different project versions. Within this ecosystem, the main branch reigns as the default, housing what's typically deemed as "production-ready and deployable code." From this sturdy foundation, new branches like *new-feature* or *documentation-update* can sprout, each representing a unique avenue of development stemming from the main branch. ## How to clone Git branches When you embark on cloning repositories using the trusty git clone command, remember that it not only replicates the branch but also grabs the remote HEAD. By default, this usually corresponds to the main branch and encompasses all other branches within the repository. Therefore, when you initiate a repository clone, you're essentially fetching the main branch alongside all its companions. You can list all the branches you have on your local machines using the command ```bash git branch -a ``` You can switch to another branch using the command: ```bash git checkout new-feature ``` Now if you wanted to only clone a specific branch there are two ways you can use, either: - Clone the repository, fetch all branches, and checkout to a specific branch immediately. - Clone the repository and fetch only a single branch. The command you can use to fetch only a single branch is: ```bash git clone --branch ``` If I wanted to clone a branch from my example repository in GitHub my command would be: ```bash git clone --branch auth-feature https://github.com/weeyin83/WorkingRepo.git ``` ## Conclusion By the way, if you're interested in mastering Git and want to embark on a structured learning journey, why not join my [14 days of Git learning course](https://www.techielass.com/14-days-of-git/)? It's packed with insightful lessons, hands-on exercises, and practical tips to help you become a Git ninja in no time. So, what are you waiting for? Let's embark on this Git adventure together! ### Should .terraform.lock.hcl be included in the .gitignore file? URL: https://www.techielass.com/should-terraform-lock-hcl-be-included-in-the-gitignore-file/ Last updated: 2024-02-27T08:01:17.000Z Welcome to this blog post where we delve into the intricacies of [Terraform](https://www.techielass.com/tags/terraform) and discuss a crucial aspect of managing Terraform projects: the *.terraform.lock.hcl* file. In this article, we'll explore what exactly the *.terraform.lock.hcl* file is, its significance in [Terraform](https://www.terraform.io/?ref=techielass.com) projects, and the debate surrounding whether or not you should commit it to your version control repository. Join us as we unravel the importance of this file and its impact on your [Infrastructure as Code(IaC)](https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools/) workflow. ## What is the .terraform.lock.hcl file? According to the official Terraform documentation the *.terraform.lock.hcl* file is: 💡 **Terraform automatically creates or updates the dependency lock file each time you run* [**the terraform init command. You should include this*](https://developer.hashicorp.com/terraform/cli/commands/init?ref=techielass.com) *file in your version control repository so that you can discuss potential changes to your external dependencies via code review, just as you would discuss potential changes to your configuration itself.* So let’s dive into that a bit more and explain it. When you're using Terraform and you run *terraform init*, it's basically setting up everything you need for your project, like installing different pieces that help make your project work. Now, here's where it gets interesting: Terraform wants to make sure it's using the right versions of those pieces, so it checks two things. First, it looks at what versions you've said you want to use in your project. Then, it checks this file called *.terraform.lock.hcl*, which keeps track of the specific versions Terraform has used before. Now, if Terraform hasn't used a specific version of something before, it'll pick the newest version that fits what you've said you need and then remember to use that version in the future by updating the lock file. But if Terraform has used a version before and it's recorded in the lock file, it'll stick with that version, even if there's a newer one available. You can change this behaviour though if you want by using a special command when you run terraform init. ## Should you include .terraform.lock.hcl in your .gitignore file? Now, it’s important to remember the .gitignore file is a list of things you don’t want to include when you are saving your project into your version control environment. So, should you include the *.terraform.lock.hcl* file in your .gitignore configuration? Well, it depends. Ignoring it means it won't get copied from your computer to your version control environment when you save your project. But remember, the *.terraform.lock.hcl* file is crucial for Terraform to work smoothly and consistently across different computers or environments. So, here's the deal: If you're working with a team or want to make sure everyone's using the same versions of software, it's best to include the *.terraform.lock.hcl* file in your version control. It helps keep things consistent and avoids unexpected surprises when someone else tries to use your Terraform project. But if you're working solo and you're okay with managing the versions yourself, then sure, you can ignore it. Just be aware that you might run into compatibility issues down the road. ## Conclusion In conclusion, the *.terraform.lock.hcl* file plays a crucial role in maintaining consistency and stability within your Terraform projects. While including it in your version control repository ensures uniformity, especially in team environments, solo developers may opt to manage versions manually. Ultimately, understanding the significance of this file empowers you to make informed decisions that align with your project's needs and workflow. ### How to clone a GitHub repo using GitKraken URL: https://www.techielass.com/how-to-clone-a-github-repo-using-gitkraken/ Last updated: 2024-02-20T08:01:16.000Z [GitKraken](https://www.gitkraken.com/invite?referralCode=pYx7cNys&ref=techielass.com) is a graphical user interface (GUI) tool that can help engineers manage their Git repositories efficiently. One of the fundamental tasks in Git is cloning a repository, and GitKraken simplifies this process even further with its intuitive interface. In this blog post, we'll walk you through the steps to clone a GitHub repository using GitKraken. ## Step 1: Install GitKraken and Log In Before you can start cloning repositories, you'll need to have GitKraken installed on your system. You can download it from the [official website](https://www.gitkraken.com/download?ref=techielass.com) and follow the installation instructions for your operating system. Once installed, launch GitKraken and log in with your GitHub account. This step is essential as it allows GitKraken to access your [GitHub](https://www.techielass.com/tag/github) repositories seamlessly. ## Step 2: Clone the Repository in GitKraken Open up your GitKraken tool. On the toolbar at the top left corner, you'll find a "Repo management" button represented by a folder icon. ![GitKraken interface](https://lh7-us.googleusercontent.com/i1VoGqM84g2BUeIGsKJHk9Yaci0hWCzFc4btRzvsRcDFKAS-wBfR0KGKbNt0bA2Nv0gOeLN5txfrxJj2aF5queonSv2RXbj2oDWyWvet_3_O-aLg_53G8T2-Ci3qnRPWVp8jaU-HUYTq1yE705cFYHA) GitKraken interface Click on this button and a dialogue box will appear asking you if you want to Open, Clone or Init a repository. Click on “Clone”. ![GitKraken interface](https://lh7-us.googleusercontent.com/4CpIPOHnaFiqvQBfhZrJGMWxFrrQqfmgOyEmzPme6WYsk11kF3lc-8VOFuFHIC8Q6jwnFc9OuMMID0hmXrNGzIdHNaN955tZMZokRCQsMvi_RSNOrPWSJwnMPXxVkpgDmRr1JL97XUjyG6kysBeuqjA) GitKraken interface You have several options open to you to be able to clone a repository from GitHub, you can either clone via the URL of the repository or you can log into your GitHub account and access your repositories that way. In this example, we are going to clone using the URL. So be sure to select the “Clone with URL” option. ## Step 3: Find the Repository URL Navigate to the GitHub repository you want to clone using your web browser. Once you're on the repository's page, look for the green "Code" button. Click on it to reveal the dropdown menu, and then click on the clipboard icon next to the repository URL to copy it to your clipboard. This URL is what you'll use to clone the repository using GitKraken. ![GitHub interface](https://lh7-us.googleusercontent.com/lkIR_FEHvXkGh8lloy3PnDEvvNHUt5GXK1qJOB8fUBpWDpQIOJ4Kjler2wFnL7v6pIMKcFWPDo3vNnRWMqT1niIOtIiOYx2UlTsroUCNXaJsaYHEmoUB3Ro2WMj7Yq53IPLGO9Y1gpjkoyisuyqq6ZA) GitHub interface ## Step 4: Paste Repository URL Switch back to GitKraken. Paste the repository URL that you copied from GitHub into the "URL" field in the dialogue box. You can do this by right-clicking in the field and selecting "Paste" or using the keyboard shortcut Ctrl+V (Cmd+V on Mac). ## Step 5: Choose Local Directory Next, you'll need to choose a local directory on your computer where you want to clone the repository. Click on the browse icon next to the “Where to clone to” field to browse and select the desired directory. This is where GitKraken will create a new folder containing the cloned repository files. ## Step 6: Clone the Repository Once you've entered the repository URL and chosen a local directory, you're ready to clone the repository. Click on the "Clone the repo!" button to start the cloning process. GitKraken will fetch the repository from GitHub and create a local copy in the directory you specified. ## Step 7: Repository Cloned Successfully Congratulations! You've successfully cloned a GitHub repository using GitKraken. You can now explore the repository files, view commit history, make changes, and push them back to the remote repository as needed. In conclusion, GitKraken provides a user-friendly interface for cloning GitHub repositories effortlessly. By following the steps outlined in this blog post, you can streamline your workflow and focus on collaborating with your team effectively. Happy coding! ### How to apply ESU patches to your SQL Server 2012 servers URL: https://www.techielass.com/how-to-apply-esu-patches-to-your-sql-server-2012-servers/ Last updated: 2025-09-28T14:30:26.000Z When running [End of Support](https://www.linkedin.com/pulse/navigating-end-support-how-azure-arc-helps-windows-server-sarah-lean-igx0e?ref=techielass.com) servers or SQL installs, it’s important to ensure you are receiving security patches for these servers/installs. It's also important to be actively planning to replace them with newer versions. In this blog post we walk through the process of ensuring you are subscribed to the relevant SQL Server 2012 Extended Security Updates (ESU) via [Azure Arc](https://www.techielass.com/tag/azure-arc/). As well as walking you through the process of finding the latest patches and applying them. ## Prerequisites - Azure Subscription - [Azure Arc installed on your server](https://www.techielass.com/register-and-manage-linux-servers-with-azure-arc-tutorial/) - [Azure Extension for SQL Server enabled on the server](https://www.techielass.com/register-and-manage-linux-servers-with-azure-arc-tutorial/) - Subscribe to Extended Security Updates (ESU) for SQL Server ## SQL Server Configuration To receive patches for your SQL Server 2012 installs you need to subscribe to receive the Extended Security Updates (ESU). You must ensure that you have configured the “Licence Type” correctly and subscribed to the Extended Security Updates (ESU). You can check this by following these steps: Open your **Azure Portal** Select the **Azure Arc** management blade ![Azure Portal](https://lh7-us.googleusercontent.com/PzFKwNCZCqKQOsTiVHt4FNbafk4Bv2Zbp8lghbKHuqoXfwT5oi68aEQeTdb3SWABjr_iUdXtJ6yQPE05A7Ei649WkBOqrgy4Ry9Io8X2ttF_BT9FV1pVTYnClqF0g0WHItYzCIj2lVmZJ8uxles8gR2PgtGRKuaWS5XmBrnbB3vA2vBkKhNVB3q3W_CK6Q) Azure Portal Click on **SQL Server Instances** down the left-hand side ![Azure Arc portal.](https://lh7-us.googleusercontent.com/w41atqqwLoOVsHeVnDSLEd1MfBHRuLX7WWDIKMBtbSbAzIjGqPSO3d-WwLK_K3IH6G48TnaoUlDhxM5tzzQt3O1APmnJfptFc1pp_Hn7hLZidAnLHAollNorpHplJJY3OenszRyJP049HKSVn38sfclca-TOswMaH3rR2qbuG6WgX5XV6Uac73QYd8gFWw) Azure Arc portal. Select a SQL server Under SQL Server configuration you should see the licence type has been configured and the ESU subscription is Enabled ![Azure Arc enabled SQL server](https://lh7-us.googleusercontent.com/QO4Qa4fojWv_YIgk-vbac0E1v18wFgXm5DyMMX6ZRrPcUc2oMBWVCeB5H9uBHZx4ZF9iWhex2ttAECJ6PBuxDBYz8ssowUalGEXTwMDp9aTy9x3wlHOgkKJ8efbBoGlC8eoy0QMxEme_bIe1jvn31IxTvY0X23d-ezMN0p86ZmLMkEWIrX-nMZP8syuK1Q) Azure Arc enabled SQL server If these settings are not applied, or set you can click on SQL Server configuration to correct this and set the required settings. ## Download the Extended Security Updates for SQL Server 2012 Once you have subscribed to the ESU subscription the service will take a few moments to update and provide feedback to you regarding the available patches for your server. Once this update has happened under the “Security” section on the left-hand side menu you will see an option called Extended Security Updates. If you select this you will be shown a list of updates available for you to download and install on your server. ![Extended Security Updates for SQL server](https://lh7-us.googleusercontent.com/4XEEj77m5YEoPxJcjycytSOMAY4T05yT76adoubUxVhcDsnDrKAY7u3BD1xUARFZrDTqdWpV55vgVBlK15IzQmUyXJ3iOGp7p_USkpBpJ1McJqYgQfMEgLsyFn1BmW3q2SXw44lirgsD7F356nFM3R4366IYT9M5kDWSmoFpuANZJatWn3rX4bh838RoQw) Extended Security Updates for SQL server In this example, I am being shown two patches. They are the same patch, but one is relevant to x64 architecture and one for x86 architecture. *You would only need to download and apply the patch relevant to your architecture.* In this scenario, I am running a x64 server so I would use the download link for the x64 patch, which is the top one in the screenshot. By clicking on the download link I get an .exe file that I can manually install on my server. ## Install Extended Security Updates for SQL Server 2012 With the patch, or exe file downloaded you can now install it on your server. To do this double check on the exe. You will be prompted by a security warning asking if you want to proceed, click on Run. The file will start to extract and launch the install wizard. ![Install extended security update on SQL](https://lh7-us.googleusercontent.com/pDkFDfqxTzE63N7b32uWKih5gB0-ncf4RDWvJI6m8DhyB_ZDrgrO2FH801HoffLGKB1O2053na1CvLek38dtHGo3asY7C__RyKyH0prpFaisPvZCLWNMHGd4ZMuy4YR7Kqe1nlMTcHqY6sRWwPi0lVov5S9Wqb1dvAmdYe2eZN0I8nxt7VuuZ4gxqETI5A) Install extended security update on SQL Walk through the install process as directed, and the patch will install successfully. ![Install extended security update on SQL](https://lh7-us.googleusercontent.com/Y6MLmrJmWpB7JLB5ls65fAOJeCzM5ykxT9ZSzKBtT-64a6wZRO3xPLkvTIvZ6GZWZAcxwE0BnZdY_Dr8d2BnZ1mhiLnNQirjCcZBMXyIXUUYCLsqqn2EP4EiVCWROv0uBgxpfLBmwHMnjOdwBKJD24OoXMIZv4XlzHTrqBQZyxccwQp-FN9njTJuNr8xzg) Install extended security update on SQL ## Check an Extended Security Updates for SQL Server 2012 has been installed To check if the patch has been installed correctly you can open up SQL Management Studio and connect to your instance. Open up a New SQL query and type in: ```sql select @@version ``` When you execute this query it will respond with the SQL version. It should denote the last patch you installed. In this example the patch I installed was KB5021123 and when I executed the query I got the output: ![SQL version query](https://lh7-us.googleusercontent.com/5gd6HI8D6LLkaUMCq-QHkcEJtyyCOZFoEzH3hkv8cOB3F3itjEfjh6cgbtMdEbsInKU1GzBC4T6IglefoNLrGbt0nGOUYirZ0a75HD4n5MDLDSol25QcHWN65DQ5DpiqrYuBbeLPNmZRXPF5yj45Vq21aAC2s1CnHvCK2BaGNM2ajeasH67d8EJ9nJukcw) SQL version query The version has been updated with the patch. ## Conclusion In conclusion, ensuring the security and functionality of your End of Support servers and SQL installs is paramount. By following the steps outlined in this blog, from subscribing to Extended Security Updates via Azure Arc to downloading and installing the latest patches, you can confidently keep your environment protected and up-to-date. Stay proactive in managing your server infrastructure to mitigate risks and ensure smooth operations for your organization. ### GitKraken: The Graphical User Interface for Git URL: https://www.techielass.com/gitkraken-the-graphical-user-interface-for-git/ Last updated: 2024-02-06T08:01:48.000Z Git, a distributed version control system, has become an essential tool for engineers worldwide. Whether working solo on a project or collaborating with a team, understanding [Git](https://www.techielass.com/what-is-git/) is crucial for efficiently managing code changes. If you are a beginner looking to dive into the world of Git, do check out my [14 Days of Git training course](https://www.techielass.com/tag/14daysofgit/). In this blog post, we'll explore how [GitKraken](https://www.gitkraken.com/invite?referralCode=pYx7cNys&ref=techielass.com), a graphical user interface (GUI) for Git, simplifies version control and streamlines development workflows, making Git commands and operations more accessible to users of all skill levels. ## What is GitKraken? [GitKraken](https://www.gitkraken.com/?ref=techielass.com) is a graphical user interface (GUI) for Git, designed to simplify the complexities of version control and streamline the development workflow. Developed by Axosoft, GitKraken offers an intuitive interface that makes Git commands and operations more accessible to users of all skill levels. With features like drag-and-drop functionality, a built-in code editor, and seamless integration with popular Git hosting services like [GitHub](https://www.techielass.com/tag/github/), GitLab, [Azure DevOps](https://www.techielass.com/tag/azure-devops/) and Bitbucket, GitKraken enhances productivity and collaboration in software development projects. ## Getting Started with GitKraken Getting started with GitKraken is straightforward. After downloading and installing the application on your computer, you'll be greeted with a sleek and user-friendly interface. GitKraken provides helpful onboarding tutorials and guides to assist you in [setting up your first repository](https://www.techielass.com/how-to-clone-a-github-repo-using-gitkraken), committing changes, branching, merging, and resolving conflicts—all through simple point-and-click actions. With GitKraken's visual representation of branches, commits, and file changes, navigating through your project's history becomes effortless, allowing you to focus more on coding and less on remembering Git commands. ## Benefits of GitKraken **Visual Commit Graph**: GitKraken’s visual commit-graph provides an intuitive and interactive way to visualise the commit history of a repository. **Built-in Text Editor**: GitKraken has a built-in text editor allowing you to edit files directly from the app. **Predictive Merge Conflict Alerts**: GitKraken provides predictive merge conflict alerts that help you avoid conflicts before they happen. **Connect Repos to Jira, Trello, GitKraken Boards, GitHub Issues & GitLab Issues**: GitKraken allows you to connect your repositories to various project management tools such as Jira, Trello, GitKraken Boards, GitHub Issues, and GitLab Issues. **Cross-Platform Compatibility**: GitKraken is available for Windows, macOS, and Linux, ensuring a consistent experience across different operating systems and environments. ## Conclusion In conclusion, GitKraken is a powerful and user-friendly GUI for Git, offering a wide range of features and benefits that enhance the development experience for individuals and teams alike. Whether you're a seasoned engineer looking for a more efficient workflow or a beginner seeking a simpler way to understand and use Git, GitKraken provides the tools and resources necessary to elevate your version control process. By combining the simplicity of a graphical interface with the robustness of Git, GitKraken empowers developers to focus on what matters most—building great code. ### How to remove a resource from Terraform state file URL: https://www.techielass.com/terraform-state-rm/ Last updated: 2025-03-29T14:38:43.000Z In this blog post, we will take a look at the **terraform state rm** command, explaining what it is, and how to use it. We will explain why you would want to remove a resource from the state file. ## The terraform state rm command explained The **terraform state rm** is a [Terraform](https://www.techielass.com/tags/terraform) command that allows you to remove a resource from the Terraform state, which is helpful in situations where you want to disassociate a resource from your configuration without actually destroying the resource in your infrastructure. When you remove a resource from the state file it allows the resource to still exist but for you to manage it another way. After running the **terraform state rm** command Terraform will remove the specified resource from its state, and from then on Terraform will no longer track, or manage or attempt to update that resource. Remember this operation only removes the resource from the state it doesn’t delete the actual resource from your infrastructure. ## Why remove a resource from the Terraform state file? There are a few use cases when you’d want to remove a resource from the Terraform state file. - **Resource decommissioning**: You are decommissioning a specific resource within your infrastructure and you want to keep your state file clear and remove the resource’s history. Removing it won’t delete the resource, but it will keep your state file configuration up to date and allow you to decommission the resource according to your normal processes. - **Cleanup**: Over time your state file might become cluttered with resources that are no longer relevant, using the **terraform state rm** command can allow you to remove unused or old resources and help improve the reliability of your state file. - **Change management tool**: There might be a change in direction as to what management tool you are using to manage resources and you are no longer going to use Terraform for a type of resource. Removing that resource from the state file will ensure there are no unintended changes or conflicts. 💡 Check out my other Terraform blogs: \- [What are Terraform modules](https://www.techielass.com/what-are-terraform-modules/) \- [Introduction to Terraform outputs](https://www.techielass.com/introduction-to-terraform-outputs/) ## terraform state rm syntax The **terraform state rm** has a couple of options attached to the command that you can use: - **\-dry-run**: If set this will show you what would be removed but doesn’t remove anything. - **\-backup=PATH**: This tells the command where to write the backup state to. - **lock=FALSE**: This would instruct Terraform to not hold a state lock during the operation of the command, this can be dangerous if others are running commands at the same time. - **\-lock-timeout=0s**: This sets the time for when the command should retry a state lock. - **\-state=PATH**: This tells the command where the state file is, this is useful if you don’t have the state file in the default location. - **\-ignore-remote-version**: This instructs the command to continue even if the remote and local Terraform versions are incompatible. ## How to delete a single resource from your Terraform state file Let’s walk through the process of removing a single resource from your state file. The first step is to identify the resource. To do this we will use the **terraform state list** command. This will list all the resources and modules that are in the state file. I have a simple Terraform template that creates an Azure resource group and when I run the **terraform state list** command the output is: ![terraform state list](https://lh7-us.googleusercontent.com/6Pu2YpU5QonmEvJIm6Iy6YF8N3yJ9EPBp9F-VDp0OIHSR_guSK1VBdPKR_cCdNYu0Det0agymPiNfGfn4QV3IborcgIQNt77Zp-A8uhGMSZdMNdY2XDbySMJqmaqxnhS-lFL6cjYPMIn9aFziiSyRIs) terraform state list To remove the resource group from the Terraform state file I would use the command: ```bash Terraform state rm “azurerm_resource_group.rg” ``` Once the resource has been removed you can run the **terraform apply** command to verify the resource is no longer listed in the plan output and is no longer managed by Terraform. In my case, the existing resource group is no longer listed in the plan output and a new one would be created. ## Backup your state file while using the terraform state rm command Whenever you are about to undertake a destructive operation it’s important to take a backup to undo it if necessary. When you are going to use the **terraform state rm** command it is no different. There are a couple of ways you can take a copy of your state file. The first way is to simply take a copy of the **.tfstate** file and store it safely. The second is to take a Terraform State Snapshot using the **terraform state pull** command. This command will take a snapshot of your current state before you make the changes. To use this command you would type: ```bash terraform state pull > state_backup.json ``` ## Conclusion Terraform should manage your state file for you, updating resource status as you manage your infrastructure. However, if you wish to remove a resource from being managed by the Terraform and exclude it from the state file then the **terraform state rm** command is a good one to know and understand. 💡 ****You might also like:** [Store Terraform state in Azure Blob Storage](https://www.techielass.com/store-terraform-state-in-azure-blob-storage/) ### Check if network connectivity for Azure Connected Machine Agent is blocked - Azure Arc URL: https://www.techielass.com/check-if-network-connectivity-for-azure-connected-machine-agent-is-blocked-azure-arc/ Last updated: 2024-07-16T07:51:10.000Z To onboard a server to [Azure Arc](https://www.techielass.com/tag/azure-arc) and utilise its capabilities you need to install the Azure Connected Machine agent. The Azure Connected Machine agent communicates from your non-Azure environment to Azure using several URLs. For more information on those URLs please refer to the [official documentation](https://learn.microsoft.com/azure/azure-arc/servers/network-requirements?tabs=azure-cloud&ref=techielass.com#urls). If outbound connectivity from your environment is restricted by your firewall or proxy server, you need to ensure that the correct URLs are not blocked. At the very minimum, the agent needs to be able to communicate with URLs such as: - \*.guestconfiguration.azure.com (Extension management and guest configuration services) - \*his.arc.azure.com (Metadata and Hybrid Identity Service) - login.microsoftonline.com (Microsoft Entra ID) - login.windows.net (Microsoft Entra ID) - pas.windows.net (Microsoft Entra ID) - management.azure.com (Azure Resource Manager) To check if network connectivity for the Azure Connected Machine agent is blocked you can use the [azcmagent CLI tool](https://learn.microsoft.com/azure/azure-arc/servers/azcmagent?ref=techielass.com). The azcmagent CLI is installed with the Azure Connected Machine agent and controls actions specific to the server where it's running. One of the switches available with the azcmagent is *check*. This runs a series of network connectivity checks to see if the agent can successfully communicate with required network endpoints. ### Check Azure Arc connectivity using public endpoints To use the azcmagent CLI tool log onto a server that has the Azure Connected Machine agent installed on it. Launch a command prompt or PowerShell terminal window. Type in ```bash azcmagent check --location “ukwest” ``` The command outputs a table showing connectivity test results for each required endpoint. In this example, all URLs are reachable and are going directly to the URLs. ![Azcmagent check output](https://lh7-us.googleusercontent.com/LBOOPQlkKL0Wpojf25gi7fNMTx03P-r5azgxSN_emFeFatDNNOrr7tH0C6roVYkBzrD_s-MFtBIP3ACh9NDbxGqEICPdhcamtR09NPeHM-9LdIc809XuRBbYgetnnhWkbRMYRV0NvJrYC_vemZakU4o) Azcmagent check output 💡 If you are using a different Azure region, ensure you input the correct name for your region. If you are unsure of the region name you can run the command **az account list-locations -o table* from Azure CLI to get a list. ### Check Azure Arc connectivity using private endpoints If you are using private endpoints for connectivity you can use the following command to check: ```bash azcmagent check --location "useast" --enable-pls-check ``` 💡 If you are using a different Azure region, ensure you input the correct name for your region. If you are unsure of the region name you can run the command **az account list-locations -o table* from Azure CLI to get a list. ### Check Azure Arc connectivity using a proxy If you are using a proxy to route traffic the command you would check network connectivity is the same as if you are using public endpoints. ```bash azcmagent check –location “westeurope” ``` ![azcmagent output](https://lh7-us.googleusercontent.com/LgsNY4w95IyFNDiYEthp4MPIuZCm7_ImiNF6WANYfOKUlH4boKt4MY4DEgi_O7UnojAVSczxCYIkNo-1nfFRMa3lzo-axz0hGGCFbmQn5ATuFMQgWxdGg9U3qBiIqTY8_OwM4vvOsib6RZRLiBGjfmE) azcmagent output In this example, you can see from the table the traffic is going through a proxy server and some of the URLs are unreachable. ### Check for Azure Arc-enabled SQL network connectivity With the introduction of the agent [version 1.41](https://learn.microsoft.com/azure/azure-arc/servers/agent-release-notes?ref=techielass.com#version-141---may-2024) you can now check for networking issues involved in the SQL management components. This is through the new *\--extensions* flag. The command you use is: ```bash azcmagent check --extensions sql --location uksouth ``` ![azcmagent check --extensions output](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/06/image.png) azcmagent check --extensions output You can see in this example all necessary URLs are accessible both for the Azure Arc agent and the SQL components. If you'd like to see a video of Azure Arc troubleshooting steps you can watch here: ### Conclusion In conclusion, ensuring seamless connectivity for the Azure Connected Machine agent is crucial for a successful onboarding process to Azure Arc. This involves verifying the accessibility of specific URLs through either public or private endpoints, with additional considerations for environments employing proxy servers. Utilizing the azcmagent CLI tool provides a straightforward means to conduct network connectivity checks, allowing users to address any potential restrictions or blockages, and ensuring a smooth integration of servers into the Azure Arc ecosystem. ### Troubleshoot Windows Server 2012 Arc-enabled servers not receiving updates URL: https://www.techielass.com/troubleshoot-windows-server-2012-arc-enabled-servers-not-receiving-updates/ Last updated: 2024-07-24T13:22:18.000Z If your Windows Server 2012 servers that are [Arc-enabled](https://www.techielass.com/tags/azure-arc) to receive their Extended Security Updates (ESU) aren’t receiving the updates or if you are receiving updates and they aren't being installed, here are some troubleshooting steps to work through to try and help resolve the issue. This blog post will explore the steps needed to troubleshoot the issue. ## Step 1 - Check the Azure Portal The first step is to check the Azure portal to understand if the server has been assigned an ESU licence. Head to [https://portal.azure.com](https://portal.azure.com/?ref=techielass.com) Launch the Azure Arc blade. Click on **Machines** down the left-hand side. ![Azure Arc blade in the Azure portal](https://lh7-us.googleusercontent.com/xAOBNw9NF59XdP9Z_qrLg87llRWwv5u_l6zfVchnIs2Bq6-yem0coX0-iXNeR7r_s40t5edl4UQQ66JlH5e7Cf2xXceRCv3V21xno82R1ysBJpS8NqN3x9JkkaJ0niMt_T3xjGqmLb8btIw9FA6zXZ8) Azure Arc blade in the Azure portal Find the server that isn’t receiving updates. Click on the server name. When the server information loads, check under capabilities to ensure ESU is **Enabled**. ![Azure Arc machine status](https://lh7-us.googleusercontent.com/M_946o1BhQrKhocwreyu7iOBLVy_7Uyaa7tmIlL91yNA4b9DrSa9_qaXRyH-avUMnCAI6V-bUnqttmOqm8hEmNgvaVsYERg5Y9OHyDuduYzAQTbLj1ds6lS_tWO5_HsRzWq-NnuVDA2doR2SvVR7GYY) Azure Arc machine status If the server states that the ESU capability is **Not Enabled**, assign the correct ESU license to the server to enable it to receive updates. ![Azure Arc machine status](https://lh7-us.googleusercontent.com/UB200Yzt6VwvsG6x2r-ecDxzgnZsWhyNYv5OwaXsfppkhxN-yVAS84--9LrnhAfMQ5K-VXka60HKYgaIYxzy8QrCxFGl-mQjS4SQaWL3DTagRnxLMdz9tOej1NAKUtqlIjiR6o58uOL2rAk5ObVCJFM) Azure Arc machine status If the server states that the ESU capability is **Enabled,** move on to the next troubleshooting step. ## Step 2 - Check the Azure Arc version installed The troubleshooting step to check is what version of the Azure Arc agent is installed. The ESU capability was enabled on [version 1.34](https://learn.microsoft.com/azure/azure-arc/servers/agent-release-notes?ref=techielass.com#version-134---september-2023) of the Azure Arc agent. 💡 It's worth noting if you are running version 1.40 or above, you need to ensure [KB5037022](https://support.microsoft.com/en-us/topic/kb5037022-servicing-stack-update-for-windows-server-2012-april-9-2024-bc0266a4-e720-47c0-82d5-5dd8913a04b4?ref=techielass.com) is also installed on your machine. To check the version of the Arc agent log onto the affected server. Launch a PowerShell command terminal and type in the following command: ```powershell azcmagent version ``` ![Check Azure Arc version](https://lh7-us.googleusercontent.com/pIqHy0jVszF5WNMINtk6cIqEXquHaYnXRO-4dlyssX5B_h765BrhjvaN3lvBdYRxedBhGsmfvzarQ9ODk7c_AlA5uK7R14YdyB7ePeOZ61A4FuFLZ8AJgPmCmXVWAXfPR-dGbOTPIMYbb3Izxvs8f94) Check Azure Arc version If the agent is below version 1.34, [follow the upgrade processes](https://www.techielass.com/updating-the-azure-arc-agent-connected-machine-agent/) to bring the agent to a higher level. If the agent is level 1.34 or above move on to step 3\. ## Step 3 - Check the status of the Azure Arc agent The next step is to ensure the Azure Arc agent is connected and working correctly as expected. Launch a PowerShell command terminal and type in the following command: ```powershell azcmagent show ``` You are looking for two key pieces of information. The first one is the **Agent status** and **Agent Last Heartbeat.** They should state Connected and list a time or date close to your current time and date. The second piece of information you are looking for is the **Extended Security Updates Status**. That should read as active. ![Azure Arc agent status](https://lh7-us.googleusercontent.com/jI6okcAuZGfIEE0y-1vc7KgCKESIXMbEhepfFW1semcJXVUDpItrAoz-641R39S_3S3YNHQ-ACAOkekZJIjx972XVEfGFoCKNrFrrHDyqiXNDocGQXFxOmZWyy15gsQPiTRYH3hZEBUxJIcSBnNbqYI) Azure Arc agent status If these areas report as connected and active, then move to troubleshooting step 4\. If the areas reported something else, please go through the Azure Arc agent pre-requisite requirements to ensure the correct networking and firewall rules etc are in place as required. Also, check if the appropriate ESU license is assigned and active. ## Step 4 - Networking connectivity The Azure Arc agent communicates from your non-Azure environment to Azure using several URLs, if outbound connectivity from your environment is restricted by your firewall, or proxy server, you need to ensure that the correct URLs are not blocked. At the very minimum the agent needs access to - \*.guestconfiguration.azure.com (Extension management and guest configuration services) - \*his.arc.azure.com (Metadata and Hybrid Identity Service) - login.microsoftonline.com (Microsoft Entra ID) - login.windows.net (Microsoft Entra ID) - pas.windows.net (Microsoft Entra ID) - management.azure.com (Azure Resource Manager) - www.microsoft.com/pkiops/certs (Certificates) You can check network connectivity is working correctly by logging onto the server and launching a PowerShell command terminal and type in the following command: ```powershell azcmagent check --location “ukwest” ``` ![Azcmagent check output](https://lh7-us.googleusercontent.com/LBOOPQlkKL0Wpojf25gi7fNMTx03P-r5azgxSN_emFeFatDNNOrr7tH0C6roVYkBzrD_s-MFtBIP3ACh9NDbxGqEICPdhcamtR09NPeHM-9LdIc809XuRBbYgetnnhWkbRMYRV0NvJrYC_vemZakU4o) Azcmagent check output 💡 If you are using a different Azure region, ensure you input the correct name for your region. If you are unsure of the region name you can run the command **az account list-locations -o table* from Azure CLI to get a list. If your network connectivity check is displaying any issues with the URLs, be sure to resolve them. If the network connectivity check is all okay, move onto step 5\. ## Step 5 - Check the registry On the server, we want to confirm the registry setting is configured as it should. To do this click on the **Windows icon**, then search for **regedit.** Check registry key: **\[HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\Azure Connected Machine Agent\\ArcESU\] "Enabled”** ![Azure Arc registry settings](https://lh7-us.googleusercontent.com/jVvsgKStJ-vGa5tmKATty9w-ywhXiGnzPyPw9z_LGmpBUCvm9LYe0NMKkNghGF7ASWPGWRZSDC70L3dTtVG2zbms6MdT6IOQG1_xDrpftldkUdJMF4YBNOhvb-6ObzZ1ujKI7dvBdZGdX0xMCz4C8tA) Azure Arc registry settings A value of 1 means that the machine can receive the latest Extended Security Update patches. 0 means the server is not enabled for Arc-based ESUs and won’t receive ESUs via that route. ## Step 6 - Check patches There are several pre-requisite patches that need installs on the server to ensure they can receive the relevant ESU updates. If you’ve been keeping your servers up to these should already be there. However if you have are signing up for ESU updates for Windows Server 2012 and haven't been receiving patches for several months, are there are some patches you might have to manually install first. There are three patches required. The patch numbers are different depending on whether you are using Windows Server 2012 or the R2 version. ### Windows Server 2012 - Servicing Stack Update (SSU) [KB5029369](https://support.microsoft.com/help/5029369?ref=techielass.com) - Extended Security Update (ESU) Licensing Preparation Package [KB5017221](https://support.microsoft.com/help/5017221?ref=techielass.com) - Servicing Stack Update (SSU) [KB5037022](https://support.microsoft.com/en-us/topic/kb5037022-servicing-stack-update-for-windows-server-2012-april-9-2024-bc0266a4-e720-47c0-82d5-5dd8913a04b4?ref=techielass.com) ### Windows Server 2012 R2 - Servicing Stack Update (SSU) [KB5029368](https://support.microsoft.com/help/5029368?ref=techielass.com) - Extended Security Update (ESU) Licensing Preparation Package [KB5017220](https://support.microsoft.com/help/5017220?ref=techielass.com) - Servicing Stack Update (SSU) [KB5037021](https://support.microsoft.com/en-us/topic/kb5037021-servicing-stack-update-for-windows-server-2012-r2-april-9-2024-69b3059c-0830-41c8-a441-e5a24668a649?ref=techielass.com) ## Step 7 - Certificate Authorities There are certain certificate authorities that are required for Extended Security Updates for Windows Server 2012/R2\. You can find an up to date list of the certificates authorities required and how to get access to them if they aren't automatically downloaded on your machine here: [https://learn.microsoft.com/azure/azure-arc/servers/prepare-extended-security-updates?tabs=azure-cloud#required-certificate-authorities](https://learn.microsoft.com/azure/azure-arc/servers/prepare-extended-security-updates?tabs=azure-cloud&ref=techielass.com#required-certificate-authorities) ## Step 8 - Recreate the signed license file If you have patches being downloaded but are failing to install then try this. Open a command line prompt and stop the Azure Hybrid Instance Metadata Service (himds) by issuing this command: ```bash Stop-Service himds ``` We want to rename the existing file and generate a new one, so still within your command prompt issue the command: ```powershell Rename-Item C:\ProgramData\AzureConnectedMachineAgent\Certs\license.json C:\ProgramData\AzureConnectedMachineAgent\Certs\license.bak ``` Now start the HIMDS service again with this command ```bash Start-Service himds ``` ## The issue is still there If you’ve checked through all of these steps and you still have an issue my next suggestions would be: - Investigate your method of applying updates, for example, is the connection between this server and the WSUS server working correctly? - Log a support ticket with Azure support - when you buy ESU through Azure you get free support when there is an issue with anything relating to the applying the patches. ## Conclusion By following these comprehensive troubleshooting steps, you can proactively address any challenges in the ESU update process, thereby enhancing the security posture of your Windows Server 2012 environments. Regularly monitoring and maintaining the ESU updates will contribute to a robust and resilient infrastructure, safeguarding your systems against potential vulnerabilities. ### Unveiling 'Terraform for Ops': A new e-book URL: https://www.techielass.com/terraform-for-ops-announcement/ Last updated: 2024-01-11T08:01:21.000Z I've set myself a new target or project for 2024. I'm going to write a book! This will be my second book, I wrote ["Developer Relations for Beginners: What to Know and How to Get Started"](https://amzn.to/41JWQoM?ref=techielass.com) at the start of 2022. But this book will be my first technical book. ## [Terraform for Ops: Automating Infrastructure Tasks](https://leanpub.com/terraformforops?ref=techielass.com) ![Terraform for Ops](https://github.com/weeyin83/terraformforops-website/blob/main/images/bookcover2.png?raw=true) Terraform for Ops The book is intended to help those with an IT Operations background learn and get to grips with [Infrastructure as Code (IaC)](https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools/) and [Terraform](https://www.techielass.com/tag/terraform/). I am currently in the process of writing the book and hope to have it out in 2024\. You can register for notifications when the book is released at [https://leanpub.com/terraformforops](https://leanpub.com/terraformforops?ref=techielass.com). Please do take the time to register and if you have any questions or thoughts about the book please do reach out to me either in the comments section below here or [drop me an email](https://leanpub.com/terraformforops/email%5Fauthor/new?ref=techielass.com). I'm excited to embark on this project and hope the community embraces it as well! ### Automating Storage Account and Service Principal Creation with Terraform URL: https://www.techielass.com/automating-storage-account-and-service-principal-creation-with-terraform/ Last updated: 2024-01-09T08:01:28.000Z When deploying Terraform using [GitHub Actions](https://www.techielass.com/tag/github-actions/) there are certain perquisites you need to set up. You need to set up somewhere for your [Terraform](https://www.techielass.com/tag/terraform/) state file to be stored. And you need to have credentials that allow resources to be deployed to your cloud environment. When working with Azure those things are typically an [Azure Service Principal](https://www.techielass.com/azure-service-principals-and-azure-managed-identities/) and an Azure Storage account. It can be tiresome and unreliable to create those things manually. In this tutorial, I am going to show you how you can use Terraform to create those items and set up your [GitHub Actions secrets](https://www.techielass.com/github-actions-secrets/). 💡 **Please note the code I am using was originally created by* [**Ned Bellavance*](https://github.com/ned1313/ado-labs-github-actions?ref=techielass.com) *in 2021, I have taken it and updated it so that it works with the changes to Terraform and Azure that have happened since then.* ## Prerequisites - Azure subscription - GitHub account - Basic understanding of Terraform - Code editor such as [VS Code](https://code.visualstudio.com/?ref=techielass.com) - A GitHub repository - [Terraform installed on your local machine](https://www.techielass.com/introduction-to-terraform/) - [Azure CLI installed on your local machine](https://learn.microsoft.com/cli/azure/install-azure-cli-windows?tabs=azure-cli&ref=techielass.com) ## Terraform We’re going to create three Terraform files to help us create the necessary components within Azure and GitHub. Those three files will be: - **Terraform.tf** \- where we will define our Terraform configuration and providers required. - **Main.tf** \- this is the body of our configuration and it will define all the parts we need. - **Variables.tf** \- this stores some of the configurable information we need to define for our resources. Let’s start creating these files. We’ll start with **variables.tf**, open up your favourite code editor, I will be using VS Code. Create a new file, and save it in an appropriate folder and call it **variables.tf**. Copy the following code into it: ```terraform ## # Variables ## variable "location" { type = string default = "northeurope" } variable "naming_prefix" { type = string default = "techielass" } variable "github_repository" { type = string default = "github-actions-terraform" } variable "tag_usage" { type = string default = "terraform-state" } variable "tag_owner" { type = string default = "sarah" } ``` This file is defining some variables that we need: - **Location**: the Azure region we want to use for the resources we will be creating. - **Naming Prefix**: this will go at the start of each of our resources to be created. - **GitHub repository**: this is where we want our new secrets to be stored. This is the repository you will be using for a Terraform deployment of your architecture. - **Tag usage**: this is what our Azure resources will be tagged with for easy identification. - **Tag owner:** this is what our Azure resources will be tagged with for easy identification. 💡 **You will need to modify the values on each of these variables to suit your own requirements.* The next file we will create is the **terraform.tf** file: ```terraform ## # Terraform Configuration ## terraform { required_version = ">=1.6.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 3.85.0" } azuread = { source = "hashicorp/azuread" version = "~> 2.47.0" } github = { source = "integrations/github" version = "~> 5.0" } random = { source = "hashicorp/random" version = "~> 3.6.0" } } } ## # Provider configuration ## provider "azurerm" { features {} } provider "random" { # Configuration options available } provider "azuread" { # Configuration options } provider "github" { # Configuration options } ``` This file defines what the Terraform providers that we need, in this case we are using: - [Azure AD](https://registry.terraform.io/providers/hashicorp/azuread/latest?ref=techielass.com) - [Azure RM](https://registry.terraform.io/providers/hashicorp/azurerm/latest?ref=techielass.com) - [GitHub](https://registry.terraform.io/providers/integrations/github/latest?ref=techielass.com) 💡 **At time of writing, all versions listed are the latest.* The next file we need to create is the **main.tf** file, which contains the bulk of our configuration: ```terraform ## # Locals ## locals { resource_group_name = "${var.naming_prefix}-${random_integer.sa_num.result}" storage_account_name = "${lower(var.naming_prefix)}${random_integer.sa_num.result}" service_principal_name = "${var.naming_prefix}-${random_integer.sa_num.result}" } ## # Resources ## ## Create Azure Entra Service Principal ## data "azurerm_subscription" "current" {} data "azuread_client_config" "current" {} resource "azuread_application" "gh_actions" { display_name = local.service_principal_name owners = [ data.azuread_client_config.current.object_id ] } resource "azuread_service_principal" "gh_actions" { client_id = azuread_application.gh_actions.client_id owners = [ data.azuread_client_config.current.object_id ] } resource "azuread_service_principal_password" "gh_actions" { service_principal_id = azuread_service_principal.gh_actions.object_id } ## This assigns contributor role to the service principal ## resource "azurerm_role_assignment" "gh_actions" { scope = data.azurerm_subscription.current.id role_definition_name = "Contributor" principal_id = azuread_service_principal.gh_actions.id } ## Create an Azure resource group an an Azure Storage Account to store Terraform State ## resource "random_integer" "sa_num" { min = 10000 max = 99999 } resource "azurerm_resource_group" "setup" { name = local.resource_group_name location = var.location tags = { usage = var.tag_usage owner = var.tag_owner } } resource "azurerm_storage_account" "sa" { name = local.storage_account_name resource_group_name = azurerm_resource_group.setup.name location = var.location account_tier = "Standard" account_replication_type = "LRS" tags = { usage = var.tag_usage owner = var.tag_owner } } resource "azurerm_storage_container" "ct" { name = "terraform-state" storage_account_name = azurerm_storage_account.sa.name } ## Store the Service Principal ID, Password, plus information about the storage account and Azure subscription in GitHub Secrets ## resource "github_actions_secret" "actions_secret" { for_each = { STORAGE_ACCOUNT = azurerm_storage_account.sa.name RESOURCE_GROUP = azurerm_storage_account.sa.resource_group_name CONTAINER_NAME = azurerm_storage_container.ct.name ARM_CLIENT_ID = azuread_service_principal.gh_actions.client_id ARM_CLIENT_SECRET = azuread_service_principal_password.gh_actions.value ARM_SUBSCRIPTION_ID = data.azurerm_subscription.current.subscription_id ARM_TENANT_ID = data.azuread_client_config.current.tenant_id } repository = var.github_repository secret_name = each.key plaintext_value = each.value } ``` There is a lot in this file, so let’s try and break it down and explain it. ### Variable definition First we are defining some local variables to help us with the naming of our resources, they are combining the naming prefix variable we defined earlier and then generating a random number to add to the name of the resources. ### Gather Azure subscription information We then have two data blocks gathering information from your Azure subscription so it can use the information to create the resources. The next section is creating the necessary Entra Application and Service Principal. Contributor access is then assigned to that Service Principal. ### Azure resource creation And next we create an Azure resource group, Azure storage account and then a storage container inside that storage account. It is creating a Standard LRS storage account. This section pulls in information from our variable file to define the Azure region used as the resources location and also the tags that will be attached to it. ### Create secrets in GitHub The last section is taking the information from our generated resources and storing them inside our GitHub repository secret section. Seven secrets will be created containing the following information: - The storage account name - The resource group name where the storage account resides - The storage container name - The Service Principal ID - The Service Principal secret - The Azure subscription ID - The Azure Tenant ID 💡 **If you would like a copy of these files you can find them stored within GitHub* [**here*](https://github.com/weeyin83/Azure-SP-SA-Automation-w-Terraform?ref=techielass.com)**.* ## Deploy Terraform Now we have the Terraform created we want to be able to deploy that to create our storage account and Service Principal. ### Create GitHub Personal Access Token To do that we first need to create a GitHub personal access token (PAT) that Terraform can use for authentication to your GitHub account when it tries to create the secrets inside your repository. To generate a GitHub PAT token head over to [https://www.github.com](https://www.github.com/?ref=techielass.com). Click on your **profile icon** in the right-hand corner and select **Settings.** ![GitHub Settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/12/github-settings.PNG) GitHub Settings Scroll down to **Developer settings.** ![GitHub Developer Settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/12/github-developer.PNG) Click on **Personal access tokens** then **fine-grained tokens.** ![GitHub Personal Access Tokens](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/12/github-pat.PNG) GitHub Personal Access Tokens Then click on **Generate new token.** You will be prompted with a bunch of questions, you need to give your token a name and set how long it will be active for. And then you need to start to define what repositories and permissions the token has. I like to scope it to the minimum required, by selecting the relevant repository and then only giving it Read/Write access to **Secrets** and Read access to **Metadata**. ![GitHub Personal Access Token permissions](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/12/github-permissions.PNG) GitHub Personal Access Token permissions Once you’ve provided all the required answers click on the **Generate token** button. The next screen will display the token information, take a note of this as you’ll need it in the next step and it is only displayed once. Now that we have the PAT token, we need to head over to our browser and open [https://shell.azure.com](https://shell.azure.com/?ref=techielass.com). We are going to use that to deploy our Terraform creation files. When the Azure Cloud Shell launches, ensure you are using the Bash environment. Click on the **Upload/Download icon** and select **Manage file share.** ![Azure Cloud Shell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/12/shell-upload.PNG) Azure Cloud Shell Click on **Add Directory.** ![Azure Cloud Shell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/12/shell-directory.PNG) Azure Cloud Shell Give the directory a name, such as **Terraform-Backend-configuration.** Once it has been created, click into it and then click on the **Upload** button**.** Upload the three terraform files that you created earlier. ![Azure Cloud Shell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/12/shell-upload3.png) Azure Cloud Shell With the files uploaded, switch back to your terminal window. Let's enter our GitHub PAT token key. ```bash export GITHUB_TOKEN=PAT_TOKEN_VALUE ``` The next step we need to carry out is move our terminal to work within the directory where our Terraform is stored. ```bash cd clouddrive/Terraform-Backend-configuration/ ``` We are now ready to initialise and apply the code. ```bash terraform init terraform apply -auto-approve ``` After a few minutes you will have an Azure Service Principal, Azure Storage Account, storage container deployed. Along with all the required secrets created within your GitHub repository. ![GitHub Secrets](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/12/github-secrets.PNG) GitHub Secrets You can now start to build your Terraform deployment files and GitHub Actions workflow using these secrets and Terraform backend infrastructure. ## Conclusion You can reuse this Terraform deployment as many times as you need, it’s a great way to quickly spin up the required bits to enable you to set up an Azure deployment within GitHub Actions quickly. Great if you have a lot of repositories for different functions or are building a lot of demo environments. ### A Step-by-Step Guide to Deleting a Repository on GitHub URL: https://www.techielass.com/a-step-by-step-guide-to-deleting-a-repository-on-github/ Last updated: 2024-01-04T08:01:44.000Z GitHub is a great version control platform, which helps you store your code for later use or collaborative needs. If you find yourself needing to delete a repository, whether it's to declutter your profile or start fresh, this guide will walk you through the simple steps to permanently remove a repository on GitHub. 💡 **If you'd prefer to follow a video tutorial you can do by clicking on the video below.* ## Step 1: Navigate to Your Repository To get started, log in to your GitHub account and navigate to the repository you want to delete. Once you're on the repository's main page, look for the "Settings" tab on the right side of the menu bar. Click on it to access the repository settings. ![GitHub repository settings](https://lh7-us.googleusercontent.com/P-SOq8MXihOkTI_2vi7pYUJoHjRy-8PJMm7q2XOm6j47Ie08VD8MFZJu2KVh1w1lrXxgwzx43tgppdF4jaqsezO_jW7d2eQ7gnL386xC-AqMJlQgGT4AX20wgdbThtUAI6DL69ZlGlg8SwAGw_siigg) GitHub repository settings ## Step 2: Scroll Down to the Danger Zone Within the Settings page, scroll down until you find the "Danger Zone" section. GitHub intentionally labels this section to emphasize the irreversible actions you are about to take. In the Danger Zone, locate the "Delete this repository" option. ![GitHub repository settings](https://lh7-us.googleusercontent.com/2KwIjvP3MB1P2RyeRwUtbgwaiAd-GK3WaJhNuCwMEcFRRCaXbiCORVEtqD-yWTCbHiR7CfbVeDuGX1sjHCPm4qVKS37BT1R5XyMT2LQl03kQrrUIoBvoaC5tExp2ZQu1SDNKE7vOEOhcbbSS7AhSPL0) GitHub repository settings ## Step 3: Confirm Repository Deletion Before proceeding, GitHub requires you to confirm your intention to delete the repository. Click on the “I want to delete this repository” button. ![Delete GitHub repository](https://lh7-us.googleusercontent.com/XnYR_YMMPu0Ti6dzvlKqF0C7C2bM7m8YJoc7VY6sJrrg2DwSyRp4Q_yhTWE979RMjDdWHBo9YVuoPT7yJE-kXUzJhKmYWjFPP0SPDvFx47_VtEIIsK6WSkcd4jewrZCwOtsyrSQ0U1YAtCkKvF63syk) Delete GitHub repository ## Step 4: Double-check GitHub will prompt you to double-check if you want to delete this repository, it will remind you that deleting the repository removes all code, wiki, issues, comments, packages, secrets, workflow runs and collaborator associates. If you wish to proceed click on the “I have read and understand these effects” button. ![Delete GitHub repository](https://lh7-us.googleusercontent.com/yKHVNw2AUNCBD48Vp-mtRMKRjAaUszzw8aUnjW-onKar3__b-mXWYWSeHfPhHKntm8R_-13iyv3Hf3JMYJtFeqSdPKBgbv77Kf7unFt9mCqU2D78bWO1C59Eh-rxhywehmurFS_AlE0TTcj48h_TDY4) Delete GitHub repository ## Step 5: Confirm the name of the repository To finalize the deletion process, GitHub requires you to enter the name of the respiratory manually. This is an added security measure to prevent unauthorized deletions. After entering your repository name, click on the "Delete this repository" button. ![Delete GitHub repository](https://lh7-us.googleusercontent.com/WS87LauhZRD0mPj89DIvFQrtNamCsPHJ0pILJJpv39rIIukW38WFQn5VIN7QltJOCzZokQlbYPDMYUhWRtn-1Bq02O2pLpS478B6JMBT86tjeyy1tZuW_4VM86xlQeQc-LF-rFXDwXfJ2A7CBG-DpUs) Delete GitHub repository ## Step 6: Repository Deleted Confirmation Congratulations! You've successfully deleted your GitHub repository. GitHub will provide a confirmation message to let you know that the repository has been deleted. Additionally, you'll be redirected to your account's main page. ## Step 7: Update Local Repositories (Optional) If you have a local clone of the repository on your computer, you may want to update it to reflect the changes on the remote GitHub server. Use the following Git command in your terminal or command prompt: ```bash git remote update --prune ``` This ensures that your local repository is synchronized with the changes made on GitHub. ## Conclusion Deleting a repository on GitHub is a straightforward process, but it's crucial to approach it with caution due to its irreversible nature. Always double-check for any dependencies and ensure you've backed up essential data before proceeding. With this step-by-step guide, you can confidently manage and declutter your GitHub profile by removing repositories that are no longer needed. ### Looking back at 2023! URL: https://www.techielass.com/looking-back-at-2023/ Last updated: 2023-12-28T08:01:08.000Z Wow! The end of 2023 is upon us! Let’s take a look back at what I’ve been up to this year! ### Career I celebrated my one year anniversary of being at Microsoft, technically this is my second 1st anniversary since I previously was an employee. It’s been great being back, talking to customers, trying to solve their challenges and guide them. There has been lots to learn, and new folk to get to know. But it’s been great, and I’ve loved it. Here’s to growing and developing as part of the UK Customer Success Unit. Outside of the job, in January I released my first training course. I had worked with the team at LinkedIn in 2022 to create a course entitled “[IT Service Desk Careers and Certifications](https://www.linkedin.com/learning-login/share?forceAccount=false&redirect=https%3A%2F%2Fwww.linkedin.com%2Flearning%2Fit-service-desk-careers-and-certifications%3Ftrk%3Dshare%5Fent%5Furl%26shareId%3D0K0V1W33TYeXmuMSs6g4gg%253D%253D&ref=techielass.com)”. It was a great experience getting to do that and it’s been great seeing people share their completion of the course over the past year. Over 24,800 learners have completed the course, which is just amazing and has completely blown me away! I’ve also had some great achievements thanks to the community. In February I became part of the [Veeam Vanguard program](https://www.techielass.com/veeam-vanguard-2023/). Which was and is a fantastic honour, it was a program I have long admired and it’s great to be part of it. Then in October 2023, I won the Azure Evangelist award, as voted by the community as part of the [UK Community Awards](https://www.ukcommunityawards.co.uk/?ref=techielass.com). Which totally blew me away! I was up against tough competition in the category so to win was very unexpected. Thank you to everyone that voted for me and has supported me over the years, I’ve said it before, but it truly does mean a lot to me. ### Blogging It’s interesting looking back at the amount of blog posts I’ve written each year. ![Blog posts written each year](https://lh7-us.googleusercontent.com/d4g10N4CohzqBoqdrLwiOzgYBBc3M29B6RYm5TIxRTpnGgNzUKFaoPOMNzso_iIQhNyaybiNsPqJnkhX2sORSqUyZYo6NYPEVaN6eEbTJxuaEMYxSQagHxb7erbtcArd4vkVxyHU2I3yBJdC4JcjoPY) Blog posts written each year I definitely peaked in 2021 in terms of writing blog posts. Although looking at the background as to why I’ve written less, I’ve definitely become more strategic in what I write and how I write. This year I’ve definitely had less time to write but I’ve also only wanted to write about things I enjoy and being strategic about the content I write. I did spend time looking at the design and functionality of my blog post and have made some enhancements there. I changed the theme which has altered the layout and enabled comments on each post, so I’d love to hear your thoughts on each post. Please use that feature folks, I’d love to interact with you all more. ![Most viewed blog posts in 2023](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/12/Career--5---1---1-.png) Most viewed blog posts in 2023 ### Most viewed blog posts in 2023 It’s always good to understand what blog posts are popular, so I do look at Analytics often and see if there is anything I can do to make blog posts better or update old ones to still be relevant. This year my top 10 most visited blog posts have been: 1. [Install Exchange Online PowerShell modules](https://www.techielass.com/install-exchange-online-powershell-modules/) 2. [Convert a folder to a Git repository](https://www.techielass.com/convert-a-folder-to-a-git-repository/) 3. [Enable external email warning tag in Exchange Online](https://www.techielass.com/enable-external-email-warning-tag-in-exchange-online/) 4. [Connect to a SQL database with Visual Studio Code](https://www.techielass.com/connect-to-a-sql-database-with-visual-studio-code/) 5. [Trigger GitHub Actions workflow when a folder changes](https://www.techielass.com/trigger-a-github-action-workflow-when-a-folder-changes/) 6. [Windows Server: Extend expired evaluation period](https://www.techielass.com/windows-server-extend-expired-evaluation-period/) 7. [Reset Ubuntu Password in WSL on Windows 10](https://www.techielass.com/reset-ubuntu-password-in-wsl-on-windows-10/) 8. [Create a new GitHub repository from the command line](https://www.techielass.com/create-a-new-github-repository-from-the-command-line/) 9. [Schedule GitHub Actions using cron expressions](https://www.techielass.com/schedule-github-actions-using-cron-expressions/) 10. [Create an S3 bucket using AWS Cloudformation](https://www.techielass.com/create-an-s3-bucket-using-aws-cloudformation/) ### Video I started my [YouTube channel](https://youtube.com/techielass?ref=techielass.com) back in 2019, and it’s something that I have spent a lot of time developing. Creating content for and interacting with my audience. I’ve said this a few times and even blogged about it. My YouTube channel isn’t monetized. You can read more about what milestones you need to hit with YouTube to be monetized, in my blog ["My YouTube channel isn't monetized!"](https://www.techielass.com/my-youtube-channel-isnt-monetized/).This This means that everything I do is for free and every like, comment, subscribe, share, etc means the world to me. This year I have released about 18 new videos to the channel, for a brief period I brought back my [weekly update](https://youtube.com/playlist?list=PLbjernQTVXitYGv7gWIRNqeWBFyVZJOBk&ref=techielass.com) videos, and then unfortunately lost momentum. I have some content ideas I will be working on over the next few weeks and weeks. I will continue to share what I enjoy creating and think will be valuable with people. And I hope people continue to enjoy what I create. I do have some ideas for videos in the new year that I am working on so if you haven’t already please do [subscribe](https://www.youtube.com/techielass/?sub%5Fconfirmation=1&ref=techielass.com), it would be much appreciated. ![Most viewed videos in 2023](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/12/Career--6---1-.png) Most viewed videos in 2023 ### Most viewed videos in 2023 There is a nice, interesting mix of videos from my YouTube channel that have made the top ten. 1. [How to delete a repository in GitHub](https://youtu.be/u4qVRJOqMH0?ref=techielass.com) 2. [Clone a repository with GitHub Desktop](https://youtu.be/PoZNIbs%5Fwx8?ref=techielass.com) 3. [Create a new repository with GitHub Desktop](https://youtu.be/JBW6-5%5FRhUU?ref=techielass.com) 4. [How to create a repository in GitHub](https://youtu.be/IX4%5F12SFxak?ref=techielass.com) 5. [Azure DevOps Boards and Excel](https://youtu.be/v3ByCe4HZE0?ref=techielass.com) 6. [Connect to a SQL database with Visual Studio Code](https://youtu.be/7MYn-3E7Gi8?ref=techielass.com) 7. [List all resources in a resource group using an Azure CLI command](https://youtu.be/Zptm7BCweN0?ref=techielass.com) 8. [How to delete a branch in GitHub](https://youtu.be/CgLgebadl8Y?ref=techielass.com) 9. [How to cancel a ticket on Eventbrite as an attendee](https://youtu.be/PqnL4tIUAL4?ref=techielass.com) 10. [Migrate an Azure DevOps repo to GitHub](https://youtu.be/g0fgC4XkcSw?ref=techielass.com) ### Speaking This year speaking hasn’t been a focus of mine, I’ve been busy with work and with friends and family. And there are times in your life when you do need to change priorities and focus on other areas, and this has been one of those years. I have delivered 8 talks though and spoke to over 700 people. I’ve spoken about [Azure Bicep](https://www.techielass.com/tag/azure-bicep/), [GitHub](https://www.techielass.com/tag/github/), Azure Cost Management, [Terraform](https://www.techielass.com/tag/terraform/) and [Gitlens](https://www.gitkraken.com/blog/gitlens-vs-code-extension-guide?ref=techielass.com). There has been a lot of variety and interesting topics! ![Tech Meetup Glasgow 2023](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/12/techmeetup2023.png) Tech Meetup Glasgow 2023 ### Certifications This year I have aimed to get a few certifications, they’ve been fairly varied. In May I passed the [HashiCorp Certified Terraform Associate (002) certification](https://www.credly.com/users/sarah-lean/badges?ref=techielass.com), which was a proud moment as I had spent a few months learning about Terraform. Which has been fun and I’ve been continuing on that learning journey. Also in May I earned the [FinOps Certified Practitioner exam](https://learn.finops.org/page/finops-certified-practitioner?ref=techielass.com). This was in response to me having lots of conversations with customers on cost saving and management overall. I thought I’d expand my learning and look at cost management from a cloud agnostic point of view and it was really helpful. Then in August I passed the [GitHub Administration exam](https://resources.github.com/learn/certifications/?ref=techielass.com). This was another proud moment for me. Over the years I have dabbled with GitHub and self taught myself a lot of stuff, but to be able to pass a certification was a good moment and achievement for me personally. It really showed me I had evolved my skills and learnt some of that [DevOps](https://www.techielass.com/tag/devops/) stuff I’ve talked about over the years. And in October I went back to Microsoft certifications and passed the [AZ-801 - Configuring Windows Server Hybrid Advanced Services exam. ](https://learn.microsoft.com/credentials/certifications/exams/az-801/?ref=techielass.com) This one has been on my radar for a while, but has always got pushed down the priority list. It’s a great exam for those that are still working with [Windows Server](https://www.techielass.com/tag/windows-server/) but also working with [Azure](https://www.techielass.com/tag/azure/) as well. ![Glasgow Azure User Group](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/12/Career--4-.png) Glasgow Azure User Group This year, the [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com) has had 6 meetups, enjoyed over 170 pizzas, consumed a ton of drinks and learned everything from Azure AI, Azure Chaos Studio, Power Platform, Azure NetApp files to Azure Stack HCI. It’s been great to get the user group back in person after a few years of challenges, and see it grow. Every year I love to see how the community comes togethers, shares knowledge, and gets to know each other. It’s great to see people come back time and time again, but also see lots of new faces at our meetups. Glasgow Azure User Group 2023 Wrap Up Video ### Social Media Social media has been something that I have definitely pulled away from. Two or three years ago it was something I checked daily, maybe even hourly and I maintained several profiles across several platforms. Nowadays I only have Instagram installed on my phone as I follow some great accounts that make me smile or teach me something. The other social media platforms are only checked or interacted with when I am on my laptop. I miss the community that I used to be a part of but I think with the way several platforms have gone over the past year or so, that community isn’t really there anymore anyway. ### 2023 has been a year where I have concentrated on my family life and spent less time in front of the computer, but I’ve loved every minute of the community work I’ve been involved in and thank you to everyone who has supported me this year and in the past! ### Live Session: Azure Dashboards URL: https://www.techielass.com/live-session-windows-server-upgrade-and-migration-on-prem-to-and-in-azure/ Last updated: 2023-12-13T08:01:28.000Z Are you ready to dive into the world of [Azure Dashboards](https://www.techielass.com/deploy-an-azure-dashboard-using-terraform/)? Mark your calendars for a live session on my [YouTube channel](https://youtube.com/techielass?ref=techielass.com) where we'll unravel the mysteries of Azure Dashboards together. Whether you're a seasoned pro or just getting started with Microsoft Azure, this livestream promises to be an insightful journey. ### What to Expect I'll guide you through the fundamentals of Azure Dashboards, demonstrating how to create, import, and export them seamlessly. No question is too big or small - feel free to ask anything during the live session as we explore the capabilities of Azure Dashboards. The livestream will be taking place on the 13th December 2023, see below to check out when it will be happening during your time zone. - Wednesday December 13 8:50am PST - Wednesday December 13 10:20pm IST - Wednesday December 13 5:50pm CET - Wednesday December 13 4:50pm GMT [Join me for this exciting livestream!](https://youtube.com/live/CE6aieJ1sJo?ref=techielass.com) Live Session: Azure Dashboards ### Unleashing the Power of Azure Arc: Enabling SQL Server Across Hybrid Environments URL: https://www.techielass.com/unleashing-the-power-of-azure-arc-enabling-sql-server-across-hybrid-environments/ Last updated: 2024-04-23T07:21:30.000Z In this tutorial, I want to explore how to Arc enable your SQL servers and bring the power of Azure to your non-Azure servers. 💡 **If you are unfamiliar with Azure Arc, you can check out my blog post “*[**What is Azure Arc*](https://www.techielass.com/what-is-azure-arc/)**” which will explain more about the feature.* ## Benefits of Arc-enabling your SQL Servers By installing Azure Arc on your [SQL servers](https://www.techielass.com/tag/sql/) you can control and govern your entire data estate from Azure. Once you have the Arc agent installed on your SQL server you can enable Microsoft Purview and start to use it to: - Gain visibility into data across your organisation - Safeguard and manage sensitive data across it’s lifecycle - Manage critical data risks and regulatory requirements You can view your Arc-enabled servers within the Azure portal, meaning you can view all your on-prem, Azure and Edge data servers in one place. You will also have access to tag your Arc-enabled servers just like you do with your Azure resources. You also have access to a best practice assessment, that will evaluate your SQL server from several angles, security, compliance, performance, scalability and much more. From an asset management and licensing point of view, you can view that from within the Azure portal as well, review your SQL server licence position and update it if required. As well as purchasing and enabling Extended Security Updates (ESU) for any SQL server versions that have gone End of Life (EOL), ensuring you stay compliant. These are just the first steps of benefiting from Arc-enabling your servers, the next steps are to start exploring how to use things like Microsoft Defender for Cloud, Azure Synapse Analytics, Azure Active Directory, Azure Update Management and much more on your on-prem servers. ## Step-by-Step Guide to Enabling SQL Server with Azure Arc Let’s walk through the steps you need to go through to Arc-enable your servers. ## Register Azure resource providers An Azure resource provider is a collection of REST operations that provide functionality for an Azure service. To use Azure Arc-enabled servers, the following Azure resource providers must be registered in your subscription: - Microsoft.HybridCompute - Microsoft.GuestConfiguration - Microsoft.HybridConnectivity - Microsoft.AzureArcData To enable them you can use Azure [PowerShell](https://www.techielass.com/tag/powershell/), [Azure CLI](https://youtu.be/p6nF3wNDlSQ?ref=techielass.com) or the Azure portal. We’re going to use Azure CLI this time. Head over to[ https://shell.portal.com](https://shell.portal.com/?ref=techielass.com) Paste the following code into your shell window: ```bash az provider register --namespace 'Microsoft.HybridCompute' az provider register --namespace 'Microsoft.GuestConfiguration' az provider register --namespace 'Microsoft.HybridConnectivity' az provider register --namespace 'Microsoft.AzureArcData' ``` ### Networking prerequisites One of the first things you must consider is how your Azure Arc agent will communicate from your environment to Azure. You can have the Arc agent communicate directly from each server to Azure, you can direct traffic through a Proxy server or you can use private link. To fully understand the network topology options for Azure Arc check out the [official documentation](https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/hybrid/arc-enabled-servers/eslz-arc-servers-connectivity?ref=techielass.com). Regardless of what method of communication you choose, you need to ensure that the Arc agent can communicate with a list of URLs. You can find an updated list of URLs [here](https://learn.microsoft.com/azure/azure-arc/servers/network-requirements?tabs=azure-cloud&ref=techielass.com#urls). Some URLs are there to ensure authentication between the Arc agent and Azure, others are there to help enable certain services. 💡 **What I would encourage you to do is allow all the URLs needed for Azure Arc, think about the future and* ***don’t restrict** *the URLs for functionality you aren’t using right away. Allow all the required URLs so your business can expand and use more functionality from Arc when you are ready.* ### Azure Resource Group When you install Azure Arc onto a server a resource within Azure will be created. This will be like any other resource inside Azure meaning you need to store it within an Azure Resource group and specify an Azure region to store that group and resource in. You should create an Azure Resource Group to store all your Azure Arc resources. ### Install the Azure Arc agent From the **Azure Portal**, search for **Azure Arc** to launch the wizard. When the Azure Arc management blade loads, select **Machines** from the left-hand side. Now select **Add/Create** You can either register servers individually, through a bulk process or via Update Management. In this tutorial, we are going to select the multiple servers option. ![Azure Portal - Server - Azure Arc](https://lh7-us.googleusercontent.com/GwCNmEhWoaJVO1T3hi6iIietJ42Q__bs7WzuqCHcmbtsikkBMsbgrXDkV-GArYdhhWfrbgyqakq7ORipGnnkvfRMkrcGeCs7u8iprgakiF1NUTnQn4VaJhLTQnX011JWQNGc1MddgP1athIovG__KTo) Azure Portal - Server - Azure Arc There are some prerequisites you need to meet, ensure you have met them before going any further. In the next step, you are asked to select some information. You are asked to select the subscription, resource group, operating system (OS), connectivity method and region. ![Azure Portal - Server - Azure Arc](https://lh7-us.googleusercontent.com/xjL4Nyl92Ylo8kG8s3ykPJGYrD2VEzhobL8hnC4BwU--3UVMV8lIWLMfkURCQ1f7jGYPmDnGa8zJI6kwCX6SAfDQlZArTOJQke-yreQjteqMf3KQ7sBcvn_lPBNe-8f9aHSx8zcXit_qo_ZV9fZL5A8) Azure Portal - Server - Azure Arc When using the multiple server onboarding option you are asked to create a [service principal](https://www.techielass.com/azure-service-principals-and-azure-managed-identities/). This is used for authentication when registering the Azure Arc agent on each of your servers. If you don’t already have an appropriate Service principal you can use, you can create one from the Azure Arc wizard by selecting **Create New** organisation's**.** This will launch a side configuration window. When creating the Service principal you will be asked some information: - **Service principal name -** Give your Service principal an appropriate name matching your organisation's naming conventions. - **Scope assignment level** \- Select where your Service principal will have permissions, either at the all-up subscription level or specifically within a resource group. - **Description** \- This is an optional field. - **Expiry** \- You can configure how long the Service principal account is active within your environment, ensure you set the expiry length long enough for you to onboard all your servers. - **Roles -** These are the permissions that the Service principal will have, ensure you select at least Azure **Connected Machine Onboarding** and **Azure Connected Machine Resource Administrator.** Once you’ve filled in all the information select **Create.** Now you are back to the main configuration window select **Next.** The next step is to populate any values for the suggested tags or you can create your own. ![](https://lh7-us.googleusercontent.com/fcu6raDRBqPcS06ChGSiFS-R5bWYjmvDq8Xzr_YoLHO0pZOyL6Oa5lcRH3syPyOGbelJzKW4LpLRox5oqUm8Ac7G3JXi6K2n80imRFOsF1TGABe3l3dtf5tPPYksyBOWb6Mv_bhTBts3W1NxSt0amXk) The last screen will show you the command to run your Windows or Linux server. Copy it and close the wizard. Now you have the Azure Arc installation script, head over to your server and copy the installation script. Within a few minutes, the agent install will complete and you will have a server listed within the Azure portal. The Azure Arc agent after some time will automatically detect any SQL instances installed on the server, and your SQL servers will be listed and visible under **SQL Server instances** within your Azure Arc management blade. ![Azure Portal - Server - Azure Arc](https://lh7-us.googleusercontent.com/A9ax_XwP_vi4Zxl0s6iOry2n4QCfXteHfg2TzWSRCH-9sOJ18BXv2uNiAhSrS9dxkwN_FxwKdvbsdpFfhbLTY8UkD1M6vJa5EyF4i0xq5kjxhR6cHqhHe2tBpiYLQgSfysPmgw712S47kAhGv8Lek3A) Azure Portal - Server - Azure Arc ## ## Azure Arc enabled SQL server best practices assessment Now that your SQL servers are Azure Arc-enabled, you can take advantage of the best practice assessment feature. When enabled this feature will provide recommendations on things like: - SQL Server and database configurations - Index management - Deprecated features - Enabled or missing trace flags - Statistics - & more For full instructions on how to enable and run the best practices assessment tool on your servers, check out the [official Microsoft implementation instructions](https://learn.microsoft.com/sql/sql-server/azure-arc/assess?view=sql-server-ver16&ref=techielass.com). ### Conclusion In conclusion, Arc-enabling your SQL servers through Azure Arc provides a centralised and comprehensive solution for managing your entire data estate. The benefits include enhanced visibility, safeguarding sensitive data, and addressing critical data risks and regulatory requirements. Leveraging the Azure portal allows you to seamlessly view and tag your Arc-enabled servers, conduct best practice assessments, and manage licensing for optimal compliance. As you embark on this journey, consider exploring additional features such as Microsoft Defender for Cloud, Azure Synapse Analytics, Azure Active Directory, and Azure Update Management. ### Troubleshooting Azure Arc for Servers URL: https://www.techielass.com/troubleshooting-azure-arc-for-servers/ Last updated: 2025-08-20T12:12:10.000Z While working with [Azure Arc](https://www.techielass.com/what-is-azure-arc/) I’ve come across a couple of scenarios I’ve had to troubleshoot, in this blog post I want to share some practical tips to help you if you encounter issues. If you've like to view a video of the troubleshooting steps you can find it here: ## Is the agent installed? One of the questions I’ve had to troubleshoot is whether the Azure Arc agent installed successfully on the server? Within a Windows server, you can check this in one of two ways. The first way is to check within “Programs & Features” or “Apps & Features”, depending on what version of Windows Server you are using. You should see the “Azure Connected Machine Agent” installed on your server. ![The result of checking Apps & Features](https://lh7-us.googleusercontent.com/r3f1cVwp6E-AEvrp3u50d0anR1BgHPfeZk5gnNB8iKiIZTahkaUEwcd3iSYInNWOR2Tkl_foqsKNLOYdDd8kOdHacRWgaotJGMGtm14wYXB4lUxUxlnZsPCmRVIb-IGsRpKhDsKZ8fpjZDld3x-Z75A) The result of checking Apps & Features The second way is to open up the command prompt or PowerShell and type in the command ```bash azcmagent version ``` ![Check if the Azure Arc agent is installed](https://lh7-us.googleusercontent.com/cLOzFfR0qx3ugotuNYGhiJ-yj_yc56twwBtdLgW-slgfKgiqbB1agwiA3payZX1MUxaxON3HV91klx9qzDokjgHuOftdtzY3iBZ32fTsrIlZ5VF1DtjgNFYS3WlVV34nEYV3Oh4E24yhktXb6y6Gw8Q) Check if the Azure Arc agent is installed This command will confirm which version of the Azure Arc agent is installed. If you receive an error when this command runs, this could indicate that the agent hasn’t successfully installed. ## The agent has installed but hasn’t connected A scenario I’ve come across is the Azure Arc agent has been installed, but hasn’t been able to connect to the Azure environment. To try and resolve this you can issue a command from the server side and establish that connection. 💡 **The following commands are for Agents that connect through public connectivity.* To establish the connection you need to provide an authentication method, you can either use your own credentials or you can use a [Service Principal](https://www.techielass.com/azure-service-principals-and-azure-managed-identities/). To use your own credentials the command you would issue from a PowerShell terminal on the server is: ```bash azcmagent connect --location "westeurope" --resource-group "arclab" --subscription-id "0000000a-0000-000a-a000-00000000000a" ``` To use a Service Principal to establish the connection you would issue the following command from a [PowerShell](https://www.techielass.com/tag/powershell/) terminal in the server: ```bash azcmagent connect --location "westeurope" --resource-group "arclab" --subscription-id "0000000a-0000-000a-a000-00000000000a" --tenant-id “0000000a-0000-000a-a000-00000000000a” --service-principal-id "0000000a-0000-000a-a000-00000000000a" --service-principal-secret "replacewithyoursecret" ``` ## The agent is in a disconnected state If your server has previously connected and worked fine, but is now in a disconnected state you can issue the *“azcmagent connect”* command to reconnect the agent. You will need to re-establish the connection and provide an authentication method to do so, again when using the *azcmagent* connect command you can provide the authentication through either your own credentials or using a Service Principal. 💡 **The following commands are for Agents that connect through public connectivity.* To use your own credentials the command you would issue from a PowerShell terminal on the server is: ```bash azcmagent connect --location "westeurope" --resource-group "arclab" --subscription-id "0000000a-0000-000a-a000-00000000000a" ``` To use a Service Principal to establish the connection you would issue the following command from a PowerShell terminal in the server: ```bash azcmagent connect --location "westeurope" --resource-group "arclab" --subscription-id "0000000a-0000-000a-a000-00000000000a" --tenant-id “0000000a-0000-000a-a000-00000000000a” --service-principal-id "0000000a-0000-000a-a000-00000000000a" --service-principal-secret "replacewithyoursecret" ``` ## Check the status of the agent If you want to check what the general status of the Azure Arc agent you can use the command: ```bash azcmagent show ``` This will display information such as the Azure resource group, resource ID, subscription ID, tenant ID and Azure region the agent is connected to. Where the log files are stored, and if there are any errors or the last successful heartbeat. ![Result of the azcmagent show command to check the status of the Azure Connected Machine Agent](https://lh7-us.googleusercontent.com/_4t3kylwRqJFQdDOrywB4c_8xJdspjJSVDTyVwdxk3sPhELpDRhztyjFHZ8pcmADiQ8vrDwGrByIf_VbeXW4kbxG2BDzIPzXKsby8if5t0XjeVrGtxUfa7LkWwC2skKnoSY-NkkctmzQUHFYVZG8CMo) **Result of the azcmagent show command to check the status of the Azure Connected Machine Agent* ## View log files Within Windows the log files are stored in **%ProgramData%\\AzureConnectedMachineAgent\\Log** You can use these to troubleshoot any errors or understand what the agent has been doing during a certain time period. Within PowerShell you can issue a command to show you the last X lines of the log. If I wanted to see the last 5 lines of log I use the command: ```powerShell Get-Content C:\ProgramData\AzureConnectedMachineAgent\Log\himds.log -Tail 5 ``` ![View the last 5 entries in the Azure Arc agent log file](https://lh7-us.googleusercontent.com/foAyH4MBDHL8p3hZE3cUSZY-NlajsNt-l-7FC4TPFVjqZWB_zERpnhkk42uzCdLJMZBksR0-U9XeV3i8Dmt7QZtwA_ndAztE3uJFo_inSnsEBOs58OU6P2rhuZJBUwvKb2Cz1n-0QTtufwtZnIL2hFg) View the last 5 entries in the Azure Arc agent log file ## Change the proxy server the agent is using If you are routing the Azure Arc agent traffic through your proxy server but you need to change the proxy server URL you can do this from the command line on the server. To change the proxy server details you can issue the command: ```bash azcmagent config set proxy.url "http://proxyserveraddress:port" ``` If you want to completely clear the proxy configuration and route the traffic via another route you can issue the command: ```bash azcmagent config clear proxy.url ``` ## Conclusion The Azure Arc agent is a powerful and useful tool, but occasionally you will have to dive into the depths of it and troubleshoot and issue. Knowing the azcmagent command and its options can be useful to troubleshoot those issues or change the configuration of the Arc agent. Let me know if you have any troubleshooting tips or questions! ### Deploy an Azure Dashboard using Terraform URL: https://www.techielass.com/deploy-an-azure-dashboard-using-terraform/ Last updated: 2025-03-29T14:39:06.000Z Dashboards in Azure are a great way to help you organise and view your resources in the portal. They can help you monitor your resources quickly in one location. You can build your dashboard through the Azure portal, share dashboards between users or you can export a configured dashboard as a JSON file and then share it widely. In this blog post, I want to show you how you can deploy a dashboard JSON file to your Azure environment using [Terraform](https://www.techielass.com/introduction-to-terraform/). ## Pre-requisites - Azure subscription - Terraform installed and configured on your machine - Azure Dashboard ## Create a new project folder In order to deploy the Terraform files and dashboard we want to create a new folder to store our files in. Navigate to the location where you want to store the files and create a new folder. Within the new folder add in your dashboard JSON file. I am going to use the [Azure Arc Windows/Linux Dashboard](https://github.com/weeyin83/Azure-Arc-Windows-Linux-Dashboard?ref=techielass.com) that I created recently. If you don’t have a dashboard to use you can grab a copy of the dashboard [here](https://github.com/weeyin83/Azure-Arc-Windows-Linux-Dashboard/blob/main/Azure-Arc-Windows-Linux-Dashboard.json?ref=techielass.com). ## Modify the dashboard JSON file When you create a dashboard in Azure, you have the option to export it and when you do it creates a JSON file for you. This JSON file is in an ARM template format and we need to modify it slightly to be able to deploy it via Terraform. Open up the JSON file within your favourite editor, I am going to use [VS Code](https://code.visualstudio.com/?ref=techielass.com). The first line you want to delete and remove from the JSON file is line two. ![](https://lh5.googleusercontent.com/wyJIVYi7r0teklIORWbUw_4abSvan1nAyIegzlsIxT4P4bZxOqe5JkYc6nHjzHyTV-gP8KiJ-CPPSdDOMwS9VfTGJZHBLPy0BQ2-vZy_VUJjkgmypQCnE9TLWyqgILAvKtXhXstIt401o5wmXH3KaVY) We then need to scroll down to the bottom of the file, we want to delete lines 210 to 216\. The whole section that has name, type, location, tags and api version needs to be deleted. Ensure you also delete the comma on line 209 and any trailing open brackets. ![](https://lh5.googleusercontent.com/iOhNU1dv6X2hjkn2JgUgPav5-D8panzgNpnctWWJNQ1g6xJ-fmyUO4KsdZhxRNhf0Ak_jOgDXFbeHZgC3sxMX2aqiYZc5giYO87ZM-PeqLAuNjRWFVjqzRZYNaY1HpF9So_LNRHu_5M6Y5vS2QY7fOk) Save the changes to the file. ## Create the Terraform deployment Create a new file within your editor, and call it “main.tf”, we are going to use this to define our Terraform to help deploy the dashboard. Below is the Terraform configuration you want to copy into your “main.tf” file. ```terraform # Azurerm Provider configuration provider "azurerm" {   features {} } module "dashboard" {   source  = "kumarvna/dashboard/azurerm"   version = "1.1.0"   # This module will not create a resource group, provide the name and location of an existing resource group.   resource_group_name = "azurearc"   location            = "westeurope"   # Dashboard configuration   dashboards = [     {       name           = "Azure-Arc-Windows-Linux-Dashboard"       json_file_path = "./dashboard.json"       variables = {         "title" = "Azure-Arc-Windows-Linux-Dashboard"       }     }   ]   # Adding TAG's to your Azure resources   tags = {     ProjectName  = "azurearc"     Env          = "prod"   } } ``` Within the Terraform file we are calling on the [Dashboard Terraform module](https://registry.terraform.io/modules/kumarvna/dashboard/azurerm/latest?ref=techielass.com) to help us deploy the dashboard. When using the above Terraform file you need to have already deployed your resource group, this file won’t create the resource group for you. Within the “Dashboard Configuration” section of the file let’s break it down. The line where you define the "**Name**" defines the name of the resource. The **"json\_file\_path"** is where you reference the JSON file that has the dashboard file you want to deploy. My JSON file resides in the same folder as my Terraform file, so I have configured it as such. If your JSON file lives elsewhere you will need to change the file path. The **"title**" section defines the name of the dashboard. 💡 Check out my other Terraform blogs: \- [What are Terraform modules](https://www.techielass.com/what-are-terraform-modules/) \- [Introduction to Terraform outputs](https://www.techielass.com/introduction-to-terraform-outputs/) ## Deploy the Terraform Now that we have the Terraform file created and our dashboard file available we want to deploy it. Open up your command prompt and ensure you are connected to the appropriate Azure subscription you want to deploy the dashboard within. Now type in: ```bash Terraform init ``` This command prepares the working directory for use with Terraform, it will initialise the backend, and install any child modules or plugins. Once completed type in: ```bash Terraform plan ``` This command compares the current configuration and the prior state data. It will show you what will happen if you run the command within your environment. If you are happy with the plan the next command is the actual deployment, and that is: ```bash Terraform apply -auto-approve ``` Including the -auto-approve command will avoid us having to type in yes to continue with the deployment. After a few minutes the deployment should complete successfully and your dashboard will be deployed. ## Conclusion Azure dashboards are a great way to monitor and collate data about your Azure resources. Being able to automate the deployment of a pre-created dashboard via Terraform is important for efficiency when managing your overall Azure environment. Happy deployments! ### Getting started with Azure Resource Graph URL: https://www.techielass.com/getting-started-with-azure-resource-graph/ Last updated: 2024-04-17T08:51:29.000Z [Azure Resource Graph](https://learn.microsoft.com/azure/governance/resource-graph/overview?ref=techielass.com) is a service built into the Azure platform that helps you query your resources and subscription information. It can be used to explore governance requirements or pull together information regarding resources into one view. The query language that Azure Resource Graph uses is based on the [Kusto Query Language (KQL)](https://learn.microsoft.com/azure/data-explorer/data-explorer-overview?ref=techielass.com) that is used by Azure Data Explorer. In this blog post, we'll embark on a journey to harness the power of Azure Resource Graph, explore various resource types, delve into dynamic types within the KQL language, master the art of summarising and sorting query results, and ultimately unlock the potential of this invaluable tool in your Azure arsenal. Let's dive in! ## Using Azure Resource Graph To use Azure Resource Graph successfully you need to have read access to any subscriptions and resources you wish to query. If you don’t have read access to a resource or a subscription they will not appear within your results. ## Resource Types There are a number of tables you can query from within Azure Resource Graph. The most common is the “resources” table. This is where most of your Azure subscription resources live, Azure Sentinel and Azure Security Center are not classed as resources. To get an idea of the resource types currently deployed within your subscription you can run the following query: ```bash resources | distinct type ``` ![Azure Resource Graph query results](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/10/query1.PNG) Azure Resource Graph query results If you want to query a specific resource type on the storage accounts within, you can write a query like this: ```bash resources   | where type =~ 'microsoft.storage/storageaccounts' ``` ![Azure Resource Graph query results](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/10/query2.jpg) Azure Resource Graph query results It’s worth noting in that query the ***“*\=\~*”*** operator means equals and is not case sensitive. You will get a default results table available to you. There should also be a “see details” link you can click on which will give you more information and properties available on each resource. We’ll explore how you can use this to discover more information on each resource next. ## Dynamic Types Dynamic types within the KQL language are fields that have multiple values attached to them or properties under them. Within Azure Resource Graph you will often encounter both types of data. There are several ways to access the information depending on how the information is formatted. Let’s take a look at some examples. When I queried the storage accounts within my subscription earlier I got a lot of information back. One of the fields returned was “*SKU*”, which had multiple values attached to it. If we use the [extend operator](https://learn.microsoft.com/azure/data-explorer/kusto/query/extendoperator?ref=techielass.com) we can start to pull out the exact information from that field that we want. In this case, I only really care about pulling out the “*Standard\_LRS*” part of the value, which sits within the SKU field and under “*name*”, so I write the query: ```bash resources   | where type =~ 'microsoft.storage/storageaccounts' | extend Sku = sku.name | project name, kind, location, resourceGroup, Sku ``` This pulls out the name of the storage account, the kind of storage account, Azure location/region, the resource group, and the SKU name. ![Azure Resource Graph query results](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/10/query3.jpg) Azure Resource Graph query results What about other properties though? Let’s run the overview query for storage accounts again: ```bash resources   | where type =~ 'microsoft.storage/storageaccounts' ``` Next to our results we have a “***see details***” button, when we click on that we have a lot of the result information we saw when we ran our query. But there is also a properties section which holds a lot of additional information that isn’t displayed in our results. How can we pull that information out into our query results? Again we want to use the extend operator to help us do that. Looking at the storage account properties we have a field called “*allowBlobPublicAccess*”, let’s write a query to pull that information out. ```bash resources   | where type =~ 'microsoft.storage/storageaccounts' | extend BlobPublicAccess = properties.allowBlobPublicAccess | project name, kind, location, resourceGroup, BlobPublicAccess ``` We now have a query that pulls out the name of the storage account, the kind of storage account, Azure location/region, the resource group, and information relating to the Blob Public Access status. ![Azure Resource Graph Query results](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/10/query4.jpg) Azure Resource Graph Query results And we can continue to pull other information out like that to build queries that fulfil our needs. ## Summary Count There might be times when you want to count the amount of a certain object in your query results. One real world example I’ve had recently is currently the types of operating system (OS) that have the [Azure Arc](https://www.techielass.com/tag/azure-arc) agent installed on them. I’ve used this query to pull out the information and then visualise in a dashboard: ```bash resources | where type == "microsoft.hybridcompute/machines" | extend osSku = properties.osSku | project name, osSku | summarize count() by tostring(osSku) ``` The last line of my query is using the [summarize operator](https://learn.microsoft.com/azure/data-explorer/kusto/query/summarizeoperator?ref=techielass.com) to count how many of each OS type is within the results. ![Azure Resource Graph query results](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/10/query5.PNG) Azure Resource Graph query results ## Sort results When you get your results there are times when you will want to sort or order them by a certain field. You can do this by using either the sort or order operator, both are the equivalent of each other. So if you want to sort a query of storage accounts by name in ascending order you would use this query: ```bash resources   | where type =~ 'microsoft.storage/storageaccounts' | sort by name asc ``` You could sort them in descending order by using “desc” instead of “asc”. ![Azure Resource Graph query results](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/10/query6.jpg) Azure Resource Graph query results ## Conclusion In conclusion, Azure Resource Graph empowers Azure users with a versatile and efficient means to explore and query their cloud resources and subscription data. This blog post has taken you on a journey through the essential aspects of using this powerful tool, from understanding the importance of read access to the nuances of querying various resource types and dynamic data using the Kusto Query Language (KQL). We've seen how to pull out specific information from complex fields, count and summarise results, and even sort them to fit your needs. As you delve further into the world of Azure Resource Graph, you'll find that it not only streamlines your resource management but also enhances your understanding of your Azure environment. Armed with these newfound insights, go forth and make the most of Azure Resource Graph to conquer your Azure resource management challenges. Happy querying! ### Move an Azure Arc-enabled Server to a different resource group URL: https://www.techielass.com/move-an-azure-arc-enabled-server-to-a-different-resource-group/ Last updated: 2023-11-09T08:01:25.000Z [Azure Arc](https://www.techielass.com/what-is-azure-arc/), is a powerful extension of the Azure platform, it enables organisations to manage and govern their resources across across multi-cloud and on-premises environments. One of the fundamental challenges that cloud administrators often face is optimising resource management within their Azure environments. There may come a time when you need to reorganise or restructure your resources, such as relocating an [Azure](https://www.techielass.com/tag/azure/) Arc-enabled server to a different resource group or subscription. In this blog, we'll embark on a journey through the process of moving an Azure Arc-enabled server to a different resource group or subscription ## Move an Azure Arc-enabled server to a different resource group or subscription To move an Azure Arc-enabled server to a different resource group you can use the Azure PowerShell module and the [Move-AzResource](https://learn.microsoft.com/powershell/module/az.resources/move-azresource?view=azps-10.4.1&ref=techielass.com) cmdlet. The Move-AzResource cmdlet allows you to move resources to another resource group. The destination resource group can be in another subscription. Let’s look at the [PowerShell](https://www.techielass.com/tag/powershell/) commands you need to use to move an Arc-enabled server to a different resource group. The first command gets the information relating to the resource you want to move and the second command moves the resource. ```powershell # Get Azure Arc-enabled Server you want to move  $Resource = Get-AzResource -ResourceType "microsoft.hybridcompute/machines" -ResourceName "resource-name"  # Move the Azure Arc-enabled server to a new resource group  Move-AzResource -ResourceId $Resource.ResourceId -DestinationResourceGroupName "resource-group-name" ``` ![PowerShell moving Arc server to another resource group](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/10/arc-move-resource.jpg) PowerShell moving Arc server to another resource group The resource groups need to be within the same Azure region, if you need to move your Azure Arc-enabled servers to another region, you should follow the instructions [here](https://learn.microsoft.com/azure/azure-arc/servers/manage-howto-migrate?ref=techielass.com). ## Conclusion As cloud administrators grapple with the ever-present challenge of optimizing resource management in Azure, the need for flexibility and adaptability becomes increasingly clear. The Move-AzResource cmdlet can be used to help adapt to your needs. ### What is Azure Front Door? URL: https://www.techielass.com/what-is-azure-front-door/ Last updated: 2025-11-06T14:43:55.000Z [Azure Front Door](https://azure.microsoft.com/products/frontdoor/?ref=techielass.com) was first released as a Private Preview in September 2018, and went into[ General Availability (GA)](https://www.techielass.com/service-lifecycle/) in April 2019. Since its release it has gone through some changes to the service we see today. ## **What is Azure Front Door?** Azure Front Door is a global, secure application entry point that accelerates content delivery and protects web applications from modern threats. It combines things like dynamic and static content acceleration (CDN), global load balancing, zero trust aligned security and built in distribution denial of service (DDoS) mitigation. Azure Front Door uses Microsoft’s edge network in 100+ locations to ensure user traffic always takes the lowest latency path to your application, whether workloads run in Azure, hybrid, or multi-cloud. ## **Azure Front Door Standard vs Azure Front Door Premium** Azure Front Door currently comes in two tiers, Standard and Premium. They are both built on the same modern architecture, however the key difference lies in the security features and how private you want your application origins to be. With Azure Front Door Standard you can: - Deliver and accelerate static and dynamic content using Microsoft’s global edge network - Use custom routing rules to direct traffic to the best performing backend - Load balance across multiple origins for high availability - Enable custom Web Application Firewall (WAF) rules - Protect against global network-level DDoS attacks (always on) - Gain performance insights through detailed traffic reporting This is very powerful and can improve performance and availability for most public facing applications. The premium tier builds on everything Standard is and unlocks advanced security and Zero Trust capabilities: - Managed rule sets for WAF based on the OWASP standards - Advanced Bot Protection, helping defend against malicious automation - Private Link support, so your application backends never need to be publicly reachable - Security analytics with deeper threat detection - Integration with Microsoft Entra ID for application-level access control scenarios 💡 **Standard and Premium use the same underlying edge platform, but you can’t upgrade a Standard profile to Premium directly. If you need Premium features later, you would need to recreate your Front Door profile — so planning ahead is recommended.* ## **Is Azure Front Door a CDN?** Azure Front Door is a CDN, but it’s also capable of so much more than just that. Azure Front Door can provide you with a globally distributed edge network that accelerates static and dynamic content, ensuring fast and reliable access for users worldwide. It also provides capabilities like dynamic site acceleration for APIs and web apps, global load balancing, DDoS protection and web application firewall (WAF) integration. So while Azure Front Door provides enterprise grade CDN capabilities it’s true super power is acting like a front door to your applications, accelerating performance, improving availability, and defending against attacks at the edge. ## **Is Azure Front Door a firewall?** Azure Front Door is not a firewall in the traditional sense. You don’t use it to block ports or segment your networks. What it does do though is act as the first line of defence for your applications on the public internet. Its main purpose is to deliver and accelerate your content across the world. As part of its functionality Azure Front Door inspects traffic as it arrives, stops bad actors at the edge and only allows legitimate requests to reach your app. That said, Azure Front Door isn’t the full security story. It protects the application at the edge, but not deep inside the network. For a complete Zero Trust approach, organisations still pair it with services like Azure Firewall, network segmentation and threat monitoring. ## How Microsoft uses Azure Front Door Azure Front Door isn’t just a service that Microsoft offers, it’s the technology that Microsoft uses to help provide some of the biggest and most demanding platforms on the planet. When you dive into an Xbox multiplayer session, or try and hit a Microsoft website, or the Azure Portal your session request is being steered through Azure Front Door’s global edge network. ## **Conclusion** In conclusion, Azure Front Door has evolved significantly since its Private Preview, becoming a powerful tool for modern web application delivery and security. Leveraging Microsoft's expansive global network, it caters to businesses of all sizes, offering intelligent traffic routing, load balancing, and robust security features such as DDoS protection and Web Application Firewall (WAF). ### Hands on: Lenovo ThinkPad X1 Fold 16 Gen 1 URL: https://www.techielass.com/hands-on-lenovo-thinkpad-x1-fold-16-gen-1/ Last updated: 2023-12-07T14:38:39.000Z In September 2022, Lenovo announced at [Tech Life 2022](https://youtu.be/Fp2x12Lc2FY?ref=techielass.com) the [ThinkPad X1 Fold 16 Gen 1](https://www.lenovo.com/gb/en/p/laptops/thinkpad/thinkpadx1/thinkpad-x1-fold/len101t0047?ref=techielass.com). A 16” laptop device that folds like a book. I’ve been lucky enough to get my hands on one of the devices to try and give you my thoughts. Thanks to Hollyn Phelps for organising this opportunity and the Lenovo INsider programme. ## First Impressions I was excited to unbox this device and see what it looked like. This device’s top cover is 100% recycled PET\* plastic Woven Performance Fabric. It feels grippy and tactile. ![Lenovo ThinkPad X1 Fold 16 Gen 1](https://lh7-us.googleusercontent.com/sP-V0niaD7NYXLpDJGSEsUL-r3lkPXMh72J_3Zjhz3xDo4JKNXvyepQJFc8PM5EVI7dHiqr9lVlay0W__HGjNCD0EitTYOqsPn7NM0PoC0L6ATD1VBGa2wC-SkI-qaOsgtGTnXOHH9xxslIxjz4ZPuM) Lenovo ThinkPad X1 Fold 16 Gen 1 Once I unboxed the device, I was excited to try out the folding feature; I don’t mind admitting I was a little scared to unfold it in case I broke it, but I shouldn’t have worried. The device is robust. It did take me a few days to get used to, but ultimately it’s a well-built device with a very innovative design. ## Mobility and Daily Use For the past week, this device has been my daily driver. I’ve written blog posts, answered emails, watched YouTube videos, listened to music and edited videos. ![Lenovo ThinkPad X1 Fold 16 Gen 1](https://lh7-us.googleusercontent.com/9FqViOmgJqPujyagT3x9nCPtAjF6Aphcy2nKUHqnY8wAYKkV8nfEvfigLwfE-egsiQ_53NWNP2iTqupSDlZ2ptqPLGVdtnG1cM8aih7lOnMFMg3XprC7Gdjd5V8Tt_S0GW_3eWUf4tVTR8Ejt-msokc) Lenovo ThinkPad X1 Fold 16 Gen 1 Don’t be fooled by the size of this device; it is a fully-performing laptop. The device I have been using has the following: - 12th Gen Intel Core i5-1240U - 16GB RAM - 1TB Hard Drive - Intel Iris Xe Graphics - Windows 11 22H2 Capable of running the tasks and workloads that I need a laptop to do. The difference with this device, though, is its mobility. It has several ways of setting it up and using it. To write this blog post, I have the screen vertically against the kickstand, and the keyboard is separate. Having the screen in this vertical position lets me quickly see the entire A4 page I am writing within Microsoft Word, which is a great way to write! The device has a [Windows Hello-enabled](https://learn.microsoft.com/windows-hardware/design/device-experiences/windows-hello?ref=techielass.com) camera, so signing in is a breeze. And within the keyboard is a fingerprint reader, another great way to authenticate that it’s you when logging in. I like to sit on my couch and do some work, especially at night, and I was worried that this device’s form factor wouldn’t allow me to do that, but I did manage to get the device into a position where it could sit on my lap, and I could be productive. Honestly, though, this is where a traditional form factor laptop wins in mobility. Although my experience with the ThinkPad X1 Fold 16 Gen 1 was usable, it wasn’t great. For working on the couch on my laptop, I’d prefer my ThinkPad X1 Carbon. Music is essential to me; it helps me concentrate, so I had to test the speakers on the ThinkPad X1 Fold 16 Gen 1\. I was impressed! At half volume, the speakers were loud; at full volume, they filled my room. There are three speakers in the device, and they are tuned with Dolby Atmos for that deep audio and spatial abilities. ## Weight The ThinkPad X1 Fold 16 Gen 1 is 2.82 lbs (1.28 kg) for the tablet only. It increases to 3.8lb (1.9kg) when you combine the tablet, folio and stand. Laptops are all designed with specific purposes and needs, but if we look at other devices on the market for comparison. The Apple MacBook Air weighs 2.8 pounds (1.28kg) and the Surface Studio Laptop weighs 4 pounds (1.81kg). Comparing the X1 Fold 16 Gen 1 to traditional laptops sees it come out best in the weight category. The ThinkPad X1 Fold 16 Gen 1 is a lightweight device, yes it could be lighter, but it’s still a comfortable device to carry round in a backpack for commutes. ## Screen and input options The screen is really impressive. It has a 2024x2560 resolution, OLED panel, 600 nits brightness with HDR, 100% DCI-P3 colour, and Dolby Vision. It is a touch screen and has inking support. It’s hard to explain how good the screen is, but it is. Watching something like “Black Panther” or “Avatar”, two visually pleasing movies, was a great experience. I got to enjoy the vivid colours and action in both. And, of course, for those work-related tasks or browsing the Internet, it’s more than capable. ![Lenovo ThinkPad X1 Fold 16 Gen 1](https://lh7-us.googleusercontent.com/kMsNjAXy6QOqzv_WVAlHrvXpU8As2GLB487BhggWB3wJGZnamWgdWmdRbpq6SEq9n3ILo8JK0alXMUZef01_2mZLjpjHrL249VzIyYXd_pkqVhRP6WeeaoNVVeAYjdrwJK9PBjpLDmiJwGt0Z_C-eys) Lenovo ThinkPad X1 Fold 16 Gen 1 One of the most significant complaints users had with the Gen 1 version of the device was that the keyboard was too small. The keyboard with the ThinkPad X1 Fold 16 Gen 1 has been totally redesigned and is a full-size keyboard. The keys have a depth of 1.35mm, a sweet spot. It is a joy to type on for short or long periods of time. The keyboard has a TrackPoint built into it for the purest that love using that. The touchpad built into the keyboard has no physical buttons on it. It has been designed for you to press on the touchpad to act like a button, which works well. The keyboard connects to the device using Bluetooth, so you must remember to charge it. It uses USB-C, the same as the device, so only one charger is necessary. Because it is not physically attached to the device, you can set up your workspace the way you want with the keyboard close or far away from the device that makes sense. ## Battery Life According to Lenovo, the device can last up to 8.5 hours on a single charge, which should be more than enough for a full day of work. When I was streaming videos/movies/TV with the video, the battery life drained quite quickly. Which I expected but was also disappointed in, I had expected it to perform a bit better. It was starting to struggle around about the 3-hour mark. Just enough for me to watch a Scottish Curling Championship match, thankfully! It has made me think about how I use the device and would be worried about going anywhere with a charger. Maybe it was just the type of activity I was doing and it could easily handle multiple text files and an email client during the day, but it’s unfortunately seeded that doubt for me. So I’ll ensure I am always near a charger and power socket. ## Final thoughts - Lenovo ThinkPad X1 Fold 16 Gen 1 The Lenovo ThinkPad X1 Fold 16 Gen 1 is an innovative and impressive device. It pushes the boundaries of what a laptop can be. It stays true to the Lenovo brand and feels well-made and thought-about. In terms of performance, it boasts impressive hardware, including a 12th Gen Intel Core i5, 16GB of RAM, and Intel Iris Xe Graphics. This laptop is more than capable of handling a wide range of tasks, making it a versatile workhorse. Its various usage modes and features like Windows Hello and a built-in fingerprint reader enhance the overall user experience. Mobility is a key feature of the ThinkPad X1 Fold 16 Gen 1, and it offers flexibility in setting up your workspace. However, when it comes to working on a couch, it falls short of the comfort a traditional laptop like the ThinkPad X1 Carbon provides. In summary, the Lenovo ThinkPad X1 Fold 16 Gen 1 is a testament to Lenovo's commitment to innovation and quality. While it may not replace traditional laptops in all scenarios, it offers a unique and captivating experience for those seeking an innovative device that pushes the boundaries of what a laptop can be. Whether you're a tech enthusiast, a professional, or someone who appreciates cutting-edge technology, the ThinkPad X1 Fold 16 Gen 1 is worth considering for its blend of performance and ground breaking design. ### What is Cloud-native? URL: https://www.techielass.com/what-is-cloud-native/ Last updated: 2023-10-31T11:53:42.000Z There is a lot of terminology within the IT industry, and sometimes it can be daunting trying to keep up. I want to tackle something we hear quite a lot at the moment, cloud-native. It's a term we hear quite often, so let's explore what it means and what some of the benefits are. ## What is Cloud-native and how does it work? "Cloud-native" is a term used to describe a set of principles, practices, and technologies that enable organizations to build and run applications in a way that fully leverages the capabilities of cloud computing environments. Cloud-native applications are designed from the ground up to be optimized for the cloud, and they take advantage of cloud services to achieve scalability, flexibility, and resilience. ## What is Cloud-native architecture? Cloud-native architecture is designing systems that utilise cloud services to allow a dynamic and agile development technique. It utilises a modular approach to building, running and updating software. ## Cloud Native Computing Foundation (CNCF) The Cloud Native Computing Foundation (CNCF) was founded in 2015\. It is a non-profit Linux Foundation project founded to help advance container technology and help the IT industry. The CNCF researches technologies or projects as they call them. Projects run through in three stages, sandbox, incubation and production. Projects include Kubernetes, Prometheus, etcd and Linkered. ## Benefits of a cloud-native architecture There are lots of different benefits to cloud-native architecture, as well as negatives. But let's focus on those benefits. - **Scalability**: Cloud-native applications can easily scale up or down based on demand. This elasticity allows organizations to efficiently use cloud resources, ensuring that they pay only for what they use. Auto-scaling features can automatically adjust resources to handle spikes in traffic, ensuring optimal performance. - **Flexibility**: Cloud-native architectures enable developers to use a variety of programming languages, frameworks, and services. This flexibility allows teams to choose the tools and technologies that best suit their needs, making it easier to adapt to changing requirements. - **Faster Time-to-Market**: Cloud-native development practices, such as containerization and microservices, enable faster development and deployment cycles. This agility allows organizations to release new features and updates more frequently, responding to market demands and customer feedback more rapidly. - **Resilience and High Availability**: Cloud-native applications are designed with fault tolerance and redundancy in mind. They can take advantage of cloud provider services, such as load balancers, auto-recovery, and multi-region deployments, to ensure high availability and minimize downtime. - **Improved Resource Management**: With cloud-native architectures, organizations can optimize resource allocation and utilization, leading to reduced waste and improved resource management. This ensures that computing resources are used efficiently, which can lead to cost savings. ## Conclusion In conclusion, the concept of "Cloud-native" represents a transformative approach to software development and deployment in the era of cloud computing. It's not just a buzzword; it's a set of principles and practices that empower organizations to harness the full potential of the cloud. By embracing microservices, containers, orchestration, DevOps, scalability, resilience, and the wealth of cloud services, businesses can achieve unparalleled agility, scalability, and efficiency in their digital endeavours. As we navigate the ever-evolving landscape of technology, understanding and adopting a Cloud-native mindset is not just an option—it's a strategic imperative for staying competitive and meeting the evolving needs of our digitally-driven world. So, whether you're a seasoned engineer or just getting started, embracing Cloud-native is a journey worth embarking upon to unlock the true power of the cloud. *Illustration by [Anna Antipina](https://icons8.com/illustrations/author/6023f2cd123f99000e63cdd1?ref=techielass.com) from [Ouch!](https://icons8.com/illustrations?ref=techielass.com)* ### Azure Arc Windows and Linux Dashboard URL: https://www.techielass.com/azure-arc-windows-and-linux-dashboard/ Last updated: 2024-04-26T10:07:07.000Z Have you been deploying the Azure Arc agent to your Windows Server 2012 R2 servers in order to take advantage of the Extended Security Updates (ESU) via Azure? In this blog post we’ll show you how to deploy an Azure Dashboard that will give you an overview to help manage those servers. ## Azure Arc Windows and Linux Dashboard The [Azure Arc Windows and Linux Dashboard](https://github.com/weeyin83/Azure-Arc-Windows-Linux-Dashboard?ref=techielass.com) is an open-source project first created by myself to help give administrators an overview of what Windows and Linux servers are running the Azure Arc agent within your environment. Within the dashboard you will be able to see: - The Windows/Linux servers that have the Arc agent installed - A count of what operating systems are being used by these Arc enabled servers - A view of what Arc agent version is installed - A count of any SQL instances that have been detected on the servers with Arc agents installed - Current Windows ESU assignment status - An overview of whether the Azure Arc is allowed to enable [extensions](https://learn.microsoft.com/azure/azure-arc/servers/manage-vm-extensions?ref=techielass.com) or not. And the status of some of the extensions if they are allowed to be used. ![Azure Arc Windows and Linux Dashboard](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/11/arcdashboard.png) Azure Arc Windows and Linux Dashboard # How to Enable Azure Arc Windows and Linux Dashboard - Log in to [Azure Portal](https://portal.azure.com/?ref=techielass.com) - Click on **Dashboard** from the Azure Portal menu. You may already see the dashboard view by default ![Azure Portal](https://lh4.googleusercontent.com/wlyMcY9SJl3EDZW_2tDCl7YGBkVK9xtqeOLeXUdMAdHW2myFSlyrlBD_IpGgZ35hAonFnTCKTpXZQdvLF-FD1qOtCVsqa-JHpPcBidjwo_r7eUFTxNmmLEz2EbcXIsMi1YiFTN4E3bcd9eU7M628_n8) Azure Portal - Click on **Create** ![Azure Portal](https://lh5.googleusercontent.com/559vMtGJeQE1SeYjZzicVboIQcFtsjj2_Rq1TeaeVYlY257U9F8bY89uwkGTxVWWGXB71lsx8S5KTpH5fsBDiHxQqIt-HkzIXdmVE7aem-Lq2dkRBh-IHIVdlvZgRAl5kOquzY0Kz8vfl8RQnBY5EOQ) Azure Portal - Select **Custom** Dashboard ![Azure Portal](https://lh3.googleusercontent.com/scJTWa2z7faVGkvO4En55D4UZEiyP9F-nbs1iD8-qhces_maTRjNoOQ5R9OuoNgX8grGhsrf7v_j6IIjJ9coso6UHDq1H0c7opk9jipWPZ2_ZFn2LiczVpoT4GLACdPIhV734u9BUgmqUDWWebGzMnU) Azure Portal - You will be prompted to customise the new dashboard, click on **cancel** ![Azure Portal](https://lh6.googleusercontent.com/0jTFejL0KxjXZ2HsIq8CE0lECki5rivfkTdK5JW0QNvctVN5XkicOcl2U_h1DUIzIG9xHBJiCP3By_bYVBMIyJxC-fms3CmHkcajrpnhb7GuBvyMmW54saBdO_iy_JWrLbRgCWbbeTC9Vy0kHnQBTEY) Azure Portal - Now select **Upload** and upload the [Azure-Arc-Windows-Linux-Dashboard.json](https://github.com/weeyin83/Azure-Arc-Windows-Linux-Dashboard/blob/main/Azure-Arc-Windows-Linux-Dashboard.json?ref=techielass.com) ![Azure Portal](https://lh6.googleusercontent.com/v7Eas7PBkEvKuqKbv7ktKO-nl0lhHZfnsWcnGSnbK3j89nQqICShHtpam7Wai1TYrR7t-hX2twkVWVdz-GzIkedOCickNnHeqVYFJ9XN6A18YWZiMx3-YWHXwB9jyVbnvyOWLTOCA-3dykl8u1xszHE) Azure Portal - If you want to edit the dashboard, please refer to this [link](https://learn.microsoft.com/azure/azure-portal/azure-portal-dashboards?ref=techielass.com#edit-a-dashboard) ## Conclusion The [Azure Arc Windows and Linux Dashboard](https://github.com/weeyin83/Azure-Arc-Windows-Linux-Dashboard?ref=techielass.com) gives you an oversight of what Windows and Linux servers have the Azure Arc agent installed, the count of what operating systems are being used by these Arc enabled servers, a view of what Azure Arc agent version is installed and lastly the current Windows Server 2012 R2 ESU assignment status. You can build upon that yourself or use the [GitHub repository](https://github.com/weeyin83/Azure-Arc-Windows-Linux-Dashboard?ref=techielass.com) to provide feedback and ideas back into this community based project. ### Updating the Azure Arc Agent (Connected Machine Agent) URL: https://www.techielass.com/updating-the-azure-arc-agent-connected-machine-agent/ Last updated: 2025-08-21T08:09:12.000Z [Azure Arc](https://www.techielass.com/what-is-azure-arc/) is a Microsoft service that extends Azure's management and monitoring capabilities to on-premises, multi-cloud, and edge environments, allowing organisations to centrally manage, secure, and govern resources across various infrastructure types using Azure tools and services. In this blog post, we will delve into the importance of maintaining an updated Azure Arc agent and guide you through the seamless process of ensuring that your infrastructure remains secure, optimised, and primed for the future. 💡 ****Update (2025):** Azure Arc agent now supports ****automatic upgrades** in public preview, making it easier to stay secure and up to date. 👉 [Read my latest blog on enabling Azure Arc automatic upgrades](https://www.techielass.com/azure-arc-agent-automatic-upgrade/). ## Prerequisites: - A server with an outdated Azure Arc agent version installed ## Ubuntu & Debian It is always best practice to run the latest version of the Azure Arc agent to ensure any bug fixes, stabilities enhancements, and new functionality is available. You can manually update installs of the agent on your Ubuntu and Debian operating systems using the following commands: ```bash # Updating the local package index sudo apt update # Installing an Agent Update sudo apt upgrade azcmagent ``` ## Windows The recommended way to update the Azure Arc agent on a Windows server is to obtain the updates through the same way you receive your Windows Update. Updating the Azure Arc agent doesn’t require you to reboot your server. Windows Server doesn’t check for updates of other products by default, you need to configure the Windows update client on the machine to check for other Microsoft products. There are a number of ways you can manage updating the agent, from manually configuring Windows Updates on the server or through Group Policy and WSUS. ### Manually configure Windows Updates If you manage the updates on your server individually, you need to ensure that Windows Update is set up to grab updates from other Microsoft Products. Within Windows Server 2012 R2 open the **Control Panel** \> **System and Security > Windows Update** \> **Check Settings.** And ensure the “Give me updates for other Microsoft products when I update Windows” is ticked ![Windows Server 2012 Update options](https://lh5.googleusercontent.com/vTGrwf-1n9EHB1M2MK772UiJrg5xm6UmR9DJw_kAf1tLnaJvt9LLXNACqCT2vz5nS9nNibxNuoybFeBy8E3brZ7-DG6MPClPzALgZcoisTUv8wHPjCu4H1b9Q9YCJxhQy724R1yUPh0mxGplDZ_VtUM) Windows Server 2012 Update options Within Windows Server 2016 open up **Settings** \> **Update & Security**. Select **Advanced Options** under Update settings and ensure **Give me updates for other Microsoft products when I update Windows,** is selected. ![Windows Server 2016 update options](https://lh4.googleusercontent.com/dlDi_gtXr8xq_YZBLW8Z1kYhIDNidBZBc6dh_zFhLPR72G9mexquyVZzBepnODzSGlIyXEwrRrljWuqs4ujp7ekvEmcIR412AoBmmv44XP8hX9Rm3tsEx4KNj7H2mZppunvb-CNv5nhJnGFR_CzbYVo) Windows Server 2016 update options ### For Windows Servers that receive updates from a WSUS server If you are patching your servers using a WSUS server, you need to ensure that you add the following products and classifications to your configuration: - **Product Name**: Azure Connected Machine Agent (select all 3 options) - **Classifications**: Critical Updates, Update This will ensure that it downloads and distributes the Azure Arc agent updates to your servers. ![WSUS Configuration options for Azure Arc](https://lh3.googleusercontent.com/_HnwbCw_AiCMCku8A6Ea8zdtjpjiWugE546QKmV6gPKpRB6vdtLrZ9jm-10sJPL0SYLh-HYHz8Sjshotdy9i6XGShYALDJHO4ddPFPhb68PpNVapfMq6rsJbnmoKwzxfWXrOcel_xbBISQzAFJffdwY) WSUS Configuration options for Azure Arc 💡 If you are having issues with servers not receiving updates. Check out my [Troubleshoot Windows Server 2012 Arc-enabled servers not receiving updates](https://www.techielass.com/troubleshoot-windows-server-2012-arc-enabled-servers-not-receiving-updates/) blog post. ### Manage updates via Group Policy If you are managing a lot of servers then changes are you will be managing those servers through a Group Policy instead of controlling settings individually. - Sign into a computer used for server administration with an account that can manage Group Policy Objects (GPO) within your environment. - Open the **Group Policy Management Console** - Expand the forest, domain, and organisational unit(s) to find the GPO you want to change or where you want a new one to be created - Right-click the unit and select **Create a GPO** in this domain if you are creating a new one and ensure you link it here. - Provide a name for your policy such as "Microsoft Updates" - Right-click the policy and select **Edit** - Navigate to **Computer Configuration > Administrative Templates > Windows Components > Windows Update** - Select the **Configure Automatic Updates** setting to edit it - Select the **Enabled** radio button to allow the policy to take effect - At the bottom of the **Options** section, check the box for **Install updates for other Microsoft products** - Select OK ## Conclusion In today's rapidly evolving IT landscape, keeping your Azure Arc agent current is a proactive measure that will not only safeguard your resources but also equip your organisation for the challenges and opportunities of the future. So, take the time to update your Azure Arc agent and stay ahead in the ever-changing world of technology. ### Streamline Your Workflow with GitHub Desktop URL: https://www.techielass.com/streamline-your-workflow-with-github-desktop/ Last updated: 2023-12-07T14:25:43.000Z In the world of software development, collaboration and version control are paramount. Keeping track of code changes, collaborating with team members, and managing project repositories can be a challenging task. [GitHub Desktop](https://desktop.github.com/?ref=techielass.com), a free and user-friendly application, has emerged as a powerful tool to simplify these processes. In this blog post, we'll explore the benefits of GitHub Desktop and how it can help streamline your development workflow. ## What is GitHub Desktop? GitHub Desktop is a graphical user interface (GUI) for [Git](https://www.techielass.com/what-is-git/), the most widely used version control system in the software development industry. Git allows engineers to track changes in their codebase, collaborate with others, and easily manage multiple versions of their projects. While Git itself is a command-line tool, GitHub Desktop provides an intuitive and visual interface to simplify the version control process. ## Getting Started with GitHub Desktop GitHub Desktop is available for Windows and macOS, and you can download it from the GitHub website. Once installed, the application guides you through the setup process, helping you connect to your GitHub account and repositories. ## Benefits of GitHub Desktop **User-Friendly Interface:** GitHub Desktop is designed with simplicity in mind. Even if you're new to version control, you can quickly grasp the basics thanks to its intuitive interface. This makes it an excellent choice for both beginners and experienced engineers. **Effortless Collaboration:** Collaborating with team members becomes a seamless process with GitHub Desktop. You can easily clone [repositories](https://www.techielass.com/inspect-a-git-respository/), create branches for features or bug fixes, and merge changes with a few clicks. The application also provides a clear overview of who made which changes, making it easy to track contributions. **Commit and Push:** Making changes to your codebase and pushing them to the repository is as simple as writing a commit message and hitting a button. GitHub Desktop guides you through the commit process and makes sure your changes are saved and synced to your repository. **Branch Management:** Creating and managing [branches](https://www.techielass.com/git-branches/) is a fundamental part of Git, and GitHub Desktop makes it a breeze. Whether you need to create a new branch for a bug fix or feature development, you can do it with ease. **Notifications and Updates:** GitHub Desktop keeps you informed about repository activities and updates. You'll receive notifications when someone opens a new issue, comments on your pull request, or makes changes to the repository. ## Conclusion GitHub Desktop is a powerful tool that simplifies version control and collaboration in code development. Its user-friendly interface and effortless branch management make it an excellent choice for developers of all skill levels. Whether you're working on a solo project or collaborating with a team, GitHub Desktop can streamline your workflow and help you focus on writing great code. Give it a try and experience the benefits for yourself – you won't be disappointed. ### Create a .gitignore file for Terraform URL: https://www.techielass.com/create-a-gitignore-file-for-terraform/ Last updated: 2023-12-07T11:27:17.000Z In the world of version control and collaborative coding, managing your project's files efficiently is crucial. This is where the ".gitignore" file comes into play. Understanding what a .gitignore file is and how to use it can save you from numerous headaches. In this blog post, we'll not only demystify the concept of .gitignore but also dive into practical steps, focusing on creating a .gitignore file tailored specifically for your [Terraform](https://www.techielass.com/introduction-to-terraform/) projects. So, let's embark on this journey and take the first step toward creating a clean and secure version control environment for your Terraform endeavours. ## What is .gitignore? In the world of version control and collaborative coding, managing your project's files efficiently is crucial. This is where the ".gitignore" file comes into play. Understanding what a .gitignore file is and how to use it can save you from numerous headaches. Essentially, a .gitignore file is a simple yet powerful tool in Git. It allows you to specify which files or directories should be ignored and excluded from being tracked by Git. By doing so, you can keep your repository clean, prevent sensitive data from being accidentally committed, and improve the overall performance of your version control operations. ## Create a .gitignore file for your Terraform projects Let’s get started and work through creating a .gitignore file for use within your Terraform projects. ### Step 1 - Create a new directory Let’s create a new directory for our project to be stored within. You can open up your bash terminal and type in the following command: ```bash mkdir terraform-project ``` ### Step 2 - Initialize your project We now want to switch to the new directory and then initialize the directory for both git and terraform use. To do that we use the following commands: ```bash cd terraform-project git init terraform init ``` ### Step 3 - Create a .gitignore file We are now ready to create the .gitignore file, you can do this from a bash command but I prefer to use an editor, whether that be something like Notepad or [VS Code](https://code.visualstudio.com/?ref=techielass.com). Open your editor of choice and create a new file, save it as .gitignore within your project directory. There are a lot of different things we want to make sure aren’t synced to our version control system when we are working in our Terraform projects. Things such as: - Local Terraform directories - Terraform state files - Crash log files - Files containing sensitive data, variable files - Terraform override files - Terraform plan files - Terraform CLI configuration files GitHub has created a repository of .gitignore files, their Terraform one can be found [here](https://github.com/github/gitignore/blob/main/Terraform.gitignore?ref=techielass.com). ``` # Local .terraform directories **/.terraform/* # .tfstate files *.tfstate *.tfstate.* # Crash log files crash.log crash.*.log # Exclude all .tfvars files, which are likely to contain sensitive data, such as # password, private keys, and other secrets. These should not be part of version # control as they are data points which are potentially sensitive and subject # to change depending on the environment. *.tfvars *.tfvars.json # Ignore override files as they are usually used to override resources locally and so # are not checked in override.tf override.tf.json *_override.tf *_override.tf.json # Include override files you do wish to add to version control using negated pattern # !example_override.tf # Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan # example: *tfplan* # Ignore CLI configuration files .terraformrc terraform.rc ``` Copy this template into your .gitignore file and save it to your project directory. ## Conclusion In this blog post, we embarked on a journey to demystify the concept of the ".gitignore" file, a small but mighty tool in the world of version control. By gaining a clear understanding of what .gitignore is and how it can be harnessed, you've taken the first step towards a smoother, more organized, and secure development workflow. The power of .gitignore lies in its ability to declutter your Git repositories, safeguard sensitive data, and optimize the overall performance of your version control operations. By following the steps outlined in this post, you've learned how to create a customized .gitignore file tailored specifically for your Terraform projects, ensuring that only the necessary files are tracked and committed. Remember that precise file management can significantly enhance your collaboration with fellow developers and protect your project's integrity. ### How to format Terraform code URL: https://www.techielass.com/terraform-fmt/ Last updated: 2024-01-04T13:08:25.000Z Does poorly formatted code upset you? If so, it’s essential you avoid creating such code yourself. Most programming languages adhere to specific style guidelines, and [HashiCorp Terraform](https://www.techielass.com/introduction-to-terraform/) language is certainly no exception. A single misaligned bracket or excessive indentation can render your Terraform configuration files hard to read and maintain. However, by employing the *terraform fmt* command you can avoid these coding inconsistencies. In this blog post, I want to explore the *fmt* command and help you understand when and where to use it. ## What is Terraform fmt? The *terraform fmt* command is used to format your Terraform configuration files into a canonical format and style. When the command is run it applies a set of [Terraform language style conventions](https://www.terraform.io/language/syntax/style?ref=techielass.com), along with some other minor adjustments to improve readability of the files. 💡 **You might be interested in my book "Terraform for Ops", a guide to Terraform for SysAdmins. You can find out more information here* [**https://www.terraformforops.com*](https://www.terraformforops.com/?ref=techielass.com) ## What does the Terraform fmt check do? When you run the *terraform fmt* command by default it will look in the current directory and apply formatting to all the .tf files there. There is an option within the *terraform fmt* command which allows you to process all files in subdirectories as well, that would be *terraform fmt -recursive* It will look to correct any style conventions that you have not followed, an example would be fixing spacing indents. Sometimes the canonical formatting may change between Terraform versions so it’s good practice after a Terraform upgrade to run the *terraform fmt* against your code to adopt any new changes. ## Using the Terraform fmt Command Let’s see the *terraform fmt* command being used to format a Terraform file. I have this main.tf file that looks like it was hastily written and has some bad formatting. ![Terraform file with bad formatting](https://lh4.googleusercontent.com/aVPIYl-hNuJ1lil8EZrnj98oLSQN2LrPzG3u-PYwG_h_rwWQ2L86177IehWS8I3V0qvkM4lp710Dg1TuUWerpDPLwvYbURbkqwtKlQYxeNr-59sHvZsxcDQLHEx4Ksb59tgzEolEokogETuAF4ZmFos) Terraform file with bad formatting After I run the *terraform fmt* command, you can see the formatting of the file is much better! ![Terraform file with correct formatting](https://lh5.googleusercontent.com/LpO6JbsMZz6ieTStk_0amPgWve6QjvQxZawS11rvXebr2ZdCjGqjYyCcI-TM8NwMuWI1qakl6vIdjwmSIEQ2FFh9ywp5KgcRFi3vi8XaFub6NVHiN_UeX3UErLlAQYbQbkuRk2HJ8QMj6d6EtBJMceM) Terraform file with correct formatting Those extra spaces have been removed that were making the file hard to write. However you will notice the extra line breaks at line 30 and 31 haven’t been removed, those would need to be manually removed if required. ## Conclusion In conclusion, the importance of well-formatted code cannot be overstated, and this principle holds true for HashiCorp Terraform configuration files as well. The slightest code irregularities, such as misaligned brackets or excessive indentation, can lead to frustration and hinder the maintainability of your Terraform projects. Fortunately, the *terraform fmt* command comes to the rescue. Remember that the benefits of utilizing *terraform fmt* extend beyond mere aesthetics. It promotes code consistency, eases collaboration among team members, and ensures your configurations remain compatible with evolving Terraform versions. So, the next time you find yourself grappling with unruly Terraform code, reach for *terraform fmt* to bring order and clarity to your projects. Your future self and collaborators will thank you for it. Happy coding! ### Cast your vote for me in the UK Community Awards! URL: https://www.techielass.com/cast-your-vote-for-me-in-the-uk-community-awards/ Last updated: 2023-12-18T09:21:36.000Z Exciting news is spreading like wildfire in the tech community! The finalists for the prestigious "Microsoft Technology UK Community and Partner Awards" have been unveiled, and among them is yours truly, a contender in the fiercely competitive "Azure Evangelist" category. 🏆 It's an incredible honour to be recognized in this category, and I couldn't have reached this stage without the support of our vibrant tech community. Now, it's time to take the next crucial step - voting! ### Why Your Vote Matters: At the heart of these awards lies a democratic process that places the power squarely in the hands of the community. The ultimate winners will be determined by the votes of individuals like you, who understand the significance of these awards and recognize the passion and dedication behind each nominee. ### The 10 Award Categories: Before we dive into the importance of voting, let's explore the diverse range of categories in these awards. From "Azure Evangelist" to "Modern Work Evangelist" and "Social Impact Awards," these categories celebrate the remarkable achievements and contributions of individuals and groups within the Microsoft technology ecosystem. To cast your vote, simply head over to the official awards website: [https://www.ukcommunityawards.co.uk/](https://www.ukcommunityawards.co.uk/?ref=techielass.com). ### The Power of Community: Now, you might be wondering, "Why should I take a few minutes out of my day to vote?" The answer is simple: your vote is an instrument of change. In a world driven by technology, innovation, and community collaboration, your support can make a substantial difference. 1. **Celebrate Excellence:** These awards are not just about recognizing talent but also about celebrating excellence in the industry. By casting your vote, you play a direct role in acknowledging the contributions of outstanding individuals and organizations. 2. **Empower Change:** Your vote empowers those who are working tirelessly to drive innovation, promote diversity, and make a positive impact in the tech community. It's a way of saying, "I support your mission, and I believe in what you're doing." 3. **Inspire Others:** Your vote serves as an inspiration to those who aspire to make a difference in the tech world. It shows them that their efforts are noticed and valued by the community they aim to serve. 4. **Strengthen Community Bonds:** The act of voting fosters a sense of togetherness within our community. It demonstrates that we stand united in recognizing and appreciating the hard work and dedication that propel our industry forward. ### How to Vote: Voting is a straightforward process: 1. Visit the official awards website: [https://www.ukcommunityawards.co.uk/](https://www.ukcommunityawards.co.uk/?ref=techielass.com). 2. Browse through the categories and nominees. 3. Click on your favourites to cast your votes. 4. Share the awards website with your network to encourage others to vote. ### Conclusion: As we embark on this exciting journey towards the "Microsoft Technology UK Community and Partner Awards," I urge you to take a moment to visit the website and cast your votes. Your vote is not just a click; it's a declaration of support for the individuals and groups who are working hard within the community. ### Set up a Hyper-V Virtual Switch using a NAT Network URL: https://www.techielass.com/set-up-a-hyper-v-virtual-switch-using-a-nat-network/ Last updated: 2023-12-07T11:34:02.000Z In this post, I will show how you can create a Windows Server 2022 Hyper-V virtual switch that uses network address translation (NAT), enabling virtual machines to be isolated behind a single shared IP address on the host. ## What is Network Address Translation? Network Address Translation (NAT) is a technique used in computer networking to manage the distribution of IP addresses within a private network. It allows multiple devices in a local network to share a single public IP address for communication with external networks, like the Internet. NAT acts as a mediator, translating private IP addresses of devices within the local network into a single public IP address when data is sent out to the internet and then translating incoming data back to the appropriate private IP address. ## Prerequisites - Windows Server 2022 - Hyper-V role enabled - PowerShell ## Deploying a NAT Virtual Switch The first thing to do is to create a virtual machine switch using the following PowerShell command: ```PowerShell New-VMSwitch –SwitchName “NATSwitch” –SwitchType Internal ``` The next step is to configure the virtual network adaptor: ```PowerShell New-NetIPAddress –IPAddress 192.168.0.1 -PrefixLength 24 -InterfaceAlias "vEthernet (NATSwitch)" ``` The last step within your command shell is to configure the NAT rule: ```PowerShell New-NetNat –Name MyNATnetwork –InternalIPInterfaceAddressPrefix 192.168.0.0/24 ``` With the configuration complete you can now start to assign IP addresses to the virtual machines within your Hyper-V host. ![Configure a server IP address](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/08/hyper-v-ip.png) Configure a server IP address ## Conclusion In conclusion, creating a Windows Server 2022 Hyper-V virtual switch with Network Address Translation (NAT) offers a powerful solution for enhancing network efficiency and security. By following the outlined steps, you can establish a NAT-enabled virtual switch, ensuring efficient and secure communication for your virtual machines while conserving valuable public IP addresses. ### Ubiquiti Dream Machine Dashboard won't load! URL: https://www.techielass.com/ubiquiti-dream-machine-dashboard-wont-load/ Last updated: 2023-08-29T07:01:52.000Z The other day I could not get my [UniFi app](https://play.google.com/store/apps/details?id=com.ubnt.easyunifi&pli=1&ref=techielass.com) to load any information. Or get any response from the UniFi web console. Client devices could still connect and browse the Internet fine, so I didn't want to do a full reboot of the whole system. I managed to reset the UniFi OS through SSH which solved the problem, so let's walk through the process. ## Enable SSH - Browse to the UniFI web OS console within your browser - Go to Settings > System - Enable SSH and set a secure password ### Connect to UniFi with SSH - Open up a command line prompt - Type in *ssh @* 💡 The for UniFi Consoles (UDM Pro / UNVR / Cloud Key) and UniFi Gateways (UXG Pro) is always ‘root’. ![Connect to UniFi with SSH](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/08/ssh-unifi.png) Connect to UniFi with SSH ## Restart UniFi OS via SSH Now you are connected to the UniFi system via SSH, you can interact with the system. In this case we want to restart the UniFi OS. To do that issue the command: ***unifi-os restart*** It will take a few minutes for it to cycle through all the necessary services that it needs to stop and restart. Once it's finished you will be able to connect to the UniFi OS via the web console or app and interact with the system again. ### Using Terraform with Azure Key Vault to Retrieve Secret Values URL: https://www.techielass.com/using-terraform-with-azure-key-vault-to-retrieve-secret-values-2/ Last updated: 2025-01-23T10:31:06.000Z In this blog post, we will explore how to use [Terraform](https://www.techielass.com/tag/terraform), with Azure Key Vault to retrieve secret values. ## What is Azure Key Vault? [Azure Key Vault](https://learn.microsoft.com/azure/key-vault/general/basic-concepts?ref=techielass.com) is a cloud service provided by Microsoft, designed to safeguard and manage cryptographic keys, secrets, certificates, and other sensitive information used by cloud applications and services. Operating as a scalable and fully managed solution, Azure Key Vault alleviates the complexities of key management, enabling organisations to easily generate, store, and control access to encryption keys and secrets, thus enhancing the security posture of their digital assets. ## Prerequisites Before we being, make sure you have the following: - An Azure account - [Terraform installed and configured on your local machine](https://www.techielass.com/introduction-to-terraform/) ## Step 1: Setting up Azure Key Vault We are going to deploy an Azure Key Vault using Azure CLI. We will use the Azure Cloud Shell to do this. - Head over to [https://shell.azure.com](https://shell.azure.com/?ref=techielass.com) - Ensure you are in a Bash session - Create a new resource group by using the command: ```bash az group create --name techielassrg --location eastus ``` ![Create an Azure Resource Group with Azure Cloud Shell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/08/image.png) Create an Azure Resource Group with Azure Cloud Shell - With the resource group created we can now create the Key Vault: ```bash az keyvault create --name "Techielasskeyvault" --resource-group "techielassrg" --location "East US" ``` A basic Key Vault is now created. 💡 **One thing to be aware of here, this setup is okay for a demo environment, but when deploying within a production environment ensure you follow best practices around access policies, deployment, retention policies etc.* ## Step 2: Create a secret in the Azure Key Vault With the Key Vault now created the next step is to create a secret within it we can retrieve from our Terraform configuration. Still with the the Azure Cloud Shell type in the command: ```bash az keyvault secret set --vault-name "techielasskeyvault" --name "techielass-secret" --value "scotlandrules" ``` ## Step 3: Retrieve an Azure Key Vault secret using Terraform We now have an Azure Key Vault configured and a secret stored within it. It’s time to start writing the Terraform file we will use to retrieve the secret. Opening up my favourite editor, VS Code I create a new file and type in the following: ```terraform provider "azurerm" { features {} } data "azurerm_key_vault" "existing" { name = "techielasskeyvault" resource_group_name = "techielassrg" } ``` The above section tells Terraform we are interacting with Azure. Then it says we are using a data source outside of Terraform, which in this case is our existing Azure Key Vault. The next section we add to our Terraform file is: ```terraform data "azurerm_key_vault_secret" "example" { name = "techielasssecret" key_vault_id = data.azurerm_key_vault.existing.id } ``` This is instructing Terraform to retrieve a specific secret from our key vault. The last section for the Terraform template is: ```terraform output "secret_value" { value = nonsensitive(data.azurerm_key_vault_secret.example.value) } ``` This Terraform configuration tells Terraform to output the secret once it has retrieved it to our command line console. ![Retrieving secret using Terraform](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/08/image-1.png) Retrieving secret using Terraform You’ll notice on the value line I have encased the value I want to display within *nonsensitive()* this is so we can see the secret output within the command line. If we didn’t do this then we would get an error as Terraform tries to avoid sensitive data being displayed. ## Step 5: Initialize and Apply Terraform Configuration To complete the process we need to issue to commands: ```bash terraform init terraform apply –auto-approve ``` This will download the necessary provider plugins then apply the configuration. Once the commands run you will see the secret displayed. ## Step 4: Deploy an Azure resource using Terraform and retrieve an Azure Key Vault secret Now that we have gone through the process of creating a key vault, storing secrets and retrieving it via Terraform it’s time to use this new knowledge into a practical example. We will create an Azure storage account using Terraform and the name of the storage account will be the secret value we created. The following Terraform template will retrieve the secret, create a new resource group and then create an Azure storage account. ```terraform provider "azurerm" { features {} } data "azurerm_key_vault" "techielasskv" { name = "techielasssecrets" resource_group_name = "techielassrg" } data "azurerm_key_vault_secret" "techielasssecret" { name = "techielass-secret" key_vault_id = data.azurerm_key_vault.techielasskv.id } resource "azurerm_resource_group" "rg" { name = "techielassstorage" location = "eastus" } resource "azurerm_storage_account" "techielasssa" { name = data.azurerm_key_vault_secret.techielasssecret.value resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location account_tier = "Standard" account_replication_type = "LRS" depends_on = [ azurerm_resource_group.rg ] } ``` Once you deploy this Terraform file, you should have a storage account with the name of the secret value we created earlier. ![Azure Storage Account deployed via Terraform](https://lh5.googleusercontent.com/wvR7YRYFcabx2_edXrx5nidSFGxITrAtutUQTk6DSHIeMBBdaCxPJbCGKjLadJ8R6uDLxy2bG5z366XS2GgL_YLGkiCsQGfaFgEN0IpBZ1TIvUcK70cMrus1dkJb3C4QrcBXlhbkdoAXFM5FU_aRCuY) Azure Storage Account deployed via Terraform 💡 **If you are interested in learning more about Terraform, check out my book* [**"Terraform for Ops: Automating Infrastructure Tasks"*](https://leanpub.com/terraformforops/?ref=techielass.com)**.* ## Conclusion In this blog post, we’ve explored how to use Terraform with Azure Key Vault to retrieve secret values. This approach provides a secure and efficient way to manage secrets within your cloud environment and deployments. Remember to always keep your secrets secure and never expose them within your code or version control systems. ### A guide to Git Aliases URL: https://www.techielass.com/a-guide-to-git-aliases/ Last updated: 2023-12-07T14:32:28.000Z Typing long commands can get tiresome, this is where aliases can come in handy! In this blog post I’ll share how you can set up aliases for your Git commands. Using aliases allows you to set up shortcuts that will make your life easier. There are two ways in which you can set up your aliases. ## Set up aliases using the Git config command You can set up your aliases using a command within your command line tool. The format for the command is: ```bash git config --global alias. '' ``` In practice that means if you want to type **git c** instead of typing **git checkout** the alias you would configure is: ```bash git config --global alias.c checkout ``` ![Setting up a Git alias](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/07/image-1.png) Setting up a Git alias ## Set up aliases using the .gitconfig file Another approach is to make modifications to the .gitconfig file. This is usually stored within your home directory, on my Windows machine it was stored under *C:\\users\\sarah\\* Within this file create an alias section like below: ```bash [alias] # Shortcut for status st = status # Shortcut for checkout co = checkout # Shortcut for branch b = branch # Shortcut for help h = help # Shortcut for last commit last = log -1 HEAD # Shortcut to query log for altered files l = log --stat # Shortcut to query log and make it pretty ld = log --graph --decorate --date=short ``` ## Deleting a Git alias If you want to remove an alias you can delete the configuration from the .gitconfig file or you can use the following command: ```bash git config --global --unset alias. ``` ![Deleting a Git alias](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/07/image-2.png) Deleting a Git alias ## Check all aliases in Git If you want to check which aliases are currently set within your configuration you can use the command: ```bash git config --get-regexp '^alias\.' ``` ## Using Git aliases Now that the aliases are set up you can now use them when you are within your command line tool. I can now use **git l** in lieu of **git log –stat**. 💡 It’s important to remember, these aliases are only applicable to your local machine. ### Store Terraform state in Azure Blob Storage URL: https://www.techielass.com/store-terraform-state-in-azure-blob-storage/ Last updated: 2024-01-05T08:11:06.000Z In this blog post I want to walk you through the process of configuring Terraform to use an Azure storage account to store and protect your Terraform state file. When you use Terraform as your [Infrastructure as Code language](https://www.techielass.com/tag/infrastructure-as-code/) it writes the status of your resources to a state file. By default this file is called “terraform.tfstate” and it is stored locally. This state file is written in JSON format. The file is automatically created by Terraform the first time the Terraform plan command is run. It will subsequently use the file to compare the it’s state with the target infrastructure changes. The main advantage of storing your Terraform state file in an Azure storage account is state locking. Terraform will create a file lock on the state file when running the Terraform apply operation. This prevents other Terraform executions against the state file. ## Create Azure Storage account There are a number of ways to create the storage account you need for the Terraform state. In this example I am going to use Azure CLI commands, but you can use PowerShell, the Azure Portal website or even Terraform. Head over to [https://shell.azure.com](https://shell.azure.com/?ref=techielass.com) this will launch the Azure CloudShell environment allowing you to create the storage account via Azure CLI. Below are the commands that will create a new resource group, storage account and blob container. If you customise the four variables at the top to meet your needs you can copy and paste this into your CloudShell environment directly. ```bash # Declare inputs RESOURCE_GROUP_NAME=terraform STORAGE_ACCOUNT_NAME=terraform$RANDOM CONTAINER_NAME=terraformstate LOCATION=ukwest # Create resource group az group create --name $RESOURCE_GROUP_NAME --location $LOCATION # Create storage account az storage account create --resource-group $RESOURCE_GROUP_NAME --name $STORAGE_ACCOUNT_NAME --sku Standard_LRS --encryption-services blob # Create blob container az storage container create --name $CONTAINER_NAME --account-name $STORAGE_ACCOUNT_NAME ``` We need to configure an authentication method so we can read and write data to the storage account. I am going to use a [storage account access key](https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal&ref=techielass.com). But you could use a service principal, managed service identity, or storage account SAS token. Be sure to choose the right one that works for your environment and follow any procedures you have within your organisation. You can use more Azure CLI commands to reveal the storage account key. Head over to [https://shell.azure.com](https://shell.azure.com/?ref=techielass.com) Paste in the following commands: ```bash # Query Account Key ACCOUNT_KEY=$(az storage account keys list --resource-group $RESOURCE_GROUP_NAME --account-name $STORAGE_ACCOUNT_NAME --query '[0].value' -o tsv) # Output Account key echo $ACCOUNT_KEY ``` The output should reveal a long account key, take a copy of this. You will need it in the next step. 💡 **If you wish to continue your Terraform learning journey check out my new booked "Terraform for Ops". You can find more information at* [**https://www.terraformforops.com*](https://www.terraformforops.com/?ref=techielass.com) ## Create a Terraform template We are now ready to create a Terraform template to deploy resources. I am going to be using my favourite editor, VS Code to create the template. Opening a new file I put in the following Terraform: ```terraform provider "azurerm" { features {} } ``` This section declares that I am using the Azure RM Terraform provider. The next section of the template to write is: ```terraform terraform { backend "azurerm" { resource_group_name = "terraform" storage_account_name = "terraform25130" container_name = "terraformstate" key = "" } } ``` This section is defining where I want to store the Terraform state file. It is populated from the information relating to the storage account we populated in the previous step, resource group name, storage account name, container name and the access key. 💡 **It’s important to note that in a production environment I wouldn’t recommend having your storage account access key populated in plain text in your Terraform template.* The next section in our template is: ```terraform resource "azurerm_resource_group" "rg"{ name = "rg_test" location = "westeurope" tags = { enviroment = "www.techielass.com" } } ``` This section of the template instructs Terraform to create a new Azure resource group. ## Deploy the Terraform template With the template written it’s time to deploy it and create the resources. Open up your terminal and type in the command: ```bash terraform init ``` The next command you want to type is: ```bash terraform plan ``` This command shows you what is going to happen if you were to deploy the Terraform file. Now that the Terraform plan command has been executed, the state file is created in the container that was defined in the configuration file. You can see the contents of the state file by issuing the following command: ```bash terraform state pull ``` ![Terraform state pull command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/07/image.png) Terraform state pull command You can now continue to complete the deployment by typing in the command: ```bash terraform apply -auto-approve ``` This will initiate the deployment, the -auto-approve command will avoid us having to type in yes to proceed with the deployment. If you don’t append the -auto-approve command then you would have to type in “yes” to deploy the resource. After a few minutes you will get a confirmation message that the resource group has been created. You have now successfully created a new resource within Azure and the Terraform state is updated and stored within the Azure storage account. If you want to continue learning more about Terraform and using it as your Infrastructure as Code language do check out [my other blogs](https://www.techielass.com/tag/terraform/). ### Deploy a AWS S3 bucket with Terraform URL: https://www.techielass.com/deploy-a-aws-s3-bucket-with-terraform/ Last updated: 2024-01-04T13:08:08.000Z [Terraform](https://www.techielass.com/introduction-to-terraform/) is an[ Infrastructure as Code (IaC)](https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools/) tool that can help you define resources within your environment. In this article, I want to take you through deploying your first resource within AWS via Terraform. The resource we are going to deploy is an AWS S3 bucket. ## Prerequisites - AWS subscription: If you don't have an Azure subscription, create a[ free account](https://aws.amazon.com/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=%2Aall&awsf.Free%20Tier%20Categories=%2Aall&ref=techielass.com) before you begin - Terraform: Installed on your machine, you can follow [my guide](https://www.techielass.com/introduction-to-terraform) to do this if you haven’t already - AWS CLI: Installed on your machine - Code editor: my preference is [Visual Studio Code](https://www.techielass.com/my-visual-studio-code-setup/) ## Create an IAM AWS user An IAM user account within AWS can represent a user or a workload that needs to interact with AWS. For this use case, we are going to create an IAM user account that allows our local computer to connect to AWS. We will use this account to help us deploy our Terraform template. To create a new IAM AWS log into the AWS console and head to the IAM Management Console. Click on “Users” down the left-hand side and then select “Add Users” Specify a name for your IAM user account. Then select “Next”. The next stage will ask what permissions you want to give this IAM user account. For this example, I am going to give the IAM account full admin access, but it is best practice to scope the permissions accordingly. Once you have configured the permissions select “Next”. Then “Create User”. Once the user is created, select it from the list of IAM users. This will give you access to the properties and configuration of the account. Select the “Security Credentials” option. Scroll down to “Access Key” and click on “Create access key” When the creation wizard starts it will ask you what these credentials will be used for. For this account select “Command Line Interface” then select “Next”. Then select “Create key”. Take note of the access key and secret access key. We will need it for the next step. ## Configure your local machine In order to deploy the Terraform template to AWS from your machine you need to ensure you have the AWS CLI and Terraform software installed on your machine. Once installed, you need to configure the AWS CLI to connect to your account. To do this, open up your terminal and type in “aws configure”. It will prompt you for information about your IAM access key and secret. Enter the information you created in the previous step. ![AW Console configuration](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/07/aws-configure.jpg) AWS Console configuration Once you have answered all the questions as prompted you are ready to start to build your Terraform template. 💡 **You might be interested in my book "Terraform for Ops", a guide to Terraform for SysAdmins. You can find out more information here* [**https://www.terraformforops.com*](https://www.terraformforops.com/?ref=techielass.com) ## Build the Terraform Template There are different ways of deploying your template but we are going to do it from our local machine. We are going to build up a Terraform template that will create an S3 bucket within our AWS account. To do this I will open my favourite code editor, Visual Studio Code. I create a new file called main.tf The first section I create is: ```terraform terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } } required_version = ">= 0.13" } ``` This is the start of your template, it’s indicating what version of Terraform you wish to use and what providers you need. A provider within Terraform is essentially a plugin that enables interaction with an API. We need the AWS provider, this provider interacts with the AWS API to help deploy resources to AWS. The next part of the template I need is: ```terraform provider "aws" { profile = "default" region = "eu-west-2" } ``` This section of the template configures my AWS settings, my profile and my default region I wish to use. The next section I put into the template is: ```terraform # Bucket creation resource "aws_s3_bucket" "my_s3_bucket" { bucket = "sarah-terraform-bucket" } # Disabling bucket public access resource "aws_s3_bucket_public_access_block" "my_s3_bucket_access" { bucket = aws_s3_bucket.my_s3_bucket.id # Block public access block_public_acls = true block_public_policy = true ignore_public_acls = true restrict_public_buckets = true } ``` This section creates the S3 bucket and then disables public access to the bucket’s contents. There is a lot more you could write within this template, but this will get you a basic S3 bucket within AWS. As you start to build up your knowledge you can start to explore the other settings you may wish to use. ## Deploying the Terraform Template Now we have the template created, it's time to deploy it. When you deploy a Terraform template there are a few stages that you will go through before the resources are created. ![Terraform stages of deployment](https://lh5.googleusercontent.com/BtrclwJ0U_xxkBe1J7qCWFmOCzUC57hHj6GcaRZ3979Srs3OLJGY_XwUwfhUtfI8oM_bZq7bO6SjyjKWaK1zBxyrWcR2BaGlhbb7bYVx8LQdxd-1G4pM9k7XkCOqpn8l2bsWW_HvJNEpMu9R-u_NVbE) Terraform stages of deployment Let’s explain the steps: - **Init**: The init command prepares the working directory for use with Terraform. It initialises the backend, any child module installation and any plugin installation. - **Plan**: The plan command determines the deltas between the current configuration and prior state data. It will propose changes that make the remote infrastructure match the current configuration. - **Apply**: Running the apply command will run the plan from the *terraform plan* command. - **Destroy**: The destroy command is used to destroy all remote objects managed by a particular Terraform configuration. The first step we need to go through is initialising the Terraform file. Make sure you are in the directory where the Terraform file lives and enter the command: ```bash terraform init ``` The next step is to plan the resource deploying. To do that type in the command: ```bash terraform plan ``` When the command has run it will show you what is going to happen if you were to deploy the Terraform template. ![Terraform plan command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/07/s3-terraform-plan.PNG) Terraform plan command Now we are ready to actually create the research so we type in the command: ```bash terraform apply -auto-approve ``` This command will now initiate the deploying. The -auto-approve flag helps us skip the step where Terraform will ask if we wish to proceed with the deploying. If you don’t use the -auto-approve flag you will have to confirm you want to deploy the template. After a few minutes you should get a confirmation that the S3 bucket has been deployed. ![Terraform apply command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/07/s3-terraform-apply.PNG) Terraform apply command **Well done!** You’ve deployed your first AWS resource using a Terraform template! If you’d like to clean up this S3 bucket you can run the command: ```bash terraform destroy -auto-approve ``` And it will be destroyed for you. ### How to use GitHub Actions environment variables URL: https://www.techielass.com/how-to-use-github-actions-environment-variables/ Last updated: 2023-11-10T07:49:45.000Z GitHub Actions is a powerful tool that can be used to store your code and automate your workflows. One key feature that makes GitHub Actions versatile is environment variables. In this guide, I will explore how to effectively use environment variables in [GitHub Actions](https://www.techielass.com/tag/github-actions/). ## Introduction to Environment Variables Environment variables are values that are stored outside of your source but can be accessed by your code at any time. Often you will see environment variables used to store sensitive information such as API keys, connection strings, credentials, and the like. By using environment variables you are separating the configuration from your code base making it easy to manage and share across different environments. Within GitHub Actions there are three methods you can use environment variables: - Use environment variables for a specific job - Use environment variables within a specific step within a job - Use environment variables throughout a GitHub Action workflow Let’s explore these options. ## Use environment variables for a specific job There are times when you will want to use a variable for a specific part of your automation. It helps to give you granular control for that part of the automation process. If we built a GitHub Action workflow you’ll be able to see how that would work. Below is the code for a simple GitHub Action workflow that will write a sentence to the console. On line 11 we are declaring “env”. Which are environment variables. We then have a line of code below that declares the name of our environment variable “input\_value” and then the contents of that variable is “env-variable-specific-job”. ```bash name: Specific job - example environment variable on: push: branches: - main jobs: environment_variables_examples: runs-on: ubuntu-latest env: input_value: env-variable-specific-job steps: - name: “Test to show environment variable” ``` The environment variable is declared within the job section of the workflow. That environment variable can only be used within that job. ## Use environment variables within a specific step within a job What about a more specific use case, what if you want the variable to only be used within a specific step? You can do that as well. Again let’s build a simple workflow to show how it works. We’ll use the same kind of example as below, where we output some information to the console. Looking at the code below you can see we’ve moved the declaration of environments from line 11 to line 17\. The environment variable is declared within a specific step. In our example case step 2. ```bash name: Specific step - example environment variable on: push: branches: - main jobs: environment_variables_examples: runs-on: ubuntu-latest steps: - name: “Step 1” run: echo "This is step 1. The environment variable for this example is $input_value." - name: “Step 2” run: echo "This is step 2. The environment variable for this example is $input_value." env: input_value: env-variable-specific-step ``` If we run that workflow you can see from the result below, step 1 doesn’t have access to the environment variable so it doesn’t output it, but step 2 does. ![Environment variable output example](https://lh3.googleusercontent.com/WPwNdszYGbd6RGKurmwpHhp6JXePLXiPgFD62idTCaD44Gj2SvO5MYsyEODIIKVBmm_DH_3MI0nFwd7DY6xVUgR2aQvBAhDliwTs0oKURVYY4zBOZjgBH99limrGFgVPUJoB8n_6YpxZirgM-D2cryo) Environment variable output example ## Use environment variables throughout a GitHub Action workflow More commonly you’ll want to declare an environment variable that can be used throughout your entire workflow. Let’s look at how you would declare that and where you would declare it. We declare the environment variable on line 8 now. It’s near the start of our workflow configuration. This means we can call the environment variable at any point within the workflow. Within any job or any step. ```bash name: Workflow - example environment variable on: push: branches: - main env: input_value: env-variable-workflow jobs: environment_variables_examples: runs-on: ubuntu-latest steps: - name: “Step 1” run: echo "The environment variable for this example is $input_value." ``` ## Best Practices for Using Environment Variables To ensure the effective and secure use of environment variables in your GitHub Actions workflows it’s important to follow some best practices: **Use secrets for sensitive data**: What you will have noticed in the examples is that the environment variable is declared in plain text. Which isn’t ideal. Within the real world, you would combine environment variables and [GitHub Action secrets](https://www.techielass.com/github-actions-secrets/). And that will give you real power to hide sensitive information from your code and also separate it from your code base. **Use descriptive variable names**: Choose meaningful names for your environment variables to improve the readability and maintainability of your workflows. **Regularly review and update variables**: Periodically review and update your environment variables to ensure they are up to date and remove any unnecessary or outdated variables. By following these best practices, you can ensure the secure and efficient use of environment variables in your GitHub Actions workflows. ## Next Steps Start to build and use environment variables within your GitHub Action workflows and understand the power of them to help you with your automation processes! ### What's in my bag as a speaker? URL: https://www.techielass.com/whats-in-my-bag-as-a-speaker/ Last updated: 2024-10-23T15:20:11.000Z Public speaking is something I have been doing now since 2017\. I've been very fortunate to have spoken at some fantastic events and travelled to some amazing locations. Over the last few years, I've delivered a ton of presentations from my [home office setup](https://www.techielass.com/home-office-setup-2021-version/). But lately, I've been back in person and that's meant ensuring I have all the correct equipment with me when I travel to these events. I want to share with you what I pack in my bag and why. ![What is in my bag as a speaker?](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/07/speaker-bag.jpg) What is in my bag as a speaker? ### Laptops For work I have a [Surface Studio Laptop](https://www.stylink.it/M3ByLFLnRXo?ref=techielass.com) and my personal laptop is a [Lenovo ThinkPad X1 Gen 10](https://www.stylink.it/7ojvRfzMVDG?ref=techielass.com). If I am not travelling too far then I tend to take both laptops with me. The Surface laptop requires an adapter to plug into a TV or projector, but my ThinkPad has an HDMI port so it can often be plugged in directly. Both devices are great for presentations. ### Cables I usually travel with a [HDMI to HDMI cable](https://www.stylink.it/G7zmLikBlpo?ref=techielass.com). 90% of venues that have been to use HDMI to connect either to a TV screen in the venue or to a projector. Bringing my own means I have flexibility if the venue's one is missing or isn't working. Or even if it's just not long enough for where I'd like to be, stand during the presentation. Bringing along the right power cable for the laptop or laptops I am using is important as well. ### Connectors The connector that I like is the [Anker Hub 5-in-1 adapter](https://www.stylink.it/PvwkLiqymXB?ref=techielass.com). It has a USB C Adapter with 4K USB C to HDMI, Ethernet Port, 3 USB 3.0 Ports. So it's great for when I am working remotely and I can plug in a ton of devices. It also is good for connecting my Surface Studio Laptop to an HDMI connection. I also carry a single [USB C to HDMI adapter](https://www.stylink.it/4BZpNTRvJB5?ref=techielass.com). And a single [USB C to VGA adapter](https://www.stylink.it/ry1b9iQl3jo?ref=techielass.com). I carry the single adapters because there have been some TVs/projectors that don't like my 5-in-1 adapter. Not sure if it's been the cable or the device in those venues but having that single adapter has saved me. ### Presentation clicker When I am presenting using my Surface laptop I use my [Surface Pen](https://www.stylink.it/JYMZLf0deRq?ref=techielass.com), as my "clicker" to help me move my slides forward or backwards. It works great. I haven't had to buy anything else to use. When I present from my ThinkPad I either pair my Surface Pen to that device or just use my keyboard to move the slides forward and back. ### Stickers I always try and have a selection of stickers in my bag to give away to the audience. It's a great icebreaker before or after sessions and can lead to other conversations with the attendees on a one to one basis. 💡 ****What do you have in your bag as a speaker? Is there anything I am missing?** ### Set up a dev container for Terraform in GitHub Codespaces URL: https://www.techielass.com/set-up-a-dev-container-for-terraform-in-github-codespaces/ Last updated: 2023-06-27T07:01:16.000Z With so many software choices out there and different versions, it can be confusing trying to set up your local development environment to suit every project's needs. And sometimes project needs can clash and make it even tricker to set up your local environment. This is where [GitHub Codespaces](https://www.techielass.com/getting-started-with-github-codespaces) can help. Essentially GitHub Codespaces are environments you can set up for each repository you have stored on GitHub which can be customised to suit that repository's needs. Making it easier for you to have the correct working environment for that project. In this blog post I’ll dive into the concept of what a GitHub Codespace is and how you can build a dedicated environment to work on Terraform for Azure. ## What is a development container? GitHub Codespaces are built on top of development containers, or dev containers. These containers are Docker containers that offer a development environment you can customise to provide a consistent experience for yourself or your team. The dev containers are configured using three files: - Devcontainer.json - Dockerfile - Docker-compose.yml You’ll find for some small dev container configurations only the devcontainer.json file will be needed. ## Steps for building a development container for Terraform Open a browser and go to: [https://github.com/login](https://github.com/login?ref=techielass.com) and login to your account ![Login to GitHub](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/github-step1-1.PNG) Login to GitHub Browse to the repository where your code is stored and you’d like to create the Codespaces in. ![Create a new GitHub Codespace](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/github-step2-1.jpg) Create a new GitHub Codespace On the right hand side of your screen, click on **Code** Select the **Codespaces** tab ![Create a new GitHub Codespace](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/github-step3-1.jpg) Create a new GitHub Codespace Now select **Create Codespace on Main**. This will create a Codespace based on your main branch, don’t worry you can switch branches once the Codespace is active. Within a few seconds your GitHub Codespaces will launch. We need to access the command palette. You can do that by: - Pressing this keyboard shortcut combination Shift+Command+P (Mac) OR Ctrl+Shift+P (Windows/Linux) - From the Application Menu, click View > Command Palette - Pressing F1 Once in the command palette choose the option **Add dev container configuration files** ![GitHub Codespaces command palette](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/dev-step1.PNG) GitHub Codespaces command palette You will be presented with two options, select **Create a new configuration** ![GitHub Codespaces command palette](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/dev-step2.PNG) GitHub Codespaces command palette A list of predefined dev containers will be presented to you. We are going to be working with Azure and Terraform so we are going to start our dev container build using a community template called **Azure CLI** ![GitHub Codespaces command palette](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/dev-step3.png) GitHub Codespaces command palette The next configuration step is around additional software, it suggests ZSH!, leave this option selected and click **OK**. ![GitHub Codespaces command palette](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/dev-step4.png) GitHub Codespaces command palette The last step is to select any additional software you might want, there are a lot of options available to you at this point. We need to add **Terraform** and I like to add [aztfexport](https://www.techielass.com/using-azure-export-for-terraform-to-import-existing-azure-resources-into-terraform), then click on **OK.** ![GitHub Codespaces command palette](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/dev-step5.png) GitHub Codespaces command palette ![GitHub Codespaces command palette](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/dev-step6.png) GitHub Codespaces command palette Then selecting **Keep Defaults** on the next screen. The configuration is complete. In the right hand corner a dialog box will pop up, highlighting the fact that your dev container configuration has changed and it’s time to rebuild your container to apply them. Before you do that we need to commit our configuration to our GitHub repository. Head over to the left hand navigation bar, and select the **Source Control** icon. A bunch of files will have been created due to the answers you gave in the dev container configuration wizard. Write an appropriate commit message and then select **Commit** and then **Sync Changes.** ![GitHub Codespaces source control sync](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/dev-step8.png) GitHub Codespaces source control sync We now need to rebuild our dev container. The pop up box might still be there and you can select **Rebuild Now**. If not we need to access the command palette. You can do that by: - Pressing this keyboard shortcut combination Shift+Command+P (Mac) OR Ctrl+Shift+P (Windows/Linux) - From the Application Menu, click View > Command Palette - Pressing F1 Search for **Codespaces: Full Rebuild Container** ![GitHub Codespaces command palette](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/dev-step10.png) GitHub Codespaces command palette It may take a few minutes for your container rebuild to happen. Once it has been rebuilt you will have a development environment that has the Azure CLI, Terraform and Azure Export for Terraform tool installed. ![GitHub Codespaces environment building](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/dev-step11.png) GitHub Codespaces environment building ## Conclusion GitHub Codespaces are an incredibly powerful tool that you can customise to suit your needs. Be sure to explore the possibilities and understand how utilising them can help make your working environment more efficient. ### Getting started with GitHub Codespaces URL: https://www.techielass.com/getting-started-with-github-codespaces/ Last updated: 2023-06-21T06:51:13.000Z Within the IT world we are always striving to improve workflows and be more efficient. Whether you are a beginner or a seasoned IT pro GitHub Codespaces is a powerful tool that can help provide a great environment for coding, collaborating or experimenting. In this blog, we'll dive into the basics of GitHub Codespaces, explore its features, and guide you through the process of getting started. So, fasten your seatbelts and let's explore the wonders of GitHub Codespaces together! ## What is GitHub Codespaces? GitHub Codespaces is a cloud-based development environment allowing developers, or engineers to write, debug and collaborate on code directly from their browser. It provides a seamless and streamlined experience for coding projects, eliminating the need for complex local setup and configuration. With GitHub Codespaces, you have access to your entire development environment, including code repositories, development tools, and extensions from any machine with an internet connection. GitHub Codespaces enables teams to work together on projects without worrying about maintaining a consistent development environment across different setups. Each GitHub Codespaces is essentially a containerized instance that can be customised to match any specific project requirements. It allows the user the chance to define the tools and dependencies they need and ensures that everyone working on the project has the same development environment, leading to fewer compatibility issues. GitHub Codespaces integrates seamlessly with GitHub repositories, making it easy to start coding without any additional setup. A new Codespace can be directly created from a GitHub repository or if a Codespace is already associated with a project it can be opened. With Codespaces you have a number of free hours each month to use, if you use more than those free hours then there is a pay-as-you-go pricing [model](https://github.com/features/codespaces?ref=techielass.com). ## Getting Started with GitHub Codespaces To create a new GitHub Codespaces on an existing GitHub repository follow these steps: Open a browser and go to: [https://github.com/login](https://github.com/login?ref=techielass.com) and login to your account ![GitHub Login screen](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/github-step1.PNG) GitHub Login screen Browse to the repository where your code is stored and you’d like to create the Codespaces in. On the right hand side of your screen, click on **Code** ![GitHub repository options](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/github-step2.jpg) GitHub repository options Click on the **Codespaces** tab Now **Create Codespace on Main**. This will create a Codespace based on your main branch, don’t worry you can switch branches once the Codespace is active. ![Create a GitHub Codespace](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/github-step3.jpg) Create a GitHub Codespace Within a few seconds your GitHub Codespaces will launch. ![Newly launched GitHub Codespace](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/github-step4.PNG) Newly launched GitHub Codespace You now have a Codespace where you can work on your project! ## Conclusion In conclusion, GitHub Codespaces opens up a world of possibilities for your coding environment and makes it more efficient. Whether you're working on a personal project or collaborating with a team, this tool provides a versatile and customizable environment tailored to your needs. By following the steps outlined in this blog, you've taken the first leap towards harnessing the full potential of GitHub Codespaces. So, go ahead, explore, and unlock new levels of productivity and creativity in your development journey. If you are looking for some tips on using Git, check out my [Git for Everyone series.](https://www.techielass.com/tag/git-for-everyone/) ### Using Azure Export for Terraform to import existing Azure resources into Terraform URL: https://www.techielass.com/using-azure-export-for-terraform-to-import-existing-azure-resources-into-terraform/ Last updated: 2023-10-19T09:42:50.000Z It can be tricky trying to maintain the state of your resources within the cloud. This is why lots of people are turning to [Infrastructure as Code](https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools/) to help create, manage and maintain those resources in a DevOps manner. Lots of people are turning to [Terraform](https://www.techielass.com/introduction-to-terraform/) as their Infrastructure as Code (IaC) language/tool. What happens if you’ve got a bunch of resources already created and you want to start to use Terraform to manage them? This is where [Microsoft Azure Export for Terraform](https://github.com/Azure/aztfexport?ref=techielass.com) can help. It’s worth noting that this tool has gone under a rebrand and used to be called Azure Terrafy. Microsoft Azure Export for Terraform is a tool that makes it easy to import your existing Azure resources into Terraform modules. In this blog post, I will show you how to install Microsoft Azure Export for Terraform, and important existing Azure resources and discuss some best practices and limitations of the tool. ## Prerequisites - An Azure account and subscription - Terraform installed on your machine - Azure CLI installed on your machine - Azure profile configured within Azure CLI to read resources in your Azure subscription ## Install Microsoft Azure Export for Terraform There are a few ways to install Microsoft Azure Export for Terraform onto your machine. You can use brew, [Windows Package Manager](https://www.techielass.com/get-started-with-windows-package-manager/), Go, [Chocolatey](https://www.techielass.com/chocolatey-what-is-it/) or you can get the latest binaries from the [releases](https://github.com/Azure/aztfy/releases/?ref=techielass.com) in GitHub. My preference is using Windows Package Manager, using the simple command: ```bash winget install Microsoft.Azure.Aztfy ``` ![Install Microsoft Azure Export for Terraform](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/aztfy-step1.PNG) Install Microsoft Azure Export for Terraform ## Import Existing Resources Once you have the tool installed you can specify the single resource or resource group you want to import into a Terraform file. In this tutorial I am going to import an Azure resource group and all the resources inside it. I want to import the resource group called “rg-speakingrecord”, so I need to issue the command: ``` aztfy rg rg-speakingrecord ``` ![Import Azure Resources using MIcrosoft Azure Export for Terraform](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/aztfy-step2.PNG) Import Azure Resources using MIcrosoft Azure Export for Terraform Microsoft Azure Export for Terraform will now begin the import process. ![Scanning Azure to create the Terraform files](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/aztfy-step3.PNG) Scanning Azure to create the Terraform files Once the tool has scanned the resources within your resource group it will show you some options. These are at the bottom of the screen and sometimes difficult to see depending on your terminal settings. ![Import Azure resources to Terraform](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/aztfy-step4.PNG) Import Azure resources to Terraform We can show results, show errors or recommendations as well as initial the import. Type **w** to import all the resources it has found. Microsoft Azure Export for Terraform will not start to generate the Terraform scripts for you. It will include any dependencies and also update the Terraform state file for you. Once it has finished you can open up the files and folders it has created and view the newly generated Terraform files. ![View generated Terraform files](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/aztfy-step5.PNG) View generated Terraform files The best way to validate that the files are correct is to run **terraform plan** and it should confirm the files match the current configuration and there are no changes to be made. ## Best Practices & Tips - Be sure to review the generated Terraform configuration files carefully before you apply it. - If you have a lot of resources it may take some time for the tool to scan it and then generate the relevant files, so be patient. - Microsoft Azure Export for Terraform doesn’t generate variable files, everything is defined in a static way. So for reusability you need to manually edit and then declare variables before reusing elsewhere. ## Limitations Currently there are some limits to using the tool: - It can only import Azure resources, it can’t import resources from other cloud providers. - Complex or customised infrastructure might not import well via this tool. - The tool currently declares dependencies explicitly. You must know the mapping of the relationships between resources to refactor the code to include any implicit dependencies. ## Conclusion In conclusion, Microsoft Azure Export for Terraform is a very valuable tool. It can save you time and effort configuring those existing Azure resources into Terraform files. No tool is perfect and as long as you are aware of its limitations it is a great tool to have within your toolbox when dealing with existing resources and bringing them under management via Terraform. [![Support Me on Ko-Fi](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/08/kofi_s_tag_white.png)](https://ko-fi.com/techielass?ref=techielass.com) Support Me on Ko-Fi ### SSH to a Linux server from Windows 11 URL: https://www.techielass.com/ssh-to-a-linux-server-from-windows-11/ Last updated: 2023-06-06T07:01:00.000Z Connecting to a Linux server is a secure method. In the past I have used tools such as PuTTY to connect, but I’ve recently started to use [OpenSSH](https://www.openssh.com/?ref=techielass.com). In this tutorial I will walk you through the process of installing OpenSSH on your Windows 11 machine, and then show you how to SSH to a Linux server using OpenSSH. ## What is OpenSSH? OpenSSH is a tool that can help you remotely sign-in to computers using the SSH protocol. It encrypts all traffic between the client and the server to avoid eavesdropping, hijacking of the connection and other attacks. OpenSSH is developed by developers of the [OpenBSD Project](https://www.openbsd.org/?ref=techielass.com) and is available under a BSD-style licence. ## OpenSSH on Windows 11 With the latest builds of Windows 10 and Windows 11 the OpenSSH client is installed by default. It will be located in the directory *C:/windows/system32/OpenSSH*. You can check it is installed by opening**Settings**, and selecting **Apps** ![Windows Settings - Apps](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/ssh-apps.png) Windows Settings - Apps Then select **Optional Features** ![Windows Settings - Apps - Optional Features](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/ssh-step1.png) Windows Settings - Apps - Optional Features Now search for OpenSSH under **installed features** ![Windows Settings - Apps - Optional Features](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/ssh-search-1.png) Windows Settings - Apps - Optional Features ## SSH to a Linux server using OpenSSH and a key file To connect to a Linux server using OpenSSH here are the steps you need to follow. Open up your terminal prompt (I am using [Windows Terminal](https://www.techielass.com/tag/windows-terminal/)) Navigate to the directory where you have stored your private key file Type in the connection string: ```bash ssh -i "webserver-keypair.pem" ubuntu@ec2-52-12-77-76.us-west-2.compute.amazonaws.com ``` And hit enter 💡 *Remember to change the key pair file name and connection string to suit your environment and server.* You may get a prompt asking you to confirm the authenticity of the server and key file, if you are happy to proceed type in *yes* and hit enter. After a few seconds you should see the welcome message confirming you have logged onto the server. ![Connecting to a Linux server with SSH](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/ssh-connect.PNG) Connecting to a Linux server with SSH ## Logoff Once you are finished you can type *logout* to end the connection. ## Conclusion Having OpenSSH built into the latest Windows builds makes it really easy to SSH into your Linux servers without having to install another tool. Have a go and let me know your thoughts! ### Register and Manage Linux Servers with Azure Arc Tutorial URL: https://www.techielass.com/register-and-manage-linux-servers-with-azure-arc-tutorial/ Last updated: 2025-11-11T10:45:37.000Z In this tutorial, I want to explore how to onboard a Ubuntu server to Azure using [Azure Arc.](https://www.techielass.com/what-is-azure-arc) The tutorial will walk you through registering the necessary Azure resource providers, registering your server in Azure by installing the Azure Arc agent and lastly assigning a governance policy to the server using Azure Policy. 💡 If you are looking for a tutorial of how to register a Windows server with Azure Arc head over to my [tutorial here](https://www.techielass.com/azure-arc-windows-server-setup/). ## Prerequisites - An [Ubuntu 22.04 server](https://learn.microsoft.com/azure/azure-arc/servers/prerequisites?ref=techielass.com#supported-operating-systems) with outbound Internet access - An active Microsoft Azure subscription ## Register Azure resource providers An Azure resource provider is a collection of REST operations that provide functionality for an Azure service. To use Azure Arc-enabled servers, the following Azure resource providers must be registered in your subscription: - Microsoft.HybridCompute - Microsoft.GuestConfiguration - Microsoft.HybridConnectivity - Microsoft.AzureArcData (if you plan to Arc-enable SQL Servers) To enable them you can use Azure PowerShell, Azure CLI or the Azure portal. We’re going to use Azure CLI this time. Head over to [https://shell.portal.com](https://shell.portal.com/?ref=techielass.com) ![Azure Cloud Shell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/step1.PNG) Azure Cloud Shell Paste the following code into your shell window: ```bash az provider register --namespace 'Microsoft.HybridCompute' az provider register --namespace 'Microsoft.GuestConfiguration' az provider register --namespace 'Microsoft.HybridConnectivity' az provider register --namespace 'Microsoft.AzureArcData' ``` ![Azure Cloud Shell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/step2.PNG) Azure Cloud Shell ### Registering an Existing Ubuntu Server From the **Azure Portal**, search for **Azure Arc**. When the management blade launches, select **Machines** down the left hand side. Then select **Add/Create** and then select **Add a machine** You can either register servers individually, through a bulk process or via Update Management. In this tutorial, we are going to select the first option and add servers with an interactive script. ![Azure Portal - Server - Azure Arc](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/step4.PNG) Azure Portal - Server - Azure Arc There are some prerequisites you need to meet, ensure you have met them before going any further. ![Azure Portal - Server - Azure Arc](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/step5.PNG) Azure Portal - Server - Azure Arc In the next step, you are asked to select some information. You are asked to select the subscription, resource group, operating system (OS), connectivity method and region. For this tutorial, ensure you select Linux as the OS and move to the next step. ![Azure Portal - Server - Azure Arc](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/step6.PNG) Azure Portal - Server - Azure Arc The next step is to populate any values for the suggested tags or you can create your own. ![Azure Portal - Server - Azure Arc](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/step7.PNG) Azure Portal - Server - Azure Arc The last screen will show you the command to run on the Ubuntu server. Copy it and close the wizard. ![Azure Portal - Server - Azure Arc](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/step8.PNG) Azure Portal - Server - Azure Arc Now you have the script, [SSH onto your Ubuntu machine](https://www.techielass.com/ssh-to-a-linux-server-from-windows-11). Paste the commands that were generated from the previous step. ![Connecting to Linux server via SSH](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/step9.PNG) Connecting to Linux server via SSH During the installation you will be asked to go to https://microsoft.com/devicelogin to authenticate this new machine. Within a few minutes, you will notice the registered machine in the resource group. ### Applying a Policy to Registered Servers The next process we want to follow is to apply a policy to find any registered servers that allow remote connections from accounts without passwords. From the **Azure Portal**, search for **Servers – Azure Arc**. Select the server you just onboarded. Down the left-hand side menu, scroll down to **Operations** and select **Policies**. ![Azure Arc - Assign an Azure Policy](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/step11.PNG) Azure Arc - Assign an Azure Policy Click on **assign policy**. ![Azure Arc - assign policy to machine](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/step12.PNG) Azure Arc - assign policy to machine From the available policy definitions, select **Audit Linux machines that allow remote connections from accounts without passwords.** ![Azure Portal - Creating an Azure Policy - selecting policy](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/step14.PNG) Azure Portal - Creating an Azure Policy - selecting policy Walking through the wizard makes sure you select the option to **Include Arc connected servers**. ![Azure Portal - Creating an Azure Policy - include Azure Arc machines](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/step15.PNG) Azure Portal - Creating an Azure Policy - include Azure Arc machines Within the next step, accept the defaults and create the policy. ![Azure Portal - Creating an Azure Policy](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/step16-1.PNG) Azure Portal - Creating an Azure Policy After a few minutes when you check the compliance dashboard, it will have updated with the results from the audit. ![Azure Policy - compliance dashboard](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/05/step17.png) Azure Policy - compliance dashboard Well done! You have successfully onboarded a Linux server to Azure using Azure Arc and then assigned an [Azure Policy](https://www.techielass.com/tag/azure-policy/)! ### Microsoft Build 2023 News Round Up URL: https://www.techielass.com/microsoft-build-2023-news-round-up/ Last updated: 2025-06-06T09:55:22.000Z [Microsoft Build](https://news.microsoft.com/build-2023-book-of-news/?ref=techielass.com), Microsoft's developer conference, has been happening this week in Seattle. There was an in-person element to the event, and it was available online live and is still available on demand for anyone looking to catch up. I've been keeping an eye on the announcements, and I've picked out a bunch in the infrastructure space that have caught my eye. ### Public preview: Soft delete for recovery points for Azure Backup In public preview we now have soft delete for recovery points for Azure Backup. This will allow you to recover data from recovery points that might have been deleted as a result of making changes to a backup policy associated with a backup item. This is available in selected regions and will be available in other regions in the following weeks. You can find more documentation on [the feature here](https://learn.microsoft.com/azure/backup/manage-recovery-points?ref=techielass.com#impact-of-expired-recovery-points-for-items-in-soft-deleted-state). ### Generally Available: Linked backends for Azure Static Web Apps Generally available is a new feature for Azure Static Web Apps called linked backends. This allows you to link your APIs to your Static Web Apps and API requests are automatically routed to the linked API. It supports Azure Functions, Azure App Service, Azure Container App and Azure API management backends. With linked backends you are getting integrated security with direct access to user authentication and role-based authorization data, plus seamless routing that makes the API route available to the front-end web app without custom cross origin resource sharing rules (CORS). ### Generally Available: SQL binding for Azure Functions Are you linking Azure SQL and Azure Functions together? A new generally available feature called SQL bindings for Azure Functions is out. This will help you reduce the amount of code required to link the two together. You can write these SQL input and output bindings in .NET, Java, Python, Node.js, and PowerShell Azure Functions. ### Public Preview: GitHub Advanced Security for Azure DevOps In public preview is now GitHub Advanced Security for Azure DevOps. You can start to use the code scanning, secret scanning and dependency scanning capabilities in your Azure DevOps environment. These features can really help you implement security earlier in your software development lifecycle and fix security issues before your code is deployed to production. ### Optimize your reservation purchases with reservation utilization alerts Azure reservations can provide cost savings by committing to one- or three-year plans, but sometimes they can go unutilized or underutilized, which negates any savings. You can view the utilization percentage of your reservation purchases in the Azure portal, but let’s face it sometimes it can be easy to miss important changes. With a new preview alert though you can avoid missing those changes. You can now set up an alert email that will notify you whenever any of your reservations exhibit low utilization, giving you a chance to act and avoid financial losses and ensure your investments are delivering the expected cost savings. You can find more information on [how to set up this alert here](https://learn.microsoft.com/azure/cost-management-billing/costs/reservation-utilization-alerts?ref=techielass.com). ### Microsoft Cost Management AI capabilities A new experience is launching within Microsoft Cost Management that will lever next generation AI capabilities. Which will help you understand, analyse and manage your cloud costs and bills. This feature is coming soon to the Azure portal, right now you can put your name on the [waitlist for the private preview](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbRxfY9mmRI6VBoQXrvkv2z%5FZUOFBHU1FFSVIxUjNENUtTQjdWMUQ0QlRGWC4u&ref=techielass.com). ### Public Preview: Azure API Center The Azure API Center is a new product to be announced, it is a central hub for you to discover, track and manage all APIs in your organisation. It will also enable you to build up company wide API standards. It should allow your developers and engineers quickly discover and consume APIs that can be reused to help accelerate or enable development. You’ll be able to keep a track of APIs with the API inventory management functionality. You can see version information, specifications, deployments and metadata schema information, Plus management administrative access to APIs and other assets with role based access control. To get access to this new service you can [register for it via the Azure portal](https://microsoft.qualtrics.com/jfe/form/SV%5F1XM1dfd4EnlMigK?ref=techielass.com) and the team expects to start giving people access in June this year. ### Generally Available: Azure Linux Microsoft have launched their own version of Linux, Azure Linux container host for Azure Kubernetes service. It is optimised for performance on Azure. This was previewed in October 2022 under the project codename CBL-Mariner. ### Microsoft Dev Box Microsoft Dev Box will be generally available in July 2023. And there are some new capabilities coming as well. The first one being new starter images in the marketplace which will be ready to use. And the ability to customise your dev box using configuration as code files in git source control. ### GitHub Copilot X GitHub Copilot was the world’s first at scale generative AI tool made with OpenAi’s codex model. The GitHub team has been working on a new iteration, GitHub Copilot X. Utilising the GPT-4 model they are introducing chat and voice for Copilot plus bring Copilot to pull requests, the command line and docs to answer questions. ### Summary Folks, there were so many awesome things announced this week at Build, these are just some of the highlights that caught my eye. Be sure to check out the Book of News for more information on the ones I’ve mentioned and the ones I haven’t covered! ### What is Azure Arc? URL: https://www.techielass.com/what-is-azure-arc/ Last updated: 2025-12-18T14:32:35.000Z Cloud computing has revolutionised the way we store, manage, and process data. However, as more organisations move their workloads to the cloud, managing and monitoring these environments has become increasingly complex. This is where Azure Arc comes in, it allows you to manage, secure and monitor all your resources from a single control plane, no matter where they are. In this post, we’ll explain what Azure Arc is, how it works and the practical ways it helps organisations simplify hybrid and multi-cloud management. ### What is Azure Arc? Introduced in 2019, Azure Arc is a tool that extends Azure’s management capabilities to resources that aren’t hosted in Azure. This means you can manage on-premises servers, edge devices, and even resources in other cloud platforms using the same tools you already use in [Azure](https://www.techielass.com/tag/azure). For example: - Want to apply [Azure Policy](https://www.techielass.com/tag/azure-policy/) to ensure your on-premises servers follow the same configuration rules as your Azure servers? Azure Arc makes it possible. - Need to buy Extended Security Updates (ESUs) to cover an out of support on-prem server, Azure Arc lets you simplify that process and manage it all through the Azure Portal. In short, Azure Arc helps simplify your IT management. It lets you use familiar Azure tools to monitor, secure, and manage resources wherever they live, reducing the need for multiple management systems. ### Azure Arc-Enabled Services Azure Arc provides several services that let you manage resources outside of Azure in a unified way, whether they’re on-premises, at the edge, or in other cloud environments. Here’s an overview of the main Arc-enabled services: **1\. Azure Arc–Enabled Servers** With Azure Arc-enabled servers, you can manage [Windows](https://www.techielass.com/install-azure-arc-onto-your-server/) and [Linux](https://www.techielass.com/register-and-manage-linux-servers-with-azure-arc-tutorial/) machines hosted outside Azure just like native Azure servers. After installing a lightweight agent on your server, it appears in the Azure portal within a resource group. From there, you can monitor performance, apply security policies, and include the server in your governance and compliance workflows. **2\. Azure Arc–Enabled Kubernetes** You can connect and manage Kubernetes clusters anywhere using Azure Arc. Registered clusters can participate in [GitOps ](https://www.techielass.com/tag/gitops/)deployments using the open-source Flux tool, making it easier to standardise configuration across clusters. Arc also supports multiple certified Kubernetes distributions, so you can integrate clusters consistently regardless of where they run. **3\. Azure Arc–Enabled Data Services** Azure Arc-enabled Data Services let you run Azure SQL Managed Instances or PostgreSQL on-premises, at the edge, or in other clouds. Using Kubernetes and your existing infrastructure, you can bring Azure data capabilities to your environment, enabling centralised management, updates, and scaling. **4\. Azure Arc–Enabled SQL Server** Azure Arc can connect your SQL Server instances outside of Azure, giving you a single view of your SQL estate. You can see details such as version, edition, and run best practice assessments across all your servers to improve compliance and performance. 💡 **If you'd like to explore more about the Azure Arc enabled SQL server, check out my blog post* [**"Unleashing the Power of Azure Arc: Enabling SQL Server Across Hybrid Environments"*](https://www.techielass.com/unleashing-the-power-of-azure-arc-enabling-sql-server-across-hybrid-environments/)**.* **5\. Azure Arc VM Management (including Azure Local)** With Azure Arc VM management, you can create and manage virtual machines that run on Azure Local environments, VMware vSphere, or SCVMM. This allows you to manage hybrid VMs using the familiar Azure portal, even when they’re outside the public cloud. In summary Azure Arc-enabled services bring Azure management, security, and governance to resources wherever they live. Instead of juggling multiple tools for servers, Kubernetes, or databases across different environments, you can manage everything from a single, consistent control plane. ### Benefits of Azure Arc Azure Arc brings several key benefits for organisations managing hybrid and multi-cloud environments: **Simplified Management:** Azure Arc consolidates management of resources that live outside Azure, including on-premises servers, Kubernetes clusters, and databases, into a single control plane. This reduces the need for multiple tools and lets IT teams monitor, configure, and manage resources consistently, wherever they are. **Consistent Security and Governance:** You can apply Azure Policy, role-based access control (RBAC), and Defender for Cloud across all connected resources. This ensures that your non-Azure servers, clusters, and databases meet organisational and regulatory standards without having to manage them separately. **Enhanced Querying and Insights:** With resources connected through Azure Arc, you can run queries in [Azure Resource Graph Explorer](https://www.techielass.com/getting-started-with-azure-resource-graph/) to quickly answer questions like: “Which SQL Servers are running on Linux?” or “Which servers are missing the latest security updates?” This makes auditing and reporting across hybrid environments much easier. 💡 **If you would like to learn more about Azure Resource Graph, check out my* [**"Getting Started with Azure Resource Graph" blog post*](https://www.techielass.com/getting-started-with-azure-resource-graph/)**.* **Run Azure Services Anywhere:** Azure Arc allows you to run Azure data services, such as SQL Managed Instance or PostgreSQL, on-premises, at the edge, or in other clouds. This is useful when workloads need to stay close to other resources for performance or compliance reasons. **Extended Security Updates (ESU):** For organisations still running older Windows Server or [SQL Server](https://www.techielass.com/how-to-apply-esu-patches-to-your-sql-server-2012-servers/) versions, Azure Arc provides a way to receive Extended Security Updates on servers like Windows Server 2012 or SQL Server 2012, helping maintain security and compliance while planning migrations. ## Conclusion Azure Arc has become a key part of hybrid and multi-cloud management, allowing you to extend Azure’s tools and services to any infrastructure, whether on-premises, at the edge, or in other clouds. By connecting your servers, Kubernetes clusters, and databases to Azure, you gain a unified management experience with consistent security, governance, and monitoring across your entire environment. Starting small is easy: you can connect just a single server or cluster and explore how Azure Arc helps simplify management and improve visibility. To get hands-on, check out my guides on registering and managing Linux servers with Azure Arc or onboarding a Windows Server to Azure Arc. With Azure Arc, hybrid and multi-cloud environments are no longer fragmented, they can be managed with the same tools and confidence you already use in Azure. 💡 **If you want to get started with Azure Arc, check out my blog post about* [**registering and managing Linux servers with Azure Arc*](https://www.techielass.com/register-and-manage-linux-servers-with-azure-arc-tutorial/)**, or* [**How to onboard a Windows Server to Azure Arc*](https://www.techielass.com/azure-arc-windows-server-setup/)**.* ### How to prepare for the HashiCorp Terraform Associate Certification URL: https://www.techielass.com/how-to-prepare-for-hashicorp-terraform-associate-certification/ Last updated: 2024-01-04T13:07:52.000Z [HashiCorp Terraform](https://www.techielass.com/introduction-to-terraform/) is an [infrastructure as code](https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools/) (IaC) tool that enables users to manage and automate cloud infrastructure. The [Terraform Associate Certification](https://developer.hashicorp.com/certifications/infrastructure-automation?ajs%5Faid=d5e67b00-757a-4aa8-aaa3-35068c88752a&ref=techielass.com#terraform-associate-%28003%29-details) is a widely recognized credential that demonstrates proficiency in using Terraform to manage infrastructure. This certification is ideal for professionals seeking to advance their careers in cloud computing, DevOps, and infrastructure management. Preparing for the certification exam can be challenging, as it requires a deep understanding of Terraform's features and functionality. In this blog post, we'll provide a comprehensive guide on how to prepare for the HashiCorp Terraform Associate Certification, including tips on what to study, how to approach the exam, and resources to help you succeed. ### What will you learn from the HashiCorp Terraform Associate Certification Exam? The HashiCorp Terraform Associate Certification tests your knowledge in 9 key areas: 1. Understand infrastructure as code (IaC) concepts 2. Understand the purpose of Terraform (vs other IaC) 3. Understand Terraform basics 4. Use Terraform outside of the core workflow 5. Interact with Terraform modules 6. Use the core Terraform workflow 7. Implement and maintain state 8. Read, generate and modify the configuration 9. Understand Terraform Cloud capabilities It is worth checking the [official exam guide](https://www.hashicorp.com/certification/terraform-associate?ref=techielass.com) for the types of things you will be required to know under each of those key areas. When I am studying for an exam I like to print out the areas of objectives and score out the areas I already know or am confident in. Whatever is left afterwards forms the start of my study plan. 💡 **You might be interested in my book "Terraform for Ops", a guide to Terraform for SysAdmins. You can find out more information here* [**https://www.terraformforops.com*](https://www.terraformforops.com/?ref=techielass.com) ### Format of HashiCorp Terraform Associate Exam The exam is an online proctored exam, and the exam provider is PSI. The exam is made up of multiple-choice questions and you are allocated an hour to complete the exam. The price at the time of writing the exam is USD 70.50, and no free retakes are included within that price. On successful completion of the exam, you will receive a digital badge from Credly that you can use in your email signature, digital resumes, or social media. The badges link back to a real-time verification that describes your qualifications. Your certification will be valid for 2 years. Six months before your certification expiry date you will be able to renew your qualification by re-sitting the Terraform Associate exam. ### How to prepare for HashiCorp Terraform Associate Certification? With any technology, I always recommend getting hands-on experience as part of your learning journey. You don’t necessarily need to be using Terraform within a production environment to get hands-on experience. There are several free products and cloud providers you can access to get “real life” experience of using it to deploy and manage your infrastructure. To help you on your learning journey here are some great resources that can help you: - [Terraform in 10 minutes](https://youtu.be/h6rkauDhDUM?ref=techielass.com) \- I've created a video which covers off Terraform in 10minutes. A great starter video if you are new to Terraform completely. - [13-hour Terraform Associate Certification course video](https://youtu.be/V4waklkBC38?ref=techielass.com): This free video was created in 2021 to help people pass the Terraform Associate certification. Andrew Brown walks people through various key points that will be covered within the exam. It may be a little out of date now there is a new version of the exam, however, the core topics are still the same. Andrew has some follow on demos using AWS throughout the video. - [Learn Terraform with Azure](https://youtu.be/V53AHWun17s?ref=techielass.com) \- This video by [freecodecamp.org](https://www.freecodecamp.org/?ref=techielass.com) walks you through some basics of Terraform and has you deploying resources within Azure. - [Official Hashicorp Studio Guide](https://developer.hashicorp.com/terraform/tutorials/certification-003/associate-study-003?ref=techielass.com) \- Hashicorp have created a study guide that will help you navigate their documentation against the exam objectives. - [WhizLab Practice Tests](https://www.whizlabs.com/hashicorp-certified-terraform-associate/?ref=techielass.com) \- You can buy some practice tests from WhizLabs. These are great milestone checkers, you can work through a practice test they have designed and check where your learning is. I personally love using practice tests to check what knowledge I have retained from my studying and discover the areas where my knowledge needs some attention. ### Summary Whether you have used Terraform before or you are starting from scratch the Terraform Associate Certification is a good challenge. One thing to remember is Terraform is cloud agnostic so my recommendation would be to stick with the cloud provider you are familiar with. The code works the same across all platforms so there is no need to go and learn a new cloud provider’s technology to pass this exam. ### Jabra Speak2 75 review URL: https://www.techielass.com/jabra-speak2-75-review/ Last updated: 2025-08-27T09:48:56.000Z The [Jabra Speak2 75](https://amzn.to/4oWnlCs?ref=techielass.com) is a portable speakerphone device for conference calls and other audio meetings. It is designed to be easy to use and offers high-quality audio and a range of features that make it a valuable tool for remote workers and teams. It is a compact and portable device that connects to computers, smartphones, and tablets via Bluetooth or USB. It has a built-in omnidirectional microphone that can capture sound from any direction and cancel out background noise. Additionally, the device features high-quality speakers that produce clear and crisp audio output. It also supports integration with popular communication software, such as Microsoft Teams, Zoom, and Skype, making it a versatile option for remote workers and teams. In this article I’ll walk through what you get when you buy the Jabra Speak2 75, the sound & microphone quality, and my daily use experience of the device. ## What’s Included in the Box? It’s quite a packed box full of goodies: - The speakerphone. - Link 380 Bluetooth adapter. - USB-C cable for connection and charging. It also has a USB-A adapter in case you don’t have a USB-C connection. - Carry pouch ## Microphone & Sound Quality One of the features of the Jabra Speak2 75 is the microphone quality indicator. A 360˚ LED ring is built into the device, giving you a visual guide on how well the microphones pick up voices. A ring LED glows means the voices are being picked up properly, but an orange ring or even a flashing light indicates the voice pick-up is poor. This feature will avoid you from having to ask folk on the other end of the call, “*Can you hear me? Do I need to move the microphone?*” The sound quality of the speaker is full of life. Voices from my colleagues and peers don’t sound dull, it’s a very rich sound. The Jabra Speak2 75 provides advanced full duplex audio, with a supercharged chipset, which for the end user means you can have a naturally flowing conversation with people. This speakerphone allows people to speak and be heard at the same time, but with the Jabra Speak2 75 this is possible ## Daily Usage Experiences I’ve really enjoyed using the Jabra Speak2 75 as my daily driver. It’s sat connected to my laptop for several weeks now. The sound quality of the speaker is superb. Listening to music or listening to colleagues talk has been impressive. Regular readers will know how much I enjoy [Jabra’s](https://www.techielass.com/tag/jabra) products, but this one for speaker quality has blown me away. I was not expecting such a versatile top-notch speaker. My home office isn’t large, but the speaker has been great at picking up my voice whether I’ve been sitting at my desk or maybe walking around. Using the speaker in a meeting room was impressive as well. Whether the room was small or large it was able to provide a good level of volume for me to hear. And picking up my voice was still consistent and high quality. The carry pouch is a must-have accessory for when you are travelling, slipping the speakerphone into the carry pouch protects it in your backpack. Weighing around 466g the speakerphone isn’t that heavy or noticeable. The speakerphone has touch screen-style buttons on the hardware, ones to increase volume, decrease it, answer calls, decline calls, and most important, mute or unmute. I’ve loved having this feature, it’s enabled me to keep my hands off my keyboard and mouse during meetings and use the Jabra Speak2 75 instead for those controls. Making me more present within meetings and less likely to try and multitask. The battery life has an impressive 32-hour battery, which I’ve found reliable, plus charging is easy with the built-in cable and fast. Another button on the speakerphone itself allows you to check how much battery is left, or not. I also read that the Jabra Speak2 75 rated IP64 for dust and water resistance so I look forward to the summer and being able to have calls outside and not have to worry. ## Price The [Jabra Speak2 75](https://www.stylink.it/e7YnziQYxr9?ref=techielass.com) is on the expensive side, currently retailing at £378 in the UK direct from Jabra. But it’s a versatile device. It can be used on your desk at home. It can be used in meeting rooms with multiple participants. It can be a speaker to listen to music with. As with anything, if you are going to use it then it is worth the money. ## Verdict I really like this speakerphone. My [Jabra Evolve2 75](https://www.techielass.com/jabra-evolve2-75-review/) headphones are usually my go when working at home, but the Jabra Speak2 75 has now overtaken as my favourite device both at home and when in the office. It’s very versatile, easy to set up and easy to use. I’d recommend this without hesitation. Another quality device from Jabra! ### Weekly Azure Updates URL: https://www.techielass.com/weekly-azure-updates/ Last updated: 2023-05-05T08:30:43.000Z Back in August 2019 I took the plunge and started creating videos on [YouTube](https://youtube.com/techielass?ref=techielass.com). It was a start of a weekly journey, where I would create a video each week sharing interesting Azure news and wider tech news. I’d never really spoke to a camera before and wasn’t skilled in editing and how to be a “YouTuber”. Once I started doing the weekly videos I started to branch out into creating other videos, [Azure at a Glance](https://www.youtube.com/playlist?list=PLbjernQTVXitO%5FwuiRiD06Aq3GhRCbXaN&ref=techielass.com), [Tutorial videos](https://www.youtube.com/playlist?list=PLbjernQTVXisvCwxOdim%5FcDgQ1Nx1ykl-&ref=techielass.com), and much more. The weekly videos, great arms and legs. I started turning the videos into podcasts and writing a blog post each week as well. It became a large part of my week. This was all until December 2021, when I started to fall out of love with the whole process and really didn't see the value in it. I continued to post other videos on my channel and enjoyed that much more. However, with my job role change I am back to trying to keep up to date with the Azure news much more and want to have an outlet for sharing what I am learning about. So it's time for a **comeback**! I am bringing the weekly updates back to see how they play out with the audience... The first one is out today, and is available in video and podcast format from a variety of sources: \- [YouTube](https://youtu.be/nyDywWs7s9Q?ref=techielass.com) \- [Spotify](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) \- [Apple Podcast](https://podcasts.apple.com/us/podcast/talking-tech-with-techielass/id1506712194?uo=4&ref=techielass.com) \- [Google Podcasts](https://podcasts.google.com/feed/aHR0cHM6Ly9hbmNob3IuZm0vcy8xYjM2ZDgxYy9wb2RjYXN0L3Jzcw==?ref=techielass.com) \- [Amazon Music](https://music.amazon.co.uk/podcasts/39b95751-3f87-4593-a3a4-3c51654cd1ed/talking-tech-with-techielass?ref=techielass.com) Would love to have you join me and support my new(?) project! ### Introduction to DORA Metrics URL: https://www.techielass.com/introduction-to-dora-metrics/ Last updated: 2023-05-02T07:01:17.000Z The [DevOps Research and Assessment (DORA)](https://www.devops-research.com/research.html?ref=techielass.com) team at Google spent six years researching the key metrics that would indicate the performance of a software development team. The working group analysed different DevOps implementations. They wanted to establish and understand the most efficient ways of building and delivering software. The outcome of that research was five key metrics that offer a standardised view that the DevOps team can use to measure success: - Deployment Frequency - Lead Time for Changes - Change Failure Rate - Time to Restore Service - Reliability This article will teach you the five DORA metrics, their benefits, and their challenges. You’ll also learn how to apply best practices when working with the metrics. ## The Five DORA Metrics The DORA metrics focus on the measurements of DevOps throughput and reliability. Together they can let you and your team understand the reliability of your deployments and how quickly you are shipping code to production. Ideally, the best teams are the ones releasing code frequently while maintaining a low rate of failure. ### Deployment frequency Deployment frequency looks at how often you deliver new code into production. It’s a simple measurement of the number of deployments that have reached your end users during a certain period. The objective of DevOps is to increase engineering throughput whilst maintaining high quality. Having a high deployment rate means you are responding to problems more efficiently. When a bug is reported or discovered, you want to send code changes to resolve it quickly. For organisations having a high deployment frequency can be beneficial. It means you can respond quickly to problems or bugs that arise. Your deployment frequency will depend on the application you are building. If you have a large monolith application, you may need to take a different approach to deployments than if you are working with APIs or microservices, where deployment is almost always continuous. ### Lead time for changes The lead time for changes measures the average time required to deliver a revision to your end users. This is the time between the code being committed and deployed to production. You can use your version control and Continuous Integration (CI) software to measure the lead time. To do this, take note of the time the code was committed. Then note the deployment time; the difference between the two times gives you the change’s lead time. Not all changes are the same. And the scope of the work involved for specific changes can affect the change’s lead time. This is why teams are encouraged to break changes into smaller tasks by following the DevOps principle. Keeping each item to a similar size helps to increase this metric’s reliability. If you occasionally have larger changes within your rotation, it can skew the metric and make it unreliable. ### Change failure rate The change failure rate metric measures the percentage of production deployments that have caused an incident. This metric can be a good indicator of the quality of your software. If teams have a high change failure rate, they frequently ship broken or unreliable code. Customers will only tolerate this for a short time and could drive them away from the product. To calculate the change failure rate for your team, you need to collect two values: - The number of production deployments started within a certain period - The number of deployments that caused a bug, outage, or performance issues Any failures must be accurately marked against the deployments that caused them. ### Mean time to recover This metric is related to how effectively your team responds to service outages. It’s a generally accepted concept that the change failure rate will never be 0%. All services will encounter an issue at some point. The mean time to recover metric measures the time that elapses between an incident starting and normal service resuming. Your incident management system can help you collect the data required for this metric. Your incident management system should record when the incident is reported and record a service restoration time. There is no denying that downtime is expensive. In 2016 the [Poneman Institute](https://www.vertiv.com/globalassets/documents/reports/2016-cost-of-data-center-outages-11-11%5F51190%5F1.pdf?ref=techielass.com) carried out a study that said the average cost of downtime is $9,000 per minute. So being able to recover quickly from an incident is desirable. ### Reliability The fifth metric was added in 2021; this metric is used to assess operational performance. It helps you to measure the success of your operational processes, or not. Reliability is a broad measure that includes things such as availability, latency, performance and scalability. ## The benefits of DORA Metrics If a DevOps team is not collecting data, it can be hard to measure performance. It is also hard to understand where improvements can be made. Using DORA metrics, a team can break down the abstract layers of DevOps and show engineering leaders what areas can be improved upon. Using the information from the DORA metrics means teams and their leaders know what areas to improve upon. A streamlined and efficient software development process will benefit the organisation overall. When people or teams are measured, they can feel responsible for the metric. This can skew the results in specific scenarios, but ultimately it can help to eradicate inefficient processes. ## Challenges of DORA Metrics While DORA metrics are a great way to measure DevOps teams, using the metrics can bring its own challenges. The five DORA metrics can be a great starting point for organisations, but there is no one size fits all to measure performance. Teams and applications will differ, so applying the metrics without some customisation are not always practical. Collecting data to measure the DORA metrics correctly may take work. Data may be incorrectly labelled, especially when we look at the mean time to recover metric. Outage times may not be correctly recorded, or the outage cause may not be correctly identified. Again this is something that leadership needs to view and understand, so they are not skewing metrics incorrectly. Your teams' maturity and DevOps practices also need to be considered. If you only have one person and don’t have a [CI/CD tool](https://www.techielass.com/ci-cd-pipeline-tools/) in place, then it might not be the best use of time or metrics to implement DORA. Whenever you measure something, you can end up obsessing. If your team is constantly getting code into production and there are new significant issues on deployment, obsessing over the metrics isn’t helpful. It will probably be detrimental. Stay on top of the metrics, but don’t obsess about them. ## Best practices for measuring DORA Metrics Once you implement DORA metrics into your team’s processes, you should continue to review them. They aren’t a measure once and forget. Be willing to learn and improve from the insights the data gives you. Over time the hope is you’ll see gradual improvements in all four areas that the metrics cover. Several of the metrics rely on data being captured. Ensure your systems or others within the IT department can capture the data you need. For example, to measure the lead time for changes, you must ensure your source control system captures the time that code is committed. Look into tooling that can help you measure the metrics. Tools like [Sleuth](http://www.sleuth.io/?ref=techielass.com) have been engineered to help teams track and improve their processes using the DORA metrics. It is also worth investigating if your existing tooling has support for surfacing DORA metrics. [GitLab has an API](https://docs.gitlab.com/ee/api/dora/metrics.html?ref=techielass.com) that can be used to extract DORA metric information. ## Conclusion The five DORA metrics are standardised measurements that can reveal how quickly you are iterating. The quality of your deployments and how well you are responding to outages. Teams and engineering leads who regularly review their DORA metrics can make informed decisions on improving performance. And after changes have been made, they can use the metrics again to see if things have improved or if further adjustments are required. ### Azure Service Principals and Azure Managed Identities URL: https://www.techielass.com/azure-service-principals-and-azure-managed-identities/ Last updated: 2023-05-05T08:58:39.000Z Keeping credentials safe and secure is always a priority. It can be a challenge in the cloud where you are dealing with applications and virtual machines, and their requirements can differ. I will discuss Azure Managed Identities and Service Principals in this article and try to answer the question Managed Identities vs Service Principals. ### What are Azure Service Principals? Azure Service Principals are security identity objects for use with applications, services and tools that need access to resources within an Azure tenant. Service principles are typically used when a service or application needs access to [Azure](https://www.techielass.com/tag/azure/) resources without requiring user interactions. If you come from an on-prem world, Service Principals stop you from having to create a “fake” user within your Active Directory environment for a service. Service Principals can be created and managed using Azure portal, [Azure CLI](https://learn.microsoft.com/cli/azure/?ref=techielass.com), Azure PowerShell, or Azure SDKs. An audit trail with Service Principals shows access attempts and activity, which can help you meet compliance and regulatory requirements. ### What are Azure Managed Identities? Azure Managed Identities are very similar to Azure Service Principals, but they remove any need for you to create and manage a Service Principal. Azure Managed Identities are created automatically for you. There are two types of Managed Identities, system-assigned managed identity and user-assigned managed identity. **System-assigned managed identity** System-assigned managed identities are tied to a specific Azure resource. When a system-assigned managed identity is enabled for a resource, Azure creates a unique identity for that resource in the Azure AD tenant associated with the subscription. This identity can then be used to authenticate and authorize access to other Azure resources, such as Azure Key Vault, Azure Storage, or Azure SQL Database. If you delete the Azure resource the system-assigned managed identity is tied to it will also be deleted. **User-assigned managed identity** A user-assigned managed identity is created by an Azure administrator and assigned to one or more Azure resources that require authentication and authorization. They are often used in scenarios where a single identity needs to access multiple resources across multiple subscriptions, or when multiple applications or services need to access the same set of resources. User-assigned managed identities can be created and managed separately from any Azure resources that use them, they can be deleted or updated without impacting any of the resources that use them. ### Service Principal vs Managed Identities Azure Service Principals and Azure Managed Identities are both used for managing authentication and authorization in Azure, but they differ in their implementation and use cases. By leveraging the power of Azure Managed Identities and Service Principals, you can simplify your identity management, reduce the risk of compromised credentials, and improve your Azure resources' security. So, whether you're building a small application or managing a large enterprise, Azure Managed Identities and Service Principals are powerful tools that can help you achieve your goals. ### Bulk edit Azure DevOps work items using Excel URL: https://www.techielass.com/bulk-edit-azure-devops-work-items-using-excel/ Last updated: 2023-04-18T07:01:55.000Z There are times when you need to do bulk edits of work items within [Azure DevOps Boards](https://www.techielass.com/what-are-azure-devops-boards). Excel supports adding work items, updating existing work items, adding links or attachments to multiple work items and much more. ### Prerequisites - Install Microsoft Excel 2010 or later - Install [Azure DevOps Office Integration 2019 (free)](https://visualstudio.microsoft.com/downloads/?ref=techielass.com#other-family) - Be a member of the project you want to edit - You should have permissions set to **Allow: View work items in this node** and **Edit work items in this node** - If you want to add or modify work items, you should have **Stakeholder access or high** ### Setup Once you have all the necessary prerequisites set up, it’s time to get started. - Open up Excel - Click on Team on the top menu ![Azure DevOps plug in Excel](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/04/excelplugin.png) Azure DevOps plug in Excel You will see a lot of options greyed out. You need to connect the Excel plugin to your Azure DevOps environment. - Click on New List - This will activate a pop up box asking to Connect to an Azure DevOps Server. - Click on Servers - Now click on Add - Enter the URL of your Azure DevOps server - Then click OK - It will prompt you for authentication to the Azure DevOps server - Now click on Close ![Connect to Azure DevOps within Excel](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/04/connectionsetup.png) Connect to Azure DevOps within Excel - The plugin will now pull in information about your Team Projects ### Make bulk changes ![Azure DevOps connection within Excel](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/04/connection-1.png) Azure DevOps connection within Excel - Select the relevant project and click on Connect - You will be prompted regarding which items you want to pull from Azure DevOps Boards into Excel. You can either start a new list or pull in items from a query - You can now start to make the modifications that you need to make - Once you have made the changes you need, click on Publish within the Team tab - If you refresh your Azure DevOps Boards view the changes you have made will now be available ### Conclusion In conclusion, bulk editing Azure DevOps items using Excel can save everyone significant amounts of time and effort. By exporting the work items into an Excel sheet, users can quickly make changes to multiple items at once, and then easily import the changes back into Azure DevOps. This feature is especially helpful for larger projects with numerous work items that require frequent updates. ### What are Azure DevOps Boards? URL: https://www.techielass.com/what-are-azure-devops-boards/ Last updated: 2023-06-02T08:21:22.000Z Azure DevOps Boards are a part of [Azure DevOps](http://dev.azure.com/?ref=techielass.com). The Boards part of the service is a tool that allows you to plan track and organize your work. It is an interactive tool that allows you to customize it and provides you with a rich set of data so that you can get on with your day-to-day tasks and also provide any reporting back to your management team. It can support Scrum and Kanban management techniques, calendar views, and configurable dashboards. Check out the video I have created walking you through an example of Azure DevOps boards in use: What are Azure DevOps Boards video ### Features of Azure DevOps Boards - Azure DevOps Boards is scalable and can grow as your management of your projects tasks and workload grows. - Because it is both interactive and customisable you can set it up to display the information that is most important to you and makes the most sense to you. - There are Marketplace extensions that can be installed to add enhancements to the existing features that are there. ### How to use Azure DevOps Boards There are various parts of [Azure DevOps Boards](https://azure.microsoft.com/products/devops/boards/?ref=techielass.com) that make it a powerful project management tool to help manage your development projects efficiently. Here are some steps on how to get started using them: - **Create a project**: You can create a new project for each development project your teams are working on. - **Create a board**: Once you have a project you can create one board or several boards. Each board could represent a different aspect of your project. - **Create work items**: Work items are the core building blocks of Azure DevOps Boards. You can create different types of work items, such as user stories, bugs, tasks, and epics. You can assign these work items to team members and set the priority level and state of each item. - **Analyse your data**: Built into Azure DevOps Boards is the capability to analyse how the project is progressing. You can integrate data on team performance, identify bottlenecks and make data drive decisions. ### Best practices for using Azure DevOps Boards Azure DevOps Boards is a powerful tool for project management and collaboration, but to get the most out of it there are some best practices. - **Define a clear board structure**: It’s important to define a structure for the board at the start of your project. Each project will have different needs so it’s important to create the correct amount of columns, swim lanes and tags to help manage your project. - **Assign work items and track progress**: Regularly review work items and make sure the board is kept up to date. Each team member should have a clear understanding of the task they have assigned to them. - **Encourage collaboration**: Ensure that there is good collaboration and communication with all the team members. Encourage the use of comments, and share progress with each other. - **Use automation**: You can automate certain tasks within Azure DevOps, such as moving items to the next stage of the workflow. Take advantage of the automation capabilities where possible to help save time and reduce the risk of errors. ### Conclusion Azure DevOps Boards is a powerful project management tool you can use to help manage your development projects. With Azure DevOps Boards you can create different types of work items, assign them to team members and track their progress. You can customise the board to fit your team’s workflow and needs. And you can use data-driven information from the built in analytics. ### Azure Nested Virtualization - Internet Connection URL: https://www.techielass.com/azure-nested-virtualization-internet-connection/ Last updated: 2024-06-10T07:34:10.000Z Building a lab environment to simulate certain scenarios or get hands-on experience with technology can be really useful. Years ago we used to invest in physical lab environments for home use, but these days you can use Azure as that lab environment. And with nested virtualization capabilities building a Hyper-V lab is feasible. Below I walk you through the process of setting up the networking within your Azure virtual machine for that nested virtualisation scenario. ## Requirements: - Windows Server 2022 build 20348 or later - Enabled Hyper-V Role - PowerShell ## Setup Hyper-V NAT Switch The first step is to create a new Hyper-V virtual switch. The virtual switch allows virtual machines created on Hyper-V hosts to communicate with other computers. The following PowerShell command will create the virtual switch. ```powershell New-VMSwitch –SwitchName “NATSwitch” –SwitchType Internal ``` Now we have the virtual switch set up we need to configure the virtual network adapter. The virtual network adapter enables communications between virtual machines through the virtual switch. The following PowerShell command will set up the virtual network adapter. ```powershell New-NetIPAddress –IPAddress 192.168.0.1 -PrefixLength 24 -InterfaceAlias "vEthernet (NATSwitch)" ``` The next step is to create the Network Address Translation (NAT) on our switch. The NAT translates an internal network address to an external network address. Allowing the networking inside our Hyper-V setup to communicate with the external world. We use the following PowerShell command to create the NAT: ```powershell New-NetNat –Name NATNetwork –InternalIPInterfaceAddressPrefix 192.168.0.0/24 ``` ## Configure virtual machines Now that you have the networking set up with your host machine you can configure the networking inside your virtual machines. You can set your virtual machines with an address in the range 192.168.0.1-192.168.0.254\. Here is an example of what one of my virtual machines IP configuration looks like: ![IP configuration example](https://lh6.googleusercontent.com/YmhhsCYdDDGHoW_tIOZ2OY6T-I4LcTRSW91IN5qgtMYkJxqQYDX0c6zPZ2VYAezup_tszYZIb9Li2nuN28Y4bwesx3NAkfRv3NSBnGMSpuZeYlVl3IOmhGfASc015G01IMl_ZNCrIiLNAp4FUhS1TA) IP configuration example For the DNS servers, depending on what my virtual machines are doing I either use the Google DNS servers or I use the Active Directory DNS server I have set up for the lab. If you are looking for a “ready made” lab you can deploy within Azure, please do check out my ["Deploy a lab inside an Azure VM"](https://www.techielass.com/lab-deployment-in-azure/) blog post. ### Windows Admin Center in Azure URL: https://www.techielass.com/windows-admin-centre-in-azure/ Last updated: 2023-03-14T08:19:21.000Z Windows Admin Center was announced at Microsoft Ignite 2021 and went generally available in [October 2022](https://azure.microsoft.com/updates/windows-admin-center-for-azure-virtual-machines/?ref=techielass.com). With [Windows Admin Center](https://youtu.be/5L0lxBxy1fI?ref=techielass.com) built into the Azure Portal, administrators can more granularly manage Windows Server virtual machines (VM). Manage server files and certificates, and view events. ## Windows Admin Center in Azure Requirements To be able to install the Windows Admin Center extension on your Azure VM, you need to have either **Owner** or **Contributor** rights within Azure. Connecting to Windows Admin Center requires **Reader** or **Windows Admin Center Administrator Login** rights at the virtual machine level. The Windows Admin Center extension must also be installed on each Azure VM you wish to manage. Your Azure VM must reside in an Azure public cloud region - Windows Admin Center is not supported in Azure China, Azure Government or other non-public clouds. There are also some requirements around Azure VM configuration: - Windows Server 2016, Windows Server 2019 or Windows Server 2022 - At least 3 GiB of memory - Outbound internet access or an outbound port rule that allows HTTPS traffic to the *WindowsAdminCenter* and *AzureActiveDirectory* service tags It is possible to connect to your Azure VM through public IP addresses, but as with Remote Desktop, the recommendation is to use a private IP address to increase security. On the machine you are using to connect to the Azure Portal, you need to use Microsoft Edge or Google Chrome. And will need to be on the same network as the Azure VM if there isn’t a public IP to connect to. ## Windows Admin Center in Azure Use Case Why would you use Windows Admin Center inside Azure? - Single management console. It’s a cliché, but not having to open another window and not having to use another tool can save so much time. - Reduces the reliance on having local administrator accounts or rights within the virtual machine. Permissions can be managed at the Azure level. ## How to Set Up Windows Admin Center in the Azure Portal I’m going to walk through setting up Windows Admin Center on an Azure VM with a public IP, and the process will be similar for those with a private IP, but there will also be some differences. - In the Azure Portal, head to your virtual machines - In the list of VMs, click on the VM you want to manage using Windows Admin Center - On the **Overview** page, ensure that your VM is running - Under **Settings**, click **Windows Admin Center** ![Azure Virtual Machine Blade](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/03/wac-portal-2.jpg) Azure Virtual Machine Blade - The Windows Admin Center blade will now be visible; click on **Open this port for me (Recommended for testing only)** - Now click on **Install** Windows Admin Centre can take up to 5 minutes to install for your VM. When it is finished, you will see a completed notification in the top right-hand corner of the Azure Portal. You can automate the installation of the Windows Admin Center extension when you deploy your Azure VM. There is [support](https://learn.microsoft.com/windows-server/manage/windows-admin-center/azure/manage-vm?ref=techielass.com#automate-windows-admin-center-deployment-using-an-arm-template) inside an ARM template to do this. ## Connect to WAC in the Azure Portal With Windows Admin Center set up within your Azure VM, it’s time to try it out. - Within your Azure VM under **Settings** click on **Windows Admin Center** - When the blade load, select the **IP address** you wish to connect through; in this case, I am going to use the Public IPand click on **Connect** - Once the console has loaded, you are authenticated to the machine and start configuring or managing the Azure VM ![Windows Admin Center in Azure](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/03/wacinazure.jpg) Windows Admin Center in Azure I’m a big fan of Windows Admin Center and love the flexibility and functionality it gives you to manage your Windows Servers, be sure to check it out, either within Azure or for your on-prem servers. ### I am a Linkedin Learning Instructor! URL: https://www.techielass.com/i-am-a-linkedin-learning-instructor/ Last updated: 2025-06-06T09:45:39.000Z 💡 ****TL;DR** In January I released a course on LinkedIn Learning entitled "IT Service Desk Careers and Certifications". **[IT service desk careers and certifications](https://www.linkedin.com/learning/it-service-desk-careers-and-certifications/it-service-desk-careers-and-certifications?trk=embed%5Flil&ref=techielass.com)** from **[IT Service Desk Careers and Certifications](https://www.linkedin.com/learning/it-service-desk-careers-and-certifications?trk=embed%5Flil&ref=techielass.com)** by **[Sarah Lean](https://www.linkedin.com/learning/instructors/sarah-lean?trk=embed%5Flil&ref=techielass.com)** Last year I was approached by the team at LinkedIn Learning. They asked me if I wanted to write a training course for their platform. I was flattered. After chatting with the team, I had a couple of options: write a new course or revamp an existing one. After considering both options, I choose to revamp an existing course. The course I would be updating would be one covering the role of the IT Service Desk. Choosing this option was an excellent option for me because I started my career at the IT Service Desk and believe starting your IT career on the Service Desk is a great place. ### Course Creation: Step One Now that I had selected my course, I got to work. The first stage was to create the table of contents. I had a spreadsheet to fill in with the name of the chapters for my course and assigned a description and learning goal to each chapter. This was fairly straightforward. I had the previous course to use a template (although I didn’t copy it!). The LinkedIn team had some great insights from the other courses I could use and feed into what my course would look like. ### Approval: Step Two With the table of contents completed, it got sent back to the LinkedIn team for approval. From what I understand, this is a formality in most cases. However, it can result in some iterations to your course outline. ### Getting Started: Step Three With my course approved, it was time to start writing the scripts. Each chapter of my course had to have a script; this was for two reasons: - I was working with an editor/producer, they checked each script to ensure it made sense and covered the learning goals for the course; - It would make recording much easier and quicker. As part of creating the script, I made some slides that could be shown during the course. My course isn’t a technical one with demos or hands-on parts. It’s a knowledge-sharing course, so it was important to have that visual aid for people. The LinkedIn Learning team was great with helping to jazz up my slides and make them more effective and visually appealing. My producer was also great at picking up parts of my scripts that weren’t quite right and adjusting them or suggesting edits for me. ### Recording: Step Four With the scripts all written, it was time to get recording. I had to record my voice and also the slides. LinkedIn provided me with a microphone and also the software I needed. They also provided instructions and assistance in getting things set up; it was a straightforward process. There were specific scripts that I managed to read out and record all in one go. Other times it took quite a few tries to get the recording done. But as I am used to public speaking and recording videos, it was a familiar process for me and nothing onerous at all. ### Editing: Step Five All my recordings were sent to the LinkedIn Learning team, which carried out all the edits. I didn’t have to do any of that. So I could relax. ### Course Release: Step Six Several months after recording, my course was released! (We had the Christmas break in between recording and release, so that slightly delayed things.) It was a really proud moment to have the course released, although it was also an anxious time as I was now worried people wouldn’t enjoy it. The course has been out for nearly two months now, and people seem to be engaging with it well and enjoying it. Many people have tagged me on LinkedIn to say they have completed and enjoyed the course. 💡 Meet the unicorn behind the brand! 🦄 Curious why it's my mascot? Find out here 👉 [Read more](https://www.techielass.com/saz-the-unicorn/) ### The Course **[IT service desk careers and certifications](https://www.linkedin.com/learning/it-service-desk-careers-and-certifications/it-service-desk-careers-and-certifications?trk=embed%5Flil&ref=techielass.com)** from **[IT Service Desk Careers and Certifications](https://www.linkedin.com/learning/it-service-desk-careers-and-certifications?trk=embed%5Flil&ref=techielass.com)** by **[Sarah Lean](https://www.linkedin.com/learning/instructors/sarah-lean?trk=embed%5Flil&ref=techielass.com)** I am proud of the course and think it’s an excellent place for people to go to and learn about the IT Service Desk. The course is split into six sections: - **The IT Service Desk**: this covers what the IT Service Desk is and does. - **IT Service Desk Technical Skills:** This section covers the technical skills you need to develop while working on the IT Service Desk. - **IT Service Desk Nontechnical skills:** It’s not all about technology; other skills are needed while working in the IT Department. - **IT Service Desk Certifications:** This covers certifications and training courses that are helpful when developing your career. - **IT Service Desk Paths:** This section explores more about what your career path could look like working in the IT department. - **IT Service Desk Workplace Scenarios:** Here I talk about what it’s like to work on the IT Service Desk when everyone is in the office, what it’s like when people aren’t, and the challenges that comes with it. Do check out the [course](https://www.linkedin.com/learning-login/share?forceAccount=false&redirect=https%3A%2F%2Fwww.linkedin.com%2Flearning%2Fit-service-desk-careers-and-certifications%3Ftrk%3Dshare%5Fent%5Furl%26shareId%3Dx06J8aRURi2hLH%252FsQfX5hQ%253D%253D&ref=techielass.com), folks, and share it with anyone you think might benefit from it! And if you have any questions about becoming a LinkedIn Learning Instructor, please contact me. ### Jabra Evolve2 Buds Review URL: https://www.techielass.com/jabra-evolve2-buds-review/ Last updated: 2024-10-23T14:58:53.000Z The Jabra Evolve2 Buds are the latest edition in Jabra’s truly wireless headset range. Like most of Jabra’s range they are aimed at the professional market, being certified for use with Microsoft Teams, Zoom and Google Meet. They are designed with the hybrid working environment most of us find ourselves in. Often based in the same location office wise, but with some travel involved. My go-to headset since early 2022 has been the [Jabra Evolve2 75](https://www.techielass.com/jabra-evolve2-75-review/). But now I am commuting to different offices, they are a bit cumbersome to throw in my backpack. The Jabra Evolve2 Buds offer great quality when connecting either to my laptop or mobile phone and can easily fit inside my jacket pocket. When I jump on the train I can connect to my phone with the buds, listen to music or a podcast and then when I get into the office they seamlessly connect to my laptop. Either using Bluetooth or the dedicated dongle that is connected to my laptop. ## What’s in the box In the box you get the earbuds, the carry/charging case, a small charging cable and different sized tips for the earbuds depending on your ear shape or size. The carry case can hold the earbuds and the dongle for your laptop as well. It’s not just a carry case though. It also acts as a charging case. The case itself will hold a charge, meaning you don’t always have to be near a plug to charge your buds. They will charge from the case. ![Jabra Evolve2 Buds](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/02/evolvebuds.png) Jabra Evolve2 Buds ## Features The Jabra Evolve2 buds come in a couple of configurations. You can pick your dongle preference, you can either have USB-A or USB-C. Handy in this model world where things seem to be changing towards USB-C only. You also have the option to optimise for either Microsoft Teams connectivity or Unified Communications depending on what platform you use most. Jabra advertises that the earbuds have a battery life of 8 hours and the charging case has a battery life of 33 hours. I’ve been fortunate enough not to have had an 8 hour long meeting, so haven’t fully tested that claim out. I’ve found I only need to plug the charging case into the power socket once a week to make sure I never run low on battery. And charging is quick, even a 5 minute charge can give you a significant boost. The earbuds have an IP57 rating. Which means they are highly resistant to dust. And you can submerge them in water at a depth of up to a metre for 30 minutes without issue. Just remember to dry them off before putting them back in your case! This makes the earbuds quite a versatile option for the hybrid worker. While using the buds you can use push-button capability to interact with what you are using/listening to. By default, the left earbud can do the following for you: - A single press handles playback. - A double press skips forward. - A triple press goes to the previous track. - A three second hold will activate your device's voice assistant. With the right earbud you can do the following: - A single press answers incoming calls, or mutes your microphone, or opens Microsoft teams, depending on the context you are in. - A double press ends or rejects a call. It can also toggle between noise cancellation mode or transparency mode. You can use the Jabra app to modify these button presses to match how you want them to behave. ## Comfort Everyone’s head and ears are different. A headset or earbuds that might suit one person might not always suit another but I’ve found this really comfortable. ![Jabra Evolve2 Buds](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/02/evolvebuds2-1.png) Jabra Evolve2 Buds They’ve sat in my ear while sitting at my desk easily and don’t feel uncomfortable. I’ve worn them out on walks or commuting and they’ve stayed in my ear quite easily and not caused any hassle. As I said earlier, in the box you get different tips for the earbuds which will hopefully make them adapt to your ears and give you that comfortable fit. ## Noise Cancellation I’ve seen reviews of people saying that noise cancellation is poor on the earbuds and there are better wireless headsets available. For me noise cancellation hasn’t been an issue. When I had decorators in the house they had the radio on and were moving about. I couldn’t hear them through my headset and the people at my meetings didn’t pick up their noise either. I’ve also used them for commuting and they’ve suited my needs for noise cancellation. I’ve quite easily been able to concentrate on the podcast I’ve been listening to. ## Hybrid Worker Compatible For me the Jabra Evolve2 buds are a great choice for the hybrid worker. They hit the high level of quality we’ve all come to know and love from the Jabra brand. They are great when sitting at your desk working but also when you are travelling they are lightweight, compact and great for listening to music or working on the go. ### Purchase Information You can purchase the Teams Certified [USB-A version of the buds from Amazon UK](https://www.stylink.it/ozx2RfRZzZL?ref=techielass.com) for £214.99. The Teams Certified [USB-C version of the buds](https://www.stylink.it/ry1b9iQl3l4?ref=techielass.com) are £219.00 from Amazon UK. 💡 **Disclaimer: I was given these earbuds to review, but I was free to express my opinion.* ### Veeam Vanguard 2023 URL: https://www.techielass.com/veeam-vanguard-2023/ Last updated: 2023-12-18T09:09:42.000Z Today I received a great email, I have been accepted into the [Veeam Vanguard program](https://www.veeam.com/vanguard.html?ref=techielass.com)! 💡 The Veeam Vanguard Program is Veeam’s top-level influencer community. This group shares points of view, provides feedback and is committed to mutual success. Experts in the Vanguard program are a combination of many different disciplines, contribution types and advocacy mechanisms yet are each the best in space regarding technical thought leadership for the technical communities in which Veeam exist. It truly is a great honour to be accepted into this program, it's one I've long admired. I look forward to onboarding into the program and continuing the community work in the correct spirit. ### Understanding Azure Savings Plans for Compute URL: https://www.techielass.com/understanding-azure-savings-plans-for-compute/ Last updated: 2024-07-03T10:23:42.000Z Saving money is a core objective for everyone, whether that is in your grocery shopping or your cloud spend. There are lots of tools and [best practices](https://learn.microsoft.com/azure/cloud-adoption-framework/govern/cost-management/best-practices?ref=techielass.com#best-practices-by-team-and-accountability) that can be used to help you with costing and sizing your resources within the Azure cloud. In this post, I want to concentrate on the [Azure savings plans for compute](https://learn.microsoft.com/azure/cost-management-billing/savings-plan/savings-plan-compute-overview?ref=techielass.com), released in October. I will cover the Azure savings plan for compute, why it’s an important tool that can help you save money, and explain any gotchas when using it. ### What is Azure savings plans for compute? In October 2022, Microsoft launched the Azure savings plans for compute. These savings plans offer a flexible pricing plan that could save up to 65% from the pay-as-you-go prices. With Azure savings plans for compute, you commit to spending a fixed amount on compute services for one or three years. If you are a Microsoft Customer Agreement (MCA) or [Cloud Solution Provider (CSP)](https://learn.microsoft.com/partner-center/csp-overview?ref=techielass.com) customer, you will see the prices for savings plans in US Dollars. Those on [Enterprise Agreements (EA)](https://www.microsoft.com/licensing/licensing-programs/enterprise?ref=techielass.com) will see the plans in their local currency. You can pay for the savings plan monthly or pay for it all upfront. ### What services are covered by Azure savings plans for compute? The Azure savings plans for compute include compute service in any Azure region. That means you can use a savings plan to get a discount on the following: - Azure Virtual Machines - Azure Dedicated Hosts - Azure Container Instances - Azure Functions premium plan - Azure App Service Some things are not included in the savings plans. With virtual machines(VM) [ bare-metal infrastructure](https://learn.microsoft.com/azure/baremetal-infrastructure/concepts-baremetal-infrastructure-overview?ref=techielass.com), A, G and GS series are excluded. Savings plans are only applied to Azure Functions Premium Plans. And they are only relevant to [Premium v3](https://learn.microsoft.com/azure/app-service/app-service-configure-premium-tier?ref=techielass.com) and[ Isolated v2 Azure App Services](https://learn.microsoft.com/azure/app-service/environment/intro?ref=techielass.com). ### Why are Azure savings plans for compute important? [Azure Reserved Instances (RI)](https://learn.microsoft.com/azure/cost-management-billing/reservations/save-compute-costs-reservations?ref=techielass.com) are another created to help save money within your environment, but they can be pretty rigid as they are scoped to an Azure region and the type of service or VM size. With Azure savings plans for compute, the scope is bigger. You purchase a savings plan that can be used for any relevant compute service within any region. The cost savings with Reserved Instances is greater than savings plans for compute, but its flexibility can often balance out that cost savings. ### Savings Plan scope When purchasing a savings plan, one important consideration is the scope, which can significantly impact how benefits are applied: - **Resource Group Scope**: You can purchase a savings plan that only covers resources within a resource group. - **Subscription Scope**: A savings plan that has a subscription scope would only be applied to resources within that one subscription. - **Management Group Scope**: All the resources under this management group will be subject to the savings plan. - **Shared Scope**: If you are an Enterprise Agreement (EA) or Microsoft Customer Agreement (MCA) customer when you select the shared scope option, anything under that billing profile will be eligible for the savings. For EA or MCA customers, the shared scope can include multiple Microsoft Entra tenants within the enrollment, meaning that all subscriptions under the same billing profile are covered, even if they span multiple tenants. ### Gotchas when using Azure savings plans for compute Something to be aware of: you can’t cancel or get a refund on any savings plans. Also, when the savings plan is applied to Windows virtual machines and SQL databases, the savings plan discount doesn’t apply to the operating system or software costs. ### Conclusion Azure savings plans for compute can be integral to your cost savings initiatives. Combined with Azure Reserved Instances and following [Azure Advisor](https://learn.microsoft.com/azure/advisor/advisor-cost-recommendations?ref=techielass.com) cost reductions you can significantly reduce costs. ### Azure VM Series explained URL: https://www.techielass.com/azure-vm-series-explained/ Last updated: 2023-02-07T08:04:45.000Z Within Azure Virtual Machines (VMs) come in predefined sizes. They are called families or series. Within Azure it is not possible to just pick the amount of CPU cores or GB of RAM they way you do when creating a VM within [VMware](https://www.techielass.com/tag/vmware/) or [Hyper-V](https://www.techielass.com/tag/hyper-v/). Each Azure VM series has come designed with use cases in mind, and as such has a certain amount of CPU cores and GB of RAM. With this method of working, it’s important you understand the specific VM series and when to use them. Picking the wrong VM series can have a significant impact on your Azure costs. Let’s take a look at some of the common series and dig into them a bit more. ## B Series The [B-series VMs](https://learn.microsoft.com/azure/virtual-machines/sizes-b-series-burstable?ref=techielass.com) are designed to provide low-cost compute options. They are best used for workloads that have periods of time when they have “burst” activity of CPU utilisation. The B-series VMs have a baseline performance level based on the size of the VM and automatically burst to a higher level when additional CPU power is needed. ![B-series VMs](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/b-series-vms.jpg) B-series VMs ## D Series The D-series VMs are considered general purpose compute. They feature fast CPUs and the optimal CPU-to-memory configuration. The CPUs within the D-series are Intel Xeon processors. These VMs are suitable for any business-critical applications from web servers to small databases. ## E Series The E-series VMs are optimised for in-memory hyper-threaded applications. They are great for workloads that are memory intensive such as SQL servers or Azure Virtual Desktop (AVD) session hosts. ![Intel Xeon processor](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/intel-xeon.jpg) Intel Xeon processor The E-series are available for Windows and Linux and are powered by Intel Xeon processors. They provide faster CPU performance and memory compared to the D-series. ## N Series The N-series GPUs are GPU enabled virtual machines. Within the N-series VMs there are three distinct types: - The NC-series is mainly focussed on high-performance compute and machine learning workloads. The latest version, the NCsv3 utilises NVIDIA’s Tesla V100 GPU. - With the [NDs-series](https://learn.microsoft.com/azure/virtual-machines/nd-series?ref=techielass.com) they are focused on deep learning scenarios. It uses NVII Tesla GPUs with the latest version, NDv2 using the NVIDIA Tesla V100 GPUs. - The third option is the NV-series, which is powered by the NVIDIA Tesla M60 GPUs and is great for graphic-intensive applications. ## Recap It’s important to pick the right series of VM for your workload, both from a performance and a price point of view. The[ Azure VM selector](https://azure.microsoft.com/pricing/vm-selector/?ref=techielass.com) can help you understand which VM would be best for your needs. It’s key to remember that the needs of your workloads may change over time, and this is where tools such as [Azure Advisor](https://learn.microsoft.com/azure/advisor/advisor-cost-recommendations?ref=techielass.com) can help. Azure Advisor will monitor whether the VM series or size should be reduced or even increased. It will use historical data to help provide recommendations both on performance and cost. ### Deploy Azure Resources with Terraform URL: https://www.techielass.com/deploy-azure-resources-with-terraform/ Last updated: 2024-12-15T16:09:25.000Z [Terraform](https://www.techielass.com/introduction-to-terraform/) is an [Infrastructure as Code (IaC)](https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools/) tool that can help you define resources within your environment. In this article I want to take you through deploying your first resource within Azure via Terraform. The resource we are going to deploy is an Azure Resource Group. ## Prerequisites - Azure subscription: If you don't have an Azure subscription, create a [free account](https://azure.microsoft.com/free/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) before you begin ## Build the Terraform Template There are multiple ways to deploy Terraform templates. From your local machine. Through the Azure Cloud Shell and through DevOps tools. We are going to walk through creating the template and deploying it via the Azure Cloud Shell. The reason we’re using this method is all the tools you need are already installed within Azure Cloud Shell. - Navigate over to [https://shell.azure.com](https://shell.azure.com/?ref=techielass.com) - Ensure you are using the Bash Cloud Shell ![Azure Cloud Shell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/azure-cloud-shell.jpg) Azure Cloud Shell - Within the console type: ```bash mkdir terraform-rg ``` This will create a new folder, we’ll use this folder to store our template in. - To switch into that folder type: ```bash cd terraform-rg ``` ![Creating directory with bash commands](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/bash-create-directory.PNG) Creating directory with bash commands - The next command you want to type is: ```bash code main.tf ``` This will open up the Visual Studio Code editor within the shell and create a new file called “main.tf”. - Within the editor paste the following code: ```terraform terraform { required_version = ">=0.12" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>2.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } ``` You can use CTRL+S to save the new contents to the file. This is the start of your template, it’s indicating what version of Terraform you wish to use and what providers you need. A provider within Terraform is essentially a plugin that enables interaction with an API. We need the Azure provider and we are also using the [Random provider](https://registry.terraform.io/providers/hashicorp/random/latest?ref=techielass.com). The Azure provider interacts with the Azure API to help deploy resources to Azure. The Random provider allows you to use “randomness” within Terraform configurations. It helps you generate random values for resource names or part of a resource name. - The next part of the template you want to paste into your file is: ```terraform variable "resource_group_location" { default = "eastus" description = "Location of the resource group." } variable "resource_group_name_prefix" { default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." } ``` You can use CTRL+S again to save the new changes. This section is declaring variables we’ll use to deploy our resource group, the location and also a prefix we’ll append to the resource group name. - The last section of the template that you want to paste in is: ```terraform provider "azurerm" { features {} } resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { location = var.resource_group_location name = random_pet.rg_name.id } ``` Again make sure you use CTRL+S to save the new changes. This part of the template is telling Terraform to deploy an Azure Resource Group. It’s pulling the variables we defined earlier in the template such as the name and the location. ## Deploy the Terraform Template We’ve now created the template to deploy the Azure Resource Group, now it’s time to deploy it. When deploying a Terraform template there are several stages to go through. ![Terraform flow diagram](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/terraform-flow.png) Terraform flow diagram Let’s explain the steps: - **Init**: This command prepares the working directory for use with Terraform. It initialises the backend, child module installation and plugin installation. - **Plan**: This commands determines the deltas between the current configuration and prior state data. It will propose changes that make the remote infrastructure match the current configuration. - **Apply**: Running this command will run the plan from the *terraform plan* command. - **Destroy**: This command is used to destroy all remote objects managed by a particular Terraform configuration. As we can see in the diagram the first thing we need to do is initialise the Terraform file. - Make sure you are in the directory where the Terraform file lives and enter the command: ```terraform terraform init ``` - The next step is to plan the resource group deployment. To do that type in the command: ```terraform terraform plan ``` This command shows you what is going to happen if you were to deploy the Terraform file. Next we want to deploy the Terraform file and create our resource group. - To do that we can type in the command: ```terraform terraform apply -auto-approve ``` ![Terraform apply](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/terraform-apply-confirmation.jpg) Terraform apply This will initiate the deployment, the -auto-approve command will avoid us having to type in yes to proceed with the deployment. If you don’t append the -auto-approve command then you would have to type in “yes” to deploy the resource. After a few minutes you will get a confirmation message that the resource group has been created. **Congratulations!** You’ve deployed your first Azure resource using a Terraform template! If you’d like to clean up this newly created resource you can run: ```terraform terraform destroy -auto-approve ``` And it will be destroyed for you. ### GitHub Actions Secrets URL: https://www.techielass.com/github-actions-secrets/ Last updated: 2023-12-07T14:47:59.000Z [GitHub Actions](https://docs.github.com/actions?ref=techielass.com) is a tool that can be used to automate processes that relate to code stored within a [repository](https://docs.github.com/get-started/quickstart/create-a-repo?ref=techielass.com). You can use it to automate your Continuous Integration/Continuous Deployment (CI/CD) processes. When carrying out this kind of automation you need to be able to store sensitive data somewhere. [GitHub Actions Secrets](https://docs.github.com/actions/security-guides/encrypted-secrets?ref=techielass.com) can be used to store that sensitive data. GitHub allows you to store secrets at 3 different levels: - Repository - Environment - Organization In this article, we will look at those three levels, and how to call secrets in an example GitHub Actions workflow. ### Repository secrets Repository secrets are tied to the repository they are created within. You can store 100 secrets per repository. **Add a repository secret** Open your project’s repository and click on Settings in the top menu ![GitHub repository settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/github-repo.png) GitHub repository settings Click Secrets in the menu on the left-hand side. Then select Actions. ![GitHub Actions menu](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/github-menu.png) GitHub Actions menu Click on New Repository Secret. ![GitHub New repository secret](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/github-new-secret.png) GitHub New repository secret Complete the following fields: \- Name, give the secret a suitable name, and don’t use any space or special characters. Underscores are usable. \- Value, enter the secrets. ![GitHub new secret](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/github-add-secret.png) GitHub new secret Click on Add Secret. *You are able to update this secret whenever you need to change it.* ### Environment secrets Within GitHub, you can specify different environments in which to target for your deployments, such as production, staging, or development. If you have a public or an enterprise licence you can set environment-specific secrets that will only work for that environment. There is a limit of secrets per environment, 100. **Add an environment secret when creating a new environment** Open your project’s repository and click on Settings in the top menu ![GitHub repository settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/github-repo-1.png) GitHub repository settings Click Environments in the left hand side menu. ![GitHub menu](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/github-menu-env.png) GitHub menu Click on New environment. ![GitHub create new environment](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/github-new-environment.png) GitHub create new environment Enter a name for your environment and click Configure environment. Configure the environment’s protection rules and deployment branches as you require them and then click on Add Secret. ![Configure GitHub environment secret](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/github-env-secret.png) Configure GitHub environment secret Complete the following fields: \- Name, give the secret a suitable name, don’t use any space or special characters. Underscores are usable. \- Value, enter the secrets. Click on Add Secret. ![Add new GitHub environment secret](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/github-new-env-secret.png) Add new GitHub environment secret If you wish to change the secret or add others for that environment in the future you can do so through Settings > Secrets > Actions. ### Organization secrets An organization within GitHub is a shared account for businesses or [open-source](https://www.techielass.com/what-is-open-source/) projects to collaborate across many projects. In 2020 GitHub announced organization secrets. A way of sharing secrets across repositories. There are access policies available which allow you to control which repositories have access to an organization secret. **Add an organization secret** Open your organization’s page in GitHub and click Settings in the top menu. Click Secrets in the left menu. Click on Actions. ![GitHub organisation secret](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/github-org-secret.png) GitHub organisation secret Now select New organization secret. ![Create new organisation secret](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/github-new-org-secret.png) Create new organisation secret Complete the following fields: \- Name, give the secret a suitable name, don’t use any space or special characters. Underscores are usable. \- Value, enter the secrets. \- Repository access, select the relevant policy or repositories you wish to be able to see this secret. Click on Add Secret. ![Create new organisation secret](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/github-org-secret-create.png) Create new organisation secret ### Using secrets in GitHub Actions workflows Within GitHub Actions workflows [contexts](https://docs.github.com/en/actions/learn-github-actions/contexts?ref=techielass.com) are how GitHub pulls information from various sources. We can use the context of the secret to call your secret data in workflows. As an example, if you are trying to interact with Azure during a workflow. Perhaps you are [deploying an Azure Bicep template](https://www.techielass.com/deploy-azure-bicep-using-github-actions/). You need to provide GitHub with credentials to your Azure environment. You might add a step such as: ``` - name: Azure Login uses: Azure/login@v1.4.3 with: creds: ${{ secrets.AZURE_CREDENTIALS }} ``` Here we are using the GitHub Actions action [“Azure Login”](https://github.com/marketplace/actions/azure-login?ref=techielass.com). Our Azure credentials are stored within a repository secret and we are calling them into the workflow without exposing the information to the public. ### GitHub Actions Secrets - Security Best Practices If you’d like to learn more about GitHub Actions please do check out [my other blog posts.](https://www.techielass.com/tag/github-actions/) ### Install Terraform in the AWS CloudShell URL: https://www.techielass.com/install-terraform-in-the-aws-cloudshell/ Last updated: 2023-01-19T08:01:00.000Z The [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/working-with-cloudshell.html?ref=techielass.com) is a browser-based shell that makes it quick and easy for you to securely manage, explore and interact with your AWS resources. CloudShell is pre-authenticated with your console credentials, so there is no need to login again. Tools such as AWS CLI, Python, Node.js, npm, Git and BASH utilities are pre-installed for ease of use. Unfortunately [Terraform](https://www.techielass.com/introduction-to-terraform/) isn’t installed, however, in this article I am going to walk you through the process of installing it within AWS CloudShell. ## Install Terraform in AWS CloudShell - Head over to the [AWS Management Console](https://aws.amazon.com/console/?ref=techielass.com) - Click on the AWS CloudShell icon on the console navigation bar ![AWS Management Console](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/aws-cloudshell.png) AWS Management Console - We’re going to use the Terraform Version Manager to help install Terraform - With the AWS CloudShell type in: ```bash git clone https://github.com/tfutils/tfenv.git ~/.tfenv ``` ![Cloning the Terraform Version Manager](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/git-clone-tfenv.png) Cloning the Terraform Version Manager - Next we want to make a new directory called *\~/bin*, to do that issue the command: ```bash mkdir ~/bin ``` - Now we’re going to make a symlink for tfenv/bin/\* scripts into the path \~/bin by typing the command: ```bash ln -s ~/.tfenv/bin/* ~/bin/ ``` ![AWS CloudShell configure Terraform install](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/aws-directory.png) AWS CloudShell configure Terraform install - With the Terraform Version Manager installed, we can now install Terraform. Type in the command: ```bash tfenv install ``` ![Use Terraform Version Manager to install Terraform](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/tfenv-install.png) Use Terraform Version Manager to install Terraform This will install the latest version of Terraform for you. You can specify a specific version if required when using the *tfenv install* command. If you wish to use the latest version of Terraform as default you can use the command: ```bash tfenv use 1.3.7 ``` *It’s worth noting that this only installs Terraform within the AWS CloudShell region that you are working within.* If you use multiple AWS regions then you will need to follow the above steps each time. A copy of all the steps are all encapsulated within a script [here](https://gist.github.com/weeyin83/d93e4df3c58e4a8aa4dfbf1bf99425ab?ref=techielass.com). You can now work with Terraform within the AWS CloudShell console. ### CI/CD Pipeline Tools URL: https://www.techielass.com/ci-cd-pipeline-tools/ Last updated: 2023-02-27T10:32:32.000Z Continuous Integration and Continuous Deployment, or CI/CD, is the process of automating the delivery of your applications. We are delivering changes more frequently and reliably than doing them manually. Increasingly we are seeing people start to use CI/CD practices to not only deliver applications but also [Infrastructure as Code (IaC)](https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools). There are a lot of tools out there that can help you deliver that CI/CD experience. In this article, I want to look at six common CI/CD tools and evaluate them from a feature, ease of use & set up, and supported environment point of view. *I’ve listed them in alphabetical order, not in order of preference.* ### Azure DevOps [Azure DevOps](https://learn.microsoft.com/azure/devops/get-started/?view=azure-devops&ref=techielass.com) is a Microsoft tool. It can help you with the CI/CD processes as well as help you to store your code, plan and track work, provide continuous testing and allow you to store and share packages. Five components make up Azure DevOps: - [Azure Boards](https://youtu.be/Ad7KQ0j%5FVXY?ref=techielass.com) - [Azure Repos](https://youtu.be/hf6ZAo41nA8?ref=techielass.com) - Azure Pipelines - Azure Test Plans - Azure Artifacts The Azure Pipeline part is the CI/CD tooling part of the product. Azure Pipelines can be created using YAML or using the classic editor, which is a drag-and-drop GUI interface. ![Azure DevOps Classic Editor](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/azure-devops-classic-editor.PNG) Azure DevOps Classic Editor Two versions of this product are available: Azure DevOps Services and Azure DevOps Server. Azure DevOps Services is the cloud-hosted product, whereas Azure DevOps Server is the self-hosted version. Both are [priced ](https://azure.microsoft.com/pricing/details/devops/azure-devops-services/?ref=techielass.com)slightly differently. For those looking to get familiar with this CI/CD tooling, there is a free plan available which gives you limited functionality but enough to get some hands-on experience. ### CircleCI CircleCI is a CI/CD platform that was founded in September 2011\. CircleCI monitors your GitHub, BitBucket or GitLab code repositories and can launch a build after each new commit. CircleCI supports Go, Java, Ruby, Python, Scala, Node.js, PHP, Haskell or any language that runs on Linux or macOS. ![CircleCI Insights Dashboard](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/circleci-insights.png) CircleCI Insights Dashboard As with other tools, CircleCI pipelines are written using YAML. You can create these YAML files using the CircleCI in-app Configuration Editor or any text editor. There is an [official extension](https://marketplace.visualstudio.com/items?itemName=circleci.circleci&ref=techielass.com) you can install within Visual Studio Code (VSCode) which can be used to help with the syntax writing of the YAML files. Still, it can also be used to interact with your pipelines, re-running builds or approve jobs. CircleCI pricing can be found [here](https://circleci.com/pricing/?ref=techielass.com). In 2022 their free tier received an upgrade; instead of only being able to run one job at a time, you can now run up to 30 jobs at a time. ### GitHub Actions [GitHub Actions](https://docs.github.com/en/actions?ref=techielass.com) is a CI/CD platform that is built within GitHub. You can automate code build, test and deployment directly from a GitHub repository. These workflows can be triggered based on a bunch of scenarios, some include: - Labels assigned to GitHub issues - Manually - When a pull request is made, the repository - When a merge is made to the repository - [Schedule them to trigger using CRON expressions](https://www.techielass.com/schedule-github-actions-using-cron-expressions/) - When a folder or file changes As I mentioned earlier, CI/CD practices are not just used to deploy software code; with GitHub Actions, you have the flexibility and functionality to deploy Infrastructure as Code. Whether you are a Developer leveraging the tool or an Operations Engineer, the support is there. GitHub Action workflows are created using YAML. This is probably the biggest frustration with GitHub Actions. You can only make the YAML files using a text editor; there is no GUI available to help you create them. This can be frustrating, as YAML is sensitive and doesn’t like things like spaces being used; it prefers tabs. ![GitHub Actions Workflow example](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/github-action-workflow.PNG) GitHub Actions Workflow example That being said, tools like Visual Studio Code (VSCode) and the [YAML Language Support by Red Hat extension](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml&ref=techielass.com) can help with the formatting and syntax when creating or editing the YAML files. GitHub Actions usage is free for standard [GitHub-hosted runners](https://www.techielass.com/github-runners/) in public repositories and for self-hosted runners, which makes it very accessible to any hobbyist or someone who is looking to learn. A certain amount of free minutes and storage isoffered for this using private repositories. Minutes used reset every month. If you are looking to run GitHub Actions for your organisation then looking at [pricing plans](https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions?ref=techielass.com) is something I’d recommend. ### GitLab [GitLab](https://gitlab.com/?ref=techielass.com) is a CI/CD tool that can be hosted on-premises in the cloud as well as offering CI/CD capabilities, it can host wiki, and issue tracking and has a Web Integrated Development Environment (IDE). GitLab pipelines are created using YAML. Within the web version of GitLab, there are a lot of templates you can use to start building your pipeline, you have a text editor, and there are also visualisation and validation options to help you. ![GitLab Pipeline example](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/gitlab-pipeline.PNG) GitLab Pipeline example Like the other tools, there is a [first-party plugin from GitLab](https://marketplace.visualstudio.com/items?itemName=GitLab.gitlab-workflow&ref=techielass.com) you can use when using an external text editor like Visual Studio Code (VSCode) that allows you to interact with your pipelines. There is a free 30-day trial where you can sign up to test GitLab without a credit card. Beyond that, there are [paid plans](https://about.gitlab.com/pricing/?ref=techielass.com) available to you. GitLab has some excellent features, such as providing [a Terraform HTTP backend t](https://docs.gitlab.com/ee/user/infrastructure/iac/terraform%5Fstate.html?ref=techielass.com)o store state files securely. ### Jenkins Jenkins is an open-source CI/CD tool. It is written in Java. Jenkins uses plugins to help you build up the required pipeline to automate your software build. Jenkins can be installed on your machine or you can deploy it inside something like a Docker container. It is a free tool; there are no paid plans available. To create your Jenkins pipelines, you use the Groovy Domain-Specific Language. The file that you make will be called a Jenkinsfile. [Blue Ocean](https://www.jenkins.io/doc/book/blueocean/?ref=techielass.com) can be used to visualise the channels but it’s important to remember that it is not being enhanced any more and only receiving security updates. ### Octopus Deploy [Octopus Deploy](https://www.techielass.com/what-is-octopus-deploy/) is a tool that focuses on the CD part of CI/CD. It needs to be partnered with a CI tool. You can use Azure DevOps, GitHub Actions, Jenkins etc, for the CI processes and then use Octopus Deploy for release management, deployments and operations. You can sign up for Octopus Deploy as a cloud mcloud-managede or download and host the application yourself. Building your deployment processes can be done via the GUI interface. This is where Octopus Deploy excels; this interface is straightforward for users unfamiliar with the tool or the CI/CD process. It’s intuitive. ![Octopus Deploy Interface](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/octopus-dashboard.png) Octopus Deploy Interface You can also version control and write your deployments using Octopus Configuration Language (OCL) with their [Config as Code feature](https://octopus.com/docs/projects/version-control?ref=techielass.com). Within Octopus Deploy, you have a section for Deployments and a section for Operations. Within the Operations section, you have something called Runbooks. Within [Runbooks](https://www.techielass.com/trigger-an-octopus-deploy-runbook-using-an-elgato-streamdeck/), you can deploy Infrastructure as Code or perform maintenance tasks. There is a free 30-day trial where you can sign up to test Octopus Deploy without a credit card. You can get a [free 12-month trial of Octopus Deploy Server](https://octopus.com/docs/administration/managing-licenses/community?ref=techielass.com), which you would host yourself. It’s a well-hidden free option, but it is there, at least it is at the time of writing this article. Beyond that, there are [paid options](https://octopus.com/pricing/overview?utm%5Fcampaign=techielassblog&utm%5Fmedium=blog&utm%5Fsource=sarah) available to you. ### Conclusion I’ve picked six tools and dived into their features and usability. But, of course, many more tools can be used to help with the CI/CD process. The right tool for one project or organisation might not be the right tool for another project or organisation. Each tool has its advantages and disadvantages. When trying to pick a new tool, I suggest always making a list of what you need the means to do for you. Then give the tools a go. Get hands-on with them. With many tools, if not all, you have access to a free tier. Take advantage of those free trials. Use those free trials and test them against your priorities and needs. Don’t be swayed by what you see on social media or what a salesperson says. The right tool is the one that matches your needs. ### Introduction to Terraform URL: https://www.techielass.com/introduction-to-terraform/ Last updated: 2024-05-07T05:53:09.000Z Infrastructure as Code (IaC) allows you to programmatically provision the infrastructure you need to run your software code or resources for your organisation. There are many tools considered as [IaC tools](https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools/). Hashicorp’s [Terraform](https://www.terraform.io/?ref=techielass.com) is one such Infrastructure as Code tool. Terraform is a restricted open-source [DevOps](https://www.techielass.com/tag/devops/) tool that uses Hashicorp Configuration Language (HCL) to define and provision your infrastructure. It can be used with [AWS](https://www.techielass.com/tag/aws/), [Azure](https://www.techielass.com/tag/azure/), Google Cloud and your on-premises infrastructure. ### What is Terraform used for? One of the primary uses of Terraform is to provision resources within your data center, whether that is on-premises or in the cloud. Terraform can help you provision resources through what is called a provider. A Terraform provider can be thought of like a plugin that wraps an existing API to create declarative Terraform syntax. The providers are open-source and closely monitored by Hashicorp (the company behind Terraform). The providers receive regular updates. Terraform is also popular and used by many engineers to perform multi-cloud deployments. Terraform can be used to provision resources to a lot of different cloud providers, this means that engineers don’t have to learn multiple tools and language syntax. They can re-use their knowledge to help create templates to deploy to any cloud provider. Another excellent use case for Terraform is the ability to create custom providers. As mentioned, a Terraform provider is a wrapper around an existing API. Engineers can develop providers for their company's use cases. Any API that supports Create, Read, Update, Delete (CRUD) actions can be wrapped into a Terraform provider, giving Terraform much flexibility. ### Is Terraform a tool or language? Terraform is an [open-source](https://www.techielass.com/what-is-open-source/) tool written in the Go programming language. 💡 **You might be interested in my book "Terraform for Ops", a guide to Terraform for SysAdmins. You can find out more information here* [**https://www.terraformforops.com*](https://www.terraformforops.com/?ref=techielass.com) ### Do we need coding experience for Terraform? Terraform is an easy tool to get started with. There is a lot of great [getting-started guides](https://developer.hashicorp.com/terraform/tutorials?ref=techielass.com). But ultimately, no, you do not need to be a coder or developer to use Terraform. Terraform can be used by anyone within the IT industry. Having a basic understanding of how code works and how to format it and troubleshoot can be advantageous but unnecessary. If you are using [Visual Studio Code (VSCode)](https://code.visualstudio.com/?ref=techielass.com) and the [Terraform extension](https://marketplace.visualstudio.com/items?itemName=HashiCorp.terraform&ref=techielass.com), it will help with syntax highlighting, IntelliSense, code navigation, and code formatting, which can be helpful even for the most experienced engineer. ### How to install Terraform on Windows To use Terraform, you do have to install it on your machine. I want to show you two ways of doing this. The first is using the package manager, [Chocolatey](https://www.techielass.com/chocolatey-what-is-it/). If you aren’t already using Chocolatey, I encourage you to check it out and see how it can assist you with managing software on your machine. To install Terraform using Chocolatey, you can open up a command line tool and type in: ``` choco install terraform -y ``` ![Install Terraform with Chocolatey](https://lh6.googleusercontent.com/gT1oHoayA3yOB4fvtw8pvCp3kFZ2svoi_tW2aE_l9PCrfIqqQ1d2jpzl2IyKNKrsJPVls_duvGwp0Wc7OkFFIG9u4rkwTwHt0yIK9MXJOLCetgzY1RdDs0yeLTbOGt-DCIOIJK80bU_qarux8YTEQYxsBkbwrcSSAcj2lNzdpwWKDjY0lq2xwrDROlEicQ) Install Terraform with Chocolatey Alternatively, you can head to [https://developer.hashicorp.com/terraform/downloads](https://developer.hashicorp.com/terraform/downloads?ref=techielass.com), select Windows as the operating system and download the relevant binary. Once the file has been downloaded, it will be in a ZIP file format. Extract this file to a directory of your choosing (for example, c:\\terraform). Next, navigate to Control Panel -> System -> Advanced System settings ![Windows 11 Control Panel](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/advanced-settings.png) Windows 11 Control Panel Now select Environment Variables ![Windows 11 System Properties](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/system-properties.png) Windows 11 System Properties Double-click on PATH Click New and add in the path you extracted the Terraform application to ![Windows 11 Environment Variables](https://lh5.googleusercontent.com/Ht4Vf_vT75YTyTHbDNyT4IVLTe3CqTvZHpbPv0IbNpNHrduJwH_uDKKH-wQOTH63i2NBYkWruobU6TOObl44XhZwpMAviFL6p8uYUSkqGmsjoIGSBmEiAPT6u3Tibc6k1R_IbRpV8b2vCjFxqF4lV0QBNsMHrJLSO3toJFJfGZCxoxwwMN8nYdyNzLQWjA) Windows 11 Environment Variables Click OK twice. Launch a new command line prompt and type in *“Terraform -version”* It should respond with the version you have just installed. ### Terraform in 10 minutes Check out my video where I give an overview of Terraform in 10 minutes. ### Looking back at 2022 URL: https://www.techielass.com/2022-in-review/ Last updated: 2023-12-07T11:46:51.000Z It’s that time of year again, time to reflect and celebrate achievements, but also look at things I wish I had done better or differently. ### Career At the start of 2022 I was a Senior DevOps Advocate at [Octopus Deploy](https://www.techielass.com/what-is-octopus-deploy/). I was knee deep in learning about the DevOps community, where I could help and where I could learn. And that enthusiasm was rewarded when I was promoted to Lead DevOps Advocate at Octopus. During this year I was really honoured to become a member of programs and recognised for my community contributions. ![2022 Awards](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/2022-awards-4.png) 2022 Awards In April 2022, I was awarded the [Microsoft MVP award](https://www.techielass.com/i-am-now-a-microsoft-mvp/). It was truly a great honour to receive this award and recognised for all the community work I have done over the years. August 2022 saw another program recognise the enthusiasm and passion I have for the Lenovo ThinkPad laptops and was invited to become a Lenovo INsider. [The Redgate 100](https://www.techielass.com/redgate-100/) was released in September 2022 and I was included in this list of IT professionals for their community work and expertise. October 2022 saw me invited to join the [GitKraken Ambassador](https://www.gitkraken.com/meet-the-gitkraken-ambassadors?ref=techielass.com) program. ![GitKraken swag](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/gitkraken-swag-1.png) GitKraken swag The biggest change in my career came in November though, I re-joined Microsoft! Throughout the year I had started to miss talking to customers directly, hearing their challenges, trying to solve them and guide them. And realised I need to change jobs again. Advocacy over the last 3 years has given me a wealth of knowledge, experiences and adventures. But that job, that sector has massively changed. And for me it’s time to get back to my roots, consultancy. So, I am back at Microsoft as a Cloud Solution Architect and loving the challenge and familiarity of the team I am in. I am truly happy and loving my job! ### Blogging It’s funny looking back at the previous [“year in review”](https://www.techielass.com/tag/year-in-review/) blogs and reading what I did. In 2021 I wrote over 170 blogs! That’s madness, I can’t believe I did that! This year I wrote 70+ blogs. Less, but by no means less quality. In fact, I’ve been more strategic about the blogs I have written and thought more about making them valuable. This decision was driven by the things I learnt in Dom Kent’s [“How To Write Blog Posts That Get 500,000 Views”](https://gumroad.com/a/96883827/khHYb?ref=techielass.com) course. And it’s paid off, I’ve seen a growth in visits to my blog and it’s become a really valuable property for me to get noticed and start other conversations. I’ve also started syndicating my blog posts over on [Medium](https://medium.com/@techielass?ref=techielass.com), [Dev.To](https://dev.to/techielass?ref=techielass.com) and [The Ops Community](https://community.ops.io/techielass?ref=techielass.com). This has helped me reach more people as well as have the opportunity to write different types of posts and meet new people. ### Most visited blog posts in 2022 It’s always good to look at the statistics and see which blog posts have been the most popular over the course of the year. It’s interesting to see the comparison from last year’s top 10, only one post from last year has made it into this year’s top 10! 1. [Connect to a SQL database with Visual Studio Code](https://www.techielass.com/connect-to-a-sql-database-with-visual-studio-code/) 2. [Convert a folder to a Git repository](https://www.techielass.com/convert-a-folder-to-a-git-repository/) 3. [Install Exchange Online PowerShell modules](https://www.techielass.com/install-exchange-online-powershell-modules/) 4. [Reset Ubuntu Password in WSL on Windows 10](https://www.techielass.com/reset-ubuntu-password-in-wsl-on-windows-10/) 5. [Windows Server: Extend expired evaluation period](https://www.techielass.com/windows-server-extend-expired-evaluation-period/) 6. [Trigger GitHub Actions workflow when a folder changes](https://www.techielass.com/trigger-a-github-action-workflow-when-a-folder-changes/) 7. [How to install Windows Package Manager](https://www.techielass.com/how-to-install-winget-windows-package-manager/) 8. [How to install Windows Terminal with Windows Package Manager](https://www.techielass.com/install-windows-terminal-with-windows-package-manager/) 9. [Create a new GitHub repository from the command line](https://www.techielass.com/create-a-new-github-repository-from-the-command-line/) 10. [Enable external email warning tag in Exchange Online](https://www.techielass.com/enable-external-email-warning-tag-in-exchange-online/) ### Video I started properly investing in my [YouTube channel](https://youtube.com/c/techielass?ref=techielass.com) back in 2019, it was something I started to get more comfortable talking to the camera. I initially started by doing a [weekly update](https://youtube.com/playlist?list=PLbjernQTVXitYGv7gWIRNqeWBFyVZJOBk&ref=techielass.com) with lots of news and thoughts around what was happening in the IT industry. Last December I stopped doing the weekly updates though. There have been times when I've thought about starting them up again but I’m not sure. Instead, I have started doing videos answering questions or summarising large events and the news from them. The one thing I have shared this year regarding my channel is that it isn’t [monetized](https://www.techielass.com/my-youtube-channel-isnt-monetized/). Everything you see on my channel is done in my spare time and at my own expense and I receive no payment for those videos. I don’t earn money from YouTube, which means every like, every comment, every subscriber, every share means the world to me. ### Most viewed videos in 2022 There is a nice, interesting mix of videos from my YouTube channel that have made the top ten. 1. [Azure DevOps Boards and Excel](https://youtu.be/v3ByCe4HZE0?ref=techielass.com) 2. [How to Delete a Repository in GitHub 2022](https://youtu.be/u4qVRJOqMH0?ref=techielass.com) 3. [Run a Kahoot Quiz within a Microsoft Teams Meeting | Microsoft Teams | Tutorial](https://youtu.be/Ne%5FKjApxm5o?ref=techielass.com) 4. [What is Lift and Shift in Cloud Migration?](https://youtu.be/OVyRnejzhL0?ref=techielass.com) 5. [How to configure Windows Sandbox](https://youtu.be/Ct%5FwvsxB6hE?ref=techielass.com) 6. [Monitor SSL Certificates with Azure Monitor](https://youtu.be/1I5i9kS6XPo?ref=techielass.com) 7. [List all resources in a resource group using an Azure CLI Command](https://youtu.be/Zptm7BCweN0?ref=techielass.com) 8. [Ubiquiti UniFi Augmented Reality (AR)](https://youtu.be/GB-3fcXNOoo?ref=techielass.com) 9. [Create multiple virtual machines from the Azure CLI](https://youtu.be/lW1Qrxy8QhA?ref=techielass.com) 10. [How to cancel a ticket on Eventbrite as a attendee](https://youtu.be/PqnL4tIUAL4?ref=techielass.com) ### Speaking The number of speaking engagements I have delivered this year has massively gone down from previous years. But there have been some really interesting events in the mix and a big milestone as well! I’ve been able to get back in person at several events in Scotland and also in England. It was a real privilege to be able to get back in person and deliver some sessions at [Microsoft Ignite](https://www.techielass.com/i-am-speaking-at-microsoft-ignite/) again. As I alluded to this year saw me reach a big milestone, I delivered my 100th talk at a user group or conference! Never in my wildest dream back in 2017 when I started delivering sessions at conferences did, I imagine I would reach my 100th presentation. It’s been great fun delivering sessions to so many amazing audiences and I look forward to trying to get to some conferences in 2023\. If you’d like me to speak at your event, do[ get in touch](https://forms.microsoft.com/Pages/ResponsePage.aspx?id=qQZdxE7MWUS4OrXKUKG%5FtWJfXrHCX6BKlAV5Vk6J4b1UOVEzUVZUWkpCVkdNSEtMTllWQk9LOE8xVS4u&ref=techielass.com). ![Speaking report](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/speaking-review.png) Speaking report ### Certifications I am a big fan of [certifications](https://www.techielass.com/tag/certification/), I've been studying and sitting exams for work for a number of years now. For me they've really been valuable both to my knowledge and my career progression. I try to keep current with them and this year I added three Microsoft certifications to my collection. - [AZ-400 Designing and Implementing Microsoft DevOps Solutions](https://learn.microsoft.com/certifications/exams/az-400?ref=techielass.com) - [AZ-500 Microsoft Azure Security Technologies](https://learn.microsoft.com/certifications/exams/az-500?ref=techielass.com) - [AZ-104 Microsoft Azure Administrator](https://learn.microsoft.com/certifications/exams/az-104?ref=techielass.com) The AZ-400 and AZ-500 certifications were ones I had attempted back in 2020 and never passed, so getting them this time around was a high point for me. The Az-104 exam was one I used to hold but let it expire, so it was also good to get that one back into the list of achievements. ### Glasgow Azure User Group This is the fifth year the [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com) has been running and we’ve been back in person for our meetups. It’s been great being back in person again and having the chance to meet lots of familiar and new faces. ![The Glasgow Azure User Group](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/20221026_170155.jpg) The Glasgow Azure User Group There have been [some changes](https://www.techielass.com/running-a-user-group-in-2022/) in how we run the events to suit people’s changed habits and needs. I’m grateful to the community that supports the events and continues to grow. Do come along to a meetup if you can. ## Social Media Social media has become a confusing medium. An all-consuming medium. A medium with lots of positives and also one with negatives. I have accounts on: - [LinkedIn](https://www.linkedin.com/in/sazlean/?ref=techielass.com) - [Twitter](https://www.twitter.com/techielass?ref=techielass.com) - [Instagram](https://www.instagram.com/%5Ftechielass?ref=techielass.com) - [Mastadon](https://mastodon.social/@techielass?ref=techielass.com) - [Facebook](https://www.facebook.com/techielass) We’ve seen Twitter imploded over the last few months and lots of folk abandon the platform. And I personally have stopped enjoying it the same as I used to. I rarely see the content I want on it anymore. And I’ve also received some really negative nasty attention. Social media has definitely helped me over the last few years, given opportunities in my career, met some amazing people and also learnt a lot. I hope in 2023 things are much more positive and we can all get back to being the amazing community that I found a number of years ago. ### **2022 has been a year of challenges, changes and adventures, here’s to whatever 2023 brings!** ### Git Tags and Git Branches URL: https://www.techielass.com/git-tags-and-git-branches/ Last updated: 2023-12-06T08:14:33.000Z Within IT there are lots of different ways to solve problems, architect solutions, deploy applications, etc. And when we look at the options that [Git](https://www.techielass.com/what-is-git/) gives us for code management, there are lots of different commands and tools packed within it. In this article I want to explore Git tags and branches and understand the lingo as well as the use cases. ## Tags and Branches: What’s the Difference? ### What is a Git branch? Within the [gitglossary](https://book.git-scm.com/docs/gitglossary?ref=techielass.com) we have the definition for a branch. *A "branch" is a line of development. The most recent commit on a branch is referred to as the tip of that branch. The tip of the branch is referenced by a branch head, which moves forward as additional development is done on the branch. A single Git repository can track an arbitrary number of branches, but your working tree is associated with just one of them (the "current" or "checked out" branch), and HEAD points to that branch.* In a working environment, where and how does a branch fit in? Lots of engineers create a new branch from the production branch to work on a bug fix or to add a new feature, or to experiment with something. Using a branch doesn’t affect the production code. When they have finished their work they can then request a review of the code and their branch is merged into the production branch. Branches work well as they avoid anyone directly working on the production branch of code. Also, having separate branches for features or bug fixes means that each engineer can work independently and doesn’t directly impact any other engineer's work. The other advantage branches give you is the ability to carry out reviews and testing on individual branches without holding up other work that might be happening. The biggest disadvantage of branches comes when merging. It can be time consuming when you come to merge a branch into the production one if there are merge conflicts. ### What is a Git tag? If we go back to the [gitglossary](https://book.git-scm.com/docs/gitglossary?ref=techielass.com) a tag is defined as: *A ref under refs/tags/ namespace that points to an object of an arbitrary type (typically a tag points to either a tag or a commit object). In contrast to a head, a tag is not updated by the commit command. A tag is most typically used to mark a particular point in the commit ancestry chain.* Tags are a great way of marking significant events within your code base. When it comes to releasing a new version of your product, you can tag it. It can also be a way of referencing a point in time within your code for later reference. You can easily find that point in the code using a tag, it is much harder, if not impossible to find that point in time within a branch alone. ### Working with branches and tags within the Git CLI Let’s take a look at the workflow and commands you’d typically encounter if you were using branches. ### Create a new branch If you’d like to create a new branch from the production code, then you would use the command: ```bash git checkout -b branchname ``` This command creates the branch and also switches your working context to be in that branch. From here you can start to make your changes and commit files and they will be attached to the branch you’ve just created. ### Push a branch When you create a branch on your desktop or workstation it won't automatically create within the remote location as well. So after you have made your changes and committed them it’s time to push those changes to the remote location. You have to use a slightly different command than just *git push* to do this, as you need the branch to be created in the remote location. The command you would use is: ```bash git push -u origin branchname ``` ![Push Git changes to a new branch](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/git-branch-push.png) Push Git changes to a new branch Of course, if your branch already exists in the remote location, you can just run *git push*. ### See what branch you are on If you have multiple branches on your machine and not sure which branch you are working within you can use the following command to check: ```bash git status ``` ### Switch to another branch If you discover you are working within the wrong branch, you can change the branch you are working within using the following command: ```bash git checkout branchname ``` ### Create a new tag If you wish to create a new tag to associate with your latest code changes to achieve that you would use the git tag command. An example would be: ```bash git tag v2.0 ``` ### Push you created tags Much like branches, any changes you make to your local copy of the code base is not automatically reflected automatically in the remote repository. To ensure your tag is pushed to the remote repository alongside any of your code changes you need to explicitly tell Git to do that. To do that you would use the command: ```bash git push --tags ``` ![Push your tags to the remote repository](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/pushtags.png) Push your tags to the remote repository ### List existing tags If you wish to see what tags are already associated with the repository and code, then you can use the following command to see that information: ```bash git tag ``` ![Use Git Tag to list tags](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/gittag.PNG) Use Git Tag to list tags ### Using Git Tags and Branches in a CI/CD Pipeline When working within a CI/CD pipeline environment there are lots of different ways a team might deploy to production. Teams can choose to follow a specific [branching strategy](https://circleci.com/blog/you-are-what-you-git-how-your-vcs-branching-model-affects-your-delivery-cadence/?ref=techielass.com) that works best for them. Some of the most common are branching strategies are: - [GitFlow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow?ref=techielass.com) - [GitHub Flow](https://docs.github.com/get-started/quickstart/github-flow?ref=techielass.com) - [Trunk-based development](https://circleci.com/blog/trunk-vs-feature-based-dev/?ref=techielass.com) Each has their own advantages and disadvantages. There is no right branching strategy, it’s up to an individual team to choose what works for them. For this article we are going to take a closer look at how the GitFlow strategy uses branches and tags. Within the GitFlow process you will have the main branch of code where all production history is stored and it’s the single source of truth for the team. There will then be other branches that are used to work on features or bug fixes. One branch will typically be used as the development environment, where new features are worked on. Other branches will branch off the development branch and they will again have their own purpose; a new feature or bug fix for example. These branches will merge back into the development branch and not directly interact with the main branch. Once the development branch has enough features within it for a release it will be time to push those changes into the main branch. This is also the time when a tag will be attached to code to signify that new release, for example the engineer might tag it v4.0\. ### Conclusion Git branches and Git tags have their place in any development environment. Branches are great for helping engineers work on coding features or bug fixes without touching the main code branch. While tags are great for labelling a point in time within the code, for example a new release of your application. These Git features aren’t competing features. They aren’t alternatives to each other. They are features that can work together to add functionality and flexibility to your workflow. If you aren’t already using both of these features in your development environment, please do take the time to discuss with your team the introduction of them. ### What is Backup and Recovery? URL: https://www.techielass.com/what-is-backup-and-recovery/ Last updated: 2022-12-15T08:01:00.000Z Backup and recovery is the process of creating and storing copies of data that can be used to protect an organisation against data loss. Sometimes you’ll hear it referred to as operational recovery. The process of backup typically involves creating regular copies of the data and storing them in a secure location, more often than not in a location away from the original data. In the event of data loss, the recovery process typically involves restoring the data back to the original location or an alternative location where it can be used in place of the lost or damaged data. ## Why is backup and recovery important? Backup and recovery is important because it helps to protect organisations against data loss. Data loss can happen for a variety of reasons, hardware failure, natural disasters, human error and cyber attacks are just some. Without an effective backup and recovery plan organisations run the risk of losing important data that is essential to their operations. Loss of this data has the potential to result in financial losses, reputational damage and also loss of customer trust. For a backup plan to be effective it needs to be consistent, with backup copies taken on a regular basis. A number of factors dictate how often those backups should be taken. Typically speaking critical data should be backed up more often than data that isn’t critical to the organisation’s operations. ## Determine which data is important for backup In order to determine which data is important for backup, there are a number of factors to consider: - The value of the data to the organisation - The potential impact of losing the data - The frequency of changes to the data - The availability of other copies of the data - The cost and effort of backing up the data ## The recovery process The recovery process should be tested regularly, to ensure the backups can be successfully restored and the procedure to do so is understood. The last thing you want to discover during a data loss event is that the process of recovering isn’t correct or is missing a key component. It’s also key to work through the recovery plan in order to understand if it’s still relevant to the organisation’s needs. Both from a data point of view and operationally. ## What are the benefits of cloud backup When thinking about the location of your backup using Cloud is an option. There are benefits to using cloud backup: - Scalability: Cloud backup services can easily scale up or down to accommodate your changing data storage needs. - Accessibility: Data backed up to the cloud can be accessed from anywhere with an internet connection. - Security: Typical cloud backup services have advanced security measures, to protect any data against unauthorised access. - Cost-effective: Cloud backup services can be more cost-effective than traditional on-premises backup solutions. ## Backup Solutions There are a number of backup and recovery software solutions in the market. For more information on the options available the [2022 Gartner Magic Quadrant For Enterprise Backup and Recovery Software Solutions](https://www.gartner.com/doc/reprints?id=1-2AQYKVXU&ct=220803&st=sb&ref=techielass.com) report is a great starting point. ### Create your first Azure Bicep Template URL: https://www.techielass.com/create-your-first-azure-bicep-template/ Last updated: 2022-12-23T16:49:15.000Z Azure [Bicep](https://docs.microsoft.com/azure/azure-resource-manager/bicep/overview?ref=techielass.com), a Domain-Specific Language (DSL) was announced in 2020 by Microsoft. This new project was introduced to help engineers deploy resources in Azure. It is an [Infrastructure as Code (IaC) language](https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools/). Bicep is modular and has been designed so you can re-use a lot of your work across different templates or deployments. Since its launch Bicep has become popular within the IT community. You can find blog posts, tweets, conference sessions, and plenty of interaction on the official [Bicep GitHub space](https://github.com/Azure/bicep?ref=techielass.com). Bicep became production ready at v0.3\. It is supported by Microsoft Support Plans. In this post I want to walk you through creating your first Bicep template. ## Prerequisites You need the following tooling to get started with Bicep: - [Visual Studio Code](https://code.visualstudio.com/?ref=techielass.com) - [Bicep extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-bicep&ref=techielass.com) - [Azure PowerShell](https://docs.microsoft.com/powershell/azure/install-az-ps?view=azps-7.0.0&ref=techielass.com) ## Creating your first Bicep template In this post, I explain how to create a basic template. The post assumes you have experience with ARM templates or similar. I will walk through the creation of an Azure App Service Plan and Azure Linux Web App. I like to create my templates inside Visual Studio Code with the Bicep extension installed as it helps with formatting and syntax. First in the template, you need to declare the parameters and variables you're using: ```bicep //Declare parameters param sku string // App Service Plan pricing tier param linuxFxVersion string = 'node|18-lts' // The runtime stack of web app param location string // Resource Azure region location param resourceTags object = { Environment: 'Tutorial' Owner: 'Sarah' } // Tags for all resources param appServicePlanName string // Name of the App Service Plan param webSiteName string // Name of the Web App being deployed ``` You can declare static entries for these parameters, or you can leave them blank and then input values during deployment. Here we are declaring some as static and some will be defined during the deployment. The next thing we need to do within the template is to define how we want to deploy the Azure App Service Plan: ```bicep // Deploying the Azure App Service Plan resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = { name: appServicePlanName location: location tags: resourceTags properties: { reserved: true } sku: { name: sku } kind: 'linux' } ``` Let’s break this down and explain what each of the lines mean: I'll break some of this down for you: - **The resource identifier (resource appServicePlan)** \- this is not the name of the resource that you'll create in Azure, it's just instructing the Bicep template what resource you are creating. - **Microsoft.Web/serverfarms@2022-03-01** \- defines the resource provider Microsoft.Web, then the resource type serverfarms, and lastly the API version 2022-03-01 to use. It’s always worth checking the official Microsoft documentation to see if there's a newer API. - **Name** \- this is the actual name of the Azure resource, in this case the name of the Azure App Service Plan that is being deployed. - **Location** \- this is the Azure region you'll deploy in. - **Tags** \- tagging your resources helps you organise them logically. But this is an optional part of the deployment. - **Properties** \- this is where you can begin to configure the App Service Plan to your needs. Here, you’re defining the SKU and the kind (Linux or Windows). Next we need to define the Azure Web App: ```bicep // Deploying the Azure Web App resource appService 'Microsoft.Web/sites@2022-03-01' = { name: webSiteName location: location tags: resourceTags properties: { serverFarmId: appServicePlan.id siteConfig: { linuxFxVersion: linuxFxVersion } } } ``` Again let’s break this down a bit more: - The **resource identifier (resource appService)** \- tells Bicep to create a new resource named appService. This name identifies the resource in the Bicep template. It's not the name of the resource that you'll create in Azure. - **Microsoft.Web/sites@2022-03-01** \- defines the resource provider Microsoft.Web, then the resource type sites, and lastly the API version 2021-02-01 to use. It’s always worth checking the official Microsoft documentation to see if there's a newer API. - **Name** \- this is the actual name of the Azure resource, here it’s defining the name of the Azure Web App that is being deployed. - **Location** \- this is the Azure region you'll deploy the resource to. - **Tags** \- tagging your resources helps organise them logically. But this is an optional part of the deployment. - **Properties** \- this where you begin to configure the App Service. You defined which App Service Plan you're using with this web app and the Linux version you want. There are more settings you can configure but we will keep it simple for this example. This is the completed template; you can see a copy of all the template [here](https://gist.github.com/weeyin83/9c39dd36b709478fe7991cb35d48d5ce?ref=techielass.com). ![Visual Studio Code - Azure Bicep template](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/vscode-bicep.PNG) Visual Studio Code - Azure Bicep template ## Deploy an Azure Bicep Template Now we have the template, it's time to deploy it. There are different ways you can deploy Azure Bicep templates. You can deploy them through Azure CLI, Azure PowerShell, Azure DevOps or GitHub Actions and beyond. I recently wrote a blog post walking you through the process of deploying Azure Bicep templates using GitHub Actions, and you can find that tutorial [here](https://www.techielass.com/deploy-azure-bicep-using-github-actions/). For this example, though, we are going to use Azure PowerShell. The first step is to ensure that your resource group is created for your resources to go into. The following PowerShell command can be used to deploy a resource group: ```powershell New-AzResourceGroup -Name “Sarah-RG” -Location "West Europe" ``` ![PowerShell - Creating an Azure Resource Group](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/powershell-rg-creation.png) PowerShell - Creating an Azure Resource Group Now that the resource group is in place, we can start to deploy resources to it. To do that we can use the PowerShell command *“New-AzResourceGroupDeployment”*. During the deployment we need to specify some variables: - A new for the deployment so we can track its process - The name of the resource group we are deploying to (the one we’ve just created) - The name of the Bicep template file we are deploying - The SKU we want to use for the Azure App Service Plan - The location we want our resources to be deployed to - The name of the Azure App Service Plan we are deploying - The name of the Azure Web App we are deploying *(remember this needs to be unique to the whole of Azure!)* Below is the full command we are issuing: ```powershell New-AzResourceGroupDeployment -Name "bicep-deployment" -ResourceGroupName "Sarah-RG" -TemplateFile webapp.bicep -sku "S1" -location "westeurope" -appServicePlanName "asp-plan" -webSiteName "sarah-demo-website" ``` ![PowerShell - Deploying an Azure Bicep template](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/powershell-bicep-deployment.PNG) PowerShell - Deploying an Azure Bicep template When the PowerShell command executes it should output information about the resources that it has deployed. ![PowerShell - Azure Bicep deployment output](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/powershell-bicep-output.PNG) PowerShell - Azure Bicep deployment output You can also use a simple PowerShell command to double check what has been created within the resource group: ```powershell Get-AzResource -ResourceGroupName Sarah-RG | Format-Table ``` ![PowerShell check the Azure resource group is created](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/powershell-check-rg-1.PNG) PowerShell check the Azure resource group is created ## Conclusion Congratulations! You have walked through your first Azure Bicep template and deployed resources to Azure using it! If you’d like to see me walking through an Azure Bicep template and it’s deployment the please check out this video: YouTube video - Build your first Azure Bicep Template The next step in your learning journey is to create more complex Bicep deployments by exploring [Bicep modules](https://docs.microsoft.com/azure/azure-resource-manager/bicep/modules?ref=techielass.com). ### Azure Local: The best of the cloud and on-premises URL: https://www.techielass.com/azure-stack-hci-the-best-of-the-cloud-and-on-premises/ Last updated: 2025-05-01T10:38:40.000Z The IT industry is an evolving and changing place. The multi year pandemic has heightened a lot of the challenges that the industry has faced and also accelerated solutions. It’s not just IT alone that are facing challenges, manufacturers, retailers, healthcare, finance, they are all facing challenges due to the way we as humans want to work or how we want to interact with these industries. According to a [new report](https://www.techrepublic.com/article/report-82-of-it-leaders-are-adopting-the-hybrid-cloud/?ref=techielass.com) in 2022 82% of IT leaders say that they have adopted the hybrid cloud to answer some of the challenges they are facing. And as a result we are seeing more and more interest and conversations around solutions such as [Azure Local (previously named Azure Stack HCI)](https://learn.microsoft.com/azure-stack/hci/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com). ## What is the Azure Stack HCI? The official definition of Azure Local (previously named Azure Stack HCI) from Microsoft is: “Azure Stack HCI is a hyperconverged infrastructure (HCI) cluster solution that hosts virtualized Windows and Linux workloads and their storage in a hybrid environment that combines on-premises infrastructure with Azure cloud services.” So, what does that actually mean? Azure Local (previously named Azure Stack HCI) is hardware that lives in your datacenter. It runs the Azure Local (previously named Azure Stack HCI) operating system, which is very similar to Windows Server. And you can manage it using the [Windows Admin Centre](https://learn.microsoft.com/windows-server/manage/windows-admin-center/understand/what-is?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) tool. Which means for a lot of organisations they can use existing skills and use products familiar to them and their engineers. ![Azure Stack HCI solution - image courtesy of Microsoft](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/azure-stack-hci-solution.png) Azure Stack HCI solution - image courtesy of Microsoft You can simplify your adoption of a hybrid cloud strategy when you use Azure Local (previously named Azure Stack HCI) as it was designed with hybrid in mind. It already has integration with Azure built in. You can see and manage certain aspects of your HCI clusters from inside the Azure Portal! With Azure Local (previously named Azure Stack HCI) you can use existing skills, connect to Azure and gain hyperconverged efficiency. ## What is Azure Local (previously named Azure Stack HCI) used for? Azure Local (previously named Azure Stack HCI) has many great use cases, and it also has examples where it doesn’t belong as the right solution. If you are an organisation who already is using some Azure services, for example Azure Files, Azure Backup, Azure DevTest Labs in your environment and it’s time to look at your virtualisation platform. Azure Stack HCI is a great option. You can modernise that virtualisation with one eye to the investments you’ve already made within the Azure ecosystem. As well as an eye on the existing investments, Azure Stack HCI can still integrate third party products you are already using. If we look at Colorado State University (CSU), they did just that. You can read their full story and how Azure Local (previously named Azure Stack HCI) has helped simplify their environment [here](https://customers.microsoft.com/story/1521471680221886667-colorado-state-university-higher-education-azure?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com). Some companies or industries might have the need for an [“air gapped” network](https://en.wikipedia.org/wiki/Air%5Fgap%5F%28networking%29?ref=techielass.com). This kind of disconnected scenario isn’t suitable for Azure Local (previously named Azure Stack HCI). Azure Local needs to be connected to Azure. There is no functionality that allows it to run without being connected to Azure, [it needs to at least talk to Azure once every 30 days](https://learn.microsoft.com/azure-stack/hci/faq?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com#can-i-use-azure-stack-hci-and-never-connect-to-azure). ## What is the difference between Azure Stack and Azure Stack HCI? A while back Azure Stack was a product, now it’s a family of products. You have [Azure Stack Edge](https://azure.microsoft.com/products/azure-stack/edge/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com), Azure Local (previously named Azure Stack HCI) and [Azure Stack Hub](https://azure.microsoft.com/products/azure-stack/hub/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com). Azure Stack Edge is great for providing machine learning at the edge or network data transfer from edge to cloud. Azure Local (previously named Azure Stack HCI), as we’ve discussed, is great for modernising on-premises architecture and providing scalable virtualization and storage. Azure Local (previously named Azure Stack HCI), is the solution to running your own private, connected or disconnected cloud using Azure services on-premises. It’s a great option for those “air gapped” networks. ## What data does Azure Local send to Microsoft? Azure Local (previously named Azure Stack HCI) needs to talk to Azure at least once every 30 days. What data is it collecting and sending to Azure from your environment? It is not sending virtual machine names, configurations or contents of your resources to the cloud, unless you are using services like Azure Backup or Azure Site Recovery and have explicitly elected to send that information. What Azure Local (previously named Azure Stack HCI) is sending back to Azure is diagnostic data. It’s collecting and sending data that helps to keep your HCI clusters up to date, secure and operating properly. The data that is collected is retained for 90 days within a US located Azure datacenter. There is a lot of diagnostic data that is collected, a sample of that data is: - Information about servers such as operating system version, processor model, memory size, - A list of Azure Local (previously named Azure Stack HCI) server features that are installed - Information to measure the reliability of Hyper-V And much more, you can find a comprehensive list [here](https://learn.microsoft.com/azure-stack/hci/concepts/data-collection?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com). ## Does Azure Local (previously named Azure Stack HCI) replace Windows Server? The short answer is no, they are two different products, with two different jobs. Windows Server is an operating system that can help provide you with great functionality in your business. You can run Active Directory services on a Windows Server. You can run DNS and DHCP services on your Windows Server. Crucial services for any organisation to run. Windows Server needs a host though. It needs somewhere to live and that’s where Azure Local (previously named Azure Stack HCI)comes in. It can be that host. Azure Stack HCI can host Windows virtual machines and Linux. It can also host Kubernetes clusters or Azure Virtual Desktop (AVD). They serve different purposes in your environment. ## What's new in Azure Local? At Microsoft Ignite in 2022 there were a raft of interesting updates released relating to Azure Local (previously named Azure Stack HCI). You can find out more about them from this video: What's new for Azure Stack HCI Ignite 2022 announcements ## Learn more about Azure Local If you want to dive deeper into this topic there are two great Microsoft Learn learning paths you can follow: - [Azure Stack HCI foundations](https://learn.microsoft.com/training/paths/azure-stack-hci-foundations/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Operate and maintain Azure Stack HCI](https://learn.microsoft.com/training/paths/operate-maintain-azure-stack-hci/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) ![Never stop learning](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/learnbadge.png) Never stop learning There isn’t a dedicated exam to the Azure Stack HCI product, however, you are interested in learning more about hybrid cloud then the [Microsoft Certified: Windows Server Hybrid Administrator Associate](https://learn.microsoft.com/certifications/windows-server-hybrid-administrator/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) certification is one to look into. ### Deploy Azure Bicep using GitHub Actions URL: https://www.techielass.com/deploy-azure-bicep-using-github-actions/ Last updated: 2022-12-01T14:21:46.000Z Deploying your resources to Azure using [Infrastructure as Code (IaC](https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools/)) is often a more efficient and reliable way to deploy resources to Azure than deploying them manually. There are many ways for you to deploy your IaC templates, you can manually send commands instructing the templates to deploy. Alternatively you can use DevOps tooling such as Azure DevOps, [GitHub Actions](https://youtu.be/bnoh9cLxbLM?ref=techielass.com), or something similar. In this blog post I want to walk you through the process of deploying an [Azure Bicep](https://www.techielass.com/getting-started-with-azure-bicep/) template to Azure using GitHub Actions. ## Azure Bicep template files I am going to deploy an Azure Storage account to Azure during this process. If you are unfamiliar with Bicep templates, check out my video which walks you through [building your first Bicep template](https://youtu.be/yTMYp2cR%5FBg?ref=techielass.com). ## Create a repository within GitHub The first thing that we want to do is create a repository within GitHub so we can store our Bicep templates and also create our GitHub Action. If you don’t already have a GitHub account, it is fast and [free to sign up for an account](https://github.com/signup?ref%5Fcta=Sign+up&ref%5Floc=header+logged+out&ref%5Fpage=%2F&source=header-home). In the upper right corner of any page of GitHub use the + drop down menu and select **New repository.** ![Create new repository in GitHub](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/github-dropdown.png) Create new repository in GitHub You will have the option of using a template to create your repository, in this case a template isn’t needed. In the Owner drop-down select the account you wish to create the repository on. Type a name for your repository and an optional description. ![Select GitHub repository owner](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/github-owner.PNG) Select GitHub repository owner Choose a repository visibility. ![GitHub visibility settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/github-visibility.PNG) GitHub visibility settings Click **Create repository.** ![Create GitHub repository](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/github-create.PNG) Create GitHub repository ## Store Azure Bicep files within GitHub Now that a repository within GitHub has been created it’s time to get the Bicep files into that repository. There are a number of ways this can be done. Using the Git command line tool is usually my preferred way. If you are unfamiliar with Git you can follow along my [14 days of Git series](https://www.techielass.com/tag/14daysofgit/) to learn more. However, as there are only two files to add to the repository at this time I am going to create them manually within the GitHub website. Navigate to the new repository you have just created. Click on **Add File** ![GitHub Add File](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/github-addfile.png) GitHub Add File Then select **Create New File** ![Create a new file in GitHub](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/github-newfile.png) Create a new file in GitHub This will open an editor. Within the name file type **Storage-Template/main.bicep** \- this will create a folder called Storage-Template and then the file main.bicep. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/github-filename.png) Within the file editor copy the following Bicep template file. ```bicep @description('Storage Account type') @allowed([ 'Premium_LRS' 'Premium_ZRS' 'Standard_GRS' 'Standard_GZRS' 'Standard_LRS' 'Standard_RAGRS' 'Standard_RAGZRS' 'Standard_ZRS' ]) param storageAccountType string = 'Standard_LRS' @description('Location for all resources.') param location string = resourceGroup().location @description('The name of the Storage Account') param storageAccountName string = 'store${uniqueString(resourceGroup().id)}' @description('The name of the Owner of this resource for the Azure Tag declaration') param ownerTag string = 'Sarah' @description('The purpose of this resource for the Azure Tag declaration') param purposeTag string = 'Demo' resource storage 'Microsoft.Storage/storageAccounts@2022-05-01' = { name: storageAccountName location: location tags: { Owner: ownerTag Purpose: purposeTag } sku: { name: storageAccountType } kind: 'StorageV2' properties: {} } output storageAccountName string = storageAccountName output storageAccountId string = storage.id ``` At the bottom of the editor there is a box asking for information about the new file you are about to commit, type in why you are adding this new file and then select **Commit New File**. ![GitHub commit a new file](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/github-commitnewfile.png) GitHub commit a new file *Best practice would be to create a new branch then create a pull request to move the file into the working branch, but as this is an empty repository we are just going to commit straight into the working branch.* Now the Bicep template is stored within our repository, the next file that is needed inside the repository is the [Bicep lint file](https://www.techielass.com/what-is-linting/). The linter file checks for any syntax errors and [best practice violations within our Bicep files](https://learn.microsoft.com/azure/azure-resource-manager/bicep/linter?ref=techielass.com). The linter file can help to enforce code standards that your organisation has specified. You can customise the linter file to match your needs. To add our linter file to the repository navigate to inside the **Storage-Template** folder. Click on **Add File** ![GitHub add a new file](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/github-addfile-1.png) GitHub add a new file Then select **Create New File** ![Create a new file in GitHub](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/github-newfile-2.png) Create a new file in GitHub This will open an editor. Within the name file type **bicepconfig.json** ![New file in GitHub](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/github-linterfilename.png) New file in GitHub Within the file editor copy the following linter file configuration. ```json { "analyzers": { "core": { "verbose": false, "enabled": true, "rules": { "no-hardcoded-env-urls": { "level": "error", "disallowedhosts": [ "management.core.windows.net", "gallery.azure.com", "management.core.windows.net", "management.azure.com", "database.windows.net", "core.windows.net", "login.microsoftonline.com", "graph.windows.net", "trafficmanager.net", "vault.azure.net", "datalake.azure.net", "azuredatalakestore.net", "azuredatalakeanalytics.net", "vault.azure.net", "api.loganalytics.io", "api.loganalytics.iov1", "asazure.windows.net", "region.asazure.windows.net", "api.loganalytics.iov1", "api.loganalytics.io", "asazure.windows.net", "region.asazure.windows.net", "batch.core.windows.net" ] }, "no-unused-params": { "level": "error" }, "no-unused-vars": { "level": "error" }, "prefer-interpolation":{ "level": "error" }, "secure-parameter-default":{ "level": "error" }, "simplify-interpolation":{ "level": "error" } } } } } ``` At the bottom of the editor there is a box asking for information about the new file you are about to commit, type in why you are adding this new file and then select **Commit New File**. ![GitHub commit linter file](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/github-commitlinter.png) GitHub commit linter file The repository now contains the Bicep template file and the linter file. ## Create credentials within Azure to programmatically deploy resources The next step is to create an [Azure Service Principal](https://docs.microsoft.com/azure/active-directory/develop/app-objects-and-service-principals?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) that can be used to connect to the Azure Subscription and deploy or manage resources inside that subscription. You can create the Service Principal in a couple of ways, using the [Azure Portal](https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com), [PowerShell](https://www.techielass.com/create-azure-credentials-for-use-in-github-actions/) or the CLI. Below is the CLI method. Open the [Azure Cloud Shell](https://shell.azure.com/?ref=techielass.com) and set it to use bash. Enter the following command: ```bash subscriptionId=$(az account show --query id --output tsv) az ad sp create-for-rbac -n "GitHubActionsCrednetial" --role "Owner" --scopes /subscriptions/$subscriptionId ``` The output will be similar to this: ```bash { "appId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", "displayName": "GitHubActionsCredential", "password": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", "tenant": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX" } ``` Take a copy of this output as it’s needed in the next step. ## Use GitHub secrets to store Azure credentials In order for GitHub to use the Azure Service Principal credentials it needs to be stored inside a GitHub secret. Within the repository where your workflow is click on **Settings** \> **Secrets** \> **Actions** and then click on new repository secret. Give the new secret a name, I usually go with **"Azure\_Credentials"** and then take the output from the CLI script and paste it into the value section. ## Create GitHub Action to deploy Azure Bicep template Now that we have our Bicep files stored within GitHub and we have the necessary credentials created and stored within GitHub it’s time to create the GitHub action to deploy our resources. Within your GitHub repository head over to Actions and then select **New Workflow**. There are templates that you can use but we are going to start from scratch, so select “set up a workflow yourself”. The first thing that we want to do is give the workflow a name and also instruct why and when this workflow should trigger. ```YML # This workflow name: Bicep-Template_Build on: workflow_dispatch: push: branches: - main pull_request: branches: - main ``` This workflow will trigger on three occasions: - Manually - When code is pushed into the main branch of the repository - When a pull request is pushed into the main branch of the repository The next section of the workflow is to define variables. This will allow us to use the template in other scenarios. ```yml env: resourceGroupName: TemplateDeploymentRG resourceGroupLocation: uksouth bicepfilePath: ./Storage-Template/main.bicep ``` Now it’s time to start defining the job and steps for this workflow. This workflow will have two jobs and multiple steps. The first job is to build or validate our template. ```yml # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3 # Builds the Bicep template - name: bicep-build-output uses: Azure/bicep-build-action@v1.0.1 with: bicepFilePath: ${{ env.bicepfilePath }} outputFilePath: ./main.json - name: Upload a Build Artifact uses: actions/upload-artifact@v3.1.1 with: path: ./main.json ``` The build part of the workflow does several things. The first is to take a copy of the code within the repository and make it available for the [GitHub worker](https://www.techielass.com/github-runners/) to use. The next step is to build the Bicep file. This validates the file we have created against the linter file and then creates an Azure ARM template file. Within the workflow the ARM template file that is built from the Bicep is uploaded as an artifact and is available to view or use either later in the workflow or after the workflow has finished. *This is an entirely optional stage, it’s one I build into the process just for more complex deployments and potential troubleshooting.* Our second job is to deploy the template and create our Azure Storage account inside Azure. ```yml # Deploys the template to Azure deploy: runs-on: ubuntu-latest needs: [build] steps: - uses: actions/checkout@v3 - name: Azure Login uses: Azure/login@v1.4.3 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Az CLI Create Resource Group uses: Azure/CLI@v1 with: inlineScript: | az group create \ --name ${{ env.resourceGroupName }} \ --location ${{ env.resourceGroupLocation }} - name: Deploy bicep to Azure uses: Azure/cli@v1 with: inlineScript: | az deployment group create \ --template-file ${{ env.bicepfilePath }} \ --resource-group ${{ env.resourceGroupName }} ``` The first step in this job is logging into Azure, this is calling the credentials we created earlier and using them to authenticate. The next step is to create an Azure resource group, this is using one of the variables that you created right at the start of the template. If your resource group already exists, then this step will just continue on to the next. This third step is now deploying the Bicep template. After a few minutes of running within the Azure Portal the storage account will be available and the GitHub Action will report as having finished. ![GitHub Action workflow complete](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/github-completedaction.png) GitHub Action workflow complete ## Conclusion Hopefully this article has guided you through the process of deploying your first Azure Bicep template using GitHub Actions. I look forward to seeing what else you automate! ### Jabra Engage 55 Review URL: https://www.techielass.com/jabra-engage-55/ Last updated: 2024-10-23T15:00:23.000Z The [Jabra Engage 55 ](https://www.jabra.co.uk/business/office-headsets/jabra-engage/jabra-engage-55?ref=techielass.com)headset is one of Jabra's dedicated office headsets. With a wireless range of 150m and the DECT security certified wireless adapter to prevent eavesdropping this headset packs a punch. ### Headset Configuration Options There are a couple of configuration options you can [buy](https://www.stylink.it/G7zmLikBlBa?ref=techielass.com) of this headset. The model I have is the Jabra Engage 55 Stereo USB-A model with a charging stand. But there are mono editions available, where you only have one earmuff. And there is a more portable mono edition available. The charging stand is also option. I have had the charging stand on my desk with the headset for a while now and it's a nice edition to my desk and it means I know where my headset is! ![Jabra Engage 55](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/20221122_164925.jpg) Jabra Engage 55 ### Comfort The Engage 55 headset is an on-ear headset. Meaning the earmuffs sit on your ear. And I've realised over trial and error of several headsets that this kind isn't my favourite. I much prefer an over ear headset such as the [Jabra Evolve2 85](https://www.techielass.com/jabra-evolve2-85/). But this is entirely a personal preference and I know others that have said they really enjoy the Engage 55 and use it as their daily driver. One thing I did notice was raising and lowering the microphone between calls, the microphone did catch the edge of my glasses sometimes. Which isn't ideal. ### Sound Quality I've always found Jabra headsets to be of quality and none have let me down in the sound department. Headsets for me aren't just about taking and receiving calls, I use them for all listening to music, dictation, etc and I've not had any issues. Please can hear me, I can hear them on calls. I can dictate quite happily within a Word doc, or a Google doc and the software hears me, whether it understands my accent is another topic entirely. The other day someone remarked how good the sound quality of the Engage 55 was with music! > My go to headset is the Jabra Evolve2 85 🤣🤣 > > Though I am \*floored\* by how well the Jabra Engage 55 handles music! > > — Phil Howard (@Gadgetoid) [November 21, 2022](https://twitter.com/Gadgetoid/status/1594765342282506241?ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) This headset is a powerful one. It certain doesn't disappoint within the sound quality arena. ### Battery Life I've never been scientific with my battery life tests. I use the headsets as they are intended for, everyday use and gauge how they perform. For me a good headset battery life is not having to charge it every day. If I am constantly having to ensure it is on charge, then it's not really fit for purpose. But again, this is a personal preference. I actually found myself replacing my headset on the charging stand whenever I had a long break between calls. So, I never got to the stage where the battery was low. Which isn't great from a review point of view. Official documentation comments that you should get 13 hours of charge out of the headset, so that should be plenty for a day of calls. The thing to note with this headset is it uses a USB micro port to charge. The charging stand has that type of connecter for the headset to sit on. While the charging stand itself uses a USB A connection for it's power. The USB micro port isn't great for when I am travelling or away from my desk, I only tend to have a USB C cable in my bag these days as most devices I have are that. ![Jabra Engage 55](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/20221122_164834.jpg) Jabra Engage 55 ### Overall This is a solid headset that will be a great daily driver for those looking for a light weight, powerful on the ear headset. It's definitely a great addition to the Jabra range. It's always comforting to see that every Jabra headset I've ever had could potentially be a great device for someone, from comfort, noise cancellation or sound quality. Whatever [Jabra headset](https://amzn.to/3tRY2WT?ref=techielass.com) you choose, you won't be disappointed. ### Staying Connected URL: https://www.techielass.com/staying-connected/ Last updated: 2022-11-22T16:06:51.000Z Connecting with the wider tech has made such a difference to my career. It opened up so many opportunities for me. The main source of meeting new people for me has been on [Twitter](https://twitter.com/techielass?ref=techielass.com). For years it was the main platform that I have used to meet people, talk to people, share my content and also learn about community event. Plus, so much more. With Twitter's recent developments I thought it might be worth while sharing some other places you can connect with me. Just in case. ### Blog RSS Feed I know RSS feeds are considered a dead piece of technology these days. But I still have an RSS feed attached to my blog for those that wish to use it. You can follow my [RSS feed here](https://www.techielass.com/rss). ### Instagram My Instagram feed is mostly pictures of Scotland and the places and things I do outside of work. You can find me as [\_techielass](https://www.instagram.com/%5Ftechielass/?ref=techielass.com) there. And would love to meet new people sharing great photos of where they live. ### LinkedIn I am quite active over on [LinkedIn](https://www.linkedin.com/in/sazlean/?ref=techielass.com) and find it a great platform to share longer thoughts and get discussions going versus other social media platforms. Please feel free to connect with me over there, one thing I do ask is let me know why you are connecting, helps provide some context. ### Mastodon Lots of people are moving from Twitter over to Mastadon and while I am not 100% sure of how the platform works or if I'm ready to start interacting on another social media platform. I do have a [profile](https://mastodon.social/@techielass?ref=techielass.com) over there, so please do connect with me there. And we can see how it goes! ### YouTube I am active over on [YouTube](https://www.youtube.com/techielass/?sub%5Fconfirmation=1&ref=techielass.com) and try to get at least one video up a week. I don't earn any [money](https://www.techielass.com/my-youtube-channel-isnt-monetized/) from YouTube for the videos I create, so all your support means a lot to me. ### Blog Newsletter And last but by no means least, [subscribe to my blog](https://www.techielass.com/newsletter/). You'll get an email every time I publish a new blog. And occasionaly I do send out emails to my subscribers only. Let's never forget that connecting with people in the IT community. Hopefully I've listed a platform above that you are using and we can always stay connected and learn from each other. ### Infrastructure as Code: The benefits and the tools URL: https://www.techielass.com/infrastructure-as-code-the-benefits-and-the-tools/ Last updated: 2024-02-16T14:38:36.000Z Infrastructure as Code (IaC) is the management of your infrastructure through machine readable definition files, much like source code for an application. The infrastructure that you manage through IaC could relate to networks, virtual machines, load balancers, monitoring, containers, databases, storage and much more. The principle of using IaC is to bring a repeatable and consistent method to deploying your environment every time you need it. In this article I'll explore the benefits of using infrastructure as code, common methods and the tools you can use to deploy your infrastructure. ## Benefits of Infrastructure as Code There are a lot of benefits to using IaC within your business. There are benefits both to your engineers and the business as a whole. ### Decreased Risk Provisioning your infrastructure manually, by hand is risky. Unintentional mistakes could be made, a tick box is left unchecked changing the entire configuration. Knowledge on how to deploy the infrastructure might be lost if someone in the company leaves. By representing your infrastructure as blocks of code you can derisk the deployment. Blocks of code are generally less error prone. It is best practice to store your IaC in a source code repository, and this gives you history, changes and context as to what the code does. Security is an important factor today, especially when deploying within public cloud platforms like Microsoft Azure, GCP or AWS. You need to ensure anything deployed is adhering to your organisation's security policies. When deploying manually again there is the chance of mistakes happening, deploying through IaC means that those mistakes aren’t going to happen. Building your IaC to adhere to security policies and needs of the organisation means they are then whenever or whoever deploys that infrastructure. ### Consistency & faster iterations When you manually deploy your infrastructure it can take a lot of time, to ensure that everything is configured how it should be. It can be a slow process that holds up other areas within the IT department moving forward. If you store your infrastructure configuration as IaC then you can ensure that every time it is deployed it is the same. No tick boxes are left unchecked, or a setting missed. It will be the same regardless of who deploys it. Traditionally the Operations team within an IT department deploy the infrastructure introducing IaC to your department can mean that more people can deploy the infrastructure. This can allow for faster iterations across the department. ### Cost & Speed As stated earlier, manually deploying your infrastructure can be time consuming. By introducing IaC to deploy your infrastructure you are speeding the process up and freeing up your resources to do other tasks. Which ultimately means you are saving money; your team can effectively hit a button to deploy the infrastructure and then go off to work on other projects or tasks while the system carries out the deployment. The speed at which you can deploy infrastructure via IaC is markedly different than when you do it manually. Speeding up the deployment means you can better react to changes and requests. ## Infrastructure as Code and DevOps Writing templates that define how to configure, build and construct your infrastructure is a great move forward. But you also need to look at automating it and moving away from the manual deployments. Especially if your developers are already automating their software code with a DevOps CI/CD pipeline. Having your software code and infrastructure code automated and version controlled will really give you the benefits that we talked about above and much more. ## Infrastructure as Code Methods When we are writing or talking about IaC it is important to understand that there are two types of methods available and their differences. The two methods are declarative and imperative. With a declarative language it defines the desired state of the target. It describes the intended goal that has to be reached. With an imperative language you define the specific commands that need to be executed to achieve the desired state. Let’s use a real-world example to explain this in simple terms. If you were going to bake a cake the imperative recipe would be: 1. Turn your oven on and preheat at 190°C 2. Add your eggs, sugar, butter, flour to a large bowl and mix well. 3. Once mixed, pour the batter evenly into a round cake tin. 4. Bake for 30 minutes 5. Remove the cake from the oven and let it cool for 5 minutes. 6. Remove the cake from the tin and enjoy. If we were to bake a cake following a declarative recipe it would be: 1. Preheat the oven at 190°C 2. Mix ingredients in a bowl. 3. Put the cake batter in the oven and bake for 30minutes. 4. Once baked, remove from the oven. 5. Enjoy. The imperative way gives you explicit instructions, like *“pour the batter evenly”*. In the declarative way we are really just told what should be happening, with the goal being a cooked cake. Back in the tech world imperative is great for the deploy and forget model of deploying infrastructure. If you are looking for a more agile or changing environment, then declarative might be more appropriate. But it really comes down to the needs of your organisation, skills of staff and lots more besides. ## Infrastructure as Code Tools There are a lot of tools out there you can utilise to define your infrastructure and environment into code. Chef, Puppet, Azure Bicep, AWS CloudFormation, Pulumi, Terraform and Ansible are just some of them that are available. Let’s take a look at each of these. ### Chef [Progress Chef (formerly Chef)](https://www.chef.io/?ref=techielass.com) is an [open-source tool](https://www.techielass.com/what-is-open-source/) that can run on any cloud platform as well as Windows or Linux operating systems. The culinary terminology is used throughout their tooling as you use cookbooks and recipes to not only deploy your environments but also configure your systems. Chef has been around since early 2009 and has a large back catalogue of templates or recipes you can pull on. You don’t have to start from scratch. Chef uses Ruby DSL as its syntax so does require either existing knowledge or the ability to learn to make the most of it. The other issue with Chef is that it requires infrastructure to run on, which can amount to a significant cost and also add in some additional management overhead. ### Puppet [Puppet](https://puppet.com/?ref=techielass.com) is a declarative IaC tool that is used to deploy and manage your system configuration. Like Chef, Puppet requires an infrastructure to run it on with agents being deployed to servers you are deploying and managing. Puppet is a tool that is heavily used for on-premises deployments, and as such there is a large support community out there to help and provide examples. ### Azure Bicep [Azure Bicep](https://docs.microsoft.com/azure/azure-resource-manager/bicep/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) is a declarative language that will help you deploy your Azure resources. I've also heard Azure Bicep described as a Infrastructure as Code (IaC) tool. Azure Bicep is an evolution from [Azure Resource Manager (ARM) templates](https://learn.microsoft.com/azure/azure-resource-manager/templates/overview?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) that we've had for many years. You don't need any prior knowledge of ARM templates to get started with Azure Bicep. ![Azure Bicep template example](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/10/biceptemplate.PNG) Azure Bicep template example Azure Bicep can only deploy to Azure, for those working in multi cloud environments it can’t be used to deploy to other environments. One of the benefits of using Azure Bicep though is, because it is a first party product when any new features or products are released you can immediately use Bicep to deploy or configure them. You don’t have to wait for that integration to come along, which is one of the downfalls of third-party provider tools. ### AWS CloudFormation [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html?ref=techielass.com) is a tool that can help you create or manage your resources within AWS in a programmatic way using Infrastructure as Code (IaC). It can help you replicate your environment easily within a few clicks. ![AWS CloudFormation template example](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/10/awstemplate.PNG) AWS CloudFormation template example You can declare the resources that you need within your CloudFormation template. They will be created in the right order. A CloudFormation template can either be YAML or JSON. Similar to Azure Bicep, AWS CloudFormation can only be used within the AWS cloud environment so can’t be used to deploy resources to other environments. ### Pulumi [Pulumi](https://www.pulumi.com/?ref=techielass.com) is another declarative IaC tool. Pulumi is slightly different than other tools, it allows you to write your templates in either TypeScript, JavaScript, Python, Go or C#. Meaning if your team already has coding skills in one of these languages, they can easily adopt Pulumi. It can be a tricky tool to learn if you don’t have any experience of those languages though and can make adoption slow. Pulumi works with any of the cloud providers, giving those within multi cloud environments a lot of flexibility. ### Terraform [Terraform](https://www.terraform.io/intro?ref=techielass.com) is an open source IaC tool that has been created by HashiCorp. Terraform is able to deploy resources to all the major cloud providers as well as the ability to deploy to some on-premises solutions such as Hyper-V and VMware. Because Terraform can deploy to so many solutions lots of people are choosing this as the IaC tool. They learn the syntax for the tool then can use that knowledge to deploy resources to where they need to. ![Terraform template example](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/10/terraform.PNG) Terraform template example While you can’t take a Terraform template that deploys Azure resources and apply it to AWS you can take the knowledge you have on how to create templates to create the correct one for AWS, etc. Terraform relies on plugins called providers to be able to interact with the cloud providers or other APIs. Each provider adds resource types or features to Terraform. Because [Terraform](https://www.techielass.com/tag/terraform/) is a third-party tool it can be slow for providers to be released when new features or products are released by cloud providers. ### Ansible [Ansible](https://www.ansible.com/?ref=techielass.com) is one of the imperative IaC tools on the market that helps to not only deploy your resources but also configure them. Ansible relies heavily on YAML and Python for its syntax. Ansible is agentless so there is a decreased maintenance cost to using this as your tool of choice. ## Conclusion Adopting IaC is crucial to engineers and organisations in this ever-changing IT world. You might have to learn something new; you might have to change your way of working as an engineer, but it’s the way deploying infrastructure is moving. It really will help to break down barriers, bottlenecks and information silos within your department. And the moving forward and integrating your IaC with DevOps principles will streamline processes and workflows even further. Don’t delay, start your infrastructure as code learning journey today! ### Running a user group in 2022 URL: https://www.techielass.com/running-a-user-group-in-2022/ Last updated: 2025-06-06T09:44:03.000Z In early 2017 I started running the [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com). It wasn’t something I’d ever done before and over the past five years it’s been a learning curve. I [shared](https://www.techielass.com/starting-and-running-a-user-group/) some of my thoughts on how to start and run a user group back in 2020\. I realised that things have changed since I wrote that. The last few years of COVID have changed how we all think and act. User groups are no different. As an organiser I have had to adapt how we run our meetups. ### Before COVID Before the COVID outbreak our meetups ran every two months. We’d usually start the event around 6:15pm, with the first speaker kicking off the event at about 6:30pm. We’d then have a 45-60minute break where attendees could mingle and grab something to eat and drink. For food we ordered pizza. Large pizzas that people could grab slices from and share with other attendees. Our second speaker would start their session around 7:45pm. And following the second speaker we’d run our well known quiz, finishing the event formally around 9pm. If not later. The venue that we used could hold up to 50 people but we’d always release more tickets due to no-shows. We used to end up with 30-40 people. ### Since COVID What has changed since COVID? We have been running in-person events since April 2022, and we’ve changed the format of the events. The first thing we’ve done is change venues. We now have a much more open space. The space has windows that can open. We also have two distinct areas. One where we can mingle and grab food and then another area for the presentation. Our timings have changed, we now start at 5:45pm, with our speaker starting at 6pm. Once the speaker has finished we run our quiz, which takes us to around 7pm. And that concludes the formal part of the evening. We then serve food and drink and our attendees mingle together. The food has changed as well. Instead of ordering large pizzas we have changed to ordering the personal sized ones from Dominos. It’s a 7inch pizza that is perfect for one person to eat. ![Car full of small pizzas!](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/10/pizzas.jpg) Picking up the pizzas! Changing from large pizzas to personal pizzas is generally to avoid anyone unnecessarily touching anyone else’s food. The costs haven’t differed to be honest going with this method. Usually the meetup starts to finish around 8pm, with folk starting to head home when they’ve caught up with each other and finished their food and drink. I’ve never had to chase anyone out of the venue, it’s just naturally flowed. The formal part of our meetup is shorter, but the overall event time is the same. ### Earlier start and finish times We’ve found that the earlier start time and finish times work well for people coming straight from their work and also for heading home. A lot of the train timetables have changed and the earlier finish means folks are able to get a train without issue and also head home to be there for any family commitments. We’ve adjusted the times to adjust for the different way people are working these days. ### Food and Drink Because our user group meetups happen at the traditional time that people would be sitting down for their dinner we provide food and drink for folks. We’ve switched from the big large sharing pizzas to the smaller personal sized pizzas. Before we started up our in person meetups we reached out to the community and most people said they wouldn’t like to share buffet style food again. And this is the reason we’ve changed to the personal sized pizzas. The personal sized pizzas are all boxed individually giving comfort to those that don’t want to share food that others might have touched. Whenever anyone signs up for a ticket via [Eventbrite](https://www.eventbrite.co.uk/o/glasgow-azure-user-group-13843919802?ref=techielass.com) or [Meetup](https://www.meetup.com/glasgow-azure-user-group?ref=techielass.com) for an event, they specify which type of pizza flavour they’d like. We still provide drinks in individual bottles or cans. That hasn’t changed. ![Space for eating and networking](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/10/foodarea.jpg) Space for eating and networking ### Hybrid? We've been running the meetups in 2022, solely in person. We have thought about streaming the meetups to an online audience but haven't done it. We want to ensure that everyone gets a great experience, and I don't think we can do that for both online and in person. Doing solely in person does mean that some people might miss out, and we appreciate that. I know some user's groups are running in person and streaming and if that works for their communities great. It's not something we're doing, although that might change in the future. We're always up for trying new things. 💡 Introvert in tech and unsure how to get involved in your local community? I’ve written about my own experience and tips that might help. 👉 [Check it out](https://yourblogurl.com/?ref=techielass.com) ### User groups are valuable to the community User groups are valuable events to their local community. They give people a chance to learn something new. They give people a chance to socialise and meet peers. They open up opportunities for people to speak or for people to volunteer and help run them. It can be stressful running a user group, it’s a volunteer position. But when I see the community come together and enjoy our meetups I know the hard work is worth it. We continue to adapt the [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com) to help the community. To make it suit their needs. ### I am speaking at Microsoft Ignite! URL: https://www.techielass.com/i-am-speaking-at-microsoft-ignite/ Last updated: 2025-06-06T10:02:21.000Z For the fourth year in a row, I can call myself a [Microsoft Ignite speaker](https://ignite.microsoft.com/?ref=techielass.com)! It's such an honour to speak at Microsoft's biggest conference and event for IT Pros. This year the event is doing something different. There will be an in-person and virtual event running from Seattle, Microsoft's base. And then several other countries will be holding smaller in-person events at the same time. Hopefully this makes it much more accessible for everyone, being able to see things either virtually or in-person local to them. I am supporting four different events in at the UK event in Manchester. During the event in Manchester there will be a live stream and I will be doing an interview there on the Thursday around 2:15pm UK time. Also, on the Thursday I will be taking part in an expert meetup session. "[Expert Meet-up: Build your modern, resilient and agile business on Microsoft Azure](https://ignite.microsoft.com/en-US/sessions/df0733a5-2641-48d0-b695-cc6d430ec2ec?source=sessions)". This is an opportunity for us to chat and share knowledge and ask questions. There are about 5 or 6 different people who will be there to answer your questions so be sure to come and say hello. I'll have some stickers to give away! On the Friday I have two speaking sessions. The first session is "Accelerating Innovation & empowering teams: From code to cloud in minutes", it is a speaking/panel discussion session with [Carole Logan](https://twitter.com/crgrieve?ref=techielass.com). The second session is another speaking/panel discussion session with [Lisa Clark](https://www.twitter.com/lisaattheedge?ref=techielass.com) entitled ["Azure Stack HCI: The best of the cloud and on-premises"](https://ignite.microsoft.com/en-US/sessions/e145a1c4-6cfe-4f72-9d51-d6c77c06f518?source=sessions). We will have stickers and Scottish shortbread to give away as well! I am very much looking forward to the event and sharing the stage with so many fantastic women. If you haven't register for Microsoft Ignite there is still time to do so [here](https://register.ignite.microsoft.com/?ref=techielass.com). And if you will be at the Manchester event, please do some say hello! ### I'm leaving Octopus Deploy! URL: https://www.techielass.com/im-leaving-octopus-deploy/ Last updated: 2022-10-07T16:01:28.000Z After 354 days as an Octonaut, it's time to head for a new adventure! Today, the 7th of October 2022, is my last day at Octopus Deploy. The past (nearly) year has been a great learning journey for me. I've stretched both myself technically and non-technically. When I joined Octopus Deploy, I had never used the tool before, so my first task was to ramp up on the tool. And I think I did that very convincingly; I delivered my [first webinar](https://youtu.be/LPfi1IiIgzc?ref=techielass.com) two months after starting. I then went on to deliver six talks to user groups and conferences across the world sharing my knowledge about Octopus and its power. While learning [Octopus Deploy](https://www.techielass.com/what-is-octopus-deploy/), I also expanded to learning more about [Azure DevOps](https://youtu.be/Ad7KQ0j%5FVXY?ref=techielass.com) and [GitHub Actions](https://www.techielass.com/tag/github-actions/). And I finally got round to learning [Azure Bicep](https://www.techielass.com/getting-started-with-azure-bicep/) and creating templates using that Infrastructure as Code language! ![never stop learning](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/More-You.png) never stop learning As well as expanding my technical knowledge I worked hard to develop the Community team and help grow it. I wrote a lot of different proposals to help shape how and why we were creating content for the audience, who our audience were, why subtitles on YouTube videos needed to be a default position, why a regular YouTube show was important to the brand of Octopus Deploy and sponsorship of some user groups. In July this year, I was promoted from Senior DevOps Advocate to Lead DevOps Advocate for the contributions I had made to the team. It's worth noting I wrote a 13 (A4) page document stating what I had done and why it was important in order to get that promotion, so never be frightened to voice your accomplishments! I definitely learnt a lot of my time at Octopus and am thankful to the journey I've had. ### What's next My new role starts in November, so I am going to enjoy some down time between now and then. 😊 ### Subtrees and Submodules - 14 days of Git URL: https://www.techielass.com/subtrees-and-submodules/ Last updated: 2022-10-06T07:01:59.000Z Today is the last official day of my [#14daysofGit](https://www.techielass.com/tag/14daysofgit/) learning journey, and today's topic is subtrees and submodules! ### What is a git submodule? Git submodules allow you incorporate and track version history of external code. Sometimes what you are working on, will depend upon external code. You could just copy and paste that external code into your main repository and use it. But there is the obvious disadvantage here of having too manually maintain that code and grab updates when they arise. You could use something like a package management system to help maintain the code, Ruby Gems or NPM. But again, there are downsides to this approach as well. Neither of these methods incorporate methods to track edits and changes of the external repository. A Git submodule is a recording within a Git repository that points to a specific commit in another external repository. Submodules are static and only track specific commits, they don't track git refs or branches. And don't automatically update when the external repository is updated. ### When should I use a git submodule? The use cases for Git submodule are: - When you have a component, you rely on that isn't updates very often and you want to track it as a dependency. - When you are delegating a piece to a third party, and you want to integrate their work at a specific release point. - When you rely on an external component that changes to fast, and you want to lock the code to a specific commit or point in time. ### What is git subtree? Git subtree lets you nest a repository inside another as a sub directory. > It's worth mentioning that there is also a merging strategy called [subtree](https://docs.github.com/get-started/using-git/about-git-subtree-merges?ref=techielass.com). So be careful with this term and ensure when talking or referencing subtree. ### Git submodule vs git subtree There are a lot of articles that say submodules aren't something you should use, and subtrees are the way forward. There are some benefits of subtree over submodule. But subtree has its own disadvantages. If we look at why people prefer subtree over submodule: - It's an easier workflow. - There is nothing to learn when using subtree, they can ignore the fact they are using subtree to manage dependencies. - Subtree doesn't add metadata files like submodule does. The drawbacks of subtree though are: - Contributing back to the original code is more complicated. - You need to be careful not to mix commits with your project and the third-party code. Both have their use cases but from the research I have done the preference seems to be *git subtree*, as it overcomes the drawbacks of git submodule. ### 14 days of Git Today has been an interesting day of learning for my last day. It's been mostly theory based. This [#14daysofGit](https://www.techielass.com/tag/14daysofgit/) learning journey has certainly been a journey for me. I've learnt a lot. I've cemented some of the basic skills and knowledge that I had around [Git](https://git-scm.com/?ref=techielass.com), while also adding more of the complex concepts to my skillset. If you wish to copy my journey my learning plan can be found at [https://github.com/weeyin83/14daysofgit](https://github.com/weeyin83/14daysofgit?ref=techielass.com) Feel free to contribute there with suggestions of other things to learn etc. Happy to hear suggestions on how to improve my learning journey. And if you are new to my blog then please do [subscribe](https://www.techielass.com/newsletter) and get notified of new posts that I do! ### Git Conflicts - 14 days of Git URL: https://www.techielass.com/git-conflicts/ Last updated: 2022-10-05T07:01:13.000Z I'm continuing on my 14 days of Git learning journey, you can see a history of what I've learnt so far [here](https://www.techielass.com/tag/14daysofgit/). Today I am exploring the world of conflicts, what they are, how to resolve them and how to find conflicts. ### What are Git conflicts? As we've seen in previous learning days [Git can handle merges](https://www.techielass.com/merging-with-git/) automatically most of the time. Git conflicts arises when two separate branches have made edits to the same line within a file or even when a file has been deleted in one branch and changed in another. When teams of people are working on different branches, features, bugs this is when conflicts are likely to happen. They are almost part of the collaborating nature of working with Git and source control. ### How do you resolve a git merge conflict? Generally, you'll get information back from Git when there is a merge conflict on what you should do to resolve it. Below is an error message when I tried to merge a branch into my main branch: ![git merge conflict error](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/gitmergeconflict.PNG) git merge conflict error I deliberately made changes to the README on both branches to trigger this error, but you can see the error message has told me there is an issue with the README file. If we switch over to [Visual Studio Code](https://code.visualstudio.com/?ref=techielass.com) and open that README file we can see more information as to what is causing the error: ![git merge conflict inside Visual Studio Code](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/gitmergeconflictvscode.PNG) git merge conflict inside Visual Studio Code As we can see in here Git has added some syntax for us, we have "less than" characters and "greater than" characters. There are 7 of each, and you can use these to search through your editor quickly if you have a lot of edits to be made. Within this example we have two sections: - The "less than" characters denote the current branch's edits, and the equal signs denote the end of the first section. - The second section is where the edits are from where we attempted to merge. This time it starts with the equal signs and ends with the "greater than" signs. It's up to you as the engineer, or merger to decide what stays and what goes. Within Visual Studio Code you also have the option to use the "Merge Editor", which gives you an even greater look at what is conflicting, and helps you correct it. If I open the Merge Editor it can help me either accept the incoming merge, the current one or both merges. I want to accept the change from the branch, so I put a tick next to that and accept the merge. ![correcting the git conflict within visual studio code](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/gitmergeaccept.PNG) correcting the git conflict within visual studio code Throughout this learning journey I have tried to do everything within the command line so I can really get to know Git and learn it without the assistance of editors. Here I have turned to an editor to help. Editors such as Visual Studio Code are there to assist you. And let's face it, most of us will be working within an editor when we encounter Git, so why not make use of the features when we get to more complex issues? There are other ways you might encounter a merge conflict, within GitHub for example. And there is great [documentation by GitHub](https://docs.github.com/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github?ref=techielass.com) on how to deal with that. Dealing with conflicts will always be tricky, deciding what to keep, what to delete, what to merge together. You as the merger or owner or even as a team need to decide what is best. For me this is probably good clear pull requests into repositories is needed, keep your pull requests simple, fix one bug or add one feature at a time. Give good explanations of what you are doing, etc That way if there is a merge conflict whoever is trying to decide what to do will have the right context and make their job easier. ### 14 days of Git Tomorrow is the last day of my 14 days of Git learning journey, on the last day we are tackling subtrees and submodules. Be sure to [subscribe](https://www.techielass.com/newsletter) and join me for that last step in the learning journey! You can follow along here: [https://github.com/weeyin83/14daysofgit](https://github.com/weeyin83/14daysofgit?ref=techielass.com) ### Git Stashing - 14 days of Git URL: https://www.techielass.com/git-stashing/ Last updated: 2022-12-22T08:02:50.000Z I'm continuing on my 14 days of Git learning journey, you can see a history of what I've learnt so far [here](https://www.techielass.com/tag/14daysofgit/). But today is all about the stash command and what it can be used for. ## What is a git stash? The git stash command temporarily stashes (shelves) any changes you've made to your working branch so you can work on something. When you are ready you can come back to the stashed changes and re-apply them later. It's worth nothing that any stash is done only to your local Git repository copy, stashes are not transferred to the remote location. ### Where is git stash saved? When you issue the *git stash* command, they are stored inside a file called stash inside the .git/refs folder. You can find all your stashes by using the command *git stash list*. If you drop or clear any stashes it will remove it from the stash list, but you might still have some unpruned data within your local Git repository. So that is something to be mindful of. ### How do I use git stash? The sequence of events for using git stash are as follows: 1. Save changes to branch 1 2. Run *git stash* 3. Check out branch 2 4. Work on the bug or feature in branch 2 5. Commit and push branch 2 changes to remote 6. Check out branch 1 7. Run *git stash pop* to get your stashed changes back ### How to create a stash Now we've looked at what stash does, where it stores information and the sequence of events when we are using. Let's take a look at how to use the commands in detail. If we have unsaved, uncommitted changes within a branch we are working on we can just type *git stash*. ![git stash command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/gitstash.PNG) git stash command This command will store or stash the uncommitted changes, either staged or unstaged files, and will overlook untracked or ignored files. If you wanted to stash untracked files, then you could use the command: *git stash -u* or *git stash --include-untracked* ![git stash -u command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/gitstashu.PNG) git stash -u command Alternatively, if you want to stash untracked files and ignored files you can use the command: *git stash -a* or *git stash --all* ![git stash -a command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/gitstasha.PNG) git stash -a command If there are specific files you want to stash then you can use the command: *git stash -p* or *git stash --patch* ### List git stashes You can use the command *git stash list* ![git stash list](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/gitstashlist.PNG) git stash list ### Managing multiple stashes From the above list we can see we don't have much context as to what each of those stashes are. It's recommended best practice when using stash to write a save message. Your command would look like this: ```bash git stash save "added new getting started guide" ``` When you list out your stashes you'll now have more information refer to. ![git stash list command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/gitstashlistb.PNG) git stash list command ### Retrieve git stash changes Now you have something stashed away, how do you retrieve it? There are two commands that you could use, *git stash apply* or *git stash pop.* Both of the commands reapply the changes that were stashed. There is a slight difference between what they do. - Git stash apply reapplies the changes - Git stash pop removes the changes from stash and reapplies them to the working copy Git stash apply allows you to reapply the stashed changes more than once. You can only use the Git stash pop command once. ### Clear stash You can clear out a specific stash by using the command: ```bash git stash drop stash@{1} ``` Or if you want to get rid of all stashes then you can use the command: ```bash git stash clear ``` ### 14 days of Git Today was really interesting, I love the fact that there is the stash feature. I would love to hear from people if they are using this feature in the wild and how it works and if it's got the potential to cause some disasters in your environment? Be sure to [subscribe](https://www.techielass.com/newsletter) and join me for that step in the learning journey! You can follow along here: [https://github.com/weeyin83/14daysofgit](https://github.com/weeyin83/14daysofgit?ref=techielass.com) ### Git Rebasing - 14 days of Git URL: https://www.techielass.com/git-rebasing/ Last updated: 2022-09-30T07:01:29.000Z It is Day 11 of my learning journey into Git. So far on my learning journey has taken me on the following path: - [What is version control?](https://www.techielass.com/what-is-version-control) - [What is Git?](https://www.techielass.com/what-is-git) - [Installing Git](https://www.techielass.com/installing-git/) - [Basic Git commands to get started](https://www.techielass.com/basic-git-commands-to-get-started) - [Inspect a Git repository](https://www.techielass.com/inspect-a-git-respository) - [Git File Operations](https://www.techielass.com/git-file-operations) - [Undoing commits and changes](https://www.techielass.com/undoing-commits-changes) - [Rewriting history](https://www.techielass.com/rewriting-git-history/) - [Git Branches](https://www.techielass.com/git-branches/) - [Merging with Git](https://www.techielass.com/merging-with-git) Are you joining me on this learning journey? Would love to hear how you are doing. Today's learning objective is around Git rebasing, what it is and why you would use it. ### What is Git Rebasing? Rebasing your Git repository rewrites its history. It can be a harmful command, so it is one to watch when you use it. Typically, you would use the *git rebase* command for one of the following reasons: - Edit a previous commit message - Combine multiple commits into one - Delete or revert commits that are no longer necessary ### Why do we need Git rebase? Rebasing rewrites the project's history. It gives you a much cleaner project history. Rebasing eliminates the unnecessary merge commits required by git merge. It gives a much linear history when you are looking back at your logs. ### Rebase a Git repository We have a repository with the main branch and then a feature branch. We've been working away on different things on this feature branch and have several commits. If we look at the graph of this, it will look something along the lines of this. ![Git repository history graph](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/gitrebasebefore.jpg) Git repository history graph We want to bring all the commits and cool new features we've been creating from our feature branch into our main branch. But we want to make the history as linear as possible. So instead of doing a *git merge* we are going to use *git rebase*. The commands we want to use are: ```bash git checkout main git rebase featurebranch ``` The first command makes sure we are in our main branch and the second command rebases that main branch to include the commits from feature. Our git graph log would look like this: ![Git rebase after graph view](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/gitrebaseafter.jpg) Git repository after rebase graph view You can see our history has been rebased into the main branch in a linear way. If we'd used the git merge command instead this is what our repository history would look like: ![Git merge graph view](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/gitmergegraph.jpg) Git merge graph view Using the git rebase command gives you a much clearer history, especially if you have a large team of developers working on different features and bugs. It can become a real message if you are only using *git merge*. The history really becomes hard to read and understand. *Git rebase* isn't always the right option though, as it does rewrite history. It's important as a team you understand the right use case for *git rebase* over *git merge* and use it appropriately. ### 14 days of Git I'll be honest, this one took a little time to understand and really appreciate what it was for. I still think there is more I can dig into on this one. Definitely booking marking this one so I can come back to it and do some more learning. Tomorrow is all about stashing so that should be interesting! Be sure to [subscribe](https://www.techielass.com/newsletter) and join me for that step in the learning journey! You can follow along here: [https://github.com/weeyin83/14daysofgit](https://github.com/weeyin83/14daysofgit?ref=techielass.com) ### Merging with Git - 14 days of Git URL: https://www.techielass.com/merging-with-git/ Last updated: 2023-01-06T08:23:04.000Z It is Day 10 of my learning journey into Git. So far on my learning journey has taken me on the following path: - [What is version control?](https://www.techielass.com/what-is-version-control) - [What is Git?](https://www.techielass.com/what-is-git) - [Installing Git](https://www.techielass.com/installing-git/) - [Basic Git commands to get started](https://www.techielass.com/basic-git-commands-to-get-started) - [Inspect a Git repository](https://www.techielass.com/inspect-a-git-respository) - [Git File Operations](https://www.techielass.com/git-file-operations) - [Undoing commits and changes](https://www.techielass.com/undoing-commits-changes) - [Rewriting history](https://www.techielass.com/rewriting-git-history/) - [Git Branches](https://www.techielass.com/git-branches/) Have you been following along? Today I am going to be learning about merging in more detail. ### What is merging? Merging is where you take two branches and combine them. Git will take the commit pointers it has within the two branches and attempt to find a common base commit between them and then unify the two branches. ### Merge two Git branches together You've got a branch and it's ready to merge into your main one. The first thing you need to do is make sure you are in the branch you want to merge your changes into. In this example I have a branch called "new-feature", and I want to merge it with my main branch. I first switch over to my main branch: ```bash git checkout main ``` Now I am in the branch I want to merge my changes into I type: ```bash git merge new-feature ``` *When you issue this command you may receive merge conflicts, we will be looking at how to deal with them in [Day 13 of 14 days of Git](https://github.com/weeyin83/14daysofgit?ref=techielass.com).* I now have to push this merge from my local repository to my remote repository, I do that with the command: ```bash git push ``` This is probably the most common use case of merging branches together. ### Merge more than one branch You can merge more than one branch at a time. There could be conflicts and issues when doing so, and we'll be looking at that in [Day 13](https://github.com/weeyin83/14daysofgit?ref=techielass.com). In this example, I have three branches with minor changes, and I want to merge them into my main branch. I issue the command *git merge branch1 branch2 branch3* ![Merging more than one branch within git](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/image-7.png) Merging more than one branch within git ### View the log of merging We saw on [Day 6](https://www.techielass.com/inspect-a-git-respository/) that there is a command called *git log* that we can use to find out more information about the current state of the repository. If we append more options to that command, we can get a graphical version of our commits. ```bash git log --graph --oneline ``` ![git log with a graph](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/gitmerging.jpg) git log with a graph This command gives us an update on the different commits and merges that have happened with a bit of a graphical display down the left-hand side. Again, we might prefer to do some of these operations within graphical editors, but the command line tool is very powerful and gives you a lot of information. ### Git merge strategies When digging into merging, I found there were different [merge strategies](https://git-scm.com/docs/merge-strategies?ref=techielass.com) available for different use cases. These are the typical merge strategies: - Fast Forward - Recursive - Ours - Octopus - Resolve - Subtree Each strategy has its own use case, for example when we merged the three branches into the main one [Git](https://git-scm.com/?ref=techielass.com) used the Fast Forward merge strategy. Whereas recursive is the default merge strategy when merging one branch. ## 14 days of Git Today was quite a learning journey, I had no idea there were so many different ways Git would merge branches together. But it makes sense, more often than not people will just be merging one branch into another. But that won't always be the case and Git has to handle larger and more complex cases, especially when large teams are working on different branches at the same time. Merging is definitely an area to come back to and really understand each strategy and it's use case, but I am looking forward to Day 14 when I look at Subtree! Tomorrow though I am looking at rebasing, be sure to [subscribe](https://www.techielass.com/newsletter) and join me for that step in the learning journey! You can follow along here: [https://github.com/weeyin83/14daysofgit](https://github.com/weeyin83/14daysofgit?ref=techielass.com) ### Git branches - 14 days of Git URL: https://www.techielass.com/git-branches/ Last updated: 2024-07-02T11:52:14.000Z It is Day 9 of my learning journey into Git. So far on my learning journey has taken me on the following path: - [What is version control?](https://www.techielass.com/what-is-version-control) - [What is Git?](https://www.techielass.com/what-is-git) - [Installing Git](https://www.techielass.com/installing-git/) - [Basic Git commands to get started](https://www.techielass.com/basic-git-commands-to-get-started) - [Inspect a Git repository](https://www.techielass.com/inspect-a-git-respository) - [Git File Operations](https://www.techielass.com/git-file-operations) - [Undoing commits and changes](https://www.techielass.com/undoing-commits-changes) - [Rewriting history](https://www.techielass.com/rewriting-git-history/) Today I am going to dive into what branches are and how they can be used. ### What are Git branches? Branches are an everyday part of the process when using Git. Effectively they are a point to your changes. You might create a new branch when you want to work on a new feature, or bug fix and keep those changes completely separate until you are ready to release them. There are a few commands that you can use to work with branches, let's take a look at them. ### Create a new branch If you have a copy of a repository and you want to make changes then creating a new branch is best practice. Do create a new branch you can run the command: ```bash git checkout -b newbranchname ``` You can now start to work on your changes and commit them there. ### See what branch you are on When you are working within a repository, and you want to check what branch you are on you can use the following command: ```bash git status ``` ### Switch to a local branch If you have a branch within your local repository that you've created then you can easily switch to it using the following command: ```bash git checkout branchname ``` ### Switch to a branch that's came from a remote repo If you have cloned a Git repository from a remote location and it's come with a bunch of branches, then you can use the following command: ```bash git checkout --track origin/branchname ``` ### Push a branch When you create a branch on your local copy of the repository it won't automatically create within the remote location. When you come to push your changes to that remote location you can't just use the *git push* command you need to use a slightly different command, ***either*** of these: ```bash git push -u origin branchname git push -u origin HEAD ``` Referencing HEAD saves you from having to type out the exact name of the branch. ![git push -u origin HEAD command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/image-5.png) git push -u origin HEAD command Of course, if your branch already exists in the remote location, you can just run *git push*. ### Merge a branch So, you've created a branch, and you are ready to merge that branch into the main one, ready for production or the next step in your development phrase. How can you do it? The first thing you need to do is switch to the branch you want to merge your changes into. In this example I want to merge my changes from the branch "new-feature-from-sarah" into my main branch. So I type the command: ```bash git checkout main ``` Now I am in the branch I want to merge my changes into I type: ```bash git merge new-feature-from-sarah ``` *When you issue this command you may receive merge conflicts, we will be looking at how to deal with them in* [*Day 13 of 14 days of Git*](https://github.com/weeyin83/14daysofgit?ref=techielass.com)*.* I now have to push this merge from my local repository to my remote repository, I do that with the command: ```bash git push ``` ### Clone a specific branch ### Delete a local branch If you are finished with a local branch, either you've merged your changes or you've decided that the changes aren't right. Then you can use one of two commands. Both commands are very similar but there is a subtle difference. If you want to delete a branch that has already been merged you can use the command: ```bash git branch -d branchname ``` If you want to delete a local branch regardless of whether it has been merged or not, then the command to use is: ```bash git branch -D branchname ``` There is a subtle difference, the capital D is really a shortcut for --delete --force. ### Command line or GUI? Working with branches within a command line seems straight forward, but it could be tricky if you forget which branch you are working in and merge or push changes to the wrong location. It may be easier to work with branches within a graphical user interface (GUI) such as [Visual Studio Code](https://code.visualstudio.com/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) or [GitKraken](https://www.gitkraken.com/invite?referralCode=pYx7cNys&ref=techielass.com). I think however, it's important to understand what a GUI is doing though, so learning these commands is important and working through them. ## 14 days of Git Tomorrow will see me on Day 10 of my [14 days of Git](https://www.techielass.com/tag/14daysofgit) learning journey and I will be looking at merging! Be sure to [subscribe](https://www.techielass.com/newsletter) and join us for that step in the learning journey! You can follow along here: [https://github.com/weeyin83/14daysofgit](https://github.com/weeyin83/14daysofgit?ref=techielass.com) ### Rewriting Git History - 14 days of Git URL: https://www.techielass.com/rewriting-git-history/ Last updated: 2022-09-27T07:01:23.000Z I am now over halfway on my 14 days of Git learning journey, so far, I have explored: - [What is version control?](https://www.techielass.com/what-is-version-control) - [What is Git?](https://www.techielass.com/what-is-git) - [Installing Git](https://www.techielass.com/installing-git/) - [Basic Git commands to get started](https://www.techielass.com/basic-git-commands-to-get-started) - [Inspect a Git repository](https://www.techielass.com/inspect-a-git-respository) - [Git File Operations](https://www.techielass.com/git-file-operations) - [Undoing commits and changes](https://www.techielass.com/undoing-commits-changes) Today I am going to look at rewriting Git history with a repository. ## Rewriting history If you have been following my journey learning Git, you will remember I look at how to [undo commits and changes](https://www.techielass.com/undoing-commits-changes). I started to think about what if we wanted to change commits and rewrite the history a little? There are a few options to do this. What I really want to look at is the *\--amend* option that is available within the *git commit* command. ### Change most recent Git commit message There are times when you make a commit but realise you've written the wrong thing within the commit message. What do you do? This is one of the use cases for the --amend option. If you issue *git commit --amend -m "update the last commit message"* it will amend the latest commit's message. ![git commit --amend](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/image-4.png) git commit --amend It's a great way of updating the last commit message if you've made a typo or missed out information you want to share with colleagues on the changes you've made. ### Add extra changes to a commit There are times when you complete a commit and then realise you want to add in one more change or you've forgotten something. And it would make more sense to add it into that commit rather than open another one. This is another use case for the *git commit --amend* command. Your workflow might be: 1. Make changes to file 1 and file 2 2. Add and commit those changes 3. Realise you've forgotten to add a small change into file 1 4. Make the additional change 5. Use the command *git commit --amend --no-edit* The additional option on the command, *\--no-edit* takes that last change and puts it into the previous commit, without changing the message. For anyone else looking at this commit, it will look like it was done in one commit. > I would caution using this option and only using it on your own commits, don't confuse others by amending other people's commits. ### Other ways to rewrite history There are a couple of other commands that I'll be looking at later in my 14 days of Git learning journey that can help to rewrite history. Those commands are *git rebase* and *git squash* which will happen on Day 11 and Day 12 respectively. ## 14 days of Git I've enjoyed diving into the additional options that are available with the *git commit* command and seeing how they can be used to help correct mistakes or rewrite history within my Git history. I look forward to exploring other commands that will also play a part in this later. The next step in my [14 days of Git](https://www.techielass.com/tag/14daysofgit) learning journey is to look at Git branches! Be sure to [subscribe](https://www.techielass.com/newsletter) and join us for that step in the learning journey! You can follow along here: [https://github.com/weeyin83/14daysofgit](https://github.com/weeyin83/14daysofgit?ref=techielass.com) ## ### Undoing commits & changes - 14 days of Git URL: https://www.techielass.com/undoing-commits-changes/ Last updated: 2022-09-23T07:01:19.000Z We are on day 7 of my 14 days of Git learning journey, so far, I have explored: - [What is version control?](https://www.techielass.com/what-is-version-control) - [What is Git?](https://www.techielass.com/what-is-git) - [Installing Git](https://www.techielass.com/installing-git/) - [Basic Git commands to get started](https://www.techielass.com/basic-git-commands-to-get-started) - [Inspect a Git repository](https://www.techielass.com/inspect-a-git-respository) - [Git File Operations](https://www.techielass.com/git-file-operations) Now it's time to start looking at how you can undo commits and changes to your repository! ## Undoing commits & changes There are times where you will be made a commit and realised that you want to undo that for whatever reason. What's the best of doing that though? Deleting the file, you just created, deleting the line you wrote in a file? What happens when you've made a ton of changes and don't remember all the bits that need undone now? This is where git revert, and git reset can help. ## Git Revert Git revert is a command that can remove all the changes a single commit made to your repository. When you revert a Git commit the changes from that commit are remove from your local workspace. And a new commit is created to reflect the new state of your repository. Let's show this in action. I issue a command to create a new file, called *index.md* and add and commit that file. ![Add a new file and commit to the repository](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/image-2.png) Add a new file and commit to the repository If I want to revert that commit I first need to use the command *git reflog* to get more details about that commit. ![git reflog output](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/image-3.png) git reflog output The *git reflog* command gives me the commit number that I need in order to revert that commit. In this case I want to revert commit *93a79b1.* I can now issue the command ***git revert 93a79b1*** Because this command is creating a new commit, I was asked what I wanted the new commit message to reflect. It's important to remember with this command, you are only reverting the commit you aren't erasing the history of the commit. So, any changes can still be referenced within the history of the repository. ## Git Reset With Git revert we just undid changes from a specific commit. However, there might be occasions where you want to revert every change that has happened since a given commit. This is where the *git reset* command can be used. The steps to use Git reset are: 1. Use *git reflog* to get the commit number you wish to reset to 2. Issue the command *git reset number* 3. The repository will not reset your repository to the state it was at that choosen commit Again, with the *git reset* command remember that you are just reverting to a previous state, you aren't removing the history. It will still be there to see and refer to. ## 14 days of Git It's been interesting today to look at how to undo changes or move to another time in history for the repository. There is two clear use cases and differences for *git reset* and *git revert*. Good to expand my knowledge and learn more commands from the Git portfolio. The next step in my [14 days of Git](https://www.techielass.com/tag/14daysofgit) learning journey is to look rewriting history! Be sure to [subscribe](https://www.techielass.com/newsletter) and join us for that step in the learning journey! You can follow along here: [https://github.com/weeyin83/14daysofgit](https://github.com/weeyin83/14daysofgit?ref=techielass.com) ### Git File Operations - 14 days of Git URL: https://www.techielass.com/git-file-operations/ Last updated: 2022-09-22T07:01:32.000Z So far on my 14 days of Git learning journey I have dug into: - [What is version control?](https://www.techielass.com/what-is-version-control) - [What is Git?](https://www.techielass.com/what-is-git) - [Installing Git](https://www.techielass.com/installing-git/) - [Basic Git commands to get started](https://www.techielass.com/basic-git-commands-to-get-started) - [Inspect a Git repository](https://www.techielass.com/inspect-a-git-respository) Now I want to look at file operations with Git. ## File Operations with Git There are often times you need to rename a file or move it to another directory. An if you are using an integrated development environment (IDE) or graphical editor, those are simple operations. However, I wanted to see what options were available to me if I was using the console and if Git can help do those types of operations. ## Rename a file Git mv is the command that can help you with renaming. We do need to understand what this command does though. Git mv is the equivalent to the following three commands: 1. mv old\_file.md new\_file.md 2. git add new\_file.md 3. git rm old\_file.md Let's break that down a little. The **mv** command is a Unix/Linux command that is used to change the file name. The **git add** command is used to stage the new version of the file. The last part **git rm** removes the old file from being tracked. Ultimately using **git mv** simplifies the renaming of a file, but it's good to understand what it is doing under the hood. Let's see it in action. I have a file called "blogimage.png" I want to rename. Within my command line I type: ```bash git mv blogimage.png generic-blogimage.png ``` ![git mv command renaming a file](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/image.png) git mv command I can then do a **git status** to check what has happened and we can see that the change is waiting to be committed. ## Moving a file Git mv is also the command I can use to move a file from one location to another within my repository. I want to move that image file from the root directory to a directory I have for images. To do that I can type the command: ```bash git mv .\generic-blogimage.png .\images\generic-blogimage.png ``` That moves the file for me and stages the change ready to be committed. Let's take a closer look at what other options we have using git mv. ## Git mv options Git mv is a great command on its own but if we look at the [documentation ](https://git-scm.com/docs/git-mv?ref=techielass.com)there are some options, we can use with the command to help it do what we really want it to. ### Git mv -f With the -f option we can tell Git we are okay to overwriting the destination with our new file. It's basically forcing any renaming or move you want to happen. Be cautious with this as you could overwrite something you need. ### Git mv -k The -k option allows Git to skip over any erroneous conditions resulting from a git mv call. For example, if you are trying to move a file to another location and that file already exists the command would error out. If you don't want to see that error and have Git move onto your next instruction you should use the -k option. ### Git mv -n The -n option is actually short for --dry-run. It won't actually carry out the move or rename, it will just show you what would happen if you did perform the command. ![git mv with the -n option](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/image-1.png) git mv with the -n option ### Git mv -v The last option is the verbose option. Using this option will give you more information and feedback when you execute the command. ## 14 days of Git It's been an interesting day learning about the git mv command. I mostly do file renaming within the editor or even file explorer, but it's great to learn how it can be done with a command. The next step in my [14 days of Git](https://www.techielass.com/tag/14daysofgit) learning journey is to look at undoing commits and changes, which should be interesting! Be sure to [subscribe](https://www.techielass.com/newsletter) and join us for that step in the learning journey! You can follow along here: [https://github.com/weeyin83/14daysofgit](https://github.com/weeyin83/14daysofgit?ref=techielass.com) ### Inspect a Git repository - 14 days of Git URL: https://www.techielass.com/inspect-a-git-respository/ Last updated: 2022-12-23T16:53:50.000Z So far on my 14 days of Git learning journey I have dug into: - [What is version control?](https://www.techielass.com/what-is-version-control) - [What is Git?](https://www.techielass.com/what-is-git) - [Installing Git](https://www.techielass.com/installing-git/) - [Basic Git commands to get started](https://www.techielass.com/basic-git-commands-to-get-started) Now it's time to start using [Git](https://git-scm.com/?ref=techielass.com) and look at how to inspect a repository. ## Inspecting a git repository There are times when you will want to check the status of a repository on your local machine, or when you want to look back at the history. Maybe you haven't touched the repository for a few days and want to check what state you left it in. Or maybe you have an issue and want to understand why and how to resolve it. This is where the command git status can help. ## Git status Git status displays the state of the working directory and the staging area. It will show you any changes which have been staged, which haven't and any files that Git is not tracking. Git status won't show you the commit history of the repository though. I have a git repository on my local machine and when I type in git issue I get the following information back: ![Git status command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/image-7.png) Git status command This tells me that there are files stages but they haven't been committed yet. If I commit the changes and then do git status again the information displayed back to me changes: ![Git status command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/image-8.png) Git status command It's now telling me there are changes on the local repository that should be pushed to the remote repository. What about the commit history though? What if I want to see what changes I have already committed? ## Git log Git log is the command you want to use to see the repositories commit history. You can get a lot of information back from this command. The space bar to help you scroll down and you can exit it using q. ![Git log](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/image-9.png) Git log If you want to make it a bit more manageable to read and if you are looking for a specific period of time you can use some addition syntax on the command to limit the information you get back: ```bash git log -n 3 ``` The above command will only display the last three commits for you. You might want to only see small bits of information about each commit. You can do that use the command: ```bash git log --oneline ``` ![Git log --oneline](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/image-10.png) Git log --oneline What if you wanted to see what files were altered and how many lines were added or removed for each commit? Well you can do that with the following command: ```bash git log --stat ``` ![Git log --stat command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/image-11.png) Git log --stat command ## Git blame Git blame is a useful command if you want to understand who authored a certain change in the history of the repository. You can't just use git blame across the repository you need to specify a specific file you want to query. ```bash git blame README.md ``` *Note that it is case sensitive. If your file name is all in caps you need to use that within the git blame command.* ![Git blame command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/image-12.png) Git blame command We can trace here who the author of certain changes was, we can see the commit ID, date and the changes that we made. ## 14 days of Git Today has been really interesting digging into more advance commands and understanding their usage. I look forward to putting this new found knowledge into more context over the next few days with other commands. The next step in my [14 days of Git](https://www.techielass.com/tag/14daysofgit) learning journey is to look at file operations. Be sure to [subscribe](https://www.techielass.com/newsletter) and join us for that step in the learning journey! You can follow along here: [https://github.com/weeyin83/14daysofgit](https://github.com/weeyin83/14daysofgit?ref=techielass.com) ### Basic Git Commands to get started - 14 days of Git URL: https://www.techielass.com/basic-git-commands-to-get-started/ Last updated: 2022-09-20T07:01:30.000Z So far on my 14 days of Git learning journey I have dug into: - [What is version control?](https://www.techielass.com/what-is-version-control) - [What is Git?](https://www.techielass.com/what-is-git) - [Installing Git](https://www.techielass.com/installing-git/) Now it's time to start using [Git](https://git-scm.com/?ref=techielass.com) and get familiar with some of the basic commands. ## Git clone Git clone is the command that will help you download an existing remote repository (like GitHub for example) to your machine. For example if you head over to any GitHub repository and click on the green Code button. It will display a URL. Take a copy of that URL. ![GitHub Repository](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/image-1.png) GitHub repository Open up your command line tool and type in: ```bash git clone https://repository-url.link ``` And Git will take a copy, or clone the entire project from the remote source to your machine. ![Git Clone in action](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/image-2.png) Git Clone in action ## Git add When we work on a local copy of a repository we will be creating, modifying, or delete files. When we do that we need to add those changes to our next commit so they are copied to the remote repository. Git add starts to prepare our changes ready to be saved and sent to the remote repository. We can add a single file with the command: ```bash git add filename ``` Or we can add all the files and changes we made with the command: ```bash git add -A ``` ![Git add command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/image-3.png) Git add command Your changes are now ready to be committed. ## Git commit There comes a point when you are working on your local repository that you want to save your changes. Git commit is like setting a checkpoint. You can come back to this checkpoint at a later point if you need to. When we issue the git commit command we need to issue a message to explain the changes we have made. This will help you or the next person along understand what has changed. An example of using git commit can be seen below: ```bash git commit -m "I have made changes to the code to add a new feature" ``` ![Git commit command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/image-4.png) Git commit command ## Git push Once we have committed our changes we need to send them to the remote repository. We can do this using the push command. The git push command uploads the commits you have made to the remote repository. Only committed changes will be uploaded. There are several ways to use the git push command, the most common will be: ```bash git push ``` ![Git push command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/image-5.png) Git push command ## Git pull Git pull is the command you would use to get any updates from the remote repository. This command actually does two things in the background. It is a combination of two other commands, git fetch and git merge. - First of it it gets the updates from the remote repository (git fetch) - Applies the changes to your local copy of the repository (git merge) ```bash git pull ``` *There are times when you will use this command it will throw up errors or conflicts that you need to resolve but it will pull down any changes for you.* ## Git init Git init is a great command to be aware of it. IT can convert an existing project or folder into a Git repository. Most git commands are not available until a repository is initialised, so typically this is the first command you will run when starting a new project on your local machine. When you use git init it create a .git subdirectory in the working directory. This contains all the necessary Git metadata for the new repository. You can use git init in a couple of way. If you have an existing folder structure with files and code within it that you want to turn it into a git repository you can issue the command: ```bash git init ``` ![Git init command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/image-6.png) Git init command If you haven't created a folder or started creating any code you can issue the following command to create the folder and initialise it as a git repository: ```bash git init NewProject ``` ## 14 days of Git These are some of the basic Git commands that you should know. They really are the basics for getting involved with Git. The next step of [14 days of Git](https://www.techielass.com/tag/14daysofgit) is to dig deeper into the commands that we can use with Git and why we need to know them. Be sure to [subscribe](https://www.techielass.com/newsletter) and join us for that step in the learning journey! You can follow along here: [https://github.com/weeyin83/14daysofgit](https://github.com/weeyin83/14daysofgit?ref=techielass.com) ### Installing Git - 14 days of Git URL: https://www.techielass.com/installing-git/ Last updated: 2022-09-16T07:01:47.000Z So far on my 14 days of Git learning journey I have dug into: - [What is version control?](https://www.techielass.com/what-is-version-control) - [What is Git?](https://www.techielass.com/what-is-git) Now it's time to get hands on with Git and get the tool installed on my computer. ## Install Git on Windows Git is a tool that can be installed on your macOS, Windows or Linux operating system. We'll focus on Windows installation methods here. - Head over to [https://git-scm.com/downloads](https://git-scm.com/downloads?ref=techielass.com) and download the latest version of the client. - Once you have downloaded the right file, double click on it to start the install. The install is down through a wizard, you will be asked some basic questions: - Accept the license - Install location **Components** And then you will be asked what components you should install. The defaults are generally okay to get you started with Git. You may want to select the option to install an icon on your desktop and set it to check for updates daily. ![Git install optional components screen](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/git-optionalcheckboxes.PNG) Git install optional components screen The other optional component you might want to consider is the *"Add a Git Bash Profile to Windows Terminal".* This can be useful later on, especially if you are planning on using Visual Studio Code or another editor that has a built in terminal window. **Start Menu Folder** You can leave the next screen at it's default setting. **Default Editor** When you get to choosing the default editor used by Git, you have the option to select from a list of editors. The default is Vim, however I would suggest picking one you are more familiar with. **Initial Branch name** When you create a new repository, by default Git will call that first branch "master". You can confirm it so that it will use another name. I recommend setting this to "main". ![Git Initial Branch name screen](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/mainbranch.PNG) Git Initial Branch name screen **PATH environment** When you use a tool within the command line without specifying the full location path, you need to configure it so that Windows knows where the tool is. I recommend using the default option here to configure the PATH settings. **SSH Executable** I prefer to leave this option as is by choosing OpenSSH. **Line ending conventions** Again I leave this is default. **Terminal emulator for Git Bash** This is another setting that is best left at the default MinTTY option. It is the more modern choice. **Default behaviour** It is best to leave this option at "Default (fast-forward or merge)". Most tutorials you will follow will assume you are using this setting. And until you get more familiar with Git and it's workings it is the best option. **Git credential helper** When working with external Git repositories it is best practice to use multi-factor HTTPS authentication. It is best to leave the default option by using the built in [Git Credential Manager.](https://github.com/GitCredentialManager/git-credential-manager/?ref=techielass.com) **Extra options** Best to go with the defaults here, unless you have any other need to configure them. **Experimental options** I tend not to install any experimental options, but again if you have a need or want to try them that is something for you to decide. The installation process should now begin. ![Git Installation](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/gitinstallation.PNG) Git Installation ## Install Git with Windows Package Manager [Windows Package Manager (winget)](https://www.techielass.com/get-started-with-windows-package-manager/) is an open source package manager developed and built by Microsoft. It can help you install, manage and upgrade software on your Windows desktops. If you have Windows Package Manager installed on your machine, you can use the following command to install Git: ```bash winget install git.git ``` ## Install Git with Chocolatey [Chocolatey](https://www.techielass.com/chocolatey-what-is-it/) is an open source package manager that can help you install, manage and upgrade software on your Windows desktops and servers. If you have Chocolatey installed on your machine and it's your package manager of choice you can use the following command to install Git: ```bash choco install git ``` ## Configure Git for use Before we start to use Git there are a few things that we need to configure. Setting your name and your email address is the first step. This information is use to record any changes you make to Git repositories. Open up a command line tool and type in the following: ```bash git config --global user.name "Your Name" git config --global user.email “you@example.com” ``` ## 14 days of Git The next step of [14 days of Git](https://www.techielass.com/tag/14daysofgit) is to start to use Git and get familiar with the basic commands! Be sure to [subscribe](https://www.techielass.com/newsletter) and join us for that step in the learning journey! You can follow along here: [https://github.com/weeyin83/14daysofgit](https://github.com/weeyin83/14daysofgit?ref=techielass.com) ### What is Git? - 14 days of Git URL: https://www.techielass.com/what-is-git/ Last updated: 2024-07-01T19:30:04.000Z In my last post we explored "[what is version control](https://www.techielass.com/what-is-version-control/)". In today's [14 days of Git](https://www.techielass.com/tag/14daysofgit/) we are exploring "What is Git". ## What is Git? [Git](https://git-scm.com/?ref=techielass.com) is a tool that is used for code management. It is a free and [open source tool](https://www.techielass.com/what-is-open-source/). Git is a tool that can be used within your DevOps workflows to maintain good version control. Linus Torvalds created Git in 2005\. ## Git features Git has many features and benefits and we intend on exploring a lot of them as part of [14 days of Git](https://www.techielass.com/tag/14daysofgit/). But let's cover some of the highlights: - Free and open source - Supports collaboration - Tracks history - Branching - Lightweight ## Why is Git used? As we explored in [what is version control](https://www.techielass.com/what-is-version-control/), we discovered that being able to track your history and collaborate with others is important in any environment that involves code. Version control is the theory, the process that is used to do that. Git is the tool that allows you to put that theory into action. ## Command Line or GUI? You'll often see people talk about Git as a command line tool. And yes it is predominately a command line based tool. But you don't need to use it in that form. Git comes with it's own graphical user interface(GUI). Git GUI that can be launched from the command line. There are third party tools out there that allow you to avoid having to interact with the command line: - [GitHub Desktop](https://desktop.github.com/?ref=techielass.com) - [SourceTree](https://www.sourcetreeapp.com/?ref=techielass.com) - [GitKraken](https://www.gitkraken.com/invite/pYx7cNys?ref=techielass.com) - [Many more!](https://git-scm.com/downloads/guis?ref=techielass.com) ### What is GitHub? ## 14 days of Git The next step of [14 days of Git](https://www.techielass.com/tag/14daysofgit) is to walk through the various ways of installing Git on your machine. Be sure to [subscribe](https://www.techielass.com/newsletter) and join us for that step in the learning journey! You can follow along here: [https://github.com/weeyin83/14daysofgit](https://github.com/weeyin83/14daysofgit?ref=techielass.com) ### What is version control? - 14 days of Git URL: https://www.techielass.com/what-is-version-control/ Last updated: 2022-09-14T07:01:52.000Z This is the first part of my [14 days of Git](https://www.techielass.com/tag/14daysofgit/) learning journey. I've often heard the terms version control, and source control. I've heard them used together and separately. But is there a difference or are they same term? ## What is version control? Version control keeps a track of every modification to code in a kind of database. If a mistake is made, you can turn back the clock, compare it to earlier versions and help to fix the mistake, while minimising disruption to others that are working on that code. The code that you could be tracking could be software source code or it could be infrastructure code. It can be any type of code. Version control isn't just for software developers. ## Why version control? For most projects where code is used, whether it be application code or the code you use to deploy your infrastructure resources. It is the jewel in the crown. The code is a precious asset that must be protected. The code repository holds knowledge and history of working through the project. It holds the key to problems encountered and the solutions. It counts towards a lot of time and effort. ### Version control protects that code from catastrophic and casual error. It's very easy for a simple mistake to be made. Saving over the wrong file. We've all been there. We've all done it. When we are working on documents such as Word or Excel, [OneDrive history](https://support.microsoft.com/en-us/office/restore-a-previous-version-of-a-file-stored-in-onedrive-159cad6d-d76e-4981-88ef-de6e96c93893?ref=techielass.com) has saved us. Helped us restore an older version we accidently saved over. Version control can do that same task for code. ### Multiple people can be working on the code at any one time. It's not uncommon for a team of people to be working on the same code. One engineer could be adding a new feature to the code while another is trying to solve a bug. Version control allows you to track the changes by individuals. You can also create what is known as branches, from the main code. Allowing each team member to work on their task separately and then when they are ready they can merge their changes back to the main code. The branches allow people to work without being blocked by others. And being able to merge the code back to the main code allows checks to be put in place to ensure there are no code conflicts that could cause issues. ## Is version control the same as source control? The terms version control and source control as used interchangeably. They mean the same thing. ## Can you code without version control? It is possible to continue to work on your software or infrastructure as code project without any version control, but doing so can put a massive risk on the team's efforts and work. The question really shouldn't be whether you use version control or not, but more around which version control system or tool you should be using. ## 14 days of Git There are a lot of different version control systems, in our next learning exercise as part of [14 days of Git](https://www.techielass.com/tag/14daysofgit). We will be exploring [Git](https://git-scm.com/?ref=techielass.com) and how it can be used in version control. You can follow along here: [https://github.com/weeyin83/14daysofgit](https://github.com/weeyin83/14daysofgit?ref=techielass.com) ### 14 days of Git learning URL: https://www.techielass.com/14-days-of-git/ Last updated: 2023-12-08T08:26:27.000Z Git is a tool that I have learnt as I go. I've read some basic tutorials, I've mashed some keys into the command line and managed to make it do what I want to. But I don't really know the tool. I haven't sat down and read the manual at all. I want to change that. I want to spend some time learning Git properly. Working through some scenarios and learning. With the aim at being a more proficient Git user. It's a journey, I want you all to join me on. ## The plan I have a learning plan. I want to spend an hour or two a day learning something different and sharing it. My learning plan starts from the very beginner, I'm going to start from scratch. Although I might know some of the beginning topics already I want to make sure I **really** understand them. You can follow along on with me. Whether you are a beginner to Git or something that, like me, has been using it but it's been a hit or miss learning experience. You can find the learning plan I have designed on GitHub - [https://github.com/weeyin83/14daysofgit](https://github.com/weeyin83/14daysofgit?ref=techielass.com) My aim is for me to learn new things and explore new topics and help others as well. I'll be posting a new blog post after every day's learning activities. You'll be able to find all those blog posts using the tag [14daysofgit](https://www.techielass.com/tag/14daysofgit/). You can [subscribe to my blog](https://www.techielass.com/newsletter/) so any new blog posts get send to your email address. ### Let's get started! ### The Redgate 100 URL: https://www.techielass.com/redgate-100/ Last updated: 2022-09-08T14:04:09.000Z It was a lovely surprise to receive notification from [Redgate](http://red-gate.com/?ref=techielass.com) that I had been included in [The Redgate 100](http://red-gate.com/redgate-100?ref=techielass.com) today. [![The Redgate 100](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/09/Redgate-100-728x90-banner.png)](http://red-gate.com/redgate-100?ref=techielass.com) The Redgate 100 The Redgate 100 is a list recognising the work and perspectives from people within the IT community. It is a list of top experts and influencers across 9 subcategories. It really is an honour to be included on this list alongside people such as Gwen Shapira, Troy Hunt, Kimberly L. Tripp, Donovan Brown, Rick Claus, Kellyn Pot’Vin-Gorman, and Brent Ozar. These types of lists are always subjective, but Redgate have been clear to explain how they selected the folk include: > The Redgate 100 was created by measuring the online topical influence and authority of individuals, based on how often they are referenced in association with topics around data and databases on social media like Twitter, Instagram, Facebook and YouTube, as well as forums, blogs, and news sites. These calculations also took into account the individual’s resonance with their audience, their relevance to the topics, and their reach in terms of the number of their followers. 22 people on the list are leads or co-leads of data community groups and meetups, and 13 are involved in Women in Technology (WIT) initiatives. As I said it's a real honour to be included on the list and recognised for my technical knowledge and work within the community. Thank you Redgate! ### Top Stories from the DevOps Community - 29 August 2022 URL: https://www.techielass.com/top-stories-from-the-devops-community-26-august-2022/ Last updated: 2022-08-29T14:58:17.000Z Howdy folk! How are you all? For many in the UK this is a Bank Holiday. Which means no work. For me up in Scotland it isn't though, so I'm busy practicing and prepping for my presentation at [Data:Scotland](https://www.datascotland.org/?ref=techielass.com) later this week. Will be strange and nice to be back in person again. ## Community Blogs - [The five most common mistakes approaching DevOps](https://cloudblogs.microsoft.com/industry-blog/en-gb/technetuk/2021/10/05/the-five-most-common-mistakes-approaching-devops/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) This is an older blog post but, I spotted it the other day and thought it was worth re-sharing. [Matteo Emili](https://twitter.com/MattVSTS?ref=techielass.com) talks about five common mistakes people make when approaching DevOps, and what considerations you should be making. - [5 Minutes DevOps: DevOps or SRE?](https://medium.com/@bdfinst/5-minute-devops-devops-or-sre-35c4ae996ad?ref=techielass.com) [Bryan Finster](https://medium.com/@bdfinst?ref=techielass.com) shares this really interesting article talking about where DevOps often falls down. Worth checking out for sure and see if you notice any of these failings. - [What are DevOps, MLOps and AIOps?](https://www.codexashish.com/2022/08/difference-between-devops-mlops-and-aiops.html?ref=techielass.com) In this blog post [Ashish Yadav,](https://twitter.com/ScorpioCoder?ref=techielass.com) shares his thoughts on what DevOps, MLOps and AIOps. And the differences between them. Do you agree with his definitions? ## Azure News - [Azure Availability Zones now generally available in UAE](https://azure.microsoft.com/updates/generally-available-uae-north-availability-zones/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Public IP capability for Azure VMware Solution](https://azure.microsoft.com/updates/generally-available-public-ip-capability-for-azure-vmware-solution/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Azure VMware Solution now available in the Sweden Central region](https://azure.microsoft.com/updates/generally-available-azure-vmware-solution-now-in-sweden-central/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) ## ****Thank you!** Thank you to you all for your contributions to the community, it's a great space to be part of! If you've created a video or blog post or other content and want it shared please reach out to me on Twitter [@techielass](https://www.twitter.com/techielass?ref=techielass.com) and I'd be happy to share your content in the next post. [![Buy me a coffee](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/blogcoffee.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) Buy me a coffee ### Top Stories from the DevOps Community - 22 August 2022 URL: https://www.techielass.com/top-stories-from-the-devops-community-22-august-2022/ Last updated: 2022-08-22T11:26:13.000Z Howdy folks! I've been enjoying some time off this week, which was great. I got explore a lot of different castles and gardens in the North East of Scotland. You can see some photos over on my [Instagram](https://www.instagram.com/%5Ftechielass?ref=techielass.com), if you'd like. 😀 But I am back now and I'm catching up on some fab news and community blog posts, so I thought I'd share the highlights. I hope you enjoy! ## ****Community Blogs** - [DevOps: A few best practices for Data Science Projects](https://medium.com/@sscswapnil/devops-a-few-best-practices-for-data-science-projects-49a5f3012e5c?ref=techielass.com) [Swapnil Chavan](https://medium.com/@sscswapnil?source=about%5Fpage-------------------------------------) has shared some of his thoughts on some tools and best practices when looking at Data Science projects in the DevOps world. - [Who Am I? DevOps or Cloud DevOps?](https://medium.com/@amitji/decoupling-cloud-devops-role-from-devops-39e73cba1f3f?ref=techielass.com) Amit Maheshwari shares some of his thoughts on DevOps or Cloud DevOps and the challenges those titles present. - [Backing up Ghost Blog in 5 steps](https://jerrynsh.com/backing-up-ghost-blog-in-5-steps/?ref=techielass.com) Jerry Ng has shared some information on how to backup your self hosted Ghost blog using Bash and Cron. Interesting to see! ## ****News** - [Generally available: Azure Kubernetes Service support for Kubernetes 1.24](https://azure.microsoft.com/updates/generally-available-kubernetes-124-support/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [You can now deploy Azure Kubernetes Service on Azure Dedicated Hosts](https://azure.microsoft.com/updates/generally-available-azure-dedicated-host-support/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Qatar Azure region now open](https://azure.microsoft.com/updates/general-availability-microsoft-azure-available-from-new-cloud-region-in-qatar/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) ## ****Thank you!** Thank you to you all for your contributions to the community, it's a great space to be part of! If you've created a video or blog post or other content and want it shared please reach out to me on Twitter [@techielass](https://www.twitter.com/techielass?ref=techielass.com) and I'd be happy to share your content in the next post. [Subscribe to my newsletter to get notified of new blog posts!](https://www.techielass.com/newsletter/) [*People set vector created by pikisuperstar - www.freepik.com*](https://www.freepik.com/vectors/people-set?ref=techielass.com) ### Top Stories from the DevOps Community - 12 August 2022 URL: https://www.techielass.com/top-stories-from-the-devops-community/ Last updated: 2022-08-12T09:00:15.000Z Howdy folks! It's been a glorious week here in the UK with lots of sunshine even in Scotland! I've made sure to enjoy it with long walks and morning coffees out in the garden. Amongst my time outdoor I've had the chance to catch up on some fab news and community blog posts, so I thought I'd share the highlights. I hope you enjoy! ## Community Blogs - [Working with container images and Azure Container Registry](https://blog.azinsider.net/working-with-container-images-and-azure-container-registry-2f5a7f688e1e?ref=techielass.com) Dave Rendon has written a great article covering off Infrastructure as Code and how you can leverage it to deploy instances of Azure Container Registries and work with contain images. - [Are you spending too much on DevOps?](https://dev.to/duplocloud/are-you-spending-too-much-on-devops-5bjc?ref=techielass.com) Zach Gover has written a great piece talking about the cost of DevOps for an organisation and posing the question around whether it is costing too much? It's an interesting take and I'd be interested in hearing your thoughts on the topic for sure! - [Getting started with DevSecOps](https://dev.to/vanshikasrivastava/getting-started-with-devsecops-n2k?ref=techielass.com) Vanshika Srivastava answers a question that I hear a lot, *what is DevSecOps*. Great introductory article to the topic, be sure to check it out! - [DevOps Learning Roadmap](https://roadmap.sh/devops?ref=techielass.com) This super-helpful DevOps Learning Roadmap is a great starting point to learning to the topics and technologies that will make you a pro DevOps Engineer or Site Reliability Engineer. ## News [Azure DevOps Server 2022 RC1](https://docs.microsoft.com/azure/devops/server/release-notes/azuredevops2022?view=azure-devops&s=09&WT.mc%5Fid=AZ-MVP-5004737&WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) was released this week. Bringing some new features and functionality. You can find out more about these within the [release notes](https://docs.microsoft.com/azure/devops/server/release-notes/azuredevops2022?view=azure-devops&s=09&WT.mc%5Fid=AZ-MVP-5004737&WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com). These new features are coming to the Azure DevOps Server edition, not to be confused with [Azure DevOps Services](https://docs.microsoft.com/azure/devops/user-guide/about-azure-devops-services-tfs?view=azure-devops&WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com). [Azure DevOps Server 2022 Release Notes - Azure DevOps Server & TFSAzure DevOps Server 2022 Release Notes![](https://docs.microsoft.com/favicon.ico)Microsoft Docsgloridelmorales![](https://docs.microsoft.com/en-us/media/logos/logo-ms-social.png)](https://docs.microsoft.com/azure/devops/server/release-notes/azuredevops2022?view=azure-devops&s=09&WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) ## Thank you! Thank you to you all for your contributions to the community, it's a great space to be part of! If you've created a video or blog post or other content and want it shared please reach out to me on Twitter [@techielass](https://www.twitter.com/techielass?ref=techielass.com) and I'd be happy to share your content in the next post. [Subscribe to my newsletter to get notified of new blog posts!](https://www.techielass.com/newsletter/) [*People set vector created by pikisuperstar - www.freepik.com*](https://www.freepik.com/vectors/people-set?ref=techielass.com) ### A look back at July URL: https://www.techielass.com/news-from-july-2022/ Last updated: 2022-08-03T14:56:09.000Z Hello folk! I wanted to take a look back at what happened last month in the tech world and highlight some community news as well. Enjoy! ## New User Group For those in Scotland, there is a new user group starting at the end of August. The [Modern Enterprise Management User Group](https://www.eventbrite.com/e/memug-scotland-31st-august-2022-tickets-394996704777?ref=techielass.com), will be meeting up in Glasgow on the 31st August. > The first MEMUG Scotland meetup is scheduled! > August 31st, 18:30 @ Incremental Group Glasgow > > Signup here - [https://t.co/zkZKd827ub](https://t.co/zkZKd827ub?ref=techielass.com)[#memugscotland](https://twitter.com/hashtag/memugscotland?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [#mem](https://twitter.com/hashtag/mem?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [#microsoft](https://twitter.com/hashtag/microsoft?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [#modernendpoint](https://twitter.com/hashtag/modernendpoint?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [#modernenterprise](https://twitter.com/hashtag/modernenterprise?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [#intune](https://twitter.com/hashtag/intune?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [#azuread](https://twitter.com/hashtag/azuread?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [#azure](https://twitter.com/hashtag/azure?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [#glasgow](https://twitter.com/hashtag/glasgow?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [#usergroup](https://twitter.com/hashtag/usergroup?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [@PatchMyPC](https://twitter.com/PatchMyPC?ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) > > — MEMUG Scotland (@MemugScotland) [August 2, 2022](https://twitter.com/MemugScotland/status/1554416703634898945?ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) ## Azure News ☁️ There were a lot of announcements made last month, especially around the conference Inspire from Microsoft. I've picked out 5 stories that I thought were worth highlighting. - [Generally Available: Virtual machine restore points](https://azure.microsoft.com/updates/vmrestorepointsga/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Generally available: Azure Stream Analytics in four new regions](https://azure.microsoft.com/updates/generally-available-azure-stream-analytics-in-5-new-regions/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Public preview: Azure Stack HCI version 22H2](https://azure.microsoft.com/updates/public-preview-azure-stack-hci-version-22h2/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Generally available: Calico for Windows on AKS](https://azure.microsoft.com/updates/generally-available-calico-for-windows-on-aks/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Generally available: Azure Functions support for PowerShell 7.2](https://azure.microsoft.com/updates/generally-available-azure-functions-support-for-powershell-72/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) ## My most popular blogs in July 🥳 Looking back at the analytics the most popular blog posts in July were: - [Convert a folder to a git repository](https://www.techielass.com/convert-a-folder-to-a-git-repository/) - [Connect a SQL database with Visual Studio Code](https://www.techielass.com/connect-to-a-sql-database-with-visual-studio-code/) - [Reset Ubuntu Password in WSL on Windows 10](https://www.techielass.com/reset-ubuntu-password-in-wsl-on-windows-10/) - [Trigger a GitHub Action workflow when a folder changes](https://www.techielass.com/trigger-a-github-action-workflow-when-a-folder-changes/) - [Windows Server: Extend Expired Evaluation Period](https://www.techielass.com/windows-server-extend-expired-evaluation-period/) What was your favourite blog from me in July? ## Azure Arc Jumpstart ![Azure Arc Jumpstart](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/jumpstart_logo-1.png) Azure Arc Jumpstart The [Azure Arc Jumpstart](https://azurearcjumpstart.io/?ref=techielass.com) is a great resource for getting your hands on Azure Arc environments to test scenarios or learn how things work together. The team are always trying to improve it and add functionality. Check out the [latest release notes](https://azurearcjumpstart.io/release%5Fnotes/?ref=techielass.com) to see what is new. ## GitHub City A [project](https://github.com/honzaap/GitHubCity?ref=techielass.com) started by some in the community allows you to view your GitHub contributions as a city! It's pretty cool. Go over to [https://honzaap.github.io](https://honzaap.github.io/GithubCity/?name=weeyin83&year=2021&ref=techielass.com) type in your GitHub user name and select a year and allow it to do it's magic. 😉 My GitHub contributions this year looks like this: ![GitHub City](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/08/ithubcity.png) GitHub City ## Thank you! Thank you for tuning in and if you got this far, thank you. Please do share this with your network if you've enjoyed it and hopefully catch you soon! \- Sarah ### My YouTube channel isn't monetized! URL: https://www.techielass.com/my-youtube-channel-isnt-monetized/ Last updated: 2025-07-21T07:25:30.000Z The other day I posted a Tweet and it created a bit of interest and conversation. > [#YouTube](https://twitter.com/hashtag/YouTube?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) plays ads before my videos, I don't earn any money from them. > > If I ever get to the thresholds needed to become a YouTube partner I can turn those ads off, and avoid viewers having to see them. > > So check out my channel, watch & subscribe [https://t.co/EIQ91nzyQK](https://t.co/EIQ91nzyQK?ref=techielass.com) > > — Sarah Lean | Microsoft MVP 🏴󠁧󠁢󠁳󠁣󠁴󠁿 (@TechieLass) [July 27, 2022](https://twitter.com/TechieLass/status/1552210902866436104?ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) YouTube displays ads before my videos. I don't earn any money from those ads because my [YouTube channel](https://www.youtube.com/techielass?ref=techielass.com) is **not** monetized! The ads you see on my videos are benefiting the advertiser and [YouTube](https://www.youtube.com/techielass?ref=techielass.com), not me. ## How do you get monetized by YouTube? There are a couple of ways you can earn money on YouTube, to earn money from ads that are played before/during your videos you need to have 1,000 subscribers and have at least 4,000 watch hours in the last 365 days. Subscribers is fairly self-explanatory. And I've surpassed that milestone, I have 3,890\. And I'm grateful to everyone who has hit that subscribe button. The other requirement to get monetized is watch hours. These are calculated over a 12-month period. So over the course of a year, you need people to have watched at least 4,000 hours of your videos. It doesn't need to be new videos they watch, any (public) video on your channel that folk watch counts towards the watch time. This is the criteria I have not made yet. ## I make YouTube content in my spare time My [YouTube channel](https://www.youtube.com/techielass?ref=techielass.com) isn't a work activity. I do it in my own time. I use my own equipment, and my own resources to create videos. My work don't pay for me to create content on my [YouTube channel](https://www.youtube.com/techielass?ref=techielass.com). I create YouTube content for the work's channel during work hours, but nothing I do on my own channel is supported by my work. ## How can you support me? There are a few things you can do that will help me which won't cost you anything: 1. [Watch my videos](https://www.youtube.com/watch?v=Ad7KQ0j%5FVXY&list=PLbjernQTVXitO%5FwuiRiD06Aq3GhRCbXaN&ref=techielass.com). Watch them in their entirety. Help rack up those watch hours. Each minute, every 5 minutes, each 10 minutes you watch adds up. 2. **Like**. If you watch a video and enjoy it, hit the like button. It's a simple action, but it not only shows me the content folk like but also helps YouTube understand the content that is useful to their viewers. 3. **Share**. Again if you've watched a video and liked it, share it on your social media. Help others find my content and channel. Again it really helps YouTube to understand what content is useful and encourages them to show it to others. ## Did you know when a channel is monetized they can remove ads altogether? One thing I don't think a lot of people understand is once a channel has reached the 1,000 subscribers and 4,000 watch hour mark. They can actually turn of ads altogether. No adverts will be displayed before, during or after your videos. Giving viewers an ad-free experience. Now of course this means you aren't earning any money but it's a great way of helping your viewers get that ad-free experience. ## Some videos to watch Thank you to everyone who watches my videos, [subscribe to my YouTube channel](https://www.youtube.com/techielass/?sub%5Fconfirmation=1&ref=techielass.com) and supports me, it means the world. If you haven't already seen my channel and videos, I've picked out some videos you might enjoy: Monitor your SSL certifications with Azure Monitor Find Orphaned Azure Resources ### Enable External Email Warning Tag in Exchange Online URL: https://www.techielass.com/enable-external-email-warning-tag-in-exchange-online/ Last updated: 2024-12-20T13:47:19.000Z In a digital landscape rife with phishing threats, safeguarding your organization against external email risks is paramount. One effective strategy? Implementing an external email warning or tagging system through Exchange Online. By taking this proactive step, you can empower users to swiftly identify and mitigate potential threats lurking in their inboxes. Learn how to fortify your email defences with our guide to enabling the External Email Warning Tag feature in Exchange Online. ## Enable an external sender warning There are two options to enable and implement an external sender warning. I would personally recommend enabling both possibilities. The first option is to enable the external email tag in [Exchange Online](https://www.techielass.com/tag/exchange-online/). This will allow a built-in warning between the subject and body of the email when the email is from someone outside your organisation. The second option is a custom warning banner at the top of the email. This allows you to show a custom warning based on words in the subject or body. Enabling this feature means you can flag emails asking the recipient to "update your password" or similar. ## Supported clients of the External Email Tag The external tag feature is a new one; it is visible and supported by the following versions of Outlook: - Outlook Online - Outlook for Window – rollout started May 2021 - Outlook for Mac – Version 16.47 and higher - Outlook Mobile App – iOS and Android – version 4.2111.0 and higher ## Enable External Email Tag The first step is to connect to Exchange Online. You will need the Exchange Online PowerShell modules installed - if you don't have them installed, [check out my blog post to do that](https://www.techielass.com/). ```powershell Connect-ExchangeOnline -userPrincipalName tony@starkindustries.com ``` The next step is to enable the external tagging feature in Exchange Online; the following PowerShell command will action that: ```powershell Set-ExternalInOutlook -Enabled $true ``` To verify the settings, you can use the following PowerShell command: ```powershell Get-ExternalInOutlook ``` 💡 It can take 48 hours for this setting to start to take effect. ![Enable external tag with PowerShell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/07/exchangepowershellcommands.png) Enable external tag with PowerShell ## Exclude domains from the external tag It is possible to exclude emails from certain domains being marked as external, this might be useful if you work closely with other organisations or you have multiple 365 tenants. To add domains to the exclude list you can use the following PowerShell command: ```powershell Set-ExternalInOutlook -AllowList @{Add="shield.com", "asgard.com"} ``` ![Exclude domains from being labelled as External with PowerShell](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/07/externalallowlist.PNG) Exclude domains from being labelled as External with PowerShell If you need to amend the list of excluded domains you can use: ```powershell Set-ExternalInOutlook -AllowList @{Remove="maximoff.com", "wandavision.com"} ``` ## Create External Email Warning You can create a custom message at the top or bottom of emails. The external tag is a great way to help people understand, potential malicious emails, but going a step further and adding a warning at the top of the emails can be an extra measure. I would recommend setting up a custom warning based on the subject or body when the email suggests a password reset or change. To set up this warning message we are going to use the Office 365 Exchange Online Admin Center. - Open the [**Microsoft 365 Admin center**](https://admin.microsoft.com/?ref=techielass.com) - Login to the **Exchange Admin Center** - Expand the **Mail flow** menu - Select **Rules** - Click on the **plus** and pick **Create a new Rule** - Give the rule an appropriate **Name** - Click on **Apply this rule if** - Choose **The sender is located…** - Select **Outside the organization** - Next click **More Options**, you need this to be able to add in additional conditions to the rule - Click on **Add Condition** under Apply this rule if - Choose **The recipient is located..**. - Select **Inside** - Now click on **Add Condition** under Apply this rule if - Choose **The subject or body matches…** - Select **Subject or body matches these text patterns** In this warning example we want to highlight emails that are asking the recipient to change their password. So we are going to use text patterns like: - \[reset|change|update\].\*password - Password access *You could add extra or change the text patterns that trigger this alert.* Now we've set up the rule triggering conditions, it's time to create the message that will be prepended to the start of the email. - Click on **Do the following** - Now choose **Apply a disclaimer to the message** - Select **Prepend the disclaimer…** - Click on **Enter text…** - **Paste the HTML code** (amending as you need) ```html
Caution: This is an external email and is mentioning a password change or reset. Please take care when actioning anything within this email. If you are in doubt please contact the IT Department.

``` - Click on **Select one..** and set the fall-back action to **Wrap** - You have the option to include exceptions when this doesn't trigger. You may want to exclude this from triggering when your applications send password request messages. Any exceptions can be set under **Except if**. With the rule completed, you can save it to enable it. ![Exchange rule configuration](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/07/exchangerulesetup.PNG) Exchange rule configuration ## Recap Enabling the external tag on emails is very useful for the recipient to help identify any malicious or suspicious emails. With the warning message, I'd recommend using it sparingly and for specific examples. Having it turned on for every external email isn't ideal and will be something email users will get used to and start to ignore. Enjoy using these two features to help your end users stay secure and vigilant against malicious emails. ### Install Exchange Online PowerShell modules URL: https://www.techielass.com/install-exchange-online-powershell-modules/ Last updated: 2024-12-20T13:45:22.000Z Do you need to connect to Exchange Online to manage features or even work on a migration? This is where the Exchange Online PowerShell module can help you. This blog post will guide you through the installation process and provide a step-by-step overview of utilizing its components for seamless integration and efficient operations. ## Install PowerShellGetModule Open your PowerShell window or [Windows Terminal](https://www.techielass.com/install-windows-terminal-with-windows-package-manager/) session as Administrator. Now run the command: ```powershell Install-Module PowershellGet -Force ``` If you are asked to install the NuGet provider, press **Y** and then **Enter**. ## Install Exchange Online Management Module We can now install the Exchange Online Management module. To do this, we run the command: ```powershell Install-Module -Name ExchangeOnlineManagement ``` If asked, press **Y** and then **Enter**. ![Windows Terminal with PowerShell command history](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/07/exchangepowershell.PNG) Windows Terminal with PowerShell command history ## Connect to Exchange Online PowerShell V2 Now that everything is installed, it's time to interact with Exchange Online via PowerShell. Issue the command: ```powershell Connect-ExchangeOnline -UserPrincipalName admin@domain.com ``` Enter an email address that has permissions to interact with your Exchange setup. A pop-up or sign-in window will open; you may be required to enter your username and password and approve a sign-in via your multi-factor authentication (MFA) app. After the verification, the [PowerShell](https://www.techielass.com/tag/powershell/) window will display a banner showing new commands and any information. If you don't want to see that banner, you can use this command to connect to Exchange Online: ```powershell Connect-ExchangeOnline -UserPrincipalName admin@domain.com -ShowBanner:$false ``` ## Disconnect Exchange Online It's essential to disconnect the remote PowerShell session when you’re finished. If you close the Exchange Online PowerShell Module window without disconnecting the session, you will still be seen as using a remote PowerShell session, and that's not the best practice. If you issue the following command: ```powershell Disconnect-ExchangeOnline ``` It will clean up session objects and local files and remove the access token from the cache. ![Windows Terminal with PowerShell command history](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/07/exchangedisconnect.png) Windows Terminal with PowerShell command history ### Schedule a build in Azure DevOps using CRON Expressions URL: https://www.techielass.com/schedule-a-build-in-azure-devops-using-cron-expressions/ Last updated: 2024-05-06T10:01:55.000Z Dive into the dynamic world of Azure DevOps pipelines, where triggering actions is just the beginning. Picture this: You're crafting pipelines with precision, and suddenly the need arises to schedule them seamlessly. Enter CRON expressions—the ultimate solution for streamlining your pipeline execution on a defined timetable. This blog post unveils the power of CRON expressions, guiding you through the process of effortlessly scheduling builds and pipelines in Azure DevOps. Say goodbye to complexity and hello to efficiency as you master the art of timed triggers. ## Can you schedule Azure DevOps Pipelines? Yes! You can easily schedule them using a CRON expression as the trigger in your pipeline file. ## What is CRON? CRON is a command line utility that is used to schedule jobs. You'll hear it referred to as CRON jobs or CRON tasks. The CRON syntax can sometimes be confusing when first encountered. Five sections can be configured within the CRON syntax. You can specify the day of the week, month, day of the month, hour and minute. This isn't something you need to commit to memory, but being able to read the syntax is useful. Below is a great diagram to show you how the syntax is broken down. ```yml # ┌───────────── minute (0 - 59) # │ ┌───────────── hour (0 - 23) # │ │ ┌───────────── day of the month (1 - 31) # │ │ │ ┌───────────── month (1 - 12) # │ │ │ │ ┌───────────── day of the week (0 - 6) # │ │ │ │ │ # │ │ │ │ │ # │ │ │ │ │ # * * * * * ``` I love to use the website [https://crontab.guru/](https://crontab.guru/?ref=techielass.com). You can put the syntax into the website, and it will decipher what that schedule would do, or equally, you can use it to build the right syntax for the schedule you want to execute. 💡 **I also have a YouTube channel! Do not forget to subscribe* [**here*](https://www.youtube.com/techielass?sub%5Fconfirmation=1&ref=techielass.com)**.* ## What is the Azure DevOps CRON syntax? I want to show you an example of an Azure DevOps Pipeline that runs on a schedule. ```yml trigger: # YAML file in the release branch schedules: - cron: "0 0 * * 1-5" displayName: Daily build at midnight (Monday-Friday) branches: include: - main ``` The above is a part of my pipeline that will trigger at midnight every Monday, Tuesday, Wednesday, Thursday and Friday and complete what the pipeline is designed to build. You should notice that it will open a trigger for the main branch, not any other branches. This allows for granular control over different branches and your needs. 💡 **It's important to note that you encapsulate the CRON schedule in double quotes within Azure DevOps. With other platforms, such as GitHub Actions you use single quotes*. The full pipeline looks like this: ```yml # Basic pipeline that runs at midnight every day of the working week for the main branch. trigger: # YAML file in the release branch schedules: - cron: "0 0 * * 1-5" displayName: Daily build at midnight (Monday-Friday) branches: include: - main pool: vmImage: 'windows-latest' demands: - msbuild - visualstudio variables: solution: '**/*.sln' buildPlatform: 'Any CPU' buildConfiguration: 'Release' steps: - task: DotNetCoreCLI@2 displayName: Restore inputs: command: restore projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: Build inputs: projects: '**/*.csproj' arguments: '--configuration $(BuildConfiguration)' - task: DotNetCoreCLI@2 displayName: Publish inputs: command: publish publishWebProjects: false projects: '$(Build.SourcesDirectory)\dotnet-core-tutorial.csproj' arguments: --configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)\output zipAfterPublish: false ``` ### Lenovo ThinkPad X13 (Gen1) Review URL: https://www.techielass.com/lenovo-thinkpad-x13-review/ Last updated: 2022-06-21T07:10:44.000Z I was in need of a laptop back in November last year that would be lightweight but powerful. Over the years I've had all sorts of laptops, HP, Dell, Surface, Fujitsu... and all of them have had their pros and cons. This time around I started my research with a brand I had never personally used Lenovo. I was focussing specifically on the ThinkPad range. Everyone raves about the ThinkPad range of laptops and how great they are and I wanted to explore the range. I started look on the Lenovo website but quickly realised the shortage of computer components a brand new laptop might not be the way to go if I wanted something soon. Buying second half electronic equipment can be a risk and a challenge, but after much searching and watching I found myself a Lenovo ThinkPad X13 (Gen1) . ![Lenovo X13 and a coffee cup](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/06/20211127_111609.jpg) Lenovo X13 and a coffee cup ## Tech Specs - Intel i5-10210U - 16GB RAM - 256GB SSD - 1 x USB-C 3.2 port - 1 x USB-C Gen2 - 2 x USB 3.2 Gen1 - 1 x HDMI ## Portability It weights 2.7lb or 1.22kg. Which makes it great for carrying and for sitting it on your laptop. It's versatile in using as well, great on a solid desk, or sitting on your laptop. The screen can move at a full 180 degree angle, so there is a lot of options to get the screen in a comfy position for working. ## Build Quality Lenovo are well known for their build quality. For the engineering that goes into making the laptops and making them tough. This little X13 is no exception. It feels quality made. It looks well build. I've used some laptops in the past where the hinge on the screen feels flimsy and you have to be careful when opening the laptop and always feels like one opening away from breaking. This is not the impression or feel I get from the Lenovo. The keyboard also feels like a good sturdy unit. Again I've laptops that after awhile the keys become loose or wobbly, so far the Lenovo hasn't had that concern and it doesn't feel like it would be an issue. ![Lenovo X13 side view](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/06/ports.jpg) Lenovo X13 side view ## Battery Life This laptop isn't my daily driver, so it's not thrown massive workloads or hours of work. But it get used a lot at weekends and evenings and I've been massively impressed with the battery. It charges quickly and lasts a good amount of time. I have no stats to back this up, but I felt the battery life was better before I installed enabled Hyper-V on the laptop. I don't run any virtual machines on the machine, I so there is no load in that sense but since enabling it the battery seems to run down slower. Could just be my perception, but I have considered disabling it to see if the battery improves. ## Overall Overall, I am massively pleased with this purchase. It's a great laptop that suits the needs I have for casual browsing, movie watching, blog writing or editing some scripts. If you can pick up a second hand one that hasn't seen too much abuse then this is a great laptop to have in your collection. 😉 ### How to Push an Empty Commit in Git URL: https://www.techielass.com/how-to-push-an-empty-commit-in-git/ Last updated: 2025-09-30T10:55:31.000Z There are a lot of Git commands. I'm always discovering a new and useful one. This time I have found one that allows you to push an empty commit to a repository. ## Why push an empty Git commit? Git doesn't allow you to push commits without making changes, and there are times when you don't want to make changes but perhaps trigger a pipeline or job or build that is attached to a repository. This is where pushing an empty commit can come in handy. If you can't manually trigger your build or pipeline, staying in the command line prompt and pushing an empty commit can mean triggering the build or pipeline without making any changes. ## How to push an empty commit It is a fairly straight forward command, using the --allow-empty flag. ```bash git commit --allow-empty -m "Empty commit" ``` Very similar to pushing a commit when you've made changes to your code. But using this flag you can push a commit without making any changes. 😊 💡 **I also have a YouTube channel! Do not forget to subscribe* [**here*](https://www.youtube.com/techielass?sub%5Fconfirmation=1&ref=techielass.com)**.* ### Schedule GitHub Actions Using CRON Expressions URL: https://www.techielass.com/schedule-github-actions-using-cron-expressions/ Last updated: 2023-03-03T08:19:55.000Z You can trigger [GitHub Actions](https://www.techielass.com/tag/github-actions/) to run on several different events. The most common would be running when you push changes to your repository. Also, you may want to trigger an Action to run on pull requests. When building Actions, you may want to run them on a defined schedule. This tutorial uses CRON expressions to configure a GitHub Action on a given schedule. ## Can you schedule GitHub Actions? Yes, yes, you can. You have the option to trigger a GitHub Actions on a schedule. An example could be: ```yml name: Test Build on: push: pull_request: schedule: - cron: '00 1 * * 1' # At 01:00 on Mondays. ``` ## What is CRON? CRON is a command line utility that is used to schedule jobs. You'll hear it referred to as CRON jobs or CRON tasks. The CRON syntax can sometimes be confusing when first encountered. Five sections can be configured within the CRON syntax. You can specify the day of the week, month, day of the month, hour and minute. This isn't something you need to commit to memory, but being able to read the syntax is useful. Below is a great diagram to show you how the syntax is broken down. ```yml # ┌───────────── minute (0 - 59) # │ ┌───────────── hour (0 - 23) # │ │ ┌───────────── day of the month (1 - 31) # │ │ │ ┌───────────── month (1 - 12) # │ │ │ │ ┌───────────── day of the week (0 - 6) # │ │ │ │ │ # │ │ │ │ │ # │ │ │ │ │ # * * * * * ``` I love to use the website [https://crontab.guru/](https://crontab.guru/?ref=techielass.com). You can put the syntax into the website, and it will decipher what that schedule would do, or equally, you can use it to build the correct syntax for the schedule you want to execute. ## What is the GitHub Actions CRON syntax? I want to show you an example of a GitHub Actions workflow, including a CRON schedule. ```yml name: Trigger Action on a CRON Schedule on: schedule: # Runs "At 11:00 on every day-of-week from Monday through Friday" - cron: '0 11 * * 1-5' jobs: build: name: Trigger Code Checkout runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 ``` The above GitHub Actions workflow will open a trigger on a schedule. The CRON job I have set will run at 11 am on every day of the week from Monday through Friday. The workflow will then run the Code Checkout step on a [Ubuntu runner](https://www.techielass.com/github-runners/). It's a straightforward workflow, but it triggers using a CRON schedule rather than a push to GitHub or a pull request. Check out my other blogs on [GitHub Action](https://www.techielass.com/tag/github-actions/) uses and features. ### Speaking at DATA:Scotland URL: https://www.techielass.com/speaking-at-data-scotland/ Last updated: 2025-06-06T09:48:51.000Z I'm pleased to say I have been accepted as a speaker at [DATA:Scotland](https://www.datascotland.org/?ref=techielass.com) which is being held in Bonnie Scotland in September. 👍 This will be the third time as a speaker at the event. And it's an event I've always really enjoyed supporting. This time I am delivering a fresh, brand new, never presented before talk. It's called "***Create stand out demos and presentations".*** It's an ambitious talk as I know everyone has an idea on what makes a great demo and what makes a great presentation but I am going to share my thoughts. 😊 Why do I think this is something I am qualified to stand up in front of an audience and talk about? Well I've delivered over 90 presentations across the world to in person and virtual audiences and I've lost count of how many demos I've delivered. I'm going to be in Auditorium C at 9:30am on the 2nd September, so bring your coffee ☕ and hear me share my thoughts. And hopefully give you some tips to try in your next presentation and demo. If you haven't registered for the event it's entirely free to do so, via [Eventbrite](https://www.eventbrite.co.uk/e/datascotland-2022-registration-280217517137?ref=techielass.com). There is a lot of great speakers and sessions lined up on the day, so it's definitely worth the effort. 😉 After my session you'll find me hanging around the [Octopus Deploy](https://octopus.com/?utm%5Fcampaign=datascotland&utm%5Fmedium=blog&utm%5Fsource=sarah) booth as we are sponsoring the event. I'm sure we'll have swag to give away so come and say hello to myself or [Derek](https://www.twitter.com/devopsderek?ref=techielass.com). 🐙 💡 [Speaking at the UK Cloud Infrastructure User Group](https://www.techielass.com/speaking-at-uk-cloud-infrastructure-user-group/). ### Blue Screen of Death when Hyper-V enabled URL: https://www.techielass.com/blue-screen-of-death-when-hyper-v-enabled/ Last updated: 2022-05-30T19:22:08.000Z Recently I had an issue where every time I enabled Hyper-V on my laptop, either in Windows 10 or Windows 11 I'd get a Blue Screen of Death (BSOD) error message. The BSOD was telling me: Stop code is: SYSTEM\_THREAD\_EXCEPTION\_NOT\_HANDLED What failed: RtsPer.sys After trying a few things I finally found the fix, thanks to some really helpful folk on a forum. 😊 ## The fix The fix for me, was to enter into my BIOS. Then go into Setup -> Security -> Virtualization. And disable "Enhanced Windows Biometric Security". ## Why? I haven't figured out why this happens and it seems to be an issue for Lenovo laptops, but it fixed my issue and I am happy! 😊 💡 *I also have a YouTube channel! Do not forget to subscribe [here](https://www.youtube.com/techielass?sub%5Fconfirmation=1&ref=techielass.com).* ### Top 10 DevOps engineers to follow in 2022! URL: https://www.techielass.com/top-10-devops-engineers-to-follow-in-2022/ Last updated: 2023-12-07T11:42:01.000Z Below is a list of ten DevOps engineers who are doing great things in the community that you should keep an eye on and follow them on Twitter or subscribe to their blog or YouTube channel — enjoy! ### What is a DevOps engineer? A DevOps engineer is someone who can introduce processes, tools, and methodologies to their companies software lifecycle or infrastructure deployment. A DevOps engineer can come from a Developer background or an Operations background or be new to the IT industry. ### Anaïs Urlichs [Anaïs](https://twitter.com/urlichsanais?ref=techielass.com) an Open Source Developer Advocate based in the UK. [The ](https://www.cncf.io/?ref=techielass.com)Cloud Native Computing Foundation (CNCF) named her as their [Top Ambassador in 2021](https://www.cncf.io/announcements/2021/10/15/cloud-native-computing-foundation-announces-2021-community-awards-winners/?ref=techielass.com). She is also a GitHub Star. Her passion lies in making the cloud native ecosystem more accessible for the community. She created the [“100 days of Kubernetes”](https://100daysofkubernetes.io/?ref=techielass.com) which is a self paced challenge where you can learn something new about Kubernetes for 100 days. You can find great content on Anaïs’s [YouTube Channel](https://www.youtube.com/c/AnaisUrlichs?ref=techielass.com) about Kubernetes and DevOps. She regularly has live “coffee chats” where you can join her and ask questions. ### Barbara Forbes [Barbara](https://twitter.com/ba4bes?ref=techielass.com) is an Azure Technical Lead based in The Netherlands. She is a Microsoft Azure MVP, Microsoft Certified Trainer and GitHub Star. She focuses on Azure, PowerShell, Automation, Infra as Code, Azure DevOps and Serverless. In her spare time she is also the co-founder of the Dutch DevOps & GitHub Community (DDOG) and co-hosts the Dutch PowerShell User Group (DUPSUG). Barbara shares some fantastic [blogs](https://4bes.nl/?ref=techielass.com) on things ranging from how to implement a tagging strategy with Azure Bicep templates to ensuring your PowerShell modules are all updated on your computer. ### Esther Barthel Esther is a Solutions Architect based in Holland, designing and implementing Citrix solutions for both small-business and large enterprise infrastructures. She is a Microsoft MVP and End User Computer (EUC) vExpert for VMware. Esther is also an author, in 2014 Esther authored the [“Citrix XenApp 6.5 Expert Cookbook”](https://amzn.to/3vIbnDi?ref=techielass.com). Following [Esther](https://www.virtues.it/?ref=techielass.com) you will learn about Azure, DevOps, Automation, PowerShell, Virtualization, Mobility, Cloud, Citrix, JSON and REST APIs. You will also find her hosting the Azure Thursday group sessions. ### Michael Cade [Michael](https://twitter.com/MichaelCade1?ref=techielass.com) is a Community Technologist at Kasten. He’s recently starting to learn topics like Kubernetes, Cloud-Native, DevOps and the future of Software while sharing his journey with the community. At the start of 2022 Michael started a new project #90DaysofDevOps. This project is him learning and getting a better understanding of DevOps. He’s documenting each day and it’s been a very popular topic so far with over 2,000 stars on his [GitHub project](https://github.com/MichaelCade/90DaysOfDevOps?ref=techielass.com). He’s covering topics such as what DevOps is, learning a programming language and the basics of Linux. The beauty of this project by Michael is you can clone his GitHub repository and use it as a template to do your own #90DaysofDevOps learning journey. ### James Cook [James](https://twitter.com/OfficialCookJ?ref=techielass.com) is a DevOps Engineer based in the UK. He is the host of the [Az Community Roundtable](https://twitter.com/azroundtable?ref=techielass.com). James has been active in the community since 2021 sharing blog posts, creating a podcast and videos along the way. Following James’s [blog](https://jamescook.dev/?ref=techielass.com) is useful as he covers a variety of topics, especially in the Infrastructure as Code space. James has been sharing some great blogs on Terraform, from getting started to how to run tests on your code to ensure there aren’t any misconfigurations. ### Rob Barnes Rob is a Senior Developer Advocate based in the UK. He is one of the hosts of the “Keepin’ IT Secure’ podcast show. Rob has been in the IT industry for a number of years and has experience of working with a lot of organisations helping develop architectural designs and fault-tolerant automated solutions. Following [Rob’s YouTube channel](https://www.youtube.com/devopsrob?ref=techielass.com) you’ll find a mixture of content running from building a PC, to Terraform to creating content as a [Developer Relations](https://techielass.gumroad.com/l/devrel-for-beginners?ref=techielass.com) Advocate. ### Sid Palas Sid describes himself as a “technologist, engineer, athlete, beard grower, and tiny living enthusiast.” Sid has built a large [YouTube channel](https://www.youtube.com/c/DevOpsDirective?ref=techielass.com) where he talks about Infrastructure as code (IaC), Kubernetes, DevOps and career advancement. His interactive DevOps Office Hours sessions with others from the community have proved popular and educational. There is an opportunity to learn something from the content that [Sid](https://www.twitter.com/sidpalas?ref=techielass.com) is creating and think about things from a different angle. ### Sam Cogan [Sam Cogan](https://twitter.com/samcogan?ref=techielass.com) has been a Microsoft MVP since 2017, primarily focussing on providing architecture and technical solutions for cloud based SaaS projects using Azure. His knowledge around Azure ARM templates and Azure Bicep is extensive. He regularly [creates content](https://www.youtube.com/c/SamCogan/?ref=techielass.com) around both Infrastructure as Code toolsets. He has regularly spoken at user groups and conferences to share his knowledge and help others. If you are looking to learn more about automating your infrastructure deployments to Azure then Sam is the person that can help you expand your knowledge. ### Thomas Thornton Thomas is an Azure Technical Specialist based in Northern Ireland. Thomas holds a number of Microsoft Azure certifications including Azure Solutions Architect and DevOps Engineer. In 2021 Thomas was awarded the Microsoft Most Valuable Professional (MVP) Award for Azure. On his [blog](https://thomasthornton.cloud/?ref=techielass.com) Thomas is posting a lot of great how to’s and tutorials surrounding Azure DevOps. He shares error message resolutions he encounters. As well as creating great workshop content for you to work through and get a better understanding on a topic. ### Temi Olukoko [Temi ](https://www.twitter.com/TemiOlukoko?ref=techielass.com)is another UK based DevOps Engineer. Temi landed a job as a software engineer without a computer science degree or attending a coding bootcamp. A lot of her content on [YouTube](https://www.youtube.com/channel/UC-yaqmDmw2gfbifHMrTVE7Q?ref=techielass.com) is about that journey. Temi is also the founder of [SimplexCode](https://www.simplexcode.org/?ref=techielass.com). SimplexCode is an educational-technology platform to help those in the early stages of their careers what they need to navigate their way in the technology industry. ### Source Control your AWS CloudFormation templates with GitHub URL: https://www.techielass.com/source-control-your-aws-cloudformation-templates-with-github/ Last updated: 2023-12-07T14:29:34.000Z Source Control is the practice of tracking and managing changes to your code. This could be software code or infrastructure as code (IaC). Source Control in the Development side of IT has been common practice for a long time. But it is something that is still new or uncommon within the Operations teams in IT. I can hold my hand up and say a lot of the scripts or deployment templates I wrote use to live in folders marked version 1, old version, new version, etc. Or even in draft emails in my email account. What a crazy way to work, right? ![Files, computer screen and cup](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/05/hugo-uploading.png) Illustration by Icons 8 from Ouch! Thanks to the invention and my discovery of GitHub I have been become better at storing scripts and become a better write of scripts (hopefully!) now everything is publicly on display. ### What is GitHub? What is GitHub video ### Use GitHub for your AWS CloudFormation source control I've recently been learning and creating [AWS CloudFormation templates ](https://www.techielass.com/create-an-s3-bucket-using-aws-cloudformation) and have created a GitHub repository to help store my templates, so I can work on them and also share with others. You can find my workings here: [https://github.com/weeyin83/AWSCloudFormationSample](https://github.com/weeyin83/AWSCloudFormationSamples?ref=techielass.com)s When I have been creating the templates on my local machine I have been using certain tools to validate and check my templates for best practices and any security vulnerabilities. This has led me to see if I can build these checks into my GitHub repository with [GitHub Actions](https://www.techielass.com/tag/github-actions/) and I can! ### Validate your AWS CloudFormation template When writing a template it can be easily to get in to bad habits, or maybe use the wrong phrasing or syntax. Especially if you are switching between languages or even multi-tasking. In order to test your AWS CloudFormation templates you can deploy them, it will help to validate your template but there are other ways, better ways. [Lint testing](https://www.techielass.com/what-is-linting/) your code is the way forward. Lint testing your code can help to pick up any errors or best practice violations. You can lint test your code as you write it, there are often tools you can install or plugs within your favourite code editor. But best practice is also perform lint testing when you check code into your source control environment. To help validate your AWS CloudFormation templates you can use a tool called [**cfn-lint**](https://github.com/aws-cloudformation/cfn-lint?ref=techielass.com). The cfn-lint tool can validate both YAML and JSON templates against the [AWS CloudFormation Resource Specification](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html?ref=techielass.com). The cfn-lint tool will return a zero exit code if there are no issues found in your template. Any other value suggests there is something wrong with the template. - 0 is no issue was found - 2 is an error - 4 is a warning - 6 is an error and a warning - 8 is an informational - 10 is an error and informational - 12 is an warning and informational - 14 is an error and a warning and an informational ### Use cfn\_nag to check for security vulnerabilities There is another tool called [**cfn\_nag**](https://github.com/stelligent/cfn%5Fnag?ref=techielass.com) that can check your code for potentially any insecure infrastructure. When you read the documentation around this tool, the author says it can check for things such as: - IAM rules that are too permissive (wildcards) - Security group rules that are too permissive (wildcards) - Access logs that aren't enabled - Encryption that isn't enabled - Password literals Checking your infrastructure templates early in the process for any potential security issues is important. No one wants to be responsible for security holes within their infrastructure that could cause reputational or finance issues for them or their customers. ### AWS CloudFormation workflow with GitHub Actions With our AWS CloudFormation templates being stored within GitHub as a central repository we want to ensure that only templates that conform to the correct standards are stored there. In order to this we can build a GitHub actions workflow that will run the cfn-lint and cfn\_nag tools. Below is the GitHub Actions workflow that I have created. ```yml # This is a basic workflow to help you get started with Actions name: Lint Test CFN templates # Controls when the workflow will run on: # Triggers the workflow on push or pull request events but only for the main branch push: branches: [main] pull_request: branches: [main] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # This workflow runs all the templates through cfn-lint and cfn_nag jobs: Cloudformation-checker: name: Check linting and securtity concerns runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: cfn-lint-action uses: ScottBrenner/cfn-lint-action@v2.2.3 with: args: "*.yaml" - name: Stelligent cfn_nag uses: stelligent/cfn_nag@v0.8.6 ``` The workflow I have created will trigger for a number of reasons: - When something is pushed into the main branch of the repository. - When a pull request is created to push something into the main branch of the repository. - When manually triggered. The GitHub Action runs on a Ubuntu [runner](https://www.techielass.com/github-runners/). It runs three steps: - **Checkout** \- This step checkouts the code so that the workflow can work with it and have access to it. - **cfn-lint-action -** This second step runs all my YAML template files against the cfn-lint tool. - **stelligent cfn\_nag -** This third steps runs the cfn\_nag tool against all the templates. I recently created a pull request trying to merge a new template into the main repository and when the checks ran there were errors: ![GitHub Action Pull Request failure](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/05/image.png) GitHub Action Pull Request failure When I drilled into the details I can see I have some warnings and errors within my template according to the cfn\_nag tool. ![cfn-nag tool warnings and errors](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/05/image-1.png) cfn\_nag tool warnings and errors This helps to alert me and the owner or maintainer of the repository that the template has some issues and should be looked at before being merged into the main branch. ### Let me know what how you are using GitHub Actions to help store and write better Infrastructure as Code templates! ### Install cfn_nag on Windows URL: https://www.techielass.com/install-cfn-nag-on-windows/ Last updated: 2022-05-17T07:09:59.000Z When writing any type of code you always want it to follow best practices or be as secure as it can be. When writing [AWS CloudFormation templates](https://www.techielass.com/create-an-s3-bucket-using-aws-cloudformation) you can use **cfn\_nag** to perform some basic security tests on your templates. The tool can validate both JSON and YAML AWS CloudFormation templates against the [AWS CloudFormation Resource Specification](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html?ref=techielass.com). I recently wanted to use the [cfn-nag](https://github.com/stelligent/cfn%5Fnag?ref=techielass.com) tool on some templates I was writing but couldn't find any instructions to install on Windows, but I have found a way to do it. ## Step 1 - Install Windows Subsystem for Linux Windows has a tool called [Windows Subsystem for Linux (WSL](https://docs.microsoft.com/windows/wsl/about?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com)), that allows you to run a GNU/Linux environment on your Windows machine without the overhead of having to run a dual booting system on your machine. To install WSL on your machine open up an elevated PowerShell command and type: ```powershell wsl --install ``` This will download the latest Linux kernel, and install a Linux distribution, by default this is Ubuntu. Once WSL has been installed you will be asked to set up a username and password. Follow best practices with this. If you ever forget the password, [you can reset it](https://www.techielass.com/reset-ubuntu-password-in-wsl-on-windows-10). ## Step 2 - Install Ruby The cfn-nag tool has a dependency on Ruby so we need to ensure that is installed. We can do this by issuing the command within our WSL terminal: ```powershell sudo apt install ruby ``` ## Step 3 - Install the cfn-nag tool Now you have all the dependencies installed you can install the tool itself. To do that we use the following command: ```powershell sudo gem install cfn-nag ``` ## Start to use cfn-nag Everything is now installed and ready for you to use! ![cfn-nag tool installed](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/05/cfnnagtoolinstalled.png) cfn-nag tool installed ### Install cfn-lint on Windows URL: https://www.techielass.com/install-cfn-lint-on-windows/ Last updated: 2023-03-08T21:06:20.000Z Lint testing your code should be done whether you are writing software or infrastructure code. When writing [AWS CloudFormation templates](https://www.techielass.com/create-an-s3-bucket-using-aws-cloudformation), you can use the **cfn-lint** to perform lint testing on your code. The cfn-lint tool can validate YAML and JSON templates against the [AWS CloudFormation Resource Specification](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html?ref=techielass.com). I've been recently trying to upskill on AWS CloudFormation as an Infrastructure as Code (IaC) language and get into good habits of lint testing my code as I go. I've looked to cfn-lint to help me. I found the instructions on how to install this tool on Windows lacking. But I have found a way to make it work! ## Step 1 - Install Windows Subsystem for Linux Windows has a tool called [Windows Subsystem for Linux (WSL](https://docs.microsoft.com/windows/wsl/about?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com)), that allows you to run a GNU/Linux environment on your Windows machine without the overhead of having to run a dual booting system on your machine. To install WSL on your machine, open up an elevated PowerShell command and type: ```powershell wsl --install ``` This will download the latest Linux kernel and install a Linux distribution; by default, this is Ubuntu. Once WSL has been installed, you will be asked to set up a username and password. Follow best practices with this. If you ever forget the password, [you can reset it](https://www.techielass.com/reset-ubuntu-password-in-wsl-on-windows-10). ## Step 2 - Install python The cfn-lint tool depends on python, so we need to ensure that is installed. We can do this by issuing the command within our WSL terminal: ```powershell sudo apt install python3 python3-pip ``` ## Step 3 - Install cfn-lint Now we have all the dependencies installed, we can install the tool itself. To do that, we use the command: ```powershell pip install cfn-lint ``` Once the installation completes, close your terminal and re-open it. ## Start to use cfn-lint Everything is now installed and ready for you to use! ![cfn-lint with a Ubuntu terminal](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/04/cfnlintinstalled.png) cfn-lint with a Ubuntu terminal ### AWS CloudFormation template explained URL: https://www.techielass.com/aws-cloudformation-template-explained/ Last updated: 2025-05-25T18:43:38.000Z In my last blog post I showed you how to [deploy your first AWS CloudFormation template](https://www.techielass.com/create-an-s3-bucket-using-aws-cloudformation) and create an S3 Bucket. What I aim to do within this blog post is walk you through the nine main components of an AWS [CloudFormation template](https://www.techielass.com/tag/cloudformation-templates/) to help build up your knowledge. ![AWS CloudFormation Template structure](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/04/GMT20220420-072512_Recording_1920x1080.00_00_00_00.Still001.png) AWS CloudFormation Template structure The above picture is an example YAML template we'll be using and walking through. ## AWS CloudFormation Template Components Within an [AWS CloudFormation](https://www.techielass.com/tag/aws-cloudformation/) template there are nine components that you may encounter. Some are optional and some are mandatory. ### Format Version The first component you'll encounter is the Format Version ```yml AWSTemplateFormatVersion: 2010-09-09 ``` This dictates what capabilities the template will have, the current version you will see on all up to date templates is **2010-09-09**. This is actually an option field. ### MetaData This is an optional section and can be used for more information about the template. Examples that I have seen with this section includes have been describing how resources are laid out within the AWS CloudFormation Designer. Like below: ```yml Metadata: 'AWS::CloudFormation::Designer': 78de0c7b-0cba-4fd2-837a-adf54fe6a2f7: size: width: 140 height: 140 position: x: 370 'y': 126 z: 0 41b19610-03b6-44f5-92d8-db8d6b53a0c6: size: width: 60 height: 60 position: x: 653 'y': 163 z: 0 ``` ### Description ```yml Description: CloudFormation template for s3 bucket ``` This section is used to help you as the author or your team mates understand what the template does. You could include a brief summary of what the template does, who authored it etc. It is an optional section of the template. ### Parameters The simple template that we showed earlier doesn't have any parameters, or need them for the simplistic deployment. But other templates may need parameter. An example would be deploying an EC2 instance: ```yml Parameters: AvailabilityZone: Type: AWS::EC2::AvailabilityZone::Name InstanceAMI: Description: Managed AMI ID for EC2 Instance for deployment. Default is for deployment in us-east-1. Type : String Default: ami-04505e74c0741db8d KeyPairName: Type: String Description: The name of an existing Amazon EC2 key pair in this region to use to SSH into the Amazon EC2 instances. InstanceType: Type: String Description: Choosing two low cost options Default: t2.micro AllowedValues: - t2.micro - t2.small EnvironmentType: Type: String Description: Used as an identifier ``` In the above example we have parameters that require input when the template is deployed. But we also have parameters that have a default value if no information is supplied for that parameter during deployment. Our *InstanceType* parameters has been set to only allow two inputs as acceptable. Which is great if you want to help guide people deploying the template to company standards or the options that are available for that specific input. ### Mappings Our example template doesn't have any mappings. But for a more complex deployment you could use the mapping section to match a key to a named value. For example if you want to map a certain values based on region. If you are deploying an EC2 instance you might have to deal with different Amazon Machine Image (AMI) IDs so could have the mapping section like: ```yml Mappings: RegionMap: us-east-1: "HVM64": "ami-0ff8a91507f77f867" us-west-1: "HVM64": "ami-0bdb828fd58c52235" eu-west-1: "HVM64": "ami-047bb4163c506cd98" ``` You can then query that mapping table later within your template, so that the right AMI would be picked depending on the region you are deploying to. ### Conditions This is an optional section within the template. Within this section you can help the template to decide whether not to do something based on whether something is true or not. This can be used to great power if you want to use a template for production and also test environments, but configurations are slightly different for each environment. You might want to configure your EC2 instances in a certain way for production, but for test you might want to save costs so you have a different set of requirements. You can achieve this by using conditions within your template. ### Transform Another optional section within a template file. Within this section you can declare one or more macros and the template will execute them in the order they are specified. ### Resources ```Resources: S3Bucket: DeletionPolicy: Retain Type: 'AWS::S3::Bucket' Description: Creating Amazon S3 bucket from CloudFormation Properties: AccessControl: Private PublicAccessBlockConfiguration: BlockPublicAcls: true BlockPublicPolicy: true IgnorePublicAcls: true RestrictPublicBuckets: true BucketEncryption: ServerSideEncryptionConfiguration: - ServerSideEncryptionByDefault: SSEAlgorithm: AES256 VersioningConfiguration: Status: Enabled ``` This section is mandatory. Every AWS CloudFormation template will have a resource section and define at least one resource. The above examples specifies the type of resource to be deploy, an S3 Bucket in this case. We then more configuration information about encryption and versioning for that resource. ### Outputs ```yml Outputs: S3Bucket: Description: Bucket Created using this template. Value: !Ref S3Bucket ``` Within this section you can request information back when the template and resources have been created. You could ask for information about a resource name, an IP address that has been created, etc. You can use this information as reference or when you get to more complex deployments collect the information to be able to pass on to other automation tasks. AWS CloudFormation template explained video ## AWS CloudFormation template components As you can see there are a lot of optional components for an AWS CloudFormation template. I hope this overview has given you an insight into the power and capability that lives within an AWS CloudFormation template and you can take these learnings and move forward with your AWS learning journey. ### Create an S3 Bucket using AWS CloudFormation URL: https://www.techielass.com/create-an-s3-bucket-using-aws-cloudformation/ Last updated: 2024-07-01T19:31:48.000Z In this blog post, I want to show you how to create an S3 bucket using a CloudFormation template. If you are new to [Amazon Web Services (AWS)'s](https://www.techielass.com/tag/aws/) CloudFormation templates, this will be a great first template to deploy! ## What is CloudFormation? AWS CloudFormation is a tool that can help you create or manage your resources within AWS in a programmatic way using Infrastructure as Code (IaC). It can help you replicate your environment easily within a few clicks. You can declare the resources that you need within your CloudFormation template. They will be created in the correct order. A CloudFormation template can either be YAML or JSON. In this tutorial, we are going to focus on YAML. ## Create the template Let's get started with a simple template for creating an S3 Storage bucket within AWS. Open up your favourite editor, like [NotePad++](https://notepad-plus-plus.org/?ref=techielass.com) or, as I prefer, [Visual Studio Code](https://www.techielass.com/tag/vs-code/). The first section of the template is the Format Version and Description sections. ```yml AWSTemplateFormatVersion: 2010-09-09 Description: CloudFormation template for s3 bucket ``` The Format Version helps to identify the capabilities of the template. The most up-to-date version, as I write, is 2010-09-09\. The second line is the Description, which is used to help you and others understand what the template does. The following section we are to declare is the Resources section. Every template needs at least define one resource. ```yml Resources: S3Bucket: DeletionPolicy: Retain Type: 'AWS::S3::Bucket' Description: Creating Amazon S3 bucket from CloudFormation Properties: AccessControl: Private PublicAccessBlockConfiguration: BlockPublicAcls: true BlockPublicPolicy: true IgnorePublicAcls: true RestrictPublicBuckets: true BucketEncryption: ServerSideEncryptionConfiguration: - ServerSideEncryptionByDefault: SSEAlgorithm: AES256 VersioningConfiguration: Status: Enabled ``` We have defined what resource we want created and some properties we want to have with that resource. For this S3 Bucket, we have enabled the following: - *Versioning*: this enables multiple versions of all the objects in the bucket to protect against accidental deletion. - *Encryption:* enabling this ensures that all objects are encrypted when stored within the bucket. - *Private Only*: we have set it so no one from the public can access this bucket. The third and final section of this template we will define is the Outputs. ```yml Outputs: S3Bucket: Description: Bucket Created using this template. Value: !Ref S3Bucket ``` This last section of the template will return to us the name of the S3 Bucket that is created. We can use the output section to help us pass information to other automation tasks or for reference. Now we have the template created, save this file with the YML extension. ## Deploy the template Now that you have written the template, it is time to deploy it and create the resource. You can deploy the template in several ways: through the AWS portal. Or you can deploy the template using the [AWS CLI tool](https://docs.aws.amazon.com/cli/latest/index.html?ref=techielass.com). In this example, we will deploy the template through the portal. Head on over to the AWS management console - [https://aws.amazon.com/console/](https://aws.amazon.com/console/?ref=techielass.com) Now head over to the CloudFormation Console and select "Create Stack". ![AWS CloudFormation - Create stack](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/04/awscloudformation-createstack.png) AWS CloudFormation - Create a stack You'll be presented with a few options here. We have a template, so we select "Template is ready", and then we want to "Upload a template file". ![Create stack within AWS CloudFormation](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/04/cloudformation-upload.png) Create stack within AWS CloudFormation Upload the template you just created and click on Next. You must provide a "Stack Name" within the next screen. This is the name of your deployment; make this something that makes sense to you. There are many other configuration options here, but we will leave the defaults and click Next. You will now be taken to a review screen, check over everything and then click on Create Stack. ![Review AWS CloudFormation deployment](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/04/cloudformation-review.png) Review AWS CloudFormation deployment. ## Resource Creation The storage account should only take a few minutes to be created. You can monitor progress from the CloudFormation page. ![AWS CloudFormation deployed](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/04/cloudformation-deployed.png) AWS CloudFormation deployed Once the resource has been created, you will get additional information under the sections such as Outputs. It will display any outputs you asked for the template to display. Under Resources, you will see any of the resources the template created, and you should have a clickable link to take you to that resource. ### ***And with that, you have deployed your first AWS CloudFormation template and created an S3 Bucket!*** ## Watch the deployment in action I recently walked through the process of deploying this template during a webinar. If you'd like to see me walk through the template in more detail and then show you the deployment, head on over to [YouTube](https://youtu.be/v43klLmM4AY?t=1174&ref=techielass.com) or watch below: ### What is Lint (software)? URL: https://www.techielass.com/what-is-linting/ Last updated: 2023-03-20T11:52:03.000Z Lint or linter is a static code analysis tool that was originally introduced in 1978\. It is used to flag programming errors, stylistic errors or bugs. Typically you will find developers using lint testing on their software code. But it is also something that is now being used by SysAdmins, DevOps engineers and the like. Lint testing can be carried out on Infrastructure as Code (IaC) again to flag any errors, formatting discrepancies, or bugs or best practice violations. 💡 [Tania Allard](https://twitter.com/ixek?ref=techielass.com) explained that *"adopting standards and letting linting take care of this also frees up loads of effort/time for reviewers (as in PRs) to focus on what really matters: implementation, new features, performance/security/experience improvements, edge and not so edge cases without losing focus due to ill-formatted code."* ## Why is Linting important? Performing lint test, or linting your code is important to help reduce errors and ultimately improve the overall quality of your code. Lint testing should be done early on in the development of your code, whether that is software code or Infrastructure as Code. It will help to spot any errors early and help your code writers focus on the right things. 💡 [Connell McGinley](https://twitter.com/cmcginley?ref=techielass.com) explained that lint testing is important because *"Linters allow you to be more productive by catching errors early in the development process, instead of having to spend time debugging in production months down the line."* ## How to Lint test? Depending on what you are creating and what your code is there are multiple ways of doing lint testing. If you are creating your code within something like Visual Studio Code, you may find there is a plugin that can be used to help lint testing your code as you write it or to help test it at various different stages. Another method is performing lint testing when code is checked into your source repository. When building out your DevOps Continuous Integration (CI)/Continuous Deployment (CD) pipeline, lint testing would be part of your CI process. 💡 *I also have a YouTube channel! Do not forget to subscribe [here](https://www.youtube.com/techielass?sub%5Fconfirmation=1&ref=techielass.com).* ### Azure Retirement Announcements URL: https://www.techielass.com/azure-retirement-announcements/ Last updated: 2022-04-28T07:07:59.000Z Earlier this year the Microsoft Azure team announced a lot of Azure service retirements. Within these announcements were retirements that were due to happen this year, 2022, and ones that weren't due to take place until 2025\. Keeping on top of these kind of announcements is important. Either to plan ahead and find alternative solutions within your environment or avoid implementing something that is due for retiral. I've summarised these announcements in this [video on YouTube](https://youtu.be/4F0FYGs0N2s?ref=techielass.com), or you can watch below: Azure Retirement Announcements Video ## 2022 Retirements - [Premium Container SKU](https://azure.microsoft.com/updates/premiumcontainer/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [IoT Hub on Azure Stack Hub](https://azure.microsoft.com/updates/azure-iot-hub-on-azure-stack-hub-preview-will-be-retired-and-it-will-not-go-to-ga/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) ## 2023 Retirements - [Update your SDK Libraries](https://azure.microsoft.com/updates/support-for-azure-sdk-libraries-that-do-not-conform-to-our-current-azure-sdk-guidelines-will-be-retired-as-of-31-march-2023/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Migrate to MQTT broker on Azure IoT Edge](https://azure.microsoft.com/updates/migrate-to-mqtt-broker-on-azure-iot-edge-by-31-march-2023/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Azure Dedicated Host SKUs](https://azure.microsoft.com/updates/azure-dedicated-hosts-dsv3type1-dsv3type2-esv3type1-and-esv3type2-will-be-retired-on-31-march-2023/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Classic data export in Azure IoT Central](https://azure.microsoft.com/updates/migrate-your-classic-data-exports-to-new-data-exports-by-31-march-2023/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Operator Assistance in Azure MFA](https://azure.microsoft.com/updates/azure-multifactor-authentication-operator-assistance-will-be-retired-on-30-september-2023/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) ## 2024 Retirements - [Five Azure Classic networking services](https://azure.microsoft.com/updates/five-azure-classic-networking-services-will-be-retired-on-31-august-2024/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Azure Data Lake Analytics](https://azure.microsoft.com/updates/migrate-to-azure-synapse-analytics/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) ## 2025 Retirements - [Azure Container Monitoring](https://azure.microsoft.com/updates/omstoci/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Azure QnA Maker](https://azure.microsoft.com/updates/azure-qna-maker-will-be-retired-on-31-march-2025/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Azure Time Series Insights](https://azure.microsoft.com/updates/we-ll-retire-azure-time-series-insights-on-31-of-march-2025/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) ### What is Open Source? URL: https://www.techielass.com/what-is-open-source/ Last updated: 2022-04-26T07:04:59.000Z The term open source refers to that can be modified and shared because it's publicly available. It first came about in relation to software development, but today it means much more. It's used more broadly. Open source these days celebrate some key principles, such as collaboration, transparency, and community-oriented development. ## What is open source software? With open source software ANYONE can take the source code, inspect it, modify it and enhance it. ## Is open source software free? This is open a misconception. Open source software is not always free. Open source creators can charge for the software or they can ask for contributions. You will often find that open source software is free though. For open source software creators having their skills showcased publicly can help them gain notoriety, or even employment. For the end users of open source software there can be pros and cons of using it. It can be a create opportunity to find software to solve a problem you might have at a reasonable price, but sometimes it can be hard to get the necessary support when needed. ## Beyond software As I said though, open source is much more than just software nowadays. The principles of open source can be applied to so many more projects. There has been a cultural change in the way people and organisations want to work. The future is very much collaboration and people want to be a part of that. Recently we've seen the creation of projects such as [100 days of Kubernetes](https://github.com/100daysofkubernetes?ref=techielass.com), [90 days of DevOps](https://github.com/MichaelCade/90DaysOfDevOps?ref=techielass.com) or [EddieHub](https://github.com/EddieHubCommunity?ref=techielass.com). Where learning in public and collaborating with the community on that learning journey is encouraged. Sharing what you are doing and asking for others thoughts, experiences and guidance in an open source or community way is a GREAT way to learn and meet new people. If you can make a project you are working on open source, then I would really encourage you to do that. Whether it's a small script you've written or if it's a study plan for your next certification. Everyone will benefit. ## Share open source projects Do let me know what your favourite open source projects are, I'd love to find new ones to use or learn from. ### The future of hybrid URL: https://www.techielass.com/the-future-of-hybrid/ Last updated: 2022-04-20T19:59:48.000Z Hybrid Cloud refers to a mixture of computing, storage and environments made up of on-premises infrastructure, and cloud services. The benefits of running a Hybrid Cloud include: - Improved performance and latency - Return on investment - Flexibility There is often a lot to discuss and think about when embarking on a strategy of Hybrid Cloud for your organisation. Both for the short term and long term future of your organisation. ## Panel discussion With this in mind I am looking forward to a panel discussion with [Lior Kamrat](https://twitter.com/LiorKamrat?ref=techielass.com), [Jeff Woolsey](https://twitter.com/WSV%5FGUY?ref=techielass.com) and [Derek Campbell](https://www.twitter.com/devopsderek?ref=techielass.com) on the subject of Hybrid Cloud. Lior Kamrat is a Principal Program Manager at Microsoft for Azure Arc and Hybrid Cloud. He is also the author of the Azure Arc Jumpstart program. Jeff Woolsey is a Principal Program Manager at Microsoft for Azure Stack HCI, Windows Server and a leading expert on Virtualization, Private and Hybrid Cloud. We are looking forward to a discussion between the panelists and audience. Be sure to join us on the 19th May at 5:30pm UK time / 9:30am PDT / 10pm IST / 12:30 pm EDT. [Download ICS Calendar file here](https://techielass.azureedge.net/icsfiles/panel-discussion-the-future-of-hybrid.ics?ref=techielass.com) or [subscribe to the Octopus Deploy YouTube channel](https://www.youtube.com/c/octopuscloud?ref=techielass.com). ### Trigger a GitHub Actions workflow when a folder changes URL: https://www.techielass.com/trigger-a-github-action-workflow-when-a-folder-changes/ Last updated: 2024-05-06T10:03:41.000Z Step into my world of [GitHub](https://www.techielass.com/tag/github) wizardry, where every line of code counts and every workflow tweak matters. Picture this: I'm knee-deep in GitHub repositories, juggling software code and infrastructure as code with finesse. But there's a hitch—I noticed that each software tweak triggered an unwanted infrastructure overhaul. Frustration set in, until I stumbled upon a game-changing solution: GitHub Actions triggers! Join me as I unravel the magic of GitHub Actions and unveil how to wield its power to trigger workflows precisely when folders change. ## What is an GitHub Actions workflow? Within GitHub, a GitHub Actions workflow is an automated process that can be set up within your repositories. A GitHub Actions workflow can automate tasks and jobs for you. It can help you build your Continuous Integration/Continuous Delivery (CI/CD) pipelines. ## GitHub Actions triggers When you create a GitHub Action, you can specify when it runs, this is called a trigger. You can identify triggers, such as when new code is pushed to the repository or when a pull request is actioned, the workflow will spin into action. Usually, these triggers are set to kick off when a change happens to a specific branch. But you can take that down another level. You can specify if a change occurs to a particular directory or path within a branch, and the workflow will kick start. In this example below, you can see the start of a workflow where the workflow will be triggered when changes are pushed into the folder "MyFirstFolder" within the central repository. ```yaml name: Workflow example on: push: branches: - main paths: - MyFirstFolder jobs: build: ``` If changes are made out with the "MyFirstFolder", the workflow won't be triggered. What this means is you can have workflows for different purposes within your repository. As I mentioned earlier means, I can store my software code and infrastructure as code within a GitHub repository, with different workflows for each only being triggered when I make a change to that specific code. ## Wildcard Triggers But you can also be less specific than using a folder name. Below is a small example where you specify a file type, this time an Azure Bicep file, to be the trigger for the workflow. ``` name: Workflow example on: push: paths: - '**.bicep' jobs: build: ``` ## Excluding paths You could do it another way by excluding folders. In the example below on, push events that include at least one file outside the MyFirstFolder directory. ``` name: Workflow example on: push: paths-ignore: - 'MyFirstFolder/**' jobs: build: ``` There is a lot of flexibility with GitHub Action workflows and making them trigger. So try it out, experiment and make workflows work for you. 😉 ### Chocolatey: What is it? URL: https://www.techielass.com/chocolatey-what-is-it/ Last updated: 2024-05-06T08:14:43.000Z ### What is Chocolatey? Ever spent ages hunting down the right installer file for a new software? Say goodbye to those frustrating scavenger hunts! Chocolatey, the revolutionary open-source package manager for Windows, is here to transform your desktop and server experience. Imagine effortlessly installing, managing, and upgrading software with just a few simple commands. No more tedious installation wizards, no more endless clicks. At its heart, [Chocolatey](https://chocolatey.org/?ref=techielass.com) is a collaborative tool, inviting contributions from anyone passionate about simplifying software management. Best of all, it’s free to use, with optional paid versions offering extra perks for business users. Discover the magic of Chocolatey and unlock a world of seamless software management today. ### How do we use Chocolatey? To get started with Chocolatey you need to [install the software,](https://chocolatey.org/install?ref=techielass.com) to do this you can run a PowerShell script or use Chef, Ansible, or Puppet. For most users taking the PowerShell script and running it on their desktop or laptop will be the quickest way of starting with Chocolatey. Once installed you can start to use Chocolatey to speed up the process of installing software. For example, the following command will help you install the Azure CLI tool. ```powershell choco install azure-cli ``` ![Using Chocolatey to install software](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/03/chocoinstall.PNG) Using Chocolatey to install software To find the command you use to install a piece of software can be found within the packages are on the Chocolatey website - [https://community.chocolatey.org/packages](https://community.chocolatey.org/packages?ref=techielass.com) Of course, installing one piece of software at a time is time-consuming. Chocolatey allows you to issue a command that will install multiple bits of software together. For example, if you wanted to install the Azure CLI tool, plus Spotify and Microsoft Terminal you'd issue the command: ```powershell choco install azure-cli microsoft-windows-terminal spotify ``` ### Update software with Chocolatey Once you have software installed keeping it up to date can be tricky. You might have to wait until an announcement email comes out or you get a notification. But built into Chocolatey is a command that allows you to check if any installed software has any upgrades available and carries them out for you. That magic command is: ```powershell choco upgrade all ``` ![Chocolatey Upgrade command](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/03/chocoupgrade.PNG) Chocolatey Upgrade command ### Uninstall software with Chocolatey Uninstalling software is also a task that Chocolatey can help with. Again you can uninstall one or multiple pieces of software through the command line. For example. if you wanted to uninstall the Azure CLI tool you can use the following command: ```powershell choco uninstall azure-cli ``` You can also use the uninstall command to uninstall multiple pieces of software at the same time: ```powershell choco uninstall azure-cli microsoft-windows-terminal spotify ``` ![Uninstall multiple bits of software with Chocolatey](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/03/chocolateyuninstall.PNG) Uninstall multiple bits of software with Chocolatey ### Package Managers for Windows Chocolatey is one of the options you can use for your Windows machines or servers to help manage software. There is another option, [Windows Package Manager](https://www.techielass.com/how-to-install-winget-windows-package-manager/), which is an open-source tool from Microsoft that is available to help you manage the installation, upgrade and uninstallation of software on your Windows laptops or desktops. 💡 **I also have a YouTube channel! Do not forget to subscribe* [**here*](https://www.youtube.com/techielass?sub%5Fconfirmation=1&ref=techielass.com)**.* ### Create Azure credentials for use in GitHub Actions URL: https://www.techielass.com/create-azure-credentials-for-use-in-github-actions/ Last updated: 2023-12-20T12:33:46.000Z One of the things you can do with GitHub Actions is to connect with your Azure subscription. You can interact with your Azure resources, deploy Azure resources, and more. In order to be able to use GitHub Actions with your Azure subscription, you need to create that service connection. To do that, you must create an [Azure Service Principal](https://docs.microsoft.com/azure/active-directory/develop/app-objects-and-service-principals?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) and store the credentials inside a GitHub Actions secret. ## Create the Service Principal Creating a Service Principal is the first step to creating that connection between GitHub Actions and Azure. You can do that in a few ways: - [Using the Azure Portal](https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Using PowerShell](https://docs.microsoft.com/powershell/azure/create-azure-service-principal-azureps?view=azps-7.3.0&viewFallbackFrom=azps-7.3.&WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) - [Using Azure CLI](https://docs.microsoft.com/cli/azure/create-an-azure-service-principal-azure-cli?toc=%2Fazure%2Fazure-resource-manager%2Ftoc.json&view=azure-cli-latest&WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) The quickest way and easiest way I've found to create this Service Principal is to use Azure CloudShell and issue the command: ```PowerShell New-AzADServicePrincipal -DisplayName "GitHubActionsConnection" ``` Now we have the Service Principal created, we need to create a secret/password that can be used to log in with. For this, we need to head to the Azure Portal. Go to: Azure Portal > Microsoft Entra ID > App Registrations ![Azure AD App registrations](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/03/appregistrations.png) Azure AD App registrations Click on "All Applications" and click on your newly created Service Principal. ![All Applications](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/11/allapplications.png) All Applications Now click on "Certificates & Secrets" and click on "New Client Secret". ![New Client Secret](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/03/newclientsecret.png) New Client Secret You get the option to set how long this secret will be available, please use your organisation's best practices here. ## Permissions We now need to give this Service Principal rights to either a resource group or subscription. In this example, I am going to set up permissions for this Service Principal over my subscription. To do that, I go into the Azure Portal > Subscriptions and select the subscription. Now I click on Access Control (IAM) down the left-hand side. Then clicking on Add to create a new role assignment. ![Azure Access Control settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/03/IAM.png) Azure Access Control settings You'll have the option of assigning a number of permissions to the Service Principal. I will assign Contributor permissions here and then select the new Service Principal as a member. ![Azure AD IAM Permissions](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/03/IAMpermissions.png) Azure AD IAM Permissions Once the permissions have been applied, it's time to collect all the information to store it inside GitHub for use within the workflows. ## Collect Service Principal information To store the information inside a GitHub Actions secret, it needs to be stored within a JSON format. We can run this PowerShell subscription to collect all the information you will need for GitHub and in the form that GitHub needs. ```powershell # Fill in the information information with the Service Principal Name you created and your Azure Subscription Name. $ServicePrincipalName = "GitHubActionsConnection" $AzSubscriptionName = "Name_of_your_subscription" Connect-AzureAD $Subscription = (Get-AzSubscription -SubscriptionName $AzSubscriptionName) $ServicePrincipal = Get-AzADServicePrincipal -DisplayName $ServicePrincipalName $AzureADApplication = Get-AzureADApplication -SearchString $ServicePrincipalName $OutputObject = [PSCustomObject]@{ clientId = $ServicePrincipal.AppId clientSecret = (New-AzureADApplicationPasswordCredential -ObjectId $AzureADApplication.ObjectId).Value subscriptionId = $Subscription.Id tenantId = $Subscription.TenantId } $OutputObject | ConvertTo-Json ``` ## Store Azure Credentials in GitHub Secrets Take a copy of the output from the PowerShell query. This will be stored inside a GitHub Secret for use within your workflows. Within the repository where your workflow is, click on Settings > Secrets > Actions and then click on new repository secret. ![GitHub Secrets settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/03/githubsecrets.png) GitHub Secrets settings Give the new secret a name; I usually go with "Azure\_Credentials" and then paste the PowerShell script's output into the value section. ## Use the Azure login action Now you have the Service Principal set up and the information stored inside GitHub Secrets, it's time to use that information. You can use the Azure Login action within your workflow and call that secret information. You can continue to build on the workflow from there. 👍 ```yaml on: [push] name: AzureLogin jobs: build-and-deploy: runs-on: windows-latest steps: - name: Log in with Azure uses: azure/login@v1 with: creds: '${{ secrets.AZURE_CREDENTIALS }}' ``` ### Getting Started with Azure Bicep URL: https://www.techielass.com/getting-started-with-azure-bicep/ Last updated: 2023-12-07T14:28:54.000Z I've been spending a lot of time recently digging into [Azure Bicep](https://docs.microsoft.com/azure/azure-resource-manager/bicep/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) and learning how to deploy Azure resources using this new domain-specific language. ## What is Azure Bicep? Azure Bicep is a declarative language that will help you deploy your Azure resources. I've also heard Azure Bicep described as an Infrastructure as Code (IaC) tool. Azure Bicep is an evolution from Azure Resource Manager (ARM) templates that we've had for many years. You don't need any prior knowledge of ARM templates to get started with Azure Bicep. ## What do you need to get started with Azure Bicep? You'll need [Visual Studio Code](https://code.visualstudio.com/?ref=techielass.com), the [Bicep extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-bicep&ref=techielass.com) and [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) or [Azure PowerShell](https://docs.microsoft.com/powershell/azure/install-az-ps?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com), all installed locally. These tools will help you write, visualise and deploy your resources via an Azure Bicep template. ## Azure Bicep Templates Azure Bicep templates have the file extension **.bicep** When you use [Visual Studio Code](https://code.visualstudio.com/?ref=techielass.com) and the [Bicep extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-bicep&ref=techielass.com) you'll be given help and warned about syntax errors or given help to author the template. There are key areas to an Azure Bicep template, we're going to take a simple Azure Virtual Network template as an example to work on and deploy today. ```bicep param location string = resourceGroup().location resource virtualNetwork 'Microsoft.Network/virtualNetworks@2021-05-01' = { name: 'sarahs-network' location: location tags: { Owner: 'Sarah' Purpose: 'Tutorial' } properties: { addressSpace: { addressPrefixes: [ '20.0.0.0/16' ] } subnets: [ { name: 'servers' properties: { addressPrefix: '20.0.0.0/24' } } { name: 'desktops' properties: { addressPrefix: '20.0.1.0/24' } } { name: 'resources' properties: { addressPrefix: '20.0.2.0/24' } } ] } } ``` Let's look closely at some key parts of this resource definition: - The first line is a defining the parameter for our resources' location. We've set it so the resource is deployed in the same Azure location as our resource group. - The **resource** keyword at the start tells Bicep that you're defining a resource. - The next part is a *symbolic name*. In the example, the resource's symbolic name is **virtualNetwork**. Symbolic names are used within Bicep to refer to the resource. - We then have the resource type and API version of the resource - **Microsoft.Network/virtualNetworks@2021-05-01\.** This tells Bicep we're declaring a Virtual Network and then which version of the API to use. - We've then declared the resource name in the second line, we're calling this Virtual Network "*Sarahs-Network".* - We then set information like *location, tags* for the resource. - We then start to declare information about the Virtual Network and the subnets we want to be deployed. We've kept the template simple in this example, but you could declare things like DHCP options, DDOS Protection, BGP, encryption and much more. To find out more about what you can declare for a Virtual Network [check out the documentation here](https://docs.microsoft.com/azure/templates/microsoft.network/virtualnetworks?tabs=bicep&WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com). ## Visualise your Azure Bicep template As part of the [Azure Bicep extension for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-bicep&ref=techielass.com) you have the ability to visualise your template. You can press CTRL + K V on a Windows machine or you can select the visualise button in the right-hand corner. ![Azure Bicep visualiser button inside Visual Studio Code](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/03/bicepvisualiser.png) Azure Bicep visualiser button inside Visual Studio Code Because we have a simple template the visualiser doesn't add much value however, if we visualise a Bicep template with nested templates then we can see the power of the visualiser. ![Azure Bicep templates visualised within Visual Studio Code](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/03/bicepvisualisedtemplate.png) Azure Bicep templates visualised within Visual Studio Code ## Deploy an Azure Template using Azure CLI The first thing we need to do before deploying our template is make sure we are logged into Azure CLI on our local machine. We type in the following command that will log us into our relevant Azure subscription. ```bash az login ``` Now we need to create an Azure Resource Group for our resources to reside in. We'll use an Azure CLI command to do that. ```bash az group create -l westus -n vnet-tutorial --tags Owner=Sarah Purpose=Tutorial ``` Now to deploy our template: ```bash az deployment group create --resource-group vnet-tutorial --template-file vnet.bicep ``` In the command, we are saying deploy to our **vnet-tutorial** resource group and we're telling the command to deploy our **vnet.bicep** template. The command will start to run and after a few minute you should have your Virtual Network deployed. ![Deployed resource within Azure](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/03/deployedresource.png) Deployed resource within Azure ## Is Azure Bicep production ready? Yes, as of [version 0.3 Azure Bicep](https://github.com/Azure/bicep/releases?ref=techielass.com) is production ready. It is supported by Microsoft Support Plans and Bicep has 100% parity with what can be accomplished by ARM template. I hope that helps you get started and explains a bit more about Azure Bicep. Do check out the [Microsoft Learn module](https://docs.microsoft.com/learn/paths/fundamentals-bicep/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) or my video explaining why Azure Bicep has become so popular. ### Speaking at Scottish Developers URL: https://www.techielass.com/speaking-2/ Last updated: 2022-03-24T08:07:59.000Z Hey folks! 👋 I've been invited to speak at the [Scottish Developer virtual meetup](https://www.meetup.com/Scottish-Developers/events/283803104/?ref=techielass.com) on the 13th April 2022\. I hope you can all join me and the rest of the group. I'm going to be delivering a new session *"When super powers combine; Azure & Octopus Deploy".* Microsoft Azure is a great option for organisations looking to host their IT infrastructure in the cloud or as a hybrid partner. While Octopus Deploy is a tool that can help you automate the deployment of your infrastructure and software releases all in one place. In this talk, I'll cover off the possibilities of using Octopus Deploy to help your developers, release managers, and operations folk deploy and manage their Azure resources. The event is free and you can sign up to attend over on [Meetup](https://www.meetup.com/Scottish-Developers/events/283803104/?ref=techielass.com). I'd love to see you there! 😊 ### Jabra Evolve2 75 Review URL: https://www.techielass.com/jabra-evolve2-75-review/ Last updated: 2024-10-12T10:33:10.000Z The Jabra Evolve2 75 headset is the latest headset in the Jabra Evolve range. This Evolve headset has an advanced triple digital chipset which power a new Jabra algorithm. This new algorithm helps to differentiation between voice and background noise. The headset also boasts a 30-metres wireless range, so you can go and answer the door or brew a coffee while on that call. Let's dive into the headset in more detail and look at how it fairs. ## What's in the box? When you get the [Jabra Evolve2 75](https://www.stylink.it/qn7b0i3oAMQ?ref=techielass.com) headset inside the box is the following: - Headset - Jabra Link 380 Bluetooth adapter - USB cable 1.2m - Carry pouch - User documents - Desk stand ## Setup With any Jabra headset the setup process is straightforward. In the box you get a dongle you can use to plug into your laptop/PC to help create the connection between the two. However, as I already had a dongle plugged into my laptop I reused that. Which is something you can do, as [I covered in a previous blog post](https://www.techielass.com/jabra-headset-and-dongle-for-stronger-connection/). The dongle and the headset found each other quickly and I was up and running. Using the [Jabra Direct software](https://www.jabra.co.uk/software-and-services/jabra-direct?ref=techielass.com) I had installed helped me to customise settings, and check for any updates the headset might have needed. ![Jabra Evolve2 76](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/03/20220311_083017-1.jpg) Jabra Evolve2 75 ## Sound Quality The Jabra Evolve2 75 is the first in the Jabra Evolve range to have the fully adjustable Jabra Advanced Active Noise Cancellation feature. This means you can adjust how much, or how little of your surroundings you hear. Jabra call this feature HearThrough. It's something that has been in the Jabra Elite range for a while and I've had the pleasure of using it in my [Jabra Elite 85t](https://www.techielass.com/jabra-elite-85t/) headset. It's a great feature to use either in the office or on the move, and really does allow you the control you need to hear outside noises or not hear them. The call quality of the Evolve2 75 is spot on, I've had no complaints on virtual meetings. I've also used the headset for listening to music, podcasts, and videos. The sound quality is great and balanced from an office headset point of view. If you are a true audiophile you might notice some flaws but as an around headset then you won't be disappointed. ## Comfort The Evolve2 75 headset is an on ear headset. Meaning the ear piece sits on your ear. For me this wasn't comfortable for a long period of time. I could wear them for meetings but when I tried to wear them all day they became very uncomfortable. On the days where I was wearing earrings the headset made it so that the earrings ended up digging into my head. I much prefer the over ear headset such as the [Jabra Evolve2 85](https://www.techielass.com/jabra-evolve2-85/). ![Jabra Evolve2 75](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/03/20220311_082943.jpg) Jabra Evolve2 75 ## Battery Life I felt a little disappointed with the battery life. The battery seemed to round out half way through the week. The charge was fast so it wasn't inconvenient, just disappointing as I've come to expect great battery life from Jabra headsets, whatever the form. The Jabra Evolve2 75 can be charged with an USB-C cable, which is good as I have a lot of devices using that type of connection and don't have to carry a specific cable for the headset to be charged with. ![Jabra Evolve2 75 with stand](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/03/20220311_083010.jpg) Jabra Evolve2 75 with stand ## Overview This is a good all round headset for either working in the office or working from home. You've got a headset that can be used for calls and listening to music. As I mentioned earlier, the only thing to watch is these are on ear headsets, no everyone will be comfortable wearing those for long periods of time. ### AWS Storage Classes explored URL: https://www.techielass.com/aws-storage-classes-explored/ Last updated: 2022-03-17T08:10:00.000Z Are you starting your AWS learning journey or studying towards the AWS Certified Cloud Practitioner exam? Below is a guide to the various tiers of classes that exist when you spin up an Amazon Simple Storage Service (Amazon S3) storage resource. ## **AWS S3 Storage Classes** Amazon S3 offers eight storage classes: - ****S3 Standard** \- this is a general purpose tier, that supports applications that require low latency and high throughput. - ****S3 Intelligent-Tiering** \- this tier is great for data with unknown or changing needs. The tier analyses customer access patterns and then automatically moves data to the least expensive tier. - ****S3 Standard-Infrequently Accessed** \- this tier is ideal for infrequently accessed data such as backup or disaster recovery (DR) data. - ****S3 One Zone-Infrequently Accessed** \- this tier does not offer resilience or availability so it should only be used for data you can easily recreate or you have copies of elsewhere. - ****S3 Glacier Instant Retrieval** \- this tier is ideal for data that needs to be stored for a long time, but when it needs accessed it needs right away. For example medical X-Rays or dental records. - **S3 Glacier Flexible Retrieval** \- another tier that is ideal for data that isn't always accessed but when it does need to be accessed it can be quick but instant retrieval isn't needed. For example you could use this for backup or disaster recovery (DR) where you need flexibility to retrieve that data but don't care about the costs of that retrieval. - ****S3 Glacier Deep Archive \-** if you only need to retrieve data once or twice a year, this is the tier for you. It has the lowest price of any tier. - ****S3 Outposts** \- this added storage features to your on-premises AWS Outputs environments. ### Script the install of software URL: https://www.techielass.com/script-the-install-of-software/ Last updated: 2024-06-10T07:32:34.000Z Scripting the install of software either on your laptops or servers is something most IT engineers will have tried at some point or other. No one wants to have to spend time finding the install files then watching progress bars work their magic. Automating or scripting the installation of software make it's easier to repeat in the future and speeds the whole task up. This is why in the past I have used [Chocolatey to help install software onto new laptops](https://www.techielass.com/rebuilding-my-laptop/). Although recently I have preferred using the Windows native tool, [Windows Package Manager or winget](https://www.techielass.com/get-started-with-windows-package-manager/) as it's known to do that job. Regardless of your preference using a package manager to automate the install or removal of software saves a lot of time and hassle. With all that in mind, I've been experimenting and trying new things. Which is why I have this GitHub repo: [https://www.github.com/weeyin83/installsoftware](https://github.com/weeyin83/InstallSoftware?ref=techielass.com) ## What's in the GitHub repository? Inside my GitHub repository is two scripts, one that [installs software with winget](https://github.com/weeyin83/InstallSoftware/blob/main/installsoftware.ps1?ref=techielass.com) and one that [installs the same software but with Chocolatey](https://github.com/weeyin83/InstallSoftware/blob/main/chocoinstallsoftware.ps1?ref=techielass.com). Each script is a PowerShell script, when you run either script it will ask you 14 questions. Each question asks if you want a certain piece of software installed. If you answer yes to the question then the script will install that software for you. ## What software gets installed? I've picked 14 pieces of software that can be installed. The software is: - Zoom - Slack - Google Drive - Google Chrome - Firefox - Camtasia - Snagit - OBS - VLC - Git - Visual Studio Code - Windows Terminal - Elgato Streamdeck I picked these 14 because they are common tools and ones I am constantly using. 😉 ## Community Contribution The script is the first iteration and I know it can be refined and made more robust. I would love for feedback and [contributions](https://github.com/weeyin83/InstallSoftware/blob/main/contributing.md?ref=techielass.com) to expand on this, so please make contributions and submit ideas. Of course you can also take this script and use it as a starter for using yourself. You can modify the software that is installed. This is fully intended to be showing you the art of the possible and I'd love to see it grow from community involvement. *Illustration by* [*Icons 8*](https://icons8.com/illustrations/author/5c07e68d82bcbc0092519bb6?ref=techielass.com) *from* [*Ouch!*](https://icons8.com/illustrations?ref=techielass.com) ### Speaking at Limerick DotNet Azure User Group URL: https://www.techielass.com/speaking-at-limerick-dotnet-azure-user-group/ Last updated: 2022-03-10T08:01:00.000Z Hey folks! 👋 I've been invited to speak at the [Limerick DotNet Azure User Group](https://www.meetup.com/Limerick-DotNet/?ref=techielass.com) on the 24th March 2022\. The meetup will be a virtual one, so I hope you can all join me and the rest of the group. I'm going to be delivering a new sessions *"When super powers combine; Azure & Octopus Deploy".* In this talk, I'll cover off the possibilities of using Octopus Deploy to help your developers, release managers, and operations folk deploy and manage their Azure resources. The event is free and you can sign up to attend over on [Meetup](https://www.meetup.com/Limerick-DotNet/?ref=techielass.com). I'd love to see you there! 😊 ### I am now a Microsoft MVP! URL: https://www.techielass.com/i-am-now-a-microsoft-mvp/ Last updated: 2022-03-01T21:08:34.000Z Today has been an exciting and special day, I received an email saying I had been awarded with the Microsoft Most Valuable Professional (MVP) award. The Microsoft MVP program rewards *"are technology experts who passionately share their knowledge with the community".* There are different award categories: - Microsoft Azure - Windows Development - Office Development - Developer Technologies - Data Platform - Artificial Intelligence - Cloud & Datacenter Management - Enterprise Mobility - Windows & Devices for IT - Office Apps & Services - Business Applications I've been awarded under the [Microsoft Azure](https://azure.microsoft.com/free/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) category. 🥳 To say I am proud and humbled to receive this award is an understatement. I look forward to seeing where this new journey takes me. ### 5 Cool Things About Azure Bicep Templates URL: https://www.techielass.com/5-cool-things-about-azure-bicep-templates/ Last updated: 2022-09-14T12:49:48.000Z [Azure Bicep](https://docs.microsoft.com/azure/azure-resource-manager/bicep/overview?tabs=bicep&WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) is a language you can use to deploy your Azure resources in an automated fashion. In this post I want to give 5 reasons why you should be learning and using Azure Bicep! ## 1: Supports new Azure features immediately Azure Bicep has been developed by the team at Microsoft. Because of this it will support all [preview and generally available (GA)](https://www.techielass.com/service-lifecycle/) Azure products or features immediately. Third-party infrastructure as code (IaC) tools have suffered at the hands of this for sometime now. As they have to wait to hear about these new products and features being released. ![Rocket ship](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/02/smallrocket.png) Supports new features ## 2: Simple For a long time the way to automate deployment of Azure resources using a first party tool or language has been using ARM Templates. But if you've ever seen or used an ARM Template you'll know they are complex and long. Azure Bicep isn't like that, the team have worked hard to deliver a simpler syntax. 50 lines of ARM Template code can now be done in 15 lines of Bicep code. ## 3: Open Source Azure Bicep is a project developed by Microsoft, but it is one of their open source projects. This means that you can head over to [https://github.com/Azure/bicep/](https://github.com/Azure/bicep/?ref=techielass.com), raise a question or issues with Bicep and the team will help you out and so will the community. But also if you want to you can [contribute](https://github.com/Azure/bicep/blob/main/CONTRIBUTING.md?ref=techielass.com) to the project and help improve it for yourself and others! ## 4: It's supported by Microsoft support Bicep isn't a paid product, you can use it for free. Which might lead you to think that you won't get any support from Microsoft if you run into an issue, wrong! This is fully supported by Microsoft so you can can log a support ticket and hopefully get assistance with your problem. 👍🏻 ![Man sitting on chair with robot helping](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/02/itsupport.png) Supported by Microsoft ## 5: Modularity With Bicep you can break up parts of your code into modules. So you could have a Bicep module for deploy an Azure Web App and then a module that deploys a SQL database. You can reuse these modules. Pulling them into deployments as and when you need them. ### If you haven't already tried your hand at using Azure Bicep templates to deploy your resources then go and give it a try today. You won't be disappointed! *Illustrations by [Aleksandr Smetanov](https://icons8.com/illustrations/author/5eb50ac301d03600141ee1f9?ref=techielass.com) & [Icons 8](https://icons8.com/illustrations/author/5c07e68d82bcbc0092519bb6?ref=techielass.com) from [Ouch!](https://icons8.com/illustrations?ref=techielass.com)* ### Looking back at February URL: https://www.techielass.com/looking-back-at-february/ Last updated: 2022-02-27T14:37:59.000Z Hey! 👋🏻 Here we are at the end of February! What a month it has been, I've been busy at work, and busy with side projects. Winter seems to have kicked in here in Scotland and we've seen a lot of snow! ☃️ I've looked back at the month, and collected some of the highlights. ## Azure News Looking back on this month, I've picked out some of the new Azure features or announcements that have been made, check them out below: - [Azure Site Recovery can now keep up to 15 days of recovery points instead of just 72 hours](https://azure.microsoft.com/updates/retain-recovery-now-points-up-to-15-days-with-azure-site-recovery/?ref=techielass.com) - [Azure NetApp Files new region and cross region replication](https://azure.microsoft.com/updates/region-expansion-azure-netapp-files-new-region-and-crossregion-replication-availability/?ref=techielass.com) - [In preview, some WordPress enhancements for App Service](https://azure.microsoft.com/updates/public-preview-wordpress-enhancements-for-app-service/?ref=techielass.com) - [Azure Bastion now supports file transfer via the native client, in preview](https://azure.microsoft.com/updates/azure-bastion-file-transfer-native-client/?ref=techielass.com) - [Azure Automanage for Windows Server now supports hotpatch updates - no reboots!](https://azure.microsoft.com/updates/generally-available-hotpatch-for-windows-server-virtual-machines/?ref=techielass.com) - [The Azure Purview UX team has localized Azure Purview studio to 18 languages](https://azure.microsoft.com/updates/azure-purview-localization/?ref=techielass.com) - [CloudKnox Permissions Management is now in Public Preview](https://techcommunity.microsoft.com/t5/azure-active-directory-identity/cloudknox-permissions-management-is-now-in-public-preview/ba-p/2464391?ref=techielass.com) - [Now in public preview, cross region virtual machine restore points](https://azure.microsoft.com/updates/public-preview-availability-of-cross-region-virtual-machine-restore-points/?ref=techielass.com) - [Automatically delete a VM and its associated resources simultaneously](https://azure.microsoft.com/updates/automatically-delete-vm-and-its-associated-resources-simultaneously/?ref=techielass.com) - [Application Gateway mutual authentication](https://azure.microsoft.com/updates/general-availability-application-gateway-mutual-authentication/?ref=techielass.com) - [In preview, Cost Management anomaly detection for subscriptions](https://azure.microsoft.com/updates/preview-cost-management-anomaly-detection-for-subscriptions-2/?ref=techielass.com) ## Glasgow Azure User Group We held the first [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com) meetup of 2022 on the 23rd February. We were still virtual but it was a great meetup with a lot of questions and interactions with the audience and presenters. We maybe returning to in person for our April meetup, although we are still trying to understand if that is the both safe and the best way to bring the community together. I know that not everyone is ready to return to community events just yet, so we need to strike a good balance for the group. ## Speaking It's been a while since I spoke at a user group, but this month saw me return. I had the pleasure of speaking at [Dutch DevOps & GitHub Community](https://ddog.nl/?ref=techielass.com). At the group I spoke about Octopus Deploy and explaining a bit more about it and the journey I have been on since joining. Was great to share what I have learnt over the past few months and hopefully inspired a few folk. 😊 I also had the pleasure of speaking at the [Microsoft UK Tech Community Day](https://youtu.be/75iOn2PxMqc?t=634&ref=techielass.com) and talking about [Windows Package Manager](https://www.techielass.com/how-to-install-winget-windows-package-manager/) and [Chocolatey](https://www.techielass.com/rebuilding-my-laptop/). There are more [speaking ](https://www.techielass.com/speaking/)opportunities lined up all virtual at the moment, but hopefully that will change later in the year. ## E-Book launch This month saw me launch my very first e-book. Back at the end of August 2021 I had this idea I would try writing an e-book and came up with a topic that I knew a lot about - [Developer Relations](https://www.techielass.com/what-is-devrel/). It took a lot of effort and early morning writing sessions, but I finally launched the e-book ["Developer Relations for Beginners: What to Know and How to Get Started"](https://techielass.gumroad.com/l/devrel-for-beginners?ref=techielass.com). Thank you to everyone that purchased a copy, I really do appreciate the support. 🥳 \- Sarah ### Create a new GitHub Repository from the command line URL: https://www.techielass.com/create-a-new-github-repository-from-the-command-line/ Last updated: 2023-12-06T11:14:16.000Z It can be frustrating when you are working on a project on your local machine and need to commit some changes to GitHub, but you haven't set up that repository. The GitHub CLI can help in this situation; from your terminal, you can create that repository and commit your project. All without leaving your terminal or Integrated Development Environment (IDE). If you haven't got the GitHub CLI installed, [check out my blog post](https://www.techielass.com/install-github-cli-on-windows/) that covers the best ways to do that. ## Convert a directory to a Git repository So, you've been working on a project on your local machine for the last few hours, and you want to commit that project to a GitHub repository. The first step is to [convert the directory to a Git repository](https://www.techielass.com/convert-a-folder-to-a-git-repository/). The command to use is: ```powershell git init ``` ## Stage the files The next step would be to stage the files so they can be committed to your GitHub repository: ```powershell git add . ``` ## Commit the files The next step is to commit the files: ```powershell git commit -m "initial commit" ``` ## Authorise GitHub CLI If you have never used the GitHub CLI tool before, you must authorise it with your GitHub account. If you type in the following command, it will walk you through allowing your terminal to change your GitHub account. ```powershell gh auth login ``` ## Create your GitHub repository Your directory is Git ready, and your terminal is authorised to change your GitHub account. The next step is to create that GitHub repository and push your files into that repository. The command you want to use is **gh repo create**. This command has a lot of switches you can use for different reasons. The command below will create a repository in GitHub called *"My-NewRepo"*. It will be a public repository. The directory you are in will be the source for that GitHub repository, and the push the files in the directory to it. ```powershell gh repo create my-newrepo --public --source=. --remote=upstream --push ``` Your directory is now Git initiated, you have a GitHub repository to store your project, and the files are stored there. 😊 ### Enjoy this new found joy of being able to create GitHub repositories using the GitHub CLI tool! ![If you like my work please support me by buying me a coffee](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/02/blogcoffee-1.png) If you like my work please support me by buying me a coffee [*Command Line*](https://icons8.com/icon/9hLY0P1ixONa/command-line?ref=techielass.com) *icon by* [*Icons8*](https://icons8.com/?ref=techielass.com) ### Automate Your Replies to GitHub Issues URL: https://www.techielass.com/automate-your-replies-to-github-issues/ Last updated: 2023-05-24T14:52:07.000Z Lately I've been spending more time within GitHub. I'm trying to be more conscious of not dumping things into a repository and then moving on. I'm trying to be a better citizen to my fellow techies and observers. Trying to ensure the right information is there for them to be successful if they pick up something I've put there. As such I am exploring features within GitHub and I've set up an auto reply to any GitHub issues that are raised within one of my repositories. ## What are GitHub actions and how do they work? GitHub Actions are a way of executing code as a result of an event happening. GitHub actions is mostly commonly used to automate the build, test and deployment of your software application. However, we are seeing more and more uses of the GitHub Actions feature outside of that original scope. One of which is replying to any issues raised against your repository. ## What are GitHub Issues? GitHub Issues are a way of tracking ideas, feedback, tasks, bugs or questions against the work you have within a repository. Anyone with read access to your repository can create an issue. ## Automate replies to GitHub Issues I've created a GitHub Actions workflow that will reply to any GitHub issues with an automated reply and will also create a reply to any pull request (PR) made. Below is the YAML file. ```yaml on: fork: push: branches: [main] issues: types: [opened] pull_request_target: types: [opened] jobs: welcome: runs-on: ubuntu-latest steps: - uses: EddieHubCommunity/gh-action-community/src/welcome@main with: github-token: ${{ secrets.GITHUB_TOKEN }} issue-message: "It's great to have your input on this project." pr-message: "Thank you for contributing to this project, your support is much appreciated." footer: "Stay awesome!" ``` Let's walk through what it all means. This first section tells the GitHub Action when to trigger. So it will trigger when an issue is opened or when a pull request is opened. ```yaml on: fork: push: branches: [main] issues: types: [opened] pull_request_target: types: [opened] ``` The second section tells the action what to do when it is trigger. ```yaml jobs: welcome: runs-on: ubuntu-latest steps: - uses: EddieHubCommunity/gh-action-community/src/welcome@main with: github-token: ${{ secrets.GITHUB_TOKEN }} issue-message: "It's great to have your input on this project." pr-message: "Thank you for contributing to this project, your support is much appreciated." footer: "Stay awesome!" ``` - This Action will run on a Ubuntu [runner](https://www.techielass.com/github-runners/). - It will respond to issues with "It's great to have your input on this project". - It will respond to pull requests with the message "Thank you for contributing to this project, your support is much appreciated". - It will add "Stay awesome!" to the end of the message as well. The workflow takes advantage of a community action that has been created by Eddie Jaoude: [https://github.com/EddieHubCommunity/gh-action-community](https://github.com/EddieHubCommunity/gh-action-community?ref=techielass.com). I'm not calling this action from the GitHub Actions Marketplace, instead I am calling it straight from the GitHub repo that it is stored in. To see the Action in flow on one of my repositories please head over [here](https://github.com/weeyin83/14daysofgit?ref=techielass.com). ***For more tips and tricks on how to get the most out of GitHub be sure to check out my video:*** ### Install GitHub CLI on Windows URL: https://www.techielass.com/install-github-cli-on-windows/ Last updated: 2023-10-24T07:11:41.000Z Let's discuss GitHub and the available command line (CLI) tool that you can use to interact with your GitHub repositories. In this blog post we will how you can install the tool on your Windows machine using various techniques. ## What is GitHub CLI for? The GitHub command line (CLI) tool can carry tasks relating to pull requests, issues and other GitHub tasks to your terminal. If you are working with code within your terminal and need to carry out a task with [GitHub, ](https://www.techielass.com/tag/github/)you don't have to leave that terminal session. Each command starts with **gh**. ## Install GitHub CLI with Winget [Windows Package Manager or winget](https://www.techielass.com/get-started-with-windows-package-manager/) is the built-in package manager software on Windows 10 and Windows 11 machines. With winget you can install, upgrade and remove software through a command line. Winget is a Microsoft Open Source project. You can use this command to install the GitHub CLI software: ```powershell winget install --id github.cli ``` ## Install GitHub CLI with Chocolatey Chocolatey is an open-source package manager tool that can help automate the installation, upgrade and removal of software on your Windows hardware. If you already have Chocolatey installed on your machine, you can type in the following command to install GitHub CLI: ```powershell choco install gh ``` ## Install GitHub CLI manually You can install the software manually, "the old-fashioned" way, by downloading the file and then walking through the installation wizard. You can find the latest release of the software here: [https://github.com/cli/cli/releases/](https://github.com/cli/cli/releases/?ref=techielass.com) You will find a bunch of file options to download; for Windows machines, you'll need either the MSI or ZIP versions, depending on what your needs are. ### Go forth and install the GitHub CLI tool and have fun using it! 😊 [![If you like my work, please consider supporting me by buying me a coffee](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/02/blogcoffee.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) If you like my work, please consider supporting me by buying me a coffee [*Installation*](https://icons8.com/icon/QlSiAFjDN7NQ/installation?ref=techielass.com) *icon by [Icons8](https://icons8.com/?ref=techielass.com)* ### Trigger an Octopus Deploy Runbook using an Elgato Stream deck! URL: https://www.techielass.com/trigger-an-octopus-deploy-runbook-using-an-elgato-streamdeck/ Last updated: 2025-05-25T18:36:09.000Z Automation and things that mean a few button clicks less are always a winner (in the right circumstance). In this blog post I want to share how I am using the [Octopus Deploy REST API](https://octopus.com/docs/octopus-rest-api?utm%5Fcampaign=techielassblog&utm%5Fmedium=blog&utm%5Fsource=sarah) and my [Elgato Stream deck](https://amzn.to/3flyx96?ref=techielass.com) to trigger an Octopus Runbook! ## Octopus REST API Octopus Deploy is built REST API first, meaning everything you see within the Octopus Deploy portal is built on top of that API. Which again means you can start to perform operations using the REST API. In this instance I'm going to be using a PowerShell script to query the REST API to publish an Octopus Runbook and then run it. More on that later. 😉 ## Elgato Stream deck If you haven't heard of the [Elgato](https://www.techielass.com/tag/elgato/) Stream deck, it can be a hardware device or mobile app that allows you be able to perform an action at the press of a button. ![Elgato Stream Deck](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/Stream_Deck_Lifestyle_Shot-1-1.png) Elgato Stream Deck I have mine setup to do things like turn on and off my office lights, which are Phillips Hue and Elgato lights. I've also go buttons that can mute my microphone when in a Zoom call and I have buttons configured to changes scenes within OBS. There are all sorts of things you can use the buttons for. ## Trigger an Octopus Runbook from a script I wanted a way of being able to keep of a couple of runbooks I have without actually having to log into the Octopus Deploy portal so I had a look a the Octopus Deploy REST API documentation and found a couple of great examples of for doing this. The first is to [publish your Runbook](https://octopus.com/docs/octopus-rest-api/examples/runbooks/publish-runbook?utm%5Fcampaign=techielassblog&utm%5Fmedium=blog&utm%5Fsource=sarah). A runbook within Octopus has the status of either draft or published. A draft is as you'd expect, a work in progress and might not be approved for production use. A published runbook is one that is approved for use and ready for use. You need to publish your runbook before you can trigger it through the REST API or the Octopus CLI tool. So we a published runbook, we now need to run it. There is also an [example of how to do that within the Octopus Documentation](https://octopus.com/docs/octopus-rest-api/examples/runbooks/run-runbook?utm%5Fcampaign=techielassblog&utm%5Fmedium=blog&utm%5Fsource=sarah). But that's a separate script and I wanted to have the whole process in one script that could be ran easily.... So I took some of the bits from the run script and pieced it together into one script that now publishes the runbook and then runs it. You can find my complete PowerShell script here: [This script publishes an Octopus Deploy Runbook and then runs that RunbookThis script publishes an Octopus Deploy Runbook and then runs that Runbook - triggeroctorunbook.ps1![](https://gist.github.com/fluidicon.png)Gist262588213843476![](https://github.githubassets.com/images/modules/gists/gist-og-image.png)](https://gist.github.com/weeyin83/b68381317e6923343f195f6b0e514b21?ref=techielass.com) ## Trigger an Octopus Runbook from my Elgato Stream deck The thing with scripts though, you can never find them when you want them. So I wanted even quicker way to trick the scripts and runbook. Then I realised I could actually run that PowerShell script from my Elgato Stream deck!! Opening the Stream deck software I searched for the System > Open key configuration and dragged it over to a free key. I gave the key a title that made sense. In this case "Getting Started Runbook Create". And then in the App/File section I wrote: ```powershell pwsh.exe -executionpolicy bypass -file "C:\triggercreateinfra.ps1" ``` ![Elgato Stream deck key configuration](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/01/elgatoconfiguration.png) Elgato Stream deck key configuration Whenever I press that key on my Elgato Stream deck it runs the [PowerShell script](https://gist.github.com/weeyin83/b68381317e6923343f195f6b0e514b21?ref=techielass.com) and kicks off my runbook. This is a runbook I often have to run before a demo so it's great being able to kick it off easily ahead of the demo. 👍 Let me know what other great things you've done with your Elgato Stream deck! ### Find unused storage accounts in Azure URL: https://www.techielass.com/find-unused-storage-accounts-in-azure/ Last updated: 2022-02-09T10:03:37.000Z No one wants to pay more than they have to and that is why when using the cloud you need to be on top of removing unused resources, or orphaned resources. In a [previous blog post](https://www.techielass.com/find-orphaned-azure-resources/) I showed you how to find any unused disks or NICs from deleted virtual machines. In this blog post I want to help you understand how you can find those unused storage accounts within your Azure subscriptions. There are three methods I've used to start the hunt. ## Azure Portal The first method I like to use is Azure Monitor. Within there you have a section for Storage Accounts. Within here you can gather some useful information around Transactions. This can help to show you how active or inactive the storage account is. Below is an example within my Azure subscription. ![Azure Monitor - Storage transactions timeline](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/01/azuremonitorstorage.png) Azure Monitor - Storage transactions timeline This will help to guide you in showing which storage accounts are being used and which ones aren't actually that active. The word of caution I'd use with this method is you could have archive storage here that isn't used either read or added to. Make sure you are paying attention to the name or tags of your storage accounts before deciding something that has no transactions can be deleted. ## PowerShell Another way I have found is using a script that queries for every storage account within my Azure subscription and then pull out the last modified date for that container. You can find a copy of the script below or a copy [here](https://gist.github.com/weeyin83/2dd844d9484c6ce5593d0fe0464eafa0?ref=techielass.com). ```PowerShell <# .SYNOPSIS FindUnusedAzureStorage.ps1 .DESCRIPTION This script queries your Azure subscription and gathers the name and last modified date of your Azure storage accounts. .OUTPUTS It will output the results into a table detailing the name and last modified date of your Azure storage accounts. .NOTES Written by: Sarah Lean Find me on: * My Blog: http://www.techielass.com * Twitter: https://twitter.com/techielass * LinkedIn: http://uk.linkedin.com/in/sazlean .EXAMPLE .\FindUnusedAzureStorage.ps1 This will query your Azure subscription looping round each storage account gather the name and last modified date. The output table will show you the storage account name, last modified date and the resource group that storage account is stored in. Please note that the last modified date is shown in MM/DD/YYYY format. Change Log V1.00, 20th January 2022 - Initial version License: The MIT License (MIT) Copyright (c) 2022 Sarah Lean Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #> & { foreach ($storageAccount in Get-AzStorageAccount) { $storageAccountName = $storageAccount.StorageAccountName $resourceGroupName = $storageAccount.ResourceGroupName # Get storage account key $storageAccountKey = (Get-AzStorageAccountKey -Name $storageAccountName -ResourceGroupName $resourceGroupName).Value[0] # Create storage account context using above key $context = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey # Get the last modified date $lastModified = Get-AzStorageContainer -Context $context | Sort-Object -Property @{Expression = {$_.LastModified.DateTime}} | Select-Object -Last 1 -ExpandProperty LastModified # Collect the information to output to a table when the for loop has completed New-Object psobject -Property @{ Name = $storageAccountName; LastModified = $lastModified.DateTime; ResourceGroupName = $resourceGroupName } } } | Format-Table Name, LastModified, ResourceGroupName -autosize ``` This will output a table showing the storage account name, last modified date and the resource group the storage account is in. *It's worth noting the date format is MM/DD/YY.* Below is an example of me running the script on my Azure subscription within the Cloud Shell. ![PowerShell output](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/01/storageoutput.png) PowerShell output The flaw with this method is that files might still be getting accessed but not modified, so it's not perfect, but it can be a great place to start trying to find those unused storage accounts. ## Communication The last method is communication. Using the information you've gathered from above reach out to your colleagues and peers and confirm what you've found is true or not. Hopefully you'll have a good naming convention or tagging system within Azure that will make tracking down the owners of these Azure storage account fairly easy. 😉 *Illustration by [Viktoriya Belyakova](https://icons8.com/illustrations/author/602a6c5b01d0363186d3d950?ref=techielass.com) from [Ouch!](https://icons8.com/illustrations?ref=techielass.com)* ### GitHub Action Runners URL: https://www.techielass.com/github-runners/ Last updated: 2024-07-01T19:33:35.000Z I've been doing a lot of learning around GitHub Actions lately. And being the techie that I am I have spent some time in the documentation understanding how they work under the covers and it was really interesting reading about the runners that GitHub Actions use. ## What is a GitHub Actions Runner? [A GitHub Actions runner](https://github.com/actions/runner?ref=techielass.com) is the virtual server or environment that runs the job and steps that are specified within a GitHub Actions workflow. You can either use the built in runners or specific a self-hosted runner. ## GitHub hosted GitHub Action Runners [GitHub hosted runners](https://docs.github.com/actions/using-github-hosted-runners/about-github-hosted-runners?ref=techielass.com) are either Linux, or Windows virtual machines that are hosted in Microsoft Azure. They are typically using the [Standard\_DS2\_v2 virtual machine size](https://docs.microsoft.com/azure/virtual-machines/dv2-dsv2-series?ref=techielass.com#dsv2-series). The macOS runners are hosted in GitHub's own macOS Cloud. The benefit of using the GitHub hosted runners is you don't have to take care of the infrastructure or patching of the operating system. That is all taken care of for you. ## Self-hosted GitHub Action Runners You can run your [own runners](https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners?ref=techielass.com) if you have a need to control that side of things. The one word of advice or warning that GitHub place here is that if you are using self-hosted runners only configure them on your Private repositories. If you run a self-hosted runner on a public runner there is a chance that someone could run malicious code on that machine with a pull request. So it's something to bear in mind when using a self hosted runner. Configuring your own GitHub Action Runner is a straight forward process. You can find more information if you click on Settings > Actions and then Runners from within one of your repositories. The process is: - Build your self-hosted runner, such as a Windows or Linux or macOS server/machine. - Install the GitHub Actions software and follow the configuration steps. - Start to use it in your workflows! To use your self-hosted runner in your GitHub Actions workflow you need to use the following code: ```yml runs-on: self-hosted ``` Below is one of my private repositories and I have a self-hosted runner configured to pick up any actions that are run there: ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/12/selfhostedrunner.png) GitHub Actions Self Hosted Runner ### If you are looking to learn more about Git and GitHub do check out my ["Git for everyone" series of blog posts](https://www.techielass.com/tag/git-for-everyone/). ### Speaking at the Dutch DevOps & GitHub User Group URL: https://www.techielass.com/speaking-at-the-dutch-devops-github-user-group/ Last updated: 2022-01-27T08:00:59.000Z I'm pleased to share that I am speaking at the Dutch DevOps & GitHub user group on the 15th February. The event is happening online. The Dutch DevOps & GitHub user group is run by [Barbara Forbes](https://twitter.com/Ba4bes?ref=techielass.com) and [Jaap Brasser](https://twitter.com/Jaap%5FBrasser?ref=techielass.com). I'll be sharing a session about [Octopus Deploy](https://www.techielass.com/what-is-octopus-deploy/). I will show you how to get started with Octopus Deploy. I will walk you through how to deploy Azure infrastructure using the Runbooks features. Then take the code of an existing application and automate the deployment to that Azure infrastructure. Since joining Octopus Deploy a few months ago I've been on a learning journey and this session is me sharing the things I've learnt. 😊 The event is free to attend, you can sign up attend [here](https://www.eventbrite.com/e/the-nineth-dutch-devops-github-community-meeting-tickets-253995506397?aff=ebdsoporgprofile&ref=techielass.com). I'm looking forward to sharing this session and I hope to see you there! 👍s ### Opt into Azure Preview Features URL: https://www.techielass.com/opt-into-azure-preview-features/ Last updated: 2022-01-25T08:00:04.000Z Have you ever wondered how to know and opt in to use preview features coming in Azure? I have the answer for you! ## Opt in or out of pre-release Azure features The first thing to do is open a web browser and go to the [Azure Portal](https://portal.azure.com/?ref=techielass.com). Now go the Subscription blade. From here pick the subscriptions you want to opt in (or out) of pre-release features. Down the left hand side menu, under settings you will see an option called *"Preview Features"*. Click on that. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/12/azurepreview-1.PNG) Azure Preview Features It will take a few moments to load but when it does it will list preview features that you can register to have within your Azure subscription. 👍 ### Job Roles inside an IT Department URL: https://www.techielass.com/job-roles-inside-an-it-department/ Last updated: 2022-05-07T10:35:21.000Z When I was younger, I didn’t know what I wanted to do within the IT industry and picked a general IT Systems degree at University. The course had a mixture of networking, security, desktop support, theory, business analysis, and coding. It was clear working through the various modules and parts of the course that coding wasn’t for me. Instead, I enjoyed the parts that involved solving problems. My career has been defined by that path ever since. Over the years I’ve had the opportunity to work in a lot of different IT departments, sometimes as part of that department and sometimes as a contractor. What’s always struck me with each IT department is the variety of people that make up that department. Unique skillsets, unique opinions, and unique personalities. There was never just one job role in those departments. You’d be forgiven if today you thought IT departments were only made up of one type of role. The developer role. It’s all you ever hear from certain companies and marketing departments. They are wrong though. Those roles I saw when I was coming through the ranks of IT are still there, they are as relevant, sometimes more so than the developer role. So, let’s explore the other roles that make up an IT department. ### Help Desk Analyst and Help Desk Support Your help desk team are often the most visible members of the IT department to the business. They are the ones that triage the problems your end users have, whether that be simple password resets or bugs within your products. They’ll be the ones that spot the patterns and escalate bigger issues. You’ll probably see variations of the job title. It’s a role I did for many years. It taught me so much about and IT department, how end users interact with technology and customer service skills. This is a great place to start your career and build on your skills. ### Desktop Engineer Large organisations may have a team that are dedicated to looking after desktops and laptops and end user devices. This is another great role within the IT department for folks looking to get started. Often some of the skills you’ve homed outside of work, fixing relatives PCs and the like can be transferred to this role. This can often be the next step up after working in a Helpdesk role. It’s another role that gives you a great overview of the business and IT department. You’ll get exposure to a lot of basic and complex problems. And to a lot of people and teams. ⬆️[Back to the Top](#top) ### Network Administrator/Engineer Networking is a complex area. It was complex back when all we had to worry about was one building that house all the staff and the servers. It’s even more complex now with WiFi, on-premises networking, cloud networking, remote access networking, telephony networking and more. It’s a specialist role and very important role. They’ll maintain, monitor, secure and grow your network. Most other roles within the IT department will have to at least a basic understanding of networking and how the network is configured and works. But it won’t need not be as deep as the network team. ⬆️[Back to the Top](#top) ### Server Engineer Another role you might find within an IT department is a Server Engineer. This role will be focused on looking after the servers within the business. Servers can play a huge role within organisations IT setup, that could be a server that stores all the businesses files and gives you access to them or even a server that helps you to print out your super important print outs. This role was very dominant as I progressed through my IT career but it’s something that you don’t often see anymore. You’ll often see this role incorporated into the DevOps Engineer role or a role that isn’t needed in organisations that are focuses on cloud native services or micro services that live in the cloud. There is still a place in the IT industry currently for this role, there are literally thousands of Windows Servers and other types of servers out there in the wild that need to be maintained. Those servers aren’t just going to disappear overnight or move to the cloud in the next day or two. So, I this is something you want to focus on then there is still scope here, especially if you focus on the hybrid nature of running some IT services in private datacentres and in the cloud. ⬆️[Back to the Top](#top) ### DevOps Engineer When I started out in IT, I don’t even remember the title DevOps Engineer being something available, or if it was then it wasn’t commonplace. Now it is a common job title and function inside an IT department. There are lots of definitions of DevOps and what a DevOps engineer should do. A DevOps engineer will often be instrumental in unifying and automating processes and procedures. This could be helping to release the latest code to maintenance tasks. I’ve seen some people claim you need to have Developer and Server experience to be a DevOps Engineer. Let’s clear that up. It’s nonsense. You can have a DevOps Engineer that has only Development or Developer experience and you’ll also have DevOps Engineers who only have Server or Operations experience. The team should be balanced enough that you’ll have a mix of people and experience inside the team to compliment each other. ⬆️[Back to the Top](#top) ### Developer Inside your IT department you'll find a team who are focussed on using programming languages to create software. Their role will be to write, test, debug and maintain applications. The applications will be bespoke applications, not your standard applications like Microsoft Word etc. The development team might also be responsible for making applications that the company sells. ⬆️[Back to the Top](#top) ### Security Engineer Security has become a major part of any IT conversation. Whether it’s understanding threats from external actors or from users inside your network. Nowadays you’ll find dedicated people or teams within IT departments that focus on the security for every project or system that is implemented. However, security should be a core skill everyone in the department is aware of and thinking of. You’ll probably find if you join a new company part of your on-boarding will be security and making sure you are aware of the companies’ best practices and procedures. Microsoft have even become a little famous for their internal security training, their Standards of Business Conduct training featuring Nelson has become a bit like a Netflix show with people waiting for the next episode to be released. ⬆️[Back to the Top](#top) ### Data Scientist This is another role that’s evolved during my time in the industry. A Data Scientist will have experience and knowledge of both theoretical and applied, in a range of Machine Learning algorithms. And the ability to communicate complex analysis in a clear, precise, and actionable manner and sell these to a non-technical audience. Data and information are key these days to a lot of businesses. Being able to interpret that and use it to help make the right decisions is important. A Data Scientist team can really help with that and make sense of the data your organisation is gathering on your customer base. ⬆️[Back to the Top](#top) ### Database Administrator Your Data Scientist might be able to make sense of all the data you have collected and make it useful data for business decisions. But chances are there is someone or a team in your department that will be responsible for the maintenance of the servers or systems that store that data. You'll often found people who specialise in setting up database servers, structuring the data tables, making sure they perform they way they should, etc. With so many choices of databases, relational or non-relational and beyond these days someone in your team who can figure out the best solution and manage and maintain that for your business is important. ⬆️[Back to the Top](#top) ### Project Manager I’ve seen IT departments who have technical project managers and non-technical project managers. Either works if the project manager can help to bridge that gap between vision and execution. At the very minimum they should have a basic understanding of technical platforms and methodologies. A good project manager will help to manage tasks, budgets, business communication, and will have a good relationship with both the IT department and the business. ⬆️[Back to the Top](#top) ### Business Analyst This role can often be the link between your IT department and the rest of the business. You’ll find this role helps to gather requirements from the business on new IT systems that are needed or processes that need to be introduced that have a technology slant. They’ll look at risks and impact of these projects. Sometimes this role is combined with the Project Manager role. ⬆️[Back to the Top](#top) ### Do I need to code to work in IT? This is often something that I get asked all the time. It’s also something a large majority of current people within the IT industry can’t decide on and regularly debate. For me the answer to the question is you need to be able to have some basic coding skills, but you don’t need to be an expert. There are different types of coding skills, being able to write a script to automate the installation of software to a bunch of PCs is something you might need to be comfortable to do. But you don’t need to be able to write a mobile phone app from scratch, that type of coding is a developer’s job. There is also a massive argument to be had that you don’t have to be technical to work within IT. There are roles and opportunities for those that have strong leadership, communication or even just some common sense. The IT industry is forever changing and evolving and the skills you need are forever changing as well. But if you are wanting to pursue a career in IT and find yourself stumped by coding, don’t let that put you off. As I said above there are a lot of roles and variety in IT, so you can find your path. ### Git clone a branch URL: https://www.techielass.com/git-clone-a-branch/ Last updated: 2022-01-11T08:08:00.000Z Have you ever just wanted to clone a certain branch from your GitHub repository to work on your local machine and don't want the other 300-odd branches that the repository might have? Well stick around and I'll show you how to do that! ## Does git clone clone all branches? Yes it will, which can be useful if you are working across all the branches but it can also lead to confusion and commits happening on the wrong branch. ## Clone a specific branch I have several branches in one of my GitHub repositories, but I just want a specific branch so I can work on that and don't need the others. The first I do is grab the URL for the GitHub repository, in this case it's [https://github.com/weeyin83/WorkingRepo.git](https://github.com/weeyin83/WorkingRepo.git?ref=techielass.com) The first thing I do is open up my [Windows Terminal](https://www.techielass.com/install-windows-terminal-with-windows-package-manager/), you can use a command prompt window or even the terminal inside [Visual Studio Code](https://www.techielass.com/my-visual-studio-code-setup/). Whatever is your preference. I now type in the command: ```bash git clone -b sarahmonday https://github.com/weeyin83/WorkingRepo.git ``` This specifies that I want to clone the branch *"sarahmonday"*within the WorkingRepo repository. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/12/gitclonebranch.png) Git Clone a specific branch ## Check which branches you have on your local machine To double check what branches you have on your machine you can navigate to the new folder you have on your machine and run: ```bash git branch ``` It should just list the branch you've just cloned. 👍 If you've found this tip useful be sure to check out my other [Git tips](https://www.techielass.com/tag/git-for-everyone/). ### Highlights from #LenovoCES 2022 URL: https://www.techielass.com/highlights-from/ Last updated: 2022-12-23T16:57:19.000Z It's only January but we've seen some amazing announcements from Lenovo at the consumer electronics trade show or CES 2022. We've had more than 40 different announcements from Lenovo, so I want to pick out some of the highlights for you and make sure you get caught up. ## ThinkPad Z Lenovo kicked off by introducing their new ThinkPad Z generation laptops. Two laptops are in this range, the Z13 and Z16\. This generation of laptop is introducing a new design and philosophy targeting the business user audience. ![Lenovo ThinkPad Z13](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/01/01_ThinkPad_Z13_Hero_Front_Facing_JD.png) Lenovo ThinkPad Z13 They've made changes based on how people are interacting with technology and also thinking about the environment. This generation of laptops feature more sustainable materials such as recycled aluminium, recycled black vegan leather and packaging that is made from 100% recyclable and compostable bamboo and sugarcane. Lenovo are beginning celebrations for the 30th Anniversary of ThinkPad and these laptops are embracing change but also continue to bring the core design and engineering tenants that the brand is synonymous with. The laptops will: \- Be using the latest AMD Ryzen PRO 6000 series processors. \- Have ultra narrow bezels and 16:10 aspect rations. \- Have the finger print reader integrated into the keyboard. \- Have Dolby Atmos® Speaker System and Dolby Voice® AI noise cancellation technology built in. They laptops are rumoured for a May 2022 release. ## ThinkPad X1 We've also seen new ThinkPad X1 Yoga and ThinkPad X1 Carbon laptops announced. 10 years ago Lenovo debuted the iconic 360-degree hinge design. The new Gen 7 Yoga brings an FHD and IR camera for improved video quality. A new OLED touch display with low blue light technology. ![ThinkPad X1 Yoga](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/01/07_Thinkpad_X1_Yoga_Gen_7_Hero_Multi_Mode_Form_Factor.png) ThinkPad X1 Yoga It also packs a punch with the 12th Gen Intel processors. Up to 32GB RAM and being capable of housing up to 2TB SSD storage. I love that the Yoga has the touch screen pen built into it, it slots into the laptop and while there it charges. So no more fumbling around for the pen and where has it went on your desk or in your bag. The 10th generation ThinkPad X1 Carbon looks sleek and functional. Again coming with an FHD and IR camera and using the Intel 12th gen processors. It also has the OLED touch display with low blue light technology. Touch screens are pretty much the norm these days are they not? ![ThinkPad X1 Carbon](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/01/03_X1_Carbon_G10_Hero_Left_180_Degrees.png) ThinkPad X1 Carbon ## ThinkPad X1 Yoga or ThinkPad X1 Carbon? The choice between the new X1 Yoga or X1 Carbon will really about what form factor you require. If you want that traditional laptop form factor then the X1 Carbon is for you, but if you want something a bit more versatile in how you use it then the X1 Yoga is the one to look at. Both laptops are billed for a March 2022 release. ## ThinkPad X1 Nano Gen 2 Another ThinkPad that caught my eye was the X1 Nano Gen 2\. A lightweight but powerful laptop for those on the go. Weighting in at 1kg this laptop has the 12th gen Intel Core i7 vPro processors and Intel WiFi 6E built in. It can house up to 32gb of RAM. It also has the Dolby Atmos® Speaker System and Dolby Voice® AI noise cancellation technology built in. April 2022 is when we should see this laptop on the shelves. ![ThinkPad X1 Nano Gen 2](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/03_TP_X1_Nano_Hero_Wide_Angle.png) ThinkPad X1 Nano Gen 2 ## ThinkBook Plus Gen 3 Staying on the laptop front there was also the ThinkBook Plus Gen 3 announcement. Which is a 17.3" laptop with a 8" screen on the side next to the keyboard! ![ThinkPad Plus Gen 3](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/04_ThinkBook_Plus_Gen_3_Hero_Front_Facing_Left_Top.png) ThinkPad Plus Gen 3 I could see myself using that device but not sure how I would feel about carrying around a 17.3" laptop around as my daily laptop, but then again maybe the functionality would be useful on the go? This is also billed for a May 2022 release date. ## ThinkVision Monitors There were also some impressive ThinkVision monitors announced. 65, 75 and 86 inch ones with touch screen technology! All with a April 2022 release date. The large monitors would be great on the office wall or meetings rooms, is it wrong to wonder if a 65" would be useful on my office desk? 🤨 ![ThinkVision 85"](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/01/04_ThinkVision_T86_StillLife-can-be-used.jpg) ThinkVision 85" ## Lenovo Go 130W Multi-ports Charger Gadget wise we've seen the Go 130W multi port charger announced. With 3 USB-C and 1 USB-A port available in this device to help you charge up 4 devices at once. Great for sitting on your desk to charge all your devices or when travelling you don't have to carry multiple chargers. ![Lenovo Go 130W Multi-ports Charger](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/01/Lenovo-Go_Multi_Ports_Charger_USB_A_USB_C.png) Lenovo Go 130W Multi-ports Charger ## ThinkBook Wireless Multi-Device Charging Mat Another charging device that was released was the ThinkBook Wireless Multi Device charging mat. This was designed with the new ThinkBook 13x Gen 2 in mind. Charge your notebook on one section then charge your Qi-enabled mobile devices in another section. So less cable clutter. A very clever decision and gadget if I'm honest. ![hinkBook Wireless Multi-Device Charging Mat](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/01/ThinkBook_Wireless_Charging_Mat_PNG.png) hinkBook Wireless Multi-Device Charging Mat ## Smart Clock Essential with Alexa Built-in Next up we have the Lenovo Smart Clock. This is a revamp. The new Smart Clock has Alexa built in, the original had Google Assistant built in. It comes with a big bold LED display for checking the time, or weather forecast for example. ![Smart Clock Essential with Alexa Built-in](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/01/Lenovo_Smart_Clock_Essential_Built-in-Alexa_EN_US_1.jpg) Smart Clock Essential with Alexa Built-in It's designed to fit into any room with it's design choices with what appears to be cloth like material on the outside, so that it can fit in with any room in your house. There is also the option to have a docking station that can act like a nightlight to provide ambient light in your bedroom for example. ## ThinkBook Plus Gen 3 Sling Backpack Another thing that caught my eye was the ThinkBook Plus Gen3 Sling backpack, a nice little option for carrying your laptop around. Designed for the ThinkBook 17 laptops but I'm sure you could use it with other laptops as well for that all around Lenovo look! ![ThinkBook Plus Gen 3 Sling Backpack](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/01/Lenovo-ThinkBook-Plus-Gen-3-Sling-Backpack_02.png) ThinkBook Plus Gen 3 Sling Backpack ## Let me know in the comments which announcement has you most excited! ### Getting Started with Octopus Deploy URL: https://www.techielass.com/getting-started-with-octopus-deploy/ Last updated: 2022-01-17T11:18:15.000Z As many of you know I joined [Octopus Deploy in October 2021](https://www.techielass.com/im-joining-octopus-deploy/). I've been spending a lot of time over the last few months learning how to use Octopus Deploy. I've really enjoyed learning about the product and getting to know the team. A while back I did a quick blog answering the question ["What is Octopus Deploy?"](https://www.techielass.com/what-is-octopus-deploy/). If that blog post intrigued you and you are looking to learn more, then I have the video just for you! I recorded a introductory demo entitled "Getting Started with Octopus Deploy". It walks you through: - What the product is, and isn't. - How you can use Octopus Deploy to deploy infrastructure. - How to take an existing application and automate the deployment to Microsoft Azure. Getting Started with Octopus Deploy video From about the [34min mark I start to take questions](https://www.youtube.com/watch?v=LPfi1IiIgzc&t=2068s&ref=techielass.com), exploring a bit more beyond the demo. This is a great video if you are looking to learn more about Octopus Deploy or you need to refresh your memory. Please do check it out and let me know what you think! ### Looking back at 2021! URL: https://www.techielass.com/2021-in-review/ Last updated: 2022-05-07T11:52:04.000Z I think 2021 has been a lot tougher than 2020 was with the COVID situation. I think we could all do with a 6 week vacation to our favourite place and with our favourite people. Here's hoping the situation improves in 2022\. However, the purpose of this blog post is to look back at some of the things in 2021\. I've done one of these blog posts for a few years now and it's always interesting to look back at the [older posts](https://www.techielass.com/tag/year-in-review/) and see what I achieved and what my goals were. There's definitely been an evolution over the years in my thought process, writing and what I perceive as important. ### **Career** This year saw a big change in terms of my career. I left Microsoft. Yip in September this year [I left my job at Microsoft](https://www.techielass.com/im-leaving-microsoft/). It was a bitter sweet moment. As a kid I always wanted to work for Microsoft but the change to stretch myself and learning new things proved too much. [I joined Octopus Deploy](https://www.techielass.com/im-joining-octopus-deploy/) in October and it's been a massive learning curve but it's one I'm really enjoying. There is so much scope for me to take my existing skills and use them at Octopus as well as add some new ones and really grow. The team at Octopus have some great plans for 2022 and I'm looking forward to them being actioned and seeing where they take us. ### **Travel** Well, thanks to COVID travel at least internationally has been cancelled. I did get to holiday in two places that I've always wanted to visit here in Scotland though. And I've even booked to go back to one of them in 2022 so there are positives to be taken if you look around. ### **Blogging** This year I've written over 170 blogs, either on here on [ITOpstalk.com](https://itopstalk.com/?ref=techielass.com) or on other platforms. Which is on par with what I did last year. I wonder if that's my limit? 😉 But in all seriousness that amount of blogs alongside, videos, talks, and other side projects is a great achievement. One I'm going to congratulate myself on. Did you know you could subscribe to my [newsletter ](https://www.techielass.com/newsletter)and not miss a blog post? ### **Video** Back when I wrote my 2020 review I was sitting below 1000 followers on my [YouTube channel](https://www.youtube.com/techielass?ref=techielass.com), this year I am sitting at 1600 subscribers. This year saw me do 16 livestreams and 92 videos on my channel. **108 videos!** A lot of effort has went into my YouTube channel this year, there have been some massive successes and also some massive flops. But each of those have hopefully helped me grow and here's to taking those lessons into next year. ### Most visited blog posts in 2021 For the last few years my top ten blog post list at the end of the year has been pretty static. However this year there is a lot of change in that top ten. Some older ones are still very popular and it's nice to see things I wrote a few years ago still being useful. 1. [Present PowerPoint in Microsoft Teams and Still see the Chat](https://www.techielass.com/present-powerpoint-in-teams-and-still-see-the-chat) 2. [How to install Windows Package Manager](https://www.techielass.com/how-to-install-winget-windows-package-manager/) 3. [DHCP and the PXE Boot Process Explained](https://www.techielass.com/dhcp-and-the-pxe-boot-process-explained) 4. [Deploying Windows Update (.msu) with SCCM](https://www.techielass.com/deploying-windows-update-msu-with-sccm) 5. [ConfigMgr Query for Name, Serial Number, BIOS Version, IP Address and MAC Address](https://www.techielass.com/configmgr-query-for-name-serial-number-bios-version-ip-address-and-mac-address) 6. [Create a meeting request that doesn't require a response](https://www.techielass.com/meeting-request-with-no-response/) 7. [Using a Jabra dongle with another headset](https://www.techielass.com/jabra-headset-and-dongle-for-stronger-connection/) 8. [What is an Azure Landing Zone?](https://www.techielass.com/what-is-an-azure-landing-zone/) 9. [Update Agent Readiness - Not Configured](https://www.techielass.com/update-agent-not-configured/) 10. [Exchange 2010 EMC "Kerberos" authentication failed](https://www.techielass.com/exchange-2010-emc-kerberos-authentication-failed) ### **Speaking** Since I started speaking in 2017 I've always been keen to explore new opportunities and give back to new communities. In 2020 I delivered 39 sessions at 30 different events. This year I *only* delivered 16 talks. It's still an impressive number if I'm not being hard on myself. I did lose my mojo and enthusiasm a little for delivering talks virtually from my home office. Speaking to a lot of people I think we are all craving in person events again for that full conference experience. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/12/2021speaking.PNG) Speaking Stats in 2021 I am committed to speaking again in 2022, and I'm going to try and have a talk at an event, whether it be a user group or conference at least once a month. I've already got some lined up and you can see those events [here](https://www.techielass.com/speaking). If you'd like to have me at your event, please do take a look at my [Sessionize profile](https://sessionize.com/sarah-lean?ref=techielass.com) for the talks I have available and reach out to me. ### **Glasgow Azure User Group** With the pandemic still a massive worry and gatherings in person being a sign of anxiety for a lot of people. We have remained virtual with our events. With so many conferences, user groups and work meetings going virtual we decided to take a break this year. Which has meant we've only held 4 meetups instead of six. That being said I am forever grateful to the sponsors, speakers and community who have continued to support us and still continue to make the group a great one. ### **Twitter** In October 2018 I hit 1,000 Twitter followers, in August 2019 I hit 2,000 followers and I am on course to hit 7,000 followers in the next month or so. I wish I could thank each and every person that has supported, helped, interacted with me and generally just been an awesome person. I can still remember the day that I created my Twitter account, thanks to [Thomas Sykes](https://www.sqltomato.com/blog?ref=techielass.com) and his encouragement. The journey that started me on has changed my career path and my life in certain ways. Thank you Tom. The amount of people following isn't something I am focussing on, though I'm focussing on the experience, knowledge sharing and people that I am meeting thanks to the platform. ### **Here's to 2022!** ### Jabra Elite 85t Review URL: https://www.techielass.com/jabra-elite-85t/ Last updated: 2024-10-23T15:01:30.000Z I've had the pleasure of using the [Jabra Elite 85t](https://www.stylink.it/7ojvRfzMVMp?ref=techielass.com) in ear headphones for a year now. And the short story is I love them! They are wireless, Bluetooth headphones that are designed for calls and listening to music, either on the go or sitting at your desk. In 2020 I was using the [Jabra Elite 75t](https://www.techielass.com/jabra-elite-75t/) headphones and will be referring my experience of the Elite 85t headphones versus those in some areas. ![Jabra Elite 85t](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/12/20211221_081122.jpg) Jabra Elite 85t ## Setup As with any Jabra headphones setting up and pairing to your phone or laptop/PC is easy and straight forward. Again using the [Jabra Sound+ App](https://www.jabra.com/software-and-services/apps/jabra-sound-plus?ref=techielass.com) on my phone (or [Jabra Direct](https://www.jabra.co.uk/software-and-services/jabra-direct?ref=techielass.com) on my PC) has allowed me to personalise how I want the headphones to sound, check on the battery level and perform firmware updates on the headphones. ## Sound Quality The call quality of the Elite 85t is as good as you would wish for and expect from [Jabra](https://www.techielass.com/tag/jabra/) range. There have been no issue when I've been walking outside and using the headphones to make a call. I can hear the person on fine and no one has complained about the microphone quality from my end. In terms of listening to music I do love these headphones. Of course if you are a true audiophile then you might disagree with me, but as an all round in ear headphones these are great. From listening to my Spotify Wrapped up favourite hits or the latest episode of my favourite podcast they suit my needs. ## Noise Cancellation For me this feature either works or doesn't. The noise cancelling works as you'd want and expect. You can hide out the noise from people around you, or let it in when you need it. I've sat listening to podcasts on my headphones in the same room as my husband while he watches TV and the TV noise hasn't come through or distracted me at all. Equally, when I've been out walking I've had the noise cancellation feature turned off and been able to hear the noise around me for safety reasons while still being able to hear my music. ## Do Jabra Elite 85t stay in ear? The short answer to this is yes. When I was using the Elite 75t headphones I was regularly worried about the headphones falling out my ear. This is NOT an issue with the Elite 85t. I have complete confidence in the Elite 85t staying in place. I've tried them while sitting at my desk, walking and even cycling and they've been fine. ## Battery life According to the specs that Jabra have released the Elite 75t is supposed to have a better battery life than the Elite 85t. For me the battery life of the Elite 85t is amazing. The headphones themselves hold a charge then the case holds a charge, so I've found I can go a week of lunch time walks using my headphones without having to reach for my charging cable. ![Jabra Elite 85t](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/12/20211221_081152.jpg) Jabra Elite 85t ## Is it worth upgrading to Elite 85t? If you already have the Elite 75t or something similar you might be wondering if it's worth the upgrade to the Elite 85t. For me, the answer is yes. They've fixed the issue of the Elite 75t falling out your ear. They've also made little changes by moving the indicator light on the charging case to the front. ## Is 85t better than 75t? This one is a hard one to answer, as I think it will be different for everyone depending on their use case of the headphones. - The Elite 75t are lighter than the Elite 85t. - The Elite 75t are rated IP55 which means they are dust and can resist a sustained, low-pressure water jet spray. The Elite 85t are rated IPX4, which means they are resistant to water splashes from any direction. - The microphone on the Elite 75t is only a Dual MEMS (microelectromechanical systems). Where as the Elite 85t has 6 x MEMS. - Battery tests say that the Elite 75t has a better battery life overall over the Elite 85t. - The Elite 85t takes less time to charge than the Elite 75t. So as I said, it'll depend on what you features are important to you or what are needed by you. ## Overview These are probably my second favourite Jabra headphones. My favourite are the [Jabra Evolve2 85](https://www.techielass.com/jabra-evolve2-85/), which I use for work when I'm at my desk and the Jabra Elite 85t are my go to for when I am on the move. ### What is GitOps? URL: https://www.techielass.com/what-is-gitops/ Last updated: 2025-07-07T10:46:38.000Z There is a lot of terminology these days, between DevOps, SecOps, DevSecOps, and GitOps. It can be hard to keep track of everything and the benefits of each approach. Let's explore GitOps. ### What is GitOps? GitOps is a way of managing infrastructure and application deployments using [Git](https://www.techielass.com/what-is-git/) as the single source of truth. GitOps is built around the Developer experience. But it can help the Operations teams manage infrastructure. Using the same processes and tools that Developers use for software development. When using GitOps, Git is the central tool but all other tools can be chosen as needed. GitOps uses a central Git repository that contains the entire state of the system. It uses Git pull requests to automatically manage and deploy infrastructure or software. The Git repository gives you a trail of changes that can be auditable. ### Why do you need GitOps? The main benefits of GitOps are visibility, control, and automation. Using Git for your infrastructure and application code gives you full traceability. You can see exactly what changed, when it changed, and who approved it. Want to know when a network rule was updated or when a specific version of your app was deployed? That information is all stored in your Git history. Automation is another key part of GitOps. Once your changes are approved, a GitOps tool picks them up and deploys them automatically. This happens in a repeatable, consistent way, reducing manual effort and the risk of errors. ### GitOps vs DevOps? There is some overlap between GitOps and DevOps, but they are not the same thing. **DevOps** is a culture and set of practices focused on improving collaboration between development and operations teams. It encourages automation, continuous integration (CI), and continuous delivery (CD), but it isn’t tied to any one toolset. If you’re new to CI/CD, I’ve written a [beginner’s guide to pipeline tools](https://www.techielass.com/ci-cd-pipeline-tools/) that explains how they work and what tools to consider. **GitOps** is a more defined approach. It uses Git as the single source of truth for infrastructure and application deployments. Changes are made through pull requests, and automation tools apply those changes to your systems. GitOps can be seen as a way of putting DevOps principles into action, especially around automation, traceability, and consistency. It tends to follow a stricter pattern, whereas DevOps can be more flexible depending on your processes and tools. ### Is GitOps just for Kubernetes? No it's isn't just for Kubernetes. GitOps is often associated with Kubernetes because it's configuration can be entirely declarative in the form of YAML manifests. And lends itself very well to being stored inside version control. ## Learn Git If you are looking to learn more about Git, or learn some tips and tricks that can help enhance your knowledge, check out my [Git for everyone series of blogs](https://www.techielass.com/tag/git-for-everyone/). ### Weekly Update #120 - Countdown to the end of the year URL: https://www.techielass.com/weekly-update-120/ Last updated: 2023-12-06T08:28:48.000Z We are well and truly into Winter now and the countdown to end of the year. The tech news is slowing down. However, I haven't. I think every night this week I've either had a work commitment or a personal one after work, so it's been busy. There has been lots of learning going on and lots of milestones achieved. Next year is looking to be an exciting one. However, enough of the future. Let's focus on the now. This week's latest weekly update video is out. So grab a drink or snack and join me. Your support is always appreciated. Weekly news update ### Livestream: What's the best way to prepare for a Microsoft exam? URL: https://www.techielass.com/whats-the-best-way-to-prepare-for-a-microsoft-exam/ Last updated: 2025-08-21T08:12:35.000Z So you've chosen the Microsoft certification that you want to aim for. Add to your resume. Now it's time to prepare for sitting the exam. On the 21st December, 6:30pm (GMT) - 10:30am (PST), I'll be doing a livestream on my [YouTube](https://www.youtube.com/techielass?ref=techielass.com) channel sharing tips on how to prepare for that Microsoft Certification and achieve success! I'd love if you could join me and share any tips you have or ask questions and I'll try my best to answer them. **▶ Download the calendar** [**ICS file here**](https://techielass.azureedge.net/icsfiles/Livestream%5Fprepare%5Fmicrosoft%5Fcert.ics?ref=techielass.com)**.** 💡 ****New Resource:** Want to go beyond this blog? I’ve written a practical guide — [**How to Prepare for a Microsoft Exam*](https://leanpub.com/howtoprepareforamicrosoftexam?ref=techielass.com) — packed with tips, study strategies, and real-world advice to help you succeed. ### Weekly Update #119 - Latest Azure and GitHub news URL: https://www.techielass.com/weekly-update-119/ Last updated: 2021-12-13T20:20:16.000Z Welcome to this Friday update! Every week when I create these updates I'm always pleased to watch the number go up, it seems like an age ago since I did my [very first weekly update](https://youtu.be/g7EdfvSW14U?ref=techielass.com)! We you one of the people who watched that one? I'd love to know if you've stuck with me through all these updates! 😉 This weekly update is all about Azure, GitHub and mobile phone signals! Be sure to tune in either, on my [YouTube channel](https://youtube.com/techielass?ref=techielass.com) or the [audio options](https://anchor.fm/techielass?ref=techielass.com). [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/12/blogcoffee-2.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) Support my blog ### What is Octopus Deploy? URL: https://www.techielass.com/what-is-octopus-deploy/ Last updated: 2022-03-23T09:08:58.000Z I joined [Octopus Deploy in October 2021](https://www.techielass.com/im-joining-octopus-deploy/) and I've been often asked who are Octopus Deploy and what do they do. So I thought I'd try and answer some of those questions. 😊 --- **Table of Contents** --- ## What is Octopus Deploy? Octopus Deploy can help you with a number of things: - Release management - Deployment Automation - Operations Runbooks With **release management** you can easily audit or see where you are with certain versions of your software. What version is your Dev environment run versus Production? ![Octopus Deploy Release Management](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/12/release-management-tile.png) Octopus Deploy Release Management Octopus Deploy can help to simplify the **deployment** of your software. If you have a bunch of steps and things you need to do before each deployment, or even after deployment, Octopus Deploy can help you automate that. It can also support deployment patterns such as rolling, blue/green, canary, multi-tenancy and beyond. The **runbooks** capabilities gives you control over your infrastructure and applications. You can set up runbooks for routine maintenance or have them deploy or destroy infrastructure. ![Octopus Deploy Runbooks](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/12/runbooks-tile.png) Octopus Deploy Runbooks ## Is Octopus Deploy is free? Octopus Deploy has a [trial license](https://octopus.com/start?utm%5Fcampaign=techielassblog&utm%5Fmedium=blog&utm%5Fsource=sarah) that you can get started with for 30 days. It's also worth noting if you are a [Microsoft MVP](https://mvp.microsoft.com/?ref=techielass.com) or [Friends of Redgate](https://www.red-gate.com/hub/community/friends-of-rg?ref=techielass.com) you are able to get a free license, just reach out to [MVP@octopus.com](mailto:mvp@octopus.com) and we can get that sorted for you. 👍 ## Is Octopus Deploy a CI tool? Octopus Deploy doesn't attempt to be a Continuous Integration (CI) tool. There are already solutions out there for teams to pick from when they are looking to automatically build, test and integrate code changes from a shared repository. You can use Azure DevOps, GitHub Actions, TeamCity, etc for these features and then use Octopus for release management, deployments and operations. ## How do I set up Octopus Deploy? Octopus Deploy can be set up in two fundamental ways, you can sign up for the [Cloud service](https://octopus.com/pricing/cloud?utm%5Fcampaign=techielassblog&utm%5Fmedium=blog&utm%5Fsource=sarah) which is a "DevOps Automation as-as-service" offering. 😉 Octopus Deploy takes care of the servers and storage, you just take care of automating your builds. The other option is to host [Octopus Deploy on servers](https://octopus.com/pricing/server?utm%5Fcampaign=techielassblog&utm%5Fmedium=blog&utm%5Fsource=sarah), either in your own datacentre or private cloud. With this option you are in complete control. From what servers host your Octopus Deploy infrastructure to how your deployments are run. ## Where can I use Octopus Deploy? Octopus Deploy can support your environment where ever it is. Whether it's on Azure or AWS, or GCP or in your own datacentre. ## What is an Octopus Deploy Deployment Target? Deployment targets are, most of the time, virtual machines you deploy to. So that could be a web or application server you are deploying your code to through Octopus Deploy. It could also be an Azure Web App, Kubernetes cluster or other such resource. ## Reach out I hope that has helped clear up some of the questions I've had over the past few months, if you have any further questions or you'd like me to help you with your first Octopus deployment please do reach out and I'll be happy to help. ### Weekly Update #118 - Octopus Deploy & AWS Re:Invent URL: https://www.techielass.com/weekly-update-118/ Last updated: 2021-12-03T14:00:07.000Z Table of Contents It's Friday again folks, which means another weekly update has dropped. This week I am catch up on the Azure news, Octopus Deploy latest news, general tech news in the UK, AWS Re:Invent and the Festive Tech Calendar. There is something for everyone in this update, so go grab a coffee and join me for this week's news highlights. You can watch on video or tune into a number of podcast audio only versions. ## Video Update Option ## Audio Update Options The audio version is available on [Apple Podcasts](https://podcasts.apple.com/us/podcast/sarah-leans-weekly-update-podcast/id1506712194?uo=4&ref=techielass.com), [Breaker](https://www.breaker.audio/sarah-leans-weekly-update-podcast?ref=techielass.com), [Google Podcasts](https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy8xYjM2ZDgxYy9wb2RjYXN0L3Jzcw==&ref=techielass.com), [Overcast](https://overcast.fm/itunes1506712194/sarah-leans-weekly-update-podcast?ref=techielass.com), [Pocket Casts](https://pca.st/mnod1w6y?ref=techielass.com), [Radio Public](https://radiopublic.com/sarah-leans-weekly-update-podcast-6r03jz?ref=techielass.com), [Spotify](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com), [RSS Feed](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com), [Amazon Audible](https://www.amazon.co.uk/item%5Fname/dp/B08JK1HFD2/ref=sr%5F1%5F1?dchild=1&keywords=sarah+lean+podcast&qid=1631262971&sr=8-1&ref=techielass.com) & [Anchor](https://anchor.fm/techielass?ref=techielass.com). So go forth, enjoy the update and yeah do let me know your feedback. 😊 ### Festive Tech Calendar 2021 URL: https://www.techielass.com/festive-tech-calendar-2021/ Last updated: 2021-12-01T08:00:59.000Z It's that time of year again, the [Festive Tech Calendar](https://festivetechcalendar.com/?ref=techielass.com) is back! The Festive Tech Calendar is a community led event for the community. It's a bit of fun at the end of year as well as a hopefully helping folks to learn something new. This year I am involved in two initiatives. ## Octopus Deploy Hackathon As many of you will know, I joined [Octopus Deploy in October](https://www.techielass.com/im-joining-octopus-deploy/). I'm working in the community team and one of the first initiatives I've worked on it to support the Festive Tech Calendar with a Hackathon. There is a chance to win some great Octopus swag during this hackathon. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/11/blogimage-festivetechsupportingimage-2021.png) Octopus Swag If you are interested in learning more, head over to the [Octopus Deploy blog](https://octopus.com/blog/festive-tech-calendar-hackathon?ref=techielass.com) and find out what you need to do to enter and how to enter! Take it either as an opportunity to use your existing skills or learn some new ones. 😉 --- ## Ask Me Anything Session I am partnering with the amazing [Lisa Clark, aka Lisa at the Edge](https://lisaattheedge.com/?ref=techielass.com) to do an Ask Me Anything (AMA) session. Lisa and I will be chatting live and taking your questions. It is happening on the 8th December 2021 at 5:30pm UK time, or 12:30pm EST or 9:30am PDT. Live on [YouTube](https://youtu.be/K193gdpDLdE?ref=techielass.com). **▶ Download the calendar [ICS file here](https://techielass.azureedge.net/icsfiles/Sarah%5FLisa%5FAMA.ics?ref=techielass.com).** ### Monetizing With Buy Me A Coffee, Does It Work? URL: https://www.techielass.com/buy-me-a-coffee/ Last updated: 2022-10-09T10:16:33.000Z I've been creating blog posts for a long time now, nearly 10 years, I've gotten a lot out of creating blog posts. I've learnt things and the blogs have been handy when I needed a reminder of how to do things. 😉 I spend time writing these blogs or creating videos, or speaking at events because **I love it**. However, I've watched lately as lots of my peers recently monetize their work. Either in the form of ["Buy me a Coffee"](https://www.buymeacoffee.com/techielass?ref=techielass.com), or [GitHub Sponsors](https://github.com/sponsors/weeyin83?ref=techielass.com), or even turning on adverts through out their YouTube videos and it's got me thinking. And although I want the majority of the content I create to be free, it's always be appreciated. 😊 ## What is Buy Me a Coffee? Buy Me a Coffee is a way for people to tip or say thank you to content creators. Content creators can make money by using the platform as the conduit for the audience to show their appreciation. Anyone can make a contribution as a one off or as regular members. ## What's the cost? As a content creator Buy me a Coffee is free to sign up and use, to an extent. There are transaction fees, so when someone donates to you Buy Me a Coffee takes 5% and you take 95%. This is fair as it takes money to run the service and continue to grow it. ## How do you get paid? When someone supports you through Buy Me a Coffee you receive the money straight away either into your PayPal account or through Stripe. So there is no waiting until you hit a minimum amount or anything like that, you get the money straight away. ## How can you tell people about your page? Share the link in places you think people will see it and click on it! Buy me a Coffee gives you some great branding to help create your own creative and unique way to attract supporters. 😊 So share those links far and wide. ## Is it worth it? I've been using the platform for about a year now, and I'll admit I haven't shared the link or told my audience about the page enough. So I've seen a lot of people view the page and interact with it, but very few people actually support it (thank you to those that have!). Maybe there isn't much of a culture within my audience that is willing to "tip" content creators, time will really tell. ## Support me! [![Buy me a coffee](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/10/blogcoffee-2.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) Buy me a coffee Folks, if you are enjoying the content that I create and would like to support me by ["buying me a coffee"](https://www.buymeacoffee.com/techielass?ref=techielass.com) then I'd really appreciate it. Any money that I earn through this program will be re-invested, ideally I would like to get a new camera for my vlogging and videos over on [YouTube](https://www.youtube.com/techielass?ref=techielass.com). But ultimately the money will be reinvested into more content and doing things better. ## Sign up and give it a try If you are a content creator and fancy giving this ["Buy me a Coffee" thing a go, then click this link](https://www.buymeacoffee.com/?via=techielass&ref=techielass.com) and sign up today! 😉 ### Livestream: Is getting Microsoft Certified worth it? URL: https://www.techielass.com/is-getting-microsoft-certified-worth-it/ Last updated: 2021-11-29T08:19:59.000Z I often get asked if it's worth getting Microsoft Certified. I see it in private messages, in forum posts, in blog post comments. So I thought I'd take some time to do a live Q&A covering off that subject. And I'd love for you to join me as I discuss the subject. - Is getting Microsoft Certified worth it? - What do the Microsoft exam numbers mean? - How to pick the right Microsoft exam to get started with. - What's it like to sit an exam at home. - And much much more. Please join me on the 1st December at 6:30pm GMT - 10:30am PDT live on my [YouTube](https://www.youtube.com/techielass?ref=techielass.com) channel. I'd love to hear your thoughts and I'd be happy to answer your questions. **▶ Download the calendar [ICS file here](https://techielass.azureedge.net/icsfiles/Livestream%5Fmicrosoft%5Fcertified.ics?ref=techielass.com).** ### Weekly Update #117 - The Glasgow Azure User Group is back URL: https://www.techielass.com/weekly-update-117/ Last updated: 2021-11-27T15:05:53.000Z I had a bit of a nightmare with the filming of this week's update. I did the recording but didn't have time to edit it until the very last minute and that's when I discovered that for some reason the audio and video were out of sync and completely not salvageable. I think I know the problem, so am going to use it as a learning opportunity and not worry to much about it. But it has meant that the video on [YouTube ](https://www.youtube.com/techielass?ref=techielass.com)this week is just a still with some audio and soundwave animation. It is still worth tuning in as I share news on Azure Site Recovery, a new datacentre in Belgium, Azure Scheduler and some new capabilities with Azure VPN Gateway. ## Audio only update The video version is available on [YouTube](https://www.youtube.com/techielass?ref=techielass.com) and the audio version is available on [Apple Podcasts](https://podcasts.apple.com/us/podcast/sarah-leans-weekly-update-podcast/id1506712194?uo=4&ref=techielass.com), [Breaker](https://www.breaker.audio/sarah-leans-weekly-update-podcast?ref=techielass.com), [Google Podcasts](https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy8xYjM2ZDgxYy9wb2RjYXN0L3Jzcw==&ref=techielass.com), [Overcast](https://overcast.fm/itunes1506712194/sarah-leans-weekly-update-podcast?ref=techielass.com), [Pocket Casts](https://pca.st/mnod1w6y?ref=techielass.com), [Radio Public](https://radiopublic.com/sarah-leans-weekly-update-podcast-6r03jz?ref=techielass.com), [Spotify](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com), [RSS Feed](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com), [Amazon Audible](https://www.amazon.co.uk/item%5Fname/dp/B08JK1HFD2/ref=sr%5F1%5F1?dchild=1&keywords=sarah+lean+podcast&qid=1631262971&sr=8-1&ref=techielass.com) & [Anchor](https://anchor.fm/techielass?ref=techielass.com). So go forth, enjoy the update and yeah do let me know your feedback. 😊 [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/11/blogcoffee-2.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) Buy me a coffee ### Livestream: Sarah & Lisa Ask Me Anything URL: https://www.techielass.com/sarah-lisa-ask-me-anything/ Last updated: 2021-12-05T15:28:39.000Z The [Festive Tech Calendar](https://festivetechcalendar.com/?ref=techielass.com) is a community led event to help share knowledge and have some fun at the end of the year. I've presented sessions at the event in previous years and this year I am partnering with the amazing [Lisa Clark, aka Lisa at the Edge](https://lisaattheedge.com/?ref=techielass.com) to do an Ask Me Anything (AMA) session. Lisa and I will be chatting live and taking your questions. It is happening on the 8th December 2021 at 5:30pm UK time, or 12:30pm EST or 9:30am PDT. Live on [YouTube](https://youtu.be/K193gdpDLdE?ref=techielass.com). **▶** **Download the calendar [ICS file here](https://techielass.azureedge.net/icsfiles/Sarah%5FLisa%5FAMA.ics?ref=techielass.com).** Sarah & Lisa AMA ### Revert those changes in Git URL: https://www.techielass.com/git-revert-last-commit/ Last updated: 2022-01-07T11:32:28.000Z Continuing on the theme of Git commands you should know. Today I am looking at using **git to revert that last commit.** Occasionally you'll want to undo the changes you've just made. And there are various ways to do that either locally or remotely depending on what you need, but you do have to be careful when doing that and avoid unwanted deletions. The way I prefer to do this is using **git revert**. ## Look at the logs The first thing to do is look back at your logs and find the commit details using the command **git log --oneline** ![Git Log](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/10/gitlog.png) Git Log ## Revert the change We want the hash number that is next to your latest commits. That little number helps us revert the change we want to make. One we have a note of that number we want to issue the command **git revert 7270d13** You'll be taken into a screen where you can make edits. You should be able to exit using **:wq** You'll exit the editor and be taken back to your command line where you'll see that the commit that you reverted has been reverted. ![Git Revert Confirm](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/10/gitrevertconfirm.png) Git Revert Confirm If you now run **git log --oneline** you'll see a new commit has been created to carry out that revert. ### Let me know your favourite way to revert a change within Git. ### Weekly Update #116 - We have SFTP in Azure! URL: https://www.techielass.com/weekly-update-116/ Last updated: 2021-11-19T19:57:44.000Z This week has went remarkable quick for me, with a few days off to enjoy time with my family, it's been a short working week. 😉 There's not a lot of news to catch up on this week, but I do hope you enjoy the update that I have created for you. I would dearly love to hear if you enjoy these updates and if they are useful to you, or if they aren't something you enjoy. These updates are a labor of love for me, but if they aren't useful I'd appreciate that feedback so I can focus my time elsewhere. So yeah, [reach out and let know your thoughts](https://twitter.com/messages/compose?recipient%5Fid=444592619&ref=techielass.com). ## Where to find the update? Azure has SFTP The video version is available on [YouTube](https://www.youtube.com/techielass?ref=techielass.com) and the audio version is available on [Apple Podcasts](https://podcasts.apple.com/us/podcast/sarah-leans-weekly-update-podcast/id1506712194?uo=4&ref=techielass.com), [Breaker](https://www.breaker.audio/sarah-leans-weekly-update-podcast?ref=techielass.com), [Google Podcasts](https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy8xYjM2ZDgxYy9wb2RjYXN0L3Jzcw==&ref=techielass.com), [Overcast](https://overcast.fm/itunes1506712194/sarah-leans-weekly-update-podcast?ref=techielass.com), [Pocket Casts](https://pca.st/mnod1w6y?ref=techielass.com), [Radio Public](https://radiopublic.com/sarah-leans-weekly-update-podcast-6r03jz?ref=techielass.com), [Spotify](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com), [RSS Feed](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com), [Amazon Audible](https://www.amazon.co.uk/item%5Fname/dp/B08JK1HFD2/ref=sr%5F1%5F1?dchild=1&keywords=sarah+lean+podcast&qid=1631262971&sr=8-1&ref=techielass.com) & [Anchor](https://anchor.fm/techielass?ref=techielass.com). So go forth, enjoy the update and yeah do let me know your feedback. 😊 ### My Desk Setup - 2021 Version URL: https://www.techielass.com/home-office-setup-2021-version/ Last updated: 2023-01-25T07:57:50.000Z With my new job has come a different setup in my home office. Some of my setup is self-funded and some of it was supplied by [Octopus Deploy](https://www.octopus.com/?ref=techielass.com). Let's walk through what I have on my desk. 😊 ### Laptop The workhorse, that powers all my kit is a [Surface Book 3 - 13.5"/ 512GB / Intel Core i7](https://amzn.to/3mf4PGU?ref=techielass.com). This is my work device and well, I love the Surface range and the Book is such a versatile device. ### Monitors My main monitor is a [Dell U3219Q](https://amzn.to/2ZjpBMT?ref=techielass.com), which has been provided by Octopus Deploy. It's an UltraSharp 32" 4k monitor. It's an amazing monitor, although I have to say I'm not sure if I quite need the 32" size but maybe once I get used to it I'll find I couldn't go any smaller. The last monitor that I have is [Dell U2414H](https://amzn.to/3pCE69G?ref=techielass.com). This is a slightly older monitor and some might say it's an odd choice but I love it for recording or sharing my screen. Its max resolution is 1920x1080 which is **perfect** for recording demos or sharing your screen during demos. So it's constantly ready for me for creating content. ### Docking My Surface and monitors are all connected through the [Surface Dock 2](https://amzn.to/3BhZF1g?ref=techielass.com), which has 4 x USB-C ports, 2 x USB-A ports, network port, and headphone port. So this is one to watch as I had to buy new cables to connect my monitors. 😉 The exciting bit about my setup is how I have my Surface Book 3 and Surface Dock 2 mounted. They are housed inside a [Vertical Dock!](https://www.verticaldocks.com/product/surface-book-vesa-dock?ref=techielass.com) The vertical dock is such a great innovation that helps mount your Surface device to a monitor arm meaning it's off your desk and can be placed at a great ergonomic level to help your posture. My vertical dock has a fan to help keep my Surface Book cool when I am putting it through its paces. For more information about this check out my full review. ### Accessories In terms of accessories, I'm using the [Surface Ergonomic Keyboard](https://www.microsoft.com/en-gb/p/surface-ergonomic-keyboard/90pnc9ljwpx9?cid=msft%5Fweb%5Fcollection&activetab=pivot%3aoverviewtab&ref=techielass.com). [Surface Arc Mouse](https://amzn.to/2Vq7Yp1?ref=techielass.com), [Logitech C920](https://amzn.to/2XXHPAG?ref=techielass.com) and [Rode NT-USB Microphone](https://amzn.to/3cedDoO?ref=techielass.com). ### Desk My desk is the [Ikea Idasen](https://www.ikea.com/gb/en/p/idasen-desk-sit-stand-brown-dark-grey-s19280958/?ref=techielass.com), which I really love. It can be moved up and down to allow me to adjust my seating or stand when I want to stretch my legs during the day. ### Purchase my setup If you'd like to buy any of the items I'm using you can head over to my [Amazon Storefront](https://amzn.eu/eyB9llN?ref=techielass.com). Where you'll find a list of the items. *If you purchase via this link it is an affiliate link, so I'll receive a small fee but it won't affect how much you pay for the item.* ### Future The setup will change a little in the future. As part of my role at Octopus Deploy I'll be presenting regular webinars and videos and talks etc, so I'll be looking to get additional lighting and an improved camera in line with other members of my team. Do let me know if you have any questions or suggestions regarding my desk setup! 😊 [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/11/blogcoffee.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) My Desk Setup - Buy me a Coffee ### Query SQL with Azure Data Studio URL: https://www.techielass.com/query-sql-with-azure-data-studio/ Last updated: 2022-01-07T11:33:11.000Z The official definition of Azure Data Studio is: > Azure Data Studio is a data management tool that enables working with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux. And it's a pretty awesome tool. What I want to show you is how to use it to connect to an Azure SQL database and use it to query that database. ## Installing Azure Data Studio The first thing you should do install Azure Data Studio, you can find the installer [here](https://docs.microsoft.com/sql/azure-data-studio/download-azure-data-studio?view=sql-server-ver15&ref=techielass.com) or if you use Windows Package Manager you can use the command: ```CMD winget install microsoft.azuredatastudio ``` ## Connect to your Azure SQL Database When you open up Azure Data Studio down the left hand side you'll have a menu panel, the first option looks like a server, that is the connection area. Click on that and you will be asked to add a connection. A dialog box will open up on the right hand side of your screen asking for some connection details. ![Azure Data Studio Connection](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/09/datastudioconnection.PNG) Azure Data Studio Connection You will need the server name and the username and password to connect at a very basic level. You might have to provide the database or server group information depending on your database or setup. Once you've inputted the information hit the connect button and if you've put in the right information then you should have a live connection to the database. ![Azure Data Studio Connected](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/09/datastudioconnected.PNG) Azure Data Studio Connected You can then click on the "New Query" button to query the database for information. ## Connect through the Azure Portal If you have Azure Data Studio installed on your machine and you are in the Azure Portal, there is a button you can use to start the creation of the connection within Azure Data Studio. ![Azure Portal](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/09/datastudioportal.png) Azure Portal This will fill in some of the information needed but you will have to put in some authentication details. ## Call to Action Azure Data Studio is a very good tool and can help you interact with SQL Server, Azure SQL DB and SQL DW. Let me know what cool features or tips you've found using it, I'd love to hear your stories. ### Mount your Surface device with a Vertical Dock! URL: https://www.techielass.com/mount-your-surface-device-with-a-vertical-dock/ Last updated: 2025-06-06T09:42:08.000Z > I was gifted this item in return for a review, however the company have not seen my review or influenced my thoughts. With my recent role change, it was time for some new equipment and desk change up. One change I wanted to make was mounting my laptop off the desk to give me more room on the actual desk, and make the screen from the laptop more ergonomic for viewing. This gave me the chance to reach out to the [Vertical Docks team](https://www.verticaldocks.com/?ref=techielass.com) as I had been a follower of theirs for a while. ### Problem So with my last setup I had my laptop (a Surface Book 2) on my desk, which took up a lot of space on the desk itself and wasn't great for viewing the screen as it was very low down and hurt to use too much. ![Old Desk Setup](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/10/20201010_155940.jpg) Old Desk Setup ### Solution The solution was to look at the Vertical Dock which could be attached to a monitor arm and hold my laptop and Surface Dock in a neat solution. Allowing for the laptop to be off the desk and at a great height for ergonomic purposes. ![Surface Book 3 mounted](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/10/20211024_184246.jpg) Surface Book 3 mounted What that means for the whole desk set up is this: ![Desk Setup](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/10/20211024_172745-1.jpg) Desk Setup You can see with the Surface Book and Dock mounted it give me a much more ergonomic position to work and also clears space from my desk. It's such a clever design that not only is available for the Surface Book, but also the Surface Pro and Surface Go. ### Positives What I love about the Vertical Dock is that's it's clearly been designed by someone that knows about setting up a desk for working and also someone that knows how the Surface Book is used. They've thought out the problem and scenarios this could be used in and it works, it's a "battle tested solution". It also has nice touches like the fact there are magnetics that can be used to secure my Surface Pen, so it doesn't get lost and easily assessible. There is also a fan that you can turn off and on and control the speed of. This helps to keep the device cool, but just having enough cool air flowing from the bottom. That's a nice touch. It was also super easy to put together. The instructions were straight forward with great pictures and it was put together in no time at all. I have my device mounted in a vertical position but you can have it in a horizontal position if you would like. [My monitor arm](https://amzn.to/3EphVHR?ref=techielass.com) has the flexibility that I can twist it around so I could twist the dock and device to a horizontal position if I wanted. I also have the flexibility with the arm to pull it out a bit closer to me if I wanted to use the touch screen or draw etc. So that's an important factor to think about when choosing an arm. ### Negatives The only negative that I have found is the fan control position. The default design had the control unit either hanging or at the back of the unit. I found that a bit fiddly. So what I have done is get a bit of double sided sticky tape and taped it to the side of the unit. Meaning it's there for me easily. Although that is listed in my negatives I totally understand why it's not really designed in a place as some folk might not want to see that or even use it. 💡 Need to update your Microsoft Surface firmware? I’ve got you covered — check out my [step-by-step guide](https://www.techielass.com/updating-your-surface-dock-firmware/) ### Would I recommend? Yes, 100%. It's just completely changed how my desk is setup and how much more comfortable my working position is. I can totally take advantage of the 3rd screen that is part of the Surface Book without losing any functionality. ### Purchase my setup If you'd like to buy any of the items I'm using you can head over to my [Amazon Storefront](https://amzn.eu/eyB9llN?ref=techielass.com). Where you'll find a list of the items. *If you purchase via this link it is an affiliate link, so I'll receive a small fee but it won't affect how much you pay for the item.* ### Git error "Your push would publish a private email address" URL: https://www.techielass.com/git-error-your-push-would-publish-a-private-email-address/ Last updated: 2022-09-14T12:50:46.000Z So I hit an error trying to do my first pull request (PR) into the Octopus Deploy Documentation. I had forked the repository and was working on it locally on my own machine within VS Code. The push to my fork kept failing and I initially thought, oh it's probably my setup, I probably haven't linked VS Code/GitHub together, but when I read the error I was a bit baffled. It was telling me: ``` Error "Your push would publish a private email address" ``` I did remember making sure my email addresses on GitHub were private when I left Microsoft. On investigating the issue I realised there were two solutions. Make my email addresses public again or use the randomly generated email that GitHub give you for these situations. ## Find your GitHub email address Your GitHub no reply address is in your GitHub [Personal Settings → Emails](https://github.com/settings/emails?ref=techielass.com). It is mentioned just below the *Keep my email address private*checkbox. ![GitHub no reply email address](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/10/githubnoreplyemail.png) GitHub no reply email address ## Configure Git to use your GitHub email address You want to open VS Code or a Windows Terminal or your chosen IDE for using with GitHub and configure this new email address to be used for your commits. The following command will set the email address to be used for every repository that you have on your computer: ``` git config --global user.email "{ID}+{username}@users.noreply.github.com" ``` However, if you only want to use the email address for a single repository then this is the command you should use: ``` git config user.email "{ID}+{username}@users.noreply.github.com" ``` ## Reset the author information on that last commit You now need to reset the author information on that commit that just failed for you. ``` git commit --amend --reset-author ``` ## Push that commit You can now push that commit and it will be successful and future commits will use the no reply email address as well. ### Weekly Update #115 - Microsoft Ignite Roundup URL: https://www.techielass.com/weekly-update-115/ Last updated: 2021-12-13T20:20:44.000Z This week has all been about [Microsoft Ignite](http://myignite.microsoft.com/?ref=techielass.com) and there has been over 90 announcements made. Some announcements have are live or in a preview state that can be used now. While others will not be available until early 2022\. The theme during this virtual event has been all hybrid. And when we talk about hybrid we mean in two distinct ways: - Running certain IT services in the cloud, while others live in your datacentre - Working remotely and in the office while staying connected > "Hybrid is as much or as little cloud as is right for your organization." - [Orin Thomas](https://www.twitter.com/OrinThomas?ref=techielass.com) Join me in my weekly update to hear some of the news from Microsoft Ignite that has caught my attention: [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/12/blogcoffee-3.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) Support my blog ### Free Voucher for Windows Server exam with Microsoft Ignite Cloud Skills Challenge URL: https://www.techielass.com/free-voucher-for-windows-server-exam-with-microsoft-ignite-cloud-skills-challenge/ Last updated: 2021-11-03T08:00:59.000Z Microsoft regularly runs Cloud Skills Challenges that offer either prizes on completion of a bunch of challenges or a free exam voucher. This month as part of the Microsoft Ignite event they are running a Cloud Skills Challenge. If you complete one of the 12 challenges you will earn a free Microsoft Certification exam that can be applied to your choice of exam from this list: - [MS-700: Managing Microsoft Teams](https://docs.microsoft.com/learn/certifications/exams/ms-700?ref=techielass.com) - [MS-720: Microsoft Teams Voice Engineer](https://docs.microsoft.com/learn/certifications/exams/ms-720?ref=techielass.com) - [MD-100: Windows 10](https://docs.microsoft.com/learn/certifications/exams/md-100?ref=techielass.com) - [MD-101: Managing Modern Desktops](https://docs.microsoft.com/learn/certifications/exams/md-101?ref=techielass.com) - [MB-210: Microsoft Dynamics 365 Sales](https://docs.microsoft.com/learn/certifications/exams/mb-210?ref=techielass.com) - [PL-400: Microsoft Power Platform Developer](https://docs.microsoft.com/learn/certifications/exams/PL-400?ref=techielass.com) - [AZ-104: Microsoft Azure Administrator](https://docs.microsoft.com/learn/certifications/exams/az-104?ref=techielass.com) - [AZ-204: Developing Solutions for Microsoft Azure](https://docs.microsoft.com/learn/certifications/exams/AZ-204?ref=techielass.com) - [DP-300: Administering Relational Databases on Microsoft Azure](https://docs.microsoft.com/learn/certifications/exams/DP-300?ref=techielass.com) - [AZ-800: Administering Windows Server Hybrid Core Infrastructure](https://docs.microsoft.com/learn/certifications/exams/AZ-800?ref=techielass.com) - [AZ-801: Configuring Windows Server Hybrid Advanced Services](https://docs.microsoft.com/learn/certifications/exams/AZ-801?ref=techielass.com) - [MB-330: Microsoft Dynamics 365 Supply Chain Management](https://docs.microsoft.com/learn/certifications/exams/mb-330?ref=techielass.com) - [SC-200: Microsoft Security Operations Analyst](https://docs.microsoft.com/learn/certifications/exams/sc-200?ref=techielass.com) - [SC-300: Microsoft Identity and Access Administrator](https://docs.microsoft.com/learn/certifications/exams/sc-300?ref=techielass.com) - [SC-400: Microsoft Information Protection Administrator](https://docs.microsoft.com/learn/certifications/exams/sc-400?ref=techielass.com) The challenges begin on November 2, 2021, at 4:00 PM Greenwich Mean Time (9am Pacific Daylight Time) and ending on November 30, 2021, at 4:00 PM 4:00 PM Greenwich Mean Time (9am Pacific Daylight Time). You can register to join in [here](https://csc.docs.microsoft.com/ignite/registration/fall2021?ref=techielass.com). If you complete all the challenge modules before it ends, you will receive your Microsoft exam voucher on December 7, 2021\. The email address that gets the voucher will be the one that is associated to your [Microsoft Learn Profile](https://www.techielass.com/why-you-should-create-a-microsoft-learn-profile), so be sure to double check that email address against your Microsoft Certificate Professional (MCP) account email address. ### Why you should create a Microsoft Learn Profile URL: https://www.techielass.com/why-you-should-create-a-microsoft-learn-profile/ Last updated: 2021-11-04T17:58:29.000Z [Microsoft Learn](https://docs.microsoft.com/learn/?ref=techielass.com) is a great free resource created by Microsoft to help you learn more about their products and there are also some personal skills learning material there as well. Microsoft Learn can also be a great source of information for studying for an exam. Often you'll find easy-to-access material that can help you understand an entire exam or a specific part of an exam. So it's an entirely worthwhile resource booking marking and using. However, I see a lot of people not realising you can and should create a profile for using with Microsoft Learn. ## Reasons to create a profile - **Track your progress** \- Microsoft Learn is made up of learning paths, which are made up of modules which are made up of units. Sometimes you'll be able to work your way through a unit or module in one sitting, but if you can't then signing in and tracking that progress helps you pick up where you left last time. 👌 - **Points** \- when you complete a unit or module or learning path you will gain points. And with more points your profile level increases. Now I don't know about you all but it's nice to see your progress by seeing that points total and level increase. - **Challenges** \- Occasionally Microsoft will run what they call "[Cloud Skills Challenges](https://www.techielass.com/free-voucher-for-windows-server-exam-with-microsoft-ignite-cloud-skills-challenge)", where if you complete a set amount of modules then you can win a prize or earn a free exam voucher. Signing in and creating a profile in Microsoft Learn means you can earn that prize or exam voucher *(note the exam vouchers are linked to your Learn profile email address).* - **Exam Renewals** \- Increasingly Microsoft is looking at renewing exams via tests that are actually part of Microsoft Learn. If your Learn account and Microsoft Certification Profile are registered under the same email address it makes everything just that bit smoother. It will also help you understand what material to review for the upcoming renewal as that material is more often than not Microsoft Learn content. ## How to create an account In the top right-hand corner of any Microsoft Learn page you will find a button that says "Sign In". This is where you need to head to create an account. You can use any existing Microsoft account that you have, your work email address, personal one, whatever makes sense for you. 👌 ### Weekly Update #114 - GitHub Universe, K8s YAML Generator and security breaches! URL: https://www.techielass.com/weekly-update-114/ Last updated: 2022-12-08T18:40:53.000Z [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/10/coffee.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) Buy a coffee button Hello folks, here we are at another Friday, which means it's time to catch up on the weekly news! It's been fairly quite on the Azure front but GitHub Universe has happened and there is some news there. We've also seen a lot of increased hacks and malware attacks across the world. So be very vigilant folks. I discovered this week that Octopus Deploy has this great free tool for helping to generate Kubernetes YAML files, check it out here - [https://k8syaml.com/](https://k8syaml.com/?ref=techielass.com) So yeah come and join me in this week's update. Would love to hear from you, so make use of that comment section on YouTube! ### Check the status of your local repository URL: https://www.techielass.com/check-the-status-of-your-local-repository-2/ Last updated: 2022-12-01T18:24:53.000Z If you are working with source control repositories in GitHub or Azure DevOps, or somewhere similar you may want to check the status of your local repository, is there anything still to be committed upstream or is there any changes that haven't been tracked before you start working with the repository again. There is a Git command that can help with that. ## Git Status Git status is a command that can be used to display the differences between the index file of your repository and the working directory. Git status can show you the following: 1. There is no commit history 2. There are untracked files 3. There are changes to be committed 4. The working tree is clean 5. Files have been modified 6. Files have been deleted ## How to use So how do you use this and what does it look like. If you pull up your terminal tool of choice, mine is Windows Terminal. When I am in the folder of one of my GitHub repositories I can run the **git status** command and get an overview of what's happening with my repository. ![Git status](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/09/gitstatus.PNG) Git status As you can see from the screenshot I have some new files in my local repository that are not yet committed. Git status tells me exactly what the files are and where they are. If I run a git commit to the repository and then run a git status you can see from the screenshot how things have now changed. ![Git status after commit](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/09/gitstatusaftercommit.PNG) Git status after commit ## Making changes and new files If I make changes to a file and add new files what will git status show me? ![Git Status](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/09/gitstatuschanges.PNG) Git Status I get information about changes that have not been staged or committed or untracked files. ## Git Status Shortened By default when you run git status you get a verbose output, but you can get a shortened version if you prefer that. ```cmd git status -s ``` By adding the -s switch you get a much shorted output. If I run it on the repository with the changed file and new file I get a much different output than with the default command. ![Git Status Short](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/09/gitstatusshort.PNG) Git Status Short I get an M next to the newfile.md showing me it's been modified but not staged or committed. I also get question marks next to the file that is untracked at the moment. ## Why use Git status? So really why should you use Git status? You can use it to check what files have changed, that you aren't about to commit anything you don't or shouldn't want committed and lastly you want to use it to check your not blindly just committing changes without really understanding what your committing. Let me know if you have any stories of using Git Status, good or bad. 👍 ### Weekly Update #113 - Quiet on the Azure front, new Google phone and rats chewing through broadband! URL: https://www.techielass.com/weekly-update-113/ Last updated: 2022-12-08T18:40:36.000Z [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/10/coffee-1.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) Buy me a coffee button Hey everyone! Can't believe we are at another Friday. The weeks are flying in, it'll soon be the end of the year, which is crazy! 😊 Join me in this weekly update as I chat about the latest Azure news, some general tech news that has happened this week and also how it's been for me in my first week at Octopus Deploy. Since the weather was nice I did this update which enjoying the sun. So apologises for the random camera position and windy audio. 👌 Enjoy and please remember to share with your friends and colleagues who might enjoy and benefit from these weekly updates, it would be much appreciated. ### Find Orphaned Azure Resources URL: https://www.techielass.com/find-orphaned-azure-resources/ Last updated: 2025-05-25T18:38:07.000Z Often when you are looking to delete virtual machine (VM) resources within the Azure Portal, it is common to end up with some orphaned resources, mostly disks and network adapters (NIC). When an Azure VM has been deleted, the disks and NICs are not deleted. This is in case you want to rebuild your virtual machine using the disk. However, if you aren't going to repurpose the disk, then you can end up paying for storage costs, and let's face it, no one wants to do that! You can use Azure Resource Graph and [Kusto queries](https://www.techielass.com/what-is-kusto-query-language/) to find orphaned resources. [Azure Resource Graph](https://www.techielass.com/tag/azure-resource-graph/) is a free service. ## Find orphaned disks This Kusto query can help search for disks that are either not managed by anything or their state is unattached. ```PowerShell Resources | where type has "microsoft.compute/disks" | extend diskState = tostring(properties.diskState) | where managedBy == "" or diskState == 'Unattached' | project id, diskState, resourceGroup, location, subscriptionId ``` ## Find Orphaned NICs This Kusto query will search for NICs that don't have a private endpoint listed and don't have a virtual machine listed under it. ```cmd Resources | where type has "microsoft.network/networkinterfaces" | where "{nicWithPrivateEndpoints}" !has id | where properties !has 'virtualmachine' | project id, resourceGroup, location, subscriptionId ``` I've created a video that walks you through using these queries and shows you them in action if you'd like to see them in use. ## What Kusto queries have you found helpful? Let me know what Kusto queries you have that are worth sharing with others; I would love to hear how you are using Azure Resource Graph to improve your Azure management. ### I'm joining Octopus Deploy! URL: https://www.techielass.com/im-joining-octopus-deploy/ Last updated: 2021-10-18T08:00:00.000Z It's time to start my next adventure, today is my first say as a Senior Solutions Architect in the Community team at [Octopus Deploy](https://octopus.com/?ref=techielass.com)! [via GIPHY](https://giphy.com/gifs/cheer-cheering-11sBLVxNs7v6WA?ref=techielass.com) I am very excited for this new chapter in my career. I can't wait to help this amazing Australian based company grow and solve customer problems. For those not aware, Octopus Deploy was founded in 2012\. Octopus Deploy is a tool that can help with deployment and release management of your infrastructure and software. What I love about Octopus Deploy is that not only is it more than capable of handling infrastructure deploy and software deployment, making it useful to your System Administrators and your Developers. Octopus Deploys supports deploying to Windows and Linux servers. It can deploy to environments such as Microsoft Azure, Amazon Web Services and your on-premises datacentre as well as integrating with other solutions such as GitHub, TeamCity, Azure DevOps and Jenkins to name but a few. ## What will I be doing? Although Octopus Deploy are Australian, I'll still be based here in Bonnie Scotland as the position is 100% remote, and my manager, [Derek Campbell](https://twitter.com/DevOpsDerek?ref=techielass.com) is also based in Scotland. I'm looking forward to representing and advocating on behalf of the Octopus community, representing Octopus at events and creating content. Be sure to check out the Octopus [Twitter account](https://twitter.com/OctopusDeploy?ref=techielass.com) and [YouTube channel](https://www.youtube.com/octopusdeploy?ref=techielass.com) for all the news and content surrounding Octopus Deploy. I'm sure I'll be popping up there in no time. 😉 In the mean time if you have any questions please do reach out to me. 👍 ### Weekly Update #112 - Azure Firewall, Container Insights, a week of outages and Apple share price! URL: https://www.techielass.com/weekly-update-112/ Last updated: 2023-12-07T11:27:57.000Z In this week's update I am out and about again, thankfully it's not nearly as wet as last week and I'm not having to deal with the driving rain! lol I am enjoying this downtime between my old job and new job, it's been great to do some exploring and get some items ticked off my to-do list as well. I filmed this week's tech catch up before then embarking on a cycle between the Kelpies and the Falkirk wheel, an 8mile round trip. 😊 Anyhoo, if you want to catch up with my ramblings, see what the Kelpies are and catch up on the tech news be sure to check out the video below: ## Alternative formats The video version is available on [YouTube](https://www.youtube.com/techielass?ref=techielass.com) and the audio version is available on [Apple Podcasts](https://podcasts.apple.com/us/podcast/sarah-leans-weekly-update-podcast/id1506712194?uo=4&ref=techielass.com), [Breaker](https://www.breaker.audio/sarah-leans-weekly-update-podcast?ref=techielass.com), [Google Podcasts](https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy8xYjM2ZDgxYy9wb2RjYXN0L3Jzcw==&ref=techielass.com), [Overcast](https://overcast.fm/itunes1506712194/sarah-leans-weekly-update-podcast?ref=techielass.com), [Pocket Casts](https://pca.st/mnod1w6y?ref=techielass.com), [Radio Public](https://radiopublic.com/sarah-leans-weekly-update-podcast-6r03jz?ref=techielass.com), [Spotify](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com), [RSS Feed](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com), [Amazon Audible](https://www.amazon.co.uk/item%5Fname/dp/B08JK1HFD2/ref=sr%5F1%5F1?dchild=1&keywords=sarah+lean+podcast&qid=1631262971&sr=8-1&ref=techielass.com) & [Anchor](https://anchor.fm/techielass?ref=techielass.com). ### Install SysInternals with Windows Package Manager URL: https://www.techielass.com/install-sysinternals-with-windows-package-manager/ Last updated: 2022-03-02T18:32:25.000Z If you are a regular to my blog you will know that I am a big fan of Windows Package Manager or WinGet as it's affectionally known. One of the big asks from a lot of people for a while has been "Can we install SysInternals Suite using Windows Package Manager?" **Well today that is now possible!!** ## What is the purpose of the SysInternals utility? SysInternals are a free set of utilities that can help you manage, monitor and troubleshoot the Windows operating system. They are great tools you can use either as standalone tools or use a few of them to try and diagnose the issue you are having. There are also tools like ZoomIt that help add some functionality to your operating system, ZoomIt is a great screen zoom and annotation tool. ## How? Windows Package Manager now ships with two sources configured. One of them is the [Windows Package Manager app repository](https://github.com/microsoft/winget-pkgs?ref=techielass.com), and the other is the Microsoft Store. This was announced in version 1.1 earlier in October [here](https://devblogs.microsoft.com/commandline/windows-package-manager-1-1/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com). And today, October 14th 2021, the Microsoft team announced that the SysInternals Suite was now available from the Microsoft Store! So now you can get all the SysInternals with one install, either from the [Microsoft Store](ms-windows-store://pdp/?productid=9P7KNL5RWT25) or using Windows Package Manager. ## Install from Windows Package Manager To install from Windows Package Manager make sure you have version 1.1 installed, you can check using the simple command ***winget --version*** > If you don't have Windows Package Manager installed, check out my blog on getting started and installing it [here](https://www.techielass.com/how-to-install-winget-windows-package-manager/). And then type: ```cmd winget install sysinternals ``` ![Installing SysInternals with Windows Package Manager](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/10/wingetsysinternals.PNG) Installing SysInternals with Windows Package Manager Now you will be prompted to accept the publisher information and agreements before installing. If you want to automatically accept that then you should use the following command: ```cmd winget install sysinternals --accept-package-agreements ``` **And the SysInternals suite will start to install for you!** 😀 ## Learn more! If you want to learn more about Windows Package Manager and see a complete overview of it's features, be sure to check out the [Microsoft Learn module - Explore the Windows Package Manager Tool](https://docs.microsoft.com/learn/modules/explore-windows-package-manager-tool/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com). ### Windows Server Hybrid Administrator Associate certification URL: https://www.techielass.com/windows-server-hybrid-administrator-associate-certification/ Last updated: 2025-08-21T08:12:51.000Z At the Windows Server Summit that was held in September 2021 Microsoft announced two new Windows Server exams. Passing both these exams will earn you the Windows Server Hybrid Administrator Associate certification. The two exams that were announced were the AZ-800 Administering Windows Server Hybrid Core Infrastructure exam and AZ-801 Configuring Windows Server Hybrid Advanced Services exam. It is expected that both exams will go beta towards the end of 2021 and will likely be generally available in early 2022\. 💡 ****New Resource:** Want to go beyond this blog? I’ve written a practical guide — [**How to Prepare for a Microsoft Exam*](https://leanpub.com/howtoprepareforamicrosoftexam?ref=techielass.com) — packed with tips, study strategies, and real-world advice to help you succeed. ## AZ-800 Administering Windows Server Hybrid Core Infrastructure exam This exam focuses on Windows Server workloads using on-premises, hybrid and cloud technologies. It's going to focus on the "core" technologies inside Windows Server, like Compute, Identity, Storage, Networking and Management tools. You can expect to be tested on things like Windows Admin Center, PowerShell, Azure Arc and Infrastructure as a Service (IaaS) virtual machine administration. The exams are currently not on but if you are looking to start prepping for the exam then [Orin Thomas](https://www.twitter.com/orinthomas?ref=techielass.com) has created a great study guide for you to use: ### AZ-800 Study Guide: [https://aka.ms/az-800studyguide](https://aka.ms/az-800studyguide?ref=techielass.com) Orin also sat down with Jeff Woolsey, Principal Program Manager, Windows Server/Hybrid Cloud, to talk about the exams: ## AZ-801 Configuring Windows Server Hybrid Advanced Services exam The AZ-801 exam focuses on Security, Migration, High Availability, Disaster Recovery, Monitoring and Troubleshooting. Again it will focus on technologies on-premises, hybrid and cloud. Again things like Windows Admin Center, PowerShell, Azure Arc, Azure Automation Update Management, Microsoft Defender for Identity, Azure Security Center, Azure Migrate and Azure Monitor will be among the things tested. The exams are currently not on but if you are looking to start prepping for the exam then [Orin Thomas](https://www.twitter.com/orinthomas?ref=techielass.com) has created a great study guide for you to use: ### Study Guide: [https://aka.ms/az-801studyguide](https://aka.ms/az-801studyguide?ref=techielass.com) Again Orin and Jeff sat down to talk about the exam and objectives: ## Getting Certified Let me know if you are aiming to sit these two certifications, I'll certainly be looking to sit them at some point. 😊 ### Connect to a SQL database with Visual Studio Code URL: https://www.techielass.com/connect-to-a-sql-database-with-visual-studio-code/ Last updated: 2025-10-29T08:35:07.000Z Explore the seamless integration of Visual Studio Code (VS Code) with SQL Server in this blog post. Learn how to install the [SQL Server](https://www.techielass.com/tag/sql-server/) extension, create connections to your SQL servers, and leverage VS Code's capabilities for writing and executing SQL queries. Discover the convenience of using VS Code for SQL interactions, even in the absence of SQL Management Studio, and share your insights or tips for this dynamic combination. ## Does Visual Studio connect to SQL Server? I'm a big fan of Visual Studio Code or VS Code, as it's sometimes referred to. It's such a powerful tool, allowing you to write Markdown files, write your code, deploy services to Azure, and YES, it will even let you connect to a SQL database and query it. ## Extension To use VS Code to connect to your SQL servers, you must install the extension. This is called [SQL Server (mssql)](https://marketplace.visualstudio.com/items?itemName=ms-mssql.mssql&ref=techielass.com). ![SQL Server VS Code Extension](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/05/sqlextension.png) SQL Server VS Code Extension Once the extension is installed, you will see a new icon down the left-hand menu; it looks like a server icon. If you click on this, you can create connections to your SQL servers. ## Create connections When you are in the extension blade, you will see an "Add Connection" line; this is interactive; you can click on that to start adding connections for your SQL servers. ![SQL Server VS Code Add Connection](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/05/sqladdconnection.png) SQL Server VS Code Add Connection When you click on this, a dialogue box will appear, asking for some details about your SQL server. This will be the hostname and instance or your Azure SQL server URL. ![SQL Server VS Code SQL Server name](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/05/sqlservername.png) SQL Server VS Code SQL Server name Then you have the option to input a database name or not. ![SQL Server VS Code SQL Server Database Name](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/05/sqldbname.png) SQL Server VS Code SQL Server Database Name The next box asks for an authentication type: a SQL Login, Integrated or Microsoft Entra ID - Universal w/MFA support. ![SQL Server VS Code SQL Server login options](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/05/sqllogin.png) SQL Server VS Code SQL Server login options Once you've inputted that info, the next question you are asked is for a display name or profile name for this connection. Make sure you call it something recognisable for the future, and you want to connect to that SQL server. 😉 Once you've completed this process, you should see the connection down the left-hand side and be able to interact with the SQL Server. ![SQL Server VS Code SQL Server connection](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/05/sqlconnectioncreated.png) SQL Server VS Code SQL Server connection If you right-click on your database, you will have a blank page to create a query. Once you've written the query, you can right-click it, select Execute Query, or use the shortcut CTRL+SHIFT+E. ![Visual Studio Code performing SQL queries](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2024/05/sqlquery.png) Visual Studio Code performing SQL queries [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/blogcoffee-2-3-9.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) ## Why VS Code over SQL Management Studio? What I love about interacting with SQL inside VS Code is I have VS Code installed on my machine; it's always there. I used it for a lot of reasons. I haven't got SQL Management Studio installed on my device these days. So I have easy access to work with a SQL database, both a local install or an Azure one, whenever I need without any hassle. I'm not a big SQL person, and I'm not an expert by any means at all. So there might be some limitations to using VS Code versus SQL Management Studio, but I've not found any for my needs. Do try the VS Code and SQL combination and let me know what you think of it, and if you find any gotchas or great tips, I'd love to hear them! ### Weekly Update #111 - Azure DevOps, Ubuntu, System Outages, Windows 11 URL: https://www.techielass.com/weekly-update-111/ Last updated: 2021-10-08T13:00:59.000Z I am enjoying some time off in between jobs at the moment and trying to tick off things I've been meaning to do for a while but with work and COVID restrictions there never seems to be enough time. I've taken you all on one of my adventures, to a spot on the banks of Loch Lomond. It was really wet and hard to do a serious news video with the rain and wind but a lot of fun to film. In the video I talk about Azure DevOps updates and the brownout of the Ubuntu 16.04 hosted agent, the Windows 11 release and the outage of Facebook/Instagram/WhatsApp. I hope you enjoy! ## Alternative formats The video version is available on [YouTube](https://www.youtube.com/techielass?ref=techielass.com) and the audio version is available on [Apple Podcasts](https://podcasts.apple.com/us/podcast/sarah-leans-weekly-update-podcast/id1506712194?uo=4&ref=techielass.com), [Breaker](https://www.breaker.audio/sarah-leans-weekly-update-podcast?ref=techielass.com), [Google Podcasts](https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy8xYjM2ZDgxYy9wb2RjYXN0L3Jzcw==&ref=techielass.com), [Overcast](https://overcast.fm/itunes1506712194/sarah-leans-weekly-update-podcast?ref=techielass.com), [Pocket Casts](https://pca.st/mnod1w6y?ref=techielass.com), [Radio Public](https://radiopublic.com/sarah-leans-weekly-update-podcast-6r03jz?ref=techielass.com), [Spotify](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com), [RSS Feed](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com), [Amazon Audible](https://www.amazon.co.uk/item%5Fname/dp/B08JK1HFD2/ref=sr%5F1%5F1?dchild=1&keywords=sarah+lean+podcast&qid=1631262971&sr=8-1&ref=techielass.com) & [Anchor](https://anchor.fm/techielass?ref=techielass.com). ### Azure Automanage and Azure Arc! URL: https://www.techielass.com/azure-automanage-and-azure-arc/ Last updated: 2021-10-07T10:27:59.000Z In June 2021 Microsoft announced a public preview of Azure Automanage for Azure Arc enabled servers! Which is an interesting concept. [Azure Automanage](https://youtu.be/1g9LA9%5FNpUs?ref=techielass.com) is a service that was announced at Microsoft Ignite 2020\. It helps you to integrate certain Azure Management services to your Azure Virtual Machines (VM) without actually needing to know how to onboard the VMs to those services. These VMs can either be Linux or Windows Server. With this new announcement it means that these servers can reside anywhere, they don't have to be Azure VMs, if they are Azure Arc enabled servers you are able to use the Azure Automanage best practices. ### Best Practices When you onboard an Azure VM or an Azure Arc enabled server to Azure Automanage certain best practice configurations will be applied to your VM. These best practice recommendations are part of the Cloud Adoption Framework. Azure Automanage will help you on-board to the following services: - [Machines Insights Monitoring](https://docs.microsoft.com/azure/azure-monitor/vm/vminsights-overview?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Security Center](https://docs.microsoft.com/azure/security-center/security-center-introduction?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Update Management](https://docs.microsoft.com/azure/automation/update-management/overview?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Change Tracking & Inventory](https://docs.microsoft.com/azure/automation/change-tracking/overview?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Guest Configuration](https://docs.microsoft.com/azure/governance/policy/concepts/guest-configuration?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Automation Account](https://docs.microsoft.com/azure/automation/automation-create-standalone-account?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Log Analytics Workspace](https://docs.microsoft.com/azure/azure-monitor/logs/log-analytics-overview?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) ### What do I need to do? So what do you need to do in order to get this all working? The first step is to install the Azure Arc agent on your server. Azure Arc supports the following operating systems: - Windows Server 2008 R2 SP1, Windows Server 2012 R2 and higher (including Server Core) - Ubuntu 16.04, 18.04, and 20.04 LTS (x64) - CentOS Linux 7 and 8 (x64) - SUSE Linux Enterprise Server (SLES) 12 and 15 (x64) - Red Hat Enterprise Linux (RHEL) 7 and 8 (x64) - Amazon Linux 2 (x64) - Oracle Linux 7 For details on how to install the Azure Arc agent on your server, please refer to a previous blog post that I wrote - [Install Azure Arc onto your servers](https://www.techielass.com/install-azure-arc-onto-your-server/). ### Enable Automanage Now that you have an Azure Arc enabled on your servers it's time to set up Azure Automanage. Navigate to the Azure Automanage blade within the Azure Portal and click on the Enable on existing machine button that will be available to you. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/09/automanage.png) Azure Automanage blade When you click on that you will be presented with several options. The first one is what machines you want to enable Automanage for. In this example I am going to select one of my on-prem servers that are connected through Azure Arc. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/09/automanage2-1.png) Once I've selected the machines I want to enable my next configuration item is what environment these machines are part of, Dev/Test or Production. Azure Automanage will apply slightly different settings and management tasks depending on whether or not your machine lives in Dev/Test versus your Production environment. One example would there is no backup configured for your Dev/Test servers, this is only recommended for Production environments. > Note: There are several services within Azure Automanage that are not supported for Azure Arc machines. So this is definately something to be aware of when using Automanage with Arc. I'm going to select Dev/Test as this is a lab server I am using and leave the rest of the configuration options as the defaults. You do have the option of tweaking things like when you want to run antimalware scans on your servers, but as this the Microsoft Antimalware option isn't available for Azure Arc connected servers this is not something I need to pay too much attention to. It will take several minutes for the settings to be configured on your server, so maybe time for a coffee break! ☕ If you've had a coffee and want to see what the process is you can monitor the progress within the server Activity Log within the Azure Portal: ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/09/automanage3.png) Once the configuration for Automanage has been applied to your server you can start to interact with some of the services that are now configured on your machine. It may take some time for things to kick and fully start to report and show within the Azure portal but one of the first things that has started to report for me is that my server is missing some updates. And I can start to schedule deployments of updates to bring it up to date and keep it up to date. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/09/automanageupdate.png) ## Thoughts I can see the real advantage of Azure Automanage for managed service providers to quickly enable a set of configuration preferences to customer environments quickly or small organisations who use Azure but don't necessarily have a dedicated IT team to help manage everything. However, some of the limits where services are not supported when trying to use it with Azure Arc is a little disappointing. It will be really interesting to see how Automanage and Arc grow and become part of the Microsoft Hybrid story fully. ### Install software to a different location using Windows Package Manager URL: https://www.techielass.com/install-software-to-a-different-location-using-windows-package-manager/ Last updated: 2023-03-08T21:19:35.000Z [Windows Package Manager](https://github.com/microsoft/winget-cli?ref=techielass.com) is a great tool that can be used to help install, uninstall and keep your software update to date on your PC. I've covered it's full functionality in previous blog posts [here](https://www.techielass.com/tag/winget/). In this blog post, I want to cover the question of what happens if you don't want to accept the default install location of a piece of software and have a dedicated location for software installs. Can you still use Windows Package Manager to do the installation? The short answer is yes. Let's look at how. 😊 So you have a dedicated drive or folder that isn't the "default install location" for software. How do you tell Windows Package Manager to install in that location? With the **winget install** command you have several options you can use to get the command to do what you want. For this example, we would use the **\--location** option. For example, if you want to install Microsoft Visual Studio Code to a different drive and folder, you would use the command: **winget install microsoft.visualstudiocode --location "I:\\Program Location"** ![Windows Package Manager install to custom location](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/09/wingetlocation.PNG) Windows Package Manager install to custom location And if we look at that location once the command has completed, we can see it's installed the software to the location we wanted. ![Windows Package Manager custom location install](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/09/wingetlocationcomplete.PNG) Windows Package Manager custom location install So as I said, you can still use Windows Package Manager to install software on your machine even if you don't want to use the default install locations. [Install Windows Package Manager](https://www.techielass.com/how-to-install-winget-windows-package-manager/) today and give it a try for yourself! ### Weekly Update #110 - GitHub, Network Security Dashboard, Availability Zones and Hacktoberfest! URL: https://www.techielass.com/weekly-update-110/ Last updated: 2021-10-02T11:03:30.000Z Last day at Microsoft, however something lots of people have asked is if I will continue these videos, and I still enjoy making them so I will continue to do them as long as I enjoy them and find value in them. 😊 In this week's video I talk about the latest GitHub Enterprise Server release and the GitHub pricing calculator that can help you cost up Codespaces, GitHub Actions etc. In the Azure news I talk about how there is now a program that can get your Open Source project Azure credits for a year, for more information head over to [https://cloudblogs.microsoft.com/opensource/2021/09/28/announcing-azure-credits-for-open-source-projects/](https://cloudblogs.microsoft.com/opensource/2021/09/28/announcing-azure-credits-for-open-source-projects/?ref=techielass.com) And lastly I covered off some tips and hints on how to get involved with Hacktoberfest this year! ### I'm leaving Microsoft URL: https://www.techielass.com/im-leaving-microsoft/ Last updated: 2023-01-06T08:11:47.000Z Tomorrow will be my last day as a Microsoft employee. It's both a sad and exciting moment announcing this. As a kid I always wanted to work for Microsoft and I've had a wonderful time as a Cloud Solution Architect in the UK Customer Success Unit and latterly as a Senior Cloud Advocate. But it's time for a new adventure. 😁 I've been a Cloud Advocate in the Modern Infra team for two years now (today is actually the anniversary of me joining the team!) and I've had some fantastic life changing experiences as part of the the team. There are so many things I've enjoyed doing and I definitely don't have enough time or space on this post to mention them all but here are some of the highlights. ## Microsoft Ignite 2019 Speaking on stage at Microsoft Ignite in Florida 2019 has to be one of the most nerve wrecking and best moments. Standing presenting on the same stage in front over nearly 1000 people was just surreal! Everyone was so supportive, I want to list some of you here but I know I'll forget someone and definitely don't want to miss anyone. Thank you to everyone who coached, clapped, sent well wishes, took photos, for this wee Scottish lassie to be up on that stage was a massive life event and one I'll never forget. And one I definitely want to do again. 😁 ![Speaking at Microsoft Ignite](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/09/ignite2019.gif) Speaking at Ignite ## Microsoft Build 2020 Appearance I was lucky, thanks to Donovan Brown to be able to get the opportunity to make an appearance at Microsoft Build 2020 are part of Satya Nadella's keynote. Which was a surreal and very cool experience, I think a good number of people spotted me during it if the Twitter mentions I got afterwards were anything to go by! 😉 ## Content Creation I've written a ton of blog posts here, and on many platforms since joining Microsoft. - [Microsoft UK Tech Industry blog](https://cloudblogs.microsoft.com/industry-blog/en-gb/author/sarah-lean/?ref=techielass.com) - [The Azure Blog](https://azure.microsoft.com/blog/author/sarah-lean/?ref=techielass.com) - [IT Ops Talk](https://techcommunity.microsoft.com/t5/itops-talk-blog/bg-p/ITOpsTalkBlog/label-name/Sarah%20Lean?ref=techielass.com) It's been an absolute pleasure to author blogs on behalf of Microsoft, but what's been an honour is helping people and answering their questions. Some people think advocacy is all about notoriety but it's not about that at all, it's about helping folks and solving their problems. During my team at Microsoft I also got to host the [Azure Enablement Show: Cloud Adoption Framework](https://channel9.msdn.com/Tags/cloud-adoption-framework-series?ref=techielass.com) show. Which has also been an honour, working with a ton of amazing people and learning how to put together a great show. I have filmed some episodes lately, which I think will be coming out later this year so do watch out for them. ## The Team What can I say about my team, Rick, Orin, Thomas, Anthony, Sonia, Pierre, Phoummala. Each of them are amazing in their own way and welcomed me into the team since day one and were never far away with words of wisdom or with a challenge to push me to be a better person or Advocate. We shared some fun memories from ice cream, to speaker room practice sessions to very competitive go kart racing! 🤣 ![The Ricksters](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/ricksters.jpg) The Ricksters ## What's Next Although I am leaving Microsoft I still have a massive soft spot for their products so I won't be straying to far so the Microsoft and Azure blogs and videos won't be going away completely. And I'll still be running the [Glasgow Azure User Group](http://www.gaug.co.uk/?ref=techielass.com), it was a project I started before Microsoft and one I still want to continue after Microsoft. My next adventure starts in a few weeks. I'm going to enjoy some down time and make the most of the break before starting the next chapter of my career. I'm going to hold off announcing what it is and where it is until my first day, so stay tuned. 👍 Thank you everyone who I have worked with at Microsoft, it's been a pleasure, please do stay in touch, I consider a lot of you to be friends as well as co-workers. ### RunAsRadio: Windows Package Manager URL: https://www.techielass.com/runasradio-windows-package-manager/ Last updated: 2021-10-01T11:30:32.000Z I'm a long term fan of the [RunAsRadio show](https://runasradio.com/?ref=techielass.com) that Richard Campbell hosts. And was super excited to get the chance to speak to him about Windows Package Manager the other month. The episode is now live: Windows Package Manager is a command line solution that can help you manage software on your computer. That is to say it can help you install, uninstall and upgrade the software on your machine. You can download and find out more information about the Windows Package Manager client [here](https://github.com/microsoft/winget-cli?ref=techielass.com). ## Learn more! If you want to learn more about Windows Package Manager and see a complete overview of it's features, be sure to check out the [Microsoft Learn module - Explore the Windows Package Manager Tool](https://docs.microsoft.com/learn/modules/explore-windows-package-manager-tool/?WT.mc%5Fid=modinfra-0000-orthomas&ref=techielass.com). ### Weekly Update #109 - Surface Laptop Studio, Azure Reservations, Windows Server Exams URL: https://www.techielass.com/weekly-update-109/ Last updated: 2023-12-06T08:29:37.000Z This week we saw a bit Microsoft event launch some great new hardware in the Surface range. The Surface Laptop Studio looks exciting, I'll be honest, initial reactions were "ugly" but then I saw what it could do and what was inside and thought this could definitely grow on me. It is sad that it's introduction looks to mean the end of the Surface Book range as I love that but change is good and will be interesting to see the Surface Laptop Studio grow as a device. If you are excited about the new Windows Server Hybrid exams that were announced last week, here are some great study guides to get you prepared for when the exams enter their beta phase. \-- [AZ-800 Study Guide](https://techcommunity.microsoft.com/t5/itops-talk-blog/az-800-study-guide-administering-windows-server-hybrid-core/ba-p/2736091?WT.mc%5Fid=modinfra-39512-orthomas&ref=techielass.com) \-- [AZ-801 Study Guide](https://techcommunity.microsoft.com/t5/itops-talk-blog/az-801-study-guide-configuring-windows-server-hybrid-advanced/ba-p/2742508?WT.mc%5Fid=modinfra-39512-orthomas&ref=techielass.com) For the rest of the weekly update, do check out my video, or the links below to the audio version. The video version is available on [YouTube](https://www.youtube.com/techielass?ref=techielass.com) and the audio version is available on [Apple Podcasts](https://podcasts.apple.com/us/podcast/sarah-leans-weekly-update-podcast/id1506712194?uo=4&ref=techielass.com), [Breaker](https://www.breaker.audio/sarah-leans-weekly-update-podcast?ref=techielass.com), [Google Podcasts](https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy8xYjM2ZDgxYy9wb2RjYXN0L3Jzcw==&ref=techielass.com), [Overcast](https://overcast.fm/itunes1506712194/sarah-leans-weekly-update-podcast?ref=techielass.com), [Pocket Casts](https://pca.st/mnod1w6y?ref=techielass.com), [Radio Public](https://radiopublic.com/sarah-leans-weekly-update-podcast-6r03jz?ref=techielass.com), [Spotify](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com), [RSS Feed](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com), [Amazon Audible](https://www.amazon.co.uk/item%5Fname/dp/B08JK1HFD2/ref=sr%5F1%5F1?dchild=1&keywords=sarah+lean+podcast&qid=1631262971&sr=8-1&ref=techielass.com) & [Anchor](https://anchor.fm/techielass?ref=techielass.com). ### My career journey - Instagram Interview URL: https://www.techielass.com/my-career-journey-instagram-interview/ Last updated: 2021-09-23T07:59:59.000Z I was recently asked if I would like to be a guest during a live interview segment the [Stemettes ](https://linktr.ee/stemettes?ref=techielass.com)had planned on their Instagram feed. The Stemettes are a group that are passionate about helping 5-25 year olds find their way in Science, Technology, Engineering & Maths careers. I always try and support the next generation and share my advice when I can. It was my first Instagram Live show but I really enjoyed sharing my journey joining Microsoft and what I would be doing if I wasn't in IT. My interview starts at the 31min mark if you want to check it out. > [ View this post on Instagram ](https://www.instagram.com/tv/CSzPLCCoOhW/?utm%5Fsource=ig%5Fembed&utm%5Fcampaign=loading) > > [A post shared by Stemettes ® ♥★#+ (@stemettes)](https://www.instagram.com/tv/CSzPLCCoOhW/?utm%5Fsource=ig%5Fembed&utm%5Fcampaign=loading) ### Speaking at Scenic City Summit URL: https://www.techielass.com/speaking-at-scenic-city-summit/ Last updated: 2024-05-07T05:50:17.000Z I am happy to announce that I will be delivering the [opening keynote](https://sceniccitysummit.com/?ref=techielass.com) at Scenic City Summit 2021\. Scenic City Summit is Chattanooga's largest local IT professional development conference for developers and other IT professionals. The event is fully virtual this year and is being held on the 24th September 2021\. My keynote will be at 1.30pm UK time, and I will be talking about cloud transformation. Cloud transformation is not always simple or straightforward. It can involve developing new muscle memory and changing your organisations culture to help support and encourage new ways of operating and learning. It isn’t always about technology. In the session I will be talking about how organisations can adapt to this new way of working, avoid pitfalls and drive your business forward. I look forward to seeing you all there! ### Convert a folder to a Git repository URL: https://www.techielass.com/convert-a-folder-to-a-git-repository/ Last updated: 2026-06-17T15:29:37.000Z Converting a standard folder into a Git repository is a fundamental step in version control and collaborative software development. This blog post serves as your guide to the essential process, empowering you to seamlessly integrate version control into your projects, whether you're a seasoned engineer or just starting your coding journey. ### Create a new repository Create your repository source; in my example, I am creating a new GitHub repository. With my new repository created, I note the URL, as you'll need it in a few steps. ### Convert the folder The next step is to convert the folder. To do this, open up a command prompt or Terminal shell (I'm using [Windows Terminal](https://www.techielass.com/install-windows-terminal-with-windows-package-manager/)). Navigate to the location of the folder and type in the command: ```bash git init ``` This command will create a folder called .git and is usually the first command you run on an empty or non-empty folder to convert to a [Git](https://www.git-scm.com/?ref=techielass.com) repository. ### Add files You now need to add the files you've created into the "staging" area to get ready to push them to your repository source. ```bash git add . ``` ### Commit your files The next step is to record the changes to your repository. ```bash git commit -m "add my files" ``` ### Configure the remote repository Your next step is configuring it, so your local folder/repository knows where the remote repository is. This is the one you created earlier at the start of this process. ```bash git remote add origin ``` ### Push the files to the remote repository The next step is to push a copy of the files from your local repository to your remote repository. Within this stage, you also need to configure the branch you are using and its name of it. You can do this using the following command. ```bash git push -u origin main ``` You've successfully created your local folder into a [Git](https://www.techielass.com/tag/git) folder and configured the remote repository. Any local changes can now be easily pushed to your remote repository. ### Weekly Update #108 - Windows Server 2022, new Apple tech, Canva and Scotland URL: https://www.techielass.com/weekly-update-108/ Last updated: 2023-12-06T08:28:33.000Z This week there isn't a lot of news to share, but the sun is shining here in Scotland so I'm out on location to talk tech! 😋 The video version is available on [YouTube](https://www.youtube.com/techielass?ref=techielass.com) and the audio version is available on [Apple Podcasts](https://podcasts.apple.com/us/podcast/sarah-leans-weekly-update-podcast/id1506712194?uo=4&ref=techielass.com), [Breaker](https://www.breaker.audio/sarah-leans-weekly-update-podcast?ref=techielass.com), [Google Podcasts](https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy8xYjM2ZDgxYy9wb2RjYXN0L3Jzcw==&ref=techielass.com), [Overcast](https://overcast.fm/itunes1506712194/sarah-leans-weekly-update-podcast?ref=techielass.com), [Pocket Casts](https://pca.st/mnod1w6y?ref=techielass.com), [Radio Public](https://radiopublic.com/sarah-leans-weekly-update-podcast-6r03jz?ref=techielass.com), [Spotify](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com), [RSS Feed](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com), [Amazon Audible](https://www.amazon.co.uk/item%5Fname/dp/B08JK1HFD2/ref=sr%5F1%5F1?dchild=1&keywords=sarah+lean+podcast&qid=1631262971&sr=8-1&ref=techielass.com) & [Anchor](https://anchor.fm/techielass?ref=techielass.com). So lots of options to tune in and catch up with me and the tech news. 👌 ### Install Azure Arc onto your servers URL: https://www.techielass.com/install-azure-arc-onto-your-server/ Last updated: 2024-02-02T19:47:07.000Z [Azure Arc](https://docs.microsoft.com/azure/azure-arc/servers/agent-overview?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) enables you to manage your Windows and Linux machines hosted outside of Azure inside Azure. This means that you can use Azure services on physical servers or servers running in other cloud providers services. Azure Arc went generally available in September 2020\. ### Why? The question is why would you want to install this agent on your servers? It helps you leverage the Azure services and control plane. It helps to simply the management of your environments. If you have servers running on-premises and in several cloud providers environments, you can use the Azure Arc agent to help bring all those environments together and ### How do I install the Arc agent? You can onboard Linux and Windows Servers using the Azure Arc Center in the Azure portal. When in the Azure Portal you will be presented with the prerequisite requirements that you need to be aware of such as what ports need to be opened and the local admin permissions required to install the agent. The second screen that you encounter will be around where you want to store the information about the server(s) your about to connect. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/arc1.png) The next screen will be regarding Tags. you should look to try and utilise Tags within your Azure environment if you aren't already, they can be a great way of finding and identifying servers. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/arc2.png) The last screen will provide you with the script that will install the agent. You can either copy the script or download it. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/arc3.png) Now you have the script it's time to take it to your server and install the agent. The script will run and install the necessary components to install Azure Arc on your server. At one stage it will ask you to open a browser to [https://www.microsoft.com/devicelogin](https://www.microsoft.com/devicelogin?ref=techielass.com) and authenticate to your Azure subscription. Once that is completed you will be notified that the server has been onboarded. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/08/arcserver.png) Arc enabled server in the Azure Portal ### What now? Now the Azure Arc agent is installed on your server you can start to leverage Azure services on your non-Azure server such as [Update Management](https://docs.microsoft.com/azure/architecture/hybrid/azure-update-mgmt?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com), [Azure Policy](https://azure.microsoft.com/services/azure-policy/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com), [Azure Log Analytics](https://docs.microsoft.com/azure/azure-monitor/logs/log-analytics-overview?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) and much more. ### How (not) to Respond to a CFP URL: https://www.techielass.com/how-not-to-respond-to-a-cfp/ Last updated: 2023-03-02T17:40:12.000Z Over the last few years, I have submitted a lot of talk suggestions to conferences and events through their Call for Papers (CFP); I've had a lot of rejections and been accepted to speak at a lot as well. I've also been involved in reviewing submissions for events and conferences and trying to decide which ones to pick and which to reject, which is always challenging. In this blog post, I wanted to share some tips on filling in a Call for Papers for an event. ## Too short When writing about a talk idea, make the description or synopsis a manageable length. If the person evaluating the submissions doesn't know what the talk will be about, how can they assess it properly or trust that it will be a good talk for the audience? Your submission extract should be long enough to give the conference organisers enough context to understand what you will be talking about and why it's worth picking your submission over the others. ## Too long Equally, your submission should not be too long. It doesn't need to be an essay; you don't need to write out an entire blog post or article in your submission. Save that level of detail for the talk itself. Try and strike a good balance of sharing enough details to show the value of the talk but not giving everything away. 😊 ## Boring Try and make sure your submission sparks interest. There is no point in having a great subject or a very relevant one, but your submission needs to convey that. Your description should share why someone would want to attend your talk. Try and show your personality within the description. If the description doesn't excite or interest you, why would others want to attend the talk? ## Sales Pitch Some events are happy to have talks and presentations that are aimed at selling products to audiences, but you should focus on helping to teach the audience something. By all means, chat about your company's products or offerings but don't turn your talk into a sales pitch. If you aim to sell things at the event, then look to sponsoring it or getting a booth, don't submit a session. ## Don't get discouraged It can be daunting to write a submission for a conference or event, and you will undoubtedly face rejections. Believe me, I've had my fair few rejections, and it's never pleasant; however, don't get discouraged. Keep trying, keep learning, and you'll get there. ### Weekly Update #107 - Exam objectives, Availability Zones, GitHub Actions, Business cards URL: https://www.techielass.com/weekly-update-107/ Last updated: 2021-09-10T15:18:59.000Z After a week off to enjoy some down time and an actual holiday for the first time since 2019 I'm back at work and ready to catch up on the news that has been happening in the tech scene. There is some interesting news stories that have been happening, ranging from Azure Availability Zone capabilities being extended to new services, Microsoft Booking enhancements, Windows Server 2022 going generally available as well as new notification methods for GitHub Actions, not to mention the new LTO tapes being released for the first time in 4 years as well as tech shortages effecting car production and lastly paper business cards! There are two formats you can catch my weekly update, video or audio only. The video version is available on [YouTube](https://www.youtube.com/techielass?ref=techielass.com) and the audio version is available on [Apple Podcasts](https://podcasts.apple.com/us/podcast/sarah-leans-weekly-update-podcast/id1506712194?uo=4&ref=techielass.com), [Breaker](https://www.breaker.audio/sarah-leans-weekly-update-podcast?ref=techielass.com), [Google Podcasts](https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy8xYjM2ZDgxYy9wb2RjYXN0L3Jzcw==&ref=techielass.com), [Overcast](https://overcast.fm/itunes1506712194/sarah-leans-weekly-update-podcast?ref=techielass.com), [Pocket Casts](https://pca.st/mnod1w6y?ref=techielass.com), [Radio Public](https://radiopublic.com/sarah-leans-weekly-update-podcast-6r03jz?ref=techielass.com), [Spotify](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com), [RSS Feed](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com), [Amazon Audible](https://www.amazon.co.uk/item%5Fname/dp/B08JK1HFD2/ref=sr%5F1%5F1?dchild=1&keywords=sarah+lean+podcast&qid=1631262971&sr=8-1&ref=techielass.com) & [Anchor](https://anchor.fm/techielass?ref=techielass.com). Hopefully it's available on your favourite platform so you can join me and catch up. Below are some links you can use to get to various versions. Enjoy! ### SC-300 Study Guide: Microsoft Identity and Access Administrator URL: https://www.techielass.com/sc-300-study-guide/ Last updated: 2025-08-21T08:12:17.000Z The SC-300 exam was released in 2021 and is the Microsoft Identity and Access Administrator. The exam is aimed at those who look after hybrid identity solutions or are part of a team that is looking after it. Below is a list of the exam objectives and some study resources that can be used to aid your study towards passing the exam. 👌 ### Implement an identity management solution (25-30%) **Implement initial configuration of Azure Active Directory** - [configure and manage Azure AD directory roles](https://docs.microsoft.com/learn/modules/implement-initial-configuration-of-azure-active-directory/2-configure-manage-roles?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [configure and manage custom domains](https://docs.microsoft.com/learn/modules/implement-initial-configuration-of-azure-active-directory/4-configure-manage-custom-domains?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [configure and manage device registration options](https://docs.microsoft.com/learn/modules/implement-initial-configuration-of-azure-active-directory/5-configure-manage-device-registration?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [configure delegation by using administrative units](https://docs.microsoft.com/learn/modules/implement-initial-configuration-of-azure-active-directory/6-configure-delegation-administrative-units?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [configure tenant-wide settings](https://docs.microsoft.com/learn/modules/implement-initial-configuration-of-azure-active-directory/7-configure-tenant-wide-options?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) **Create, configure, and manage identities** - [create, configure, and manage users](https://docs.microsoft.com/azure/active-directory/fundamentals/add-users-azure-active-directory?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [create, configure, and manage groups](https://docs.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [manage licenses](https://docs.microsoft.com/azure/active-directory/fundamentals/active-directory-whatis?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com#what-are-the-azure-ad-licenses) **Implement and manage external identities** - [manage external collaboration settings in Azure Active Directory](https://docs.microsoft.com/azure/active-directory/external-identities/delegate-invitations?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [invite external users (individually or in bulk)](https://docs.microsoft.com/azure/active-directory/external-identities/tutorial-bulk-invite?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [manage external user accounts in Azure Active Directory](https://docs.microsoft.com/azure/active-directory/external-identities/use-dynamic-groups?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [configure identity providers (social and SAML/WS-fed)](https://docs.microsoft.com/azure/active-directory/fundamentals/auth-saml?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) **Implement and manage hybrid identity** - [implement and manage Azure Active Directory Connect (AADC)](https://docs.microsoft.com/azure/active-directory/hybrid/how-to-connect-install-roadmap?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [implement and manage Password Hash Synchronization (PHS)](https://docs.microsoft.com/azure/active-directory/hybrid/whatis-phs?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [implement and manage Pass-Through Authentication (PTA)](https://docs.microsoft.com/azure/active-directory/hybrid/how-to-connect-pta-quick-start?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [implement and manage seamless Single Sign-On (SSO)](https://docs.microsoft.com/azure/active-directory/hybrid/how-to-connect-sso-quick-start?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [implement and manage Federation excluding manual ADFS deployments](https://docs.microsoft.com/azure/active-directory/hybrid/whatis-fed?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [implement and manage Azure Active Directory Connect Health](https://docs.microsoft.com/azure/active-directory/hybrid/whatis-azure-ad-connect?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [troubleshoot synchronization errors](https://docs.microsoft.com/azure/active-directory/hybrid/tshoot-connect-objectsync?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) ## Implement an authentication and access management solution (25- 30%) **Plan and implement Azure Multifactor Authentication (MFA)** - [plan Azure MFA deployment (excluding MFA Server)](https://docs.microsoft.com/azure/active-directory/fundamentals/active-directory-deployment-plans?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [implement and manage Azure MFA settings](https://docs.microsoft.com/azure/active-directory/authentication/tutorial-enable-azure-mfa?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - manage MFA settings for users **Manage user authentication** - [administer authentication methods (FIDO2 / Passwordless)](https://docs.microsoft.com/azure/active-directory/authentication/concept-authentication-passwordless?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [implement an authentication solution based on Windows Hello for Business](https://docs.microsoft.com/windows/security/identity-protection/hello-for-business/hello-deployment-guide?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [configure and deploy self-service password reset](https://docs.microsoft.com/azure/active-directory/authentication/tutorial-enable-sspr?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [deploy and manage password protection](https://docs.microsoft.com/azure/active-directory/authentication/concept-password-ban-bad?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [implement and manage tenant restrictions](https://docs.microsoft.com/azure/active-directory/manage-apps/tenant-restrictions?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) **Plan, implement, and administer conditional access** - [plan and implement security defaults](https://docs.microsoft.com/azure/active-directory/fundamentals/concept-fundamentals-security-defaults?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [plan conditional access policies](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-conditional-access-policies?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [implement conditional access policy controls and assignments (targeting, applications, and conditions)](https://docs.microsoft.com/azure/active-directory/conditional-access/overview?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [testing and troubleshooting conditional access policies](https://docs.microsoft.com/azure/active-directory/conditional-access/troubleshoot-conditional-access-what-if?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - implement application controls - [implement session management](https://docs.microsoft.com/azure/active-directory/conditional-access/howto-conditional-access-session-lifetime?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [configure smart lockout thresholds](https://docs.microsoft.com/azure/active-directory/authentication/howto-password-smart-lockout?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) **Manage Azure AD Identity Protection** - [implement and manage a user risk policy](https://docs.microsoft.com/azure/active-directory/reports-monitoring/howto-remediate-users-flagged-for-risk?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [implement and manage sign-in risk policies](https://docs.microsoft.com/azure/active-directory/authentication/tutorial-risk-based-sspr-mfa?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [implement and manage MFA registration policy](https://docs.microsoft.com/azure/active-directory/identity-protection/howto-identity-protection-configure-mfa-policy?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - monitor, investigate and remediate elevated risky users ## Implement Access Management for Apps (10-15%) **Plan, implement, and monitor the integration of Enterprise Apps for Single Sign-On (SSO)** - [implement and configure consent settings](https://docs.microsoft.com/learn/modules/plan-design-integration-of-enterprise-apps-for-sso/3-implement-access-management-for-apps?ns-enrollment-type=LearningPath&ns-enrollment-id=learn.wwl.implement-access-management-for-apps&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [discover apps by using MCAS or ADFS app report](https://docs.microsoft.com/azure/active-directory/manage-apps/migrate-adfs-application-activity?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [design and implement access management for apps](https://docs.microsoft.com/learn/modules/plan-design-integration-of-enterprise-apps-for-sso/4-design-implement-app-management-roles?ns-enrollment-type=LearningPath&ns-enrollment-id=learn.wwl.implement-access-management-for-apps&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [design and implement app management roles](https://docs.microsoft.com/learn/modules/plan-design-integration-of-enterprise-apps-for-sso/5-create-custom-role-manage-app-registration?ns-enrollment-type=LearningPath&ns-enrollment-id=learn.wwl.implement-access-management-for-apps&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - monitor and audit access / Sign-Ons to Azure Active Directory integrated enterprise applications - [integrate on-premises apps by using Azure AD application proxy](https://docs.microsoft.com/azure/active-directory/app-proxy/what-is-application-proxy?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - integrate custom SaaS apps for SSO - [configure pre-integrated (gallery) SaaS apps](https://docs.microsoft.com/learn/modules/plan-design-integration-of-enterprise-apps-for-sso/6-configure-pre-integrated-gallery-saas-apps?ns-enrollment-type=LearningPath&ns-enrollment-id=learn.wwl.implement-access-management-for-apps&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [implement application user provisioning](https://docs.microsoft.com/azure/active-directory/app-provisioning/user-provisioning?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) **Implement app registrations** - [plan your line of business application registration strategy](https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [implement application registrations](https://docs.microsoft.com/learn/modules/implement-app-registration/3-implement-application-registration?ns-enrollment-type=LearningPath&ns-enrollment-id=learn.wwl.implement-access-management-for-apps&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [configure application permissions](https://docs.microsoft.com/learn/modules/implement-app-registration/5-configure-application-permission?ns-enrollment-type=LearningPath&ns-enrollment-id=learn.wwl.implement-access-management-for-apps&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [implement application authorization](https://docs.microsoft.com/learn/modules/implement-app-registration/7-implement-application-authorization?ns-enrollment-type=LearningPath&ns-enrollment-id=learn.wwl.implement-access-management-for-apps&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - plan and configure multi-tier application permissions ## Plan and implement an Identity Governance Strategy (25-30%) **Plan and implement entitlement management** - [define catalogs](https://docs.microsoft.com/azure/active-directory/governance/entitlement-management-catalog-create?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [define access packages](https://docs.microsoft.com/azure/active-directory/governance/entitlement-management-access-reviews-create?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [plan, implement and manage entitlements](https://docs.microsoft.com/azure/active-directory/governance/entitlement-management-overview?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [implement and manage terms of use](https://docs.microsoft.com/azure/active-directory/conditional-access/terms-of-use?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com#what-can-i-do-with-terms-of-use) - [manage the lifecycle of external users in Azure AD Identity Governance settings](https://docs.microsoft.com/learn/modules/plan-implement-entitlement-management/6-manage-lifecycle-of-external-users?ns-enrollment-type=LearningPath&ns-enrollment-id=learn.wwl.plan-implement-identity-governance-strategy&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) **Plan, implement, and manage access reviews** - [plan for access reviews](https://docs.microsoft.com/azure/active-directory/governance/deploy-access-reviews?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [create access reviews for groups and apps](https://docs.microsoft.com/azure/active-directory/governance/create-access-review?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [monitor access review findings](https://docs.microsoft.com/azure/active-directory/governance/access-reviews-downloadable-review-history?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [manage licenses for access reviews](https://docs.microsoft.com/azure/active-directory/governance/entitlement-management-overview?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com#license-requirements) - [automate access review management tasks](https://docs.microsoft.com/azure/active-directory/governance/deploy-access-reviews?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [configure recurring access reviews](https://docs.microsoft.com/learn/modules/plan-implement-manage-access-review/7-configure-recurring-access-reviews?ns-enrollment-type=LearningPath&ns-enrollment-id=learn.wwl.plan-implement-identity-governance-strategy&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) Plan and implement privileged access - [define a privileged access strategy for administrative users (resources, roles, approvals, thresholds)](https://docs.microsoft.com/azure/active-directory/roles/security-planning?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [configure Privileged Identity Management for Azure AD roles](https://docs.microsoft.com/azure/active-directory/privileged-identity-management/pim-getting-started?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com#prepare-pim-for-azure-ad-roles) - [configure Privileged Identity Management for Azure resources](https://docs.microsoft.com/azure/active-directory/privileged-identity-management/pim-resource-roles-discover-resources?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [assign roles](https://docs.microsoft.com/azure/active-directory/privileged-identity-management/pim-how-to-add-role-to-user?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [manage PIM requests](https://docs.microsoft.com/azure/active-directory/privileged-identity-management/azure-ad-pim-approval-workflow?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [analyze PIM audit history and reports](https://docs.microsoft.com/azure/active-directory/privileged-identity-management/pim-how-to-use-audit-log?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [create and manage break-glass accounts](https://docs.microsoft.com/azure/active-directory/roles/security-emergency-access?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) **Monitor and maintain Azure Active Directory** - [analyze and investigate sign-in logs to troubleshoot access issues](https://docs.microsoft.com/azure/active-directory/reports-monitoring/howto-troubleshoot-sign-in-errors?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [review and monitor Azure AD audit logs](https://docs.microsoft.com/azure/active-directory/reports-monitoring/concept-audit-logs?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [enable and integrate Azure AD diagnostic logs with Log Analytics / Azure Sentinel](https://docs.microsoft.com/azure/sentinel/connect-azure-active-directory?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [export sign-in and audit logs to a third-party SIEM](https://docs.microsoft.com/learn/modules/monitor-maintain-azure-active-directory/5-export-logs-to-third-party-security-information?ns-enrollment-type=LearningPath&ns-enrollment-id=learn.wwl.plan-implement-identity-governance-strategy&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [review Azure AD activity by using Log Analytics / Azure Sentinel, excluding KQL use](https://docs.microsoft.com/azure/sentinel/connect-azure-active-directory?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [analyze Azure Active Directory workbooks / reporting](https://docs.microsoft.com/azure/active-directory/reports-monitoring/howto-use-azure-monitor-workbooks?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [configure notification](https://docs.microsoft.com/learn/modules/monitor-maintain-azure-active-directory/7-configure-notifications?ns-enrollment-type=LearningPath&ns-enrollment-id=learn.wwl.plan-implement-identity-governance-strategy&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) 💡 ****New Resource:** Want to go beyond this blog? I’ve written a practical guide — [**How to Prepare for a Microsoft Exam*](https://leanpub.com/howtoprepareforamicrosoftexam?ref=techielass.com) — packed with tips, study strategies, and real-world advice to help you succeed. ### How to start a podcast for free URL: https://www.techielass.com/how-to-start-a-podcast-for-free/ Last updated: 2021-09-07T08:02:00.000Z Starting a new idea, or project can be daunting and a challenge. You never know if it will pay off or if you'll enjoy working on it. Lots of people have had the idea to start a podcast but have been put off because they think a lot of money has to be invested in order to get started. For me getting started is the thing that folk should start with what they have and then invest more money if it's something you enjoy and feel the need. In order to get started I wanted to share some great tools and software that is free and will start you on your journey. ## Podcast Recording Software If you are recording a podcast with just yourself or with guests, having a reliable way to record your audio is a must. A great tool that is free is [Cleanfeed](https://cleanfeed.net/?ref=techielass.com). It is browser based so there is no additional software to install or have your guests download/install. You can easily invite them to join your recording with a simple URL link. Once you have finished the recording you can download the file in a **.wav** format and you have your podcast episode. The free version of Cleanfeed will combine the audio of you and your guest(s) into one track, so that is a downside. However, if you are just starting out this can make post editing (if needed) easier while you are getting to grips with everything. There is a paid plan of Cleanfeed that will give you multitrack recordings. An alternative would be to use [Anchor](https://anchor.fm/?ref=techielass.com), it can be used to record your your episodes and do some light editing (joining tracks together adding intro music etc). Using the mobile app you can invite your guests to join you, although you can record via your browser on your PC I haven't found a way to invite guests through that way. ## Edit your Podcast Audio If you need to edit your podcast audio, cut out extra audio or a cough etc. I would recommend [Audacity](https://www.audacityteam.org/?ref=techielass.com), which is an open source piece of software you can download and use to listen or edit your audio on. There has been a lot of controversy around Audacity so I am recommended it on the basis that you do your own research and understand their latest [privacy policies](https://github.com/audacity/audacity/discussions/1225?ref=techielass.com) changes. ## Host your Podcast Sharing your podcast to a wide audience can be a complicated and timely business. Using [Anchor](https://anchor.fm/?ref=techielass.com) is a great way to host your podcast episodes and have it distributed to multiple platforms easily. Anchor is a free platform, where you can upload your podcast audio file and then have it distributed via Anchor, Breaker, Google Podcasts, Apple Podcasts, Overcast, Pocket Casts, RadioPublic and Spotify. Anchor does this distribution for you, you just need to upload the audio file to Anchor. Anchor also offers an easy way to monetize your podcast (if you are based in the US) as well. There is also an easy way to take your podcast episodes hosted on Anchor and turn them into a WordPress blog as well if you wanted to set up a blog for your podcast as well. You can get a plethora of stats from where people listen to your podcasts if you want to understand how it is being received by your audience. ### Do let me know if you start a podcast as I'd love to add it to my list of podcasts to listen to! 😊 ### GitHub Tips and Tricks URL: https://www.techielass.com/github-tips-and-tricks/ Last updated: 2023-05-24T14:51:27.000Z I wanted to share some GitHub tips and tricks that I have picked up lately. I hope they can help you out! ## Octotree [Octotree](https://www.octotree.io/?ref=techielass.com) is a browser based extension that you can install to help you navigate through GitHub repositories file and folder structure in an easy to read tree-based file structure. ![Octotree in use](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/08/octotree.gif) Octotree in use ## Create a repository with your own name If you create a repository with your own name and create a README.MD file then everything in there will appear on your public profile. It's a great way to introduce who you are, your projects and work to people who are visiting your profile. I have [mine](https://github.com/weeyin83/weeyin83?ref=techielass.com) setup to display a bit of a bio and share some links to new blog posts and [YouTube ](https://www.youtube.com/techielass?ref=techielass.com)videos through some GitHub Actions created by [https://github.com/gautamkrishnar/](https://github.com/gautamkrishnar/?ref=techielass.com). ## Mention Highlighter Is it hard to spot if you are mentioned in a comment or an issue? Install the browser based plugin [GitHub Mention Highlighter](https://github.com/benbalter/github-mention-highlighter?ref=techielass.com). It'll make it easier to spot if you are quickly scrolling through and hopefully avoid missing something you need to answer or action. ## Keyboard Tags Did you know you can use a tag to insert little keyboard icons into your files or comments etc? This is great if you are trying to give someone instructions on what key presses or combos work with your application or game or whatever. If you use the syntax like below: ```markdown Press A that will make you go left, which D will make you go right. ``` It will end up looking like this within GitHub! ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/08/keyboardtags.PNG) Keyboard tags in GitHub ## Video Uploads In May 2021 the ability to upload *.mp4* and *.mov* files to issues, pull requests and discussion comments meaning you can share reproduction steps or ideas with GitHub repo owners or other contributors. The video file has to be less than 100MB though. **For some more tips and tricks on how to get the most out of GitHub check out my video:** ### Windows Package Manager can help you export and import a collection of software! URL: https://www.techielass.com/windows-package-manager-can-help-you-export-and-import-a-collection-of-software/ Last updated: 2022-12-22T20:09:23.000Z Have you ever got your PC to the state where it has all the settings and software installed and configured that you need to use and it’s just in the right state for your daily tasks and then bam something happens, and you need to rebuild or start from scratch with a new PC? Yip, I’ve been there and it’s always super annoying trying to get your PC back to the state you had it in before. Thankfully, a lot of things are getting better, and you have technology that can sync your settings that can then be pulled down again easily speeding up the rebuild of your PC to the way you like it. But what about the software you like to have installed with that specific version installed that does just what you want? Well, this is where Windows Package Manager can come into play! ## What is it? Windows Package Manager is an open-source project that Microsoft announced at Build 2020 and version 1.0 was released at Build 2021\. It can help you manage and install software onto your machines in an easy and consistent way. It’s straightforward to get it [installed](https://www.techielass.com/how-to-install-winget-windows-package-manager/) on your machine and [start installing software](https://www.techielass.com/installing-software-with-windows-package-manager/). ## Exporting your software list So how can it help with the initial problem, well the Windows Package Manager has an import and export features that allows you to export a list of software installed on your PC and then use that file to install the same software on another machine. And I might be a bit biased, but I really like this feature, so let me show you how it works. Within Windows Package Manager installed on your machine open your favourite command shell, I like Windows Terminal. Enter the command: **winget export -o nameoflist.json** This will export a list of software that is installed on your machine to a file location of your choosing. The file will be a JSON file. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/08/wingetexport1.PNG) *Windows Package Manager export command* ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/08/wingetexport2.PNG) *Windows Package Manager export list* As you can see from the output file picture above Windows Package Manager lists out each of the software that’s installed. You do have another option when exporting the list. You can use this command: **winget export -o nameoffile.json –include-versions** ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/08/wingetexport3.PNG) *Windows Package Manager export with versions* ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/08/wingetexport4.PNG) *Windows Package Manager export list with versions* Now you can see from the output file the file contains the version of software you have as well, so if you have a need for a specific version to be installed and want to take a note of that you can. ## Editing the output file Now what happens if you want a specific version of a specific piece of software, but you don’t care about the versions of the other? Well, you can edit the output file to suit your needs. As I said earlier it’s a JSON file so can be easily edited within something like Visual Studio Code. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/08/wingeteditexportfile.gif) *Windows Package Manager modify export list* Hopefully, you can see from that short clip, that Intellisense within Visual Studio Code is helping to identify where my syntax is wrong, in this case by leaving trailing commas and accidentally deleting quotation marks I need. ## Import onto another machine Now that we have a list of software that we like to have installed, we can start to use this on other machines. So transfer the JSON file you’ve created to another machine and make sure that you have [Windows Package Manager installed](https://www.techielass.com/how-to-install-winget-windows-package-manager/). Now you have the JSON file and Windows Package Manager setup it’s time to use that file to install the software you want, with the versions you prefer. With the **winget import** command there are some switches that you can use when importing. You have **–ignore-unavailable** and **–ignore-versions**. The **–ignore-unavailable** command will continue if any packages are unavailable and the **–ignore-versions** will ignore any specified versions in the import file and install the latest version instead. Your needs and wants will depend on how you use those switches. For me I’m going to take my JSON file with listed software and versions and install as per that file with this command: **winget import –import-file installlistversion.json –ignore-unavailable** ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/08/wingetexport5.PNG) *Windows Package Manager import command* After a few minutes, the software I want is now installed on that second machine! ## Give it a try! I’d love to hear how you are using this feature in your environment or if you have any feedback after using it! ### Weekly Update #106 - Azure Policy, Azure Site Recovery & Windows 11 in AVD URL: https://www.techielass.com/weekly-update-106/ Last updated: 2021-08-27T14:50:34.000Z It's Friday and it's nearly the end of August! Where is the year disappearing to? It definitely seems like it is going past very fast. Thankfully the lovely weather here in Scotland has returned and hopefully it plans to stay for a while longer. There is some interest pieces of new this week both in the Azure world and the general tech world. You can catch up with the update on my YouTube channel: Further Reading: - [Hard coded IP address for Azure Site Recovery will be retired on 31 August 2024](https://azure.microsoft.com/updates/transition-to-using-service-tags-by-31-august-2024/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Windows 11 public preview is now available on Azure Virtual Desktop](https://azure.microsoft.com/updates/windows-11-public-preview-is-now-available-on-azure-virtual-desktop/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Public preview: Apply settings inside machines using Azure Policy's guest configuration](https://azure.microsoft.com/updates/public-preview-apply-settings-inside-machines-using-azure-policys-guest-configuration/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) ### Directly connect your Ubiquiti Dream Machine Pro to BT Fibre URL: https://www.techielass.com/directly-connect-your-ubiquiti-dream-machine-pro-to-bt-fibre/ Last updated: 2022-12-22T08:01:25.000Z 💡 August 2022 - BT are now starting to roll out Digital Voice service for their phone landline service. In doing this they are disabling port TEL1 on the Huawei modem. This now means to get your landline to work it must be plugged into the BT Smart Hub 2\. So you may not want to bypass the BT router completely now. When I installed my Ubiquiti Dream Machine (UDM) Pro into the house one thing I wanted to do was try and directly connect my BT Fibre connection to the UDM Pro without having the need for the BT supplied router. On looking through various forum posts the information was mixed, some people seemed to have successfully done it, with others having no luck at all. When I got the UDM Pro this is the steps I took to get the connection directly working with my BT Fibre connection. In our house we have this box which brings the fibre into the house: ![BT Fibre Box](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/12/btfibre.jpg) BT Fibre Box It has an ethernet cable coming out of it that usually plugs into the BT router, what I did was take that cable and plug it into the WAN connection on the UDM Pro. I then plugged my laptop directly into the UDM Pro so I could connect to the management console at [https://setup.ui.com](https://setup.ui.com/?ref=techielass.com) Once logged in I went into settings of the UDM Pro ![Ubiquiti interface](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/08/unifinetwork.png) Ubiquiti interface Then into the settings ![Ubiquiti interface](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/08/unifisettings.png) Ubiquiti interface And then clicked on Internet ![Ubiquiti interface](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/08/unifiinternet.png) Ubiquiti interface Within the WAN connection settings I inputted the following details Username: bthomehub@btbroadband.com Password: BT ![Ubiquiti interface](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/08/btsettings.PNG) Ubiquiti interface And saved the config. I tried to access the internet on my laptop and no result, the connection was dead. I went into the UDM Pro settings, and into the Advanced settings and restarted the device. After a few minutes when the device came back online I was able to browse the internet and the UDM Pro had detected that connected to the BT network! Result! I was able to bypass using the BT supplied router and use my Ubiquiti Dream Machine Pro to supply the connection to my network! I pay for 150Mbps down and 30Mbps up, and the UDM Pro is detecting those speeds so it's working as it should. 👍 ![Buy me a coffee](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/10/blogcoffee-1.png) Buy me a coffee ### Tools I use when creating videos and podcasts URL: https://www.techielass.com/tools-i-use-when-creating-videos-and-podcasts/ Last updated: 2023-12-07T14:46:08.000Z Over the last year or two I've experimented quite a bit with video recording and audio recording and tried to use the equipment or tools I have at my disposal. But also leverage free tools where possible in order provide the best experience for me and the audience. **Recording Video** Recording video is something I do quite a bit, whether that be just me or me plus my screen or just my screen. There are a lot of tools out there that can help you, I talked about [screen recording software in a previous blog](https://www.techielass.com/free-screen-recording-software/). Depending on what I am doing, I use a combination of just filming straight to my mobile phone (for videos of me), and Camtasia for screen recording. Although I have started to use [StreamYard](https://www.techielass.com/using-streamyard/) for some videos of me and screen at the same time as it means I have less editing before release. **Streaming Video** My only choice here is [StreamYard](https://streamyard.com/?pal=5940677089689600&ref=techielass.com). There is a free tier of the software that allows you to stream videos to your platform of choice, but I choose to pay for the next tier to remove the StreamYard branding from my videos. Honestly I can't recommend StreamYard enough, I did dedicate a whole blog as to [why I use StreamYard](https://www.techielass.com/using-streamyard/). **Optimising videos on YouTube** There are a ton of things that you need think about when creating videos on YouTube to try and get them more visible. I use [TubeBuddy](https://www.tubebuddy.com/techielass?ref=techielass.com) to help guide me on some of the best practices. It helps me check I've got the right keywords/tags in my video configuration, analyse the SEO of my video, and see where it ranks against other videos on YouTube. It also helps me understand what others are doing on YouTube and how I could use the same techniques. There are free tiers and paid tiers for this tool, so it's entirely up to yourself if you want to pay or not. For me this has really helped me learn how to optimise things around my videos. **Captions/Subtitles** Having different language subtitle options or transcriptions of your videos and podcasts can be important. For those that don't speak the language your video/podcast has been recorded in, or for those that have hearing difficulties. Or maybe even people who are watching but can't have sound on because they are in a public place etc. YouTube will do auto subtitles, or captions are they call them for the following languages, Dutch, English, French, German, Indonesian, Italian, Japanese, Korean, Portuguese, Russian, Spanish, Turkish, and Vietnamese. But they only do it for one language, so if your audience doesn't speak that language then there are no subtitles available, unless you add them. There are services you can use that can help you translate your videos into other languages for subtitles. For that I use [Rev](https://try.rev.com/3qcFDg?ref=techielass.com). The cost of translating your video into other languages can be expensive, so it's a trade off between your budget and the benefit you think it will add to your audience. What I would recommend is look at your YouTube analytics and see where your visitors are coming from and maybe concentrate on those languages or look at the audience you would like to attract to your videos and concentrate on those. **Transcriptions** Transcriptions are slightly different, they are essentially the script from your video or podcast without the timestamps you need for Subtitles/Captions. If you have a blog site for your podcasts then posting your transcriptions up alongside the episode can help with accessibility and also help make your podcasts become more discoverable within search engines. I've been using the free tier of [Otter](https://otter.ai/referrals/V9NEV2WF?ref=techielass.com) for my transcriptions, but it has it's limitations. So if you have any great services you'd recommend for transcriptions I'd love to hear about them! ### Weekly Update #105 - GitHub Codespaces, AVS placement policies, Azure Storage Inventory URL: https://www.techielass.com/weekly-update-105/ Last updated: 2021-08-20T16:00:02.000Z Another Friday and another weekly update. There is a lot of news to catch up on in terms of Azure and GitHub, it's always exciting to hear the new features or functionality that's being added to the current range. There is a bunch of General Availability features and a public preview feature. Beyond the Azure and GitHub news I also touch on the new latest T-Mobile data breach in the US and also the Tesla self driving accident investigations. Weekly Update #105 YouTube video ### Audio only Podcast ## Further reading - [AKS support for Kubernetes 1.21](https://azure.microsoft.com/updates/general-availability-aks-support-for-kubernetes-121-2/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [GitHub Codespaces](https://azure.microsoft.com/updates/general-availability-github-codespaces/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Blob storage - Inventory generally availability](https://azure.microsoft.com/updates/azure-blob-storage-inventory-generally-availability/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Placement polices now in public preview for Azure VMware Solution](https://azure.microsoft.com/updates/placement-polices-now-in-public-preview-for-azure-vmware-solution/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) ### Running my blog on Ghost URL: https://www.techielass.com/moving/ Last updated: 2021-08-19T08:20:59.000Z In March 2021 I decided that my blog was looking a bit tired and I was also fed up managing the whole platform as well as writing blogs. So I took the plunge and converted my [blog from Grav to Ghost](https://www.techielass.com/moving-from-grav-to-ghost/). And the short answer to how I'm finding the platform change is, I'm loving it!! 😊 I've been so productive since I did away what I now consider a complex blog post process. **So why more productive?** I never considered the process I had when creating and posting blogs on the Grav platform complex when I was actually using it but since switching to Ghost I've released how hard I was making it. With Grav I wrote all my blog posts in Markdown, and using Visual Studio Code made that an enjoyable experience but it meant that at times I had to fight with formatting quite a bit. Once that was done I then had to push the changes to Azure DevOps, check the changes in my Test blog environment and then push the changes to Production. I had reasons for creating that process (mostly to learn how to use the various components), but thinking about it now it was so complex and long winded for my blog. Now, I open up my browser, go to the admin interface Ghost provide me and start writing. And if I start writing on one device and then change to another that half started blog is there for me to finish. That was a lot harder to manage in my previous environment. I can quickly preview what the blog will look like in the Ghost admin console whenever I want and when I'm ready to publish I can just hit a button or I can schedule it quickly and easily. I can even do all of this from my mobile phone, so if I'm feeling creative on the go then I can do that. 😊 **I don't maintain the backend** My instance of Ghost is hosted and run by Ghost. So that's another big positive for me. I don't have to maintain the backend. I don't need to worry about security patches or upgrading to the latest version and the work and implications that comes with that. Ghost do that and do that very well. It's seamless to me. I'm obviously placing a lot of trust in them to maintain the platform but so far it's been well placed. I understand that lots of people want to have full control of their blog from frontend to backend, but I'm happy to give some of that control over. I've spent many years looking after all of the platform, time to focus on what matters most to me and that's writing blogs. 😊 **Performance of old versus new** Previously when I have changed blogging platforms I've used GTMetrix performance reports as good indicators if the change has been good for end users from a responsive point of view. One of my old Grav reports gave me this information back: ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/08/gravreport.jpg) Grav GTMetrix Performance Report This wasn't bad but it could have been better as well. Now with Ghost this is the report that I am getting back. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/08/ghostreport.PNG) Ghost GTMetrix Performance Report GTMetrix have slightly changed their reporting, but you can see the latest report is pretty good, with no real issues there. **Would you recommend it?** I do love the Ghost platform, it's a very capable blogging platform and a lot of people I know use it. So I'd highly recommend it, you can look to doing the hosting yourself if that's something you want. I know a lot of people have created guides on hosting it in Azure or on containers. But for me hosting Ghost on the Ghost platform is best option and is working out really well for me, and I'd recommend that for sure. **Let me know if you have any questions or thoughts on Ghost, would love to hear from you.** ### How to use PowerShell's Grep URL: https://www.techielass.com/how-to-use-powershells-grep/ Last updated: 2023-03-02T17:30:27.000Z One command that is prominent in Linux system administrators' toolbox is grep. This tool's core ability is to search plain text for a RegEx pattern. Grep can search files in a given directory. In the PowerShell world, do we have that command? Well, kind of. **Select-String** can help search for text or text patterns in input strings and files. It's very similar to grep or even findstr in Windows. There are three ways you can use Select-String: pipe in quoted text, use text stored in a variable or use the Path parameter to specify files to search for the text in. **Examples** We can search for text within files with the command: ```PowerShell Select-String -Path "*.csv" -Pattern "Rachel" ``` ![Select-String Result](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/selectstring.PNG) Select-String result The result of this Select-String search is finding the name Rachel within the file twice. You may want to find an event within a Windows Event Log, and rather than sit and search through it, you can use the Select-String command. ```PowerShell #Let's get the 50 most recent events from the System Log and store the information in the variable events $Events = Get-WinEvent -Log System -MaxEvents 50 #We send the variable into the Select-String pipeline and it searches for any events that have delete operations in them $Events | Select-String -InputObject {$_.message} -Pattern 'Delete' ``` ![Searching Events Logs with Select-String](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/delete.PNG) Searching Events Logs with Select-String So the above command collects the last 50 events from the System log, and then, using Select-String, we look for any events that have the string delete in them. I hope this has given you some inspiration on how to use grep within PowerShell! 👍 ### Weekly Update #104 - Az Modules, VPN Client for macOS, foldable phones URL: https://www.techielass.com/weekly-update-104/ Last updated: 2021-08-16T08:00:59.000Z Number 104 of these weekly update's marks my 2 year anniversary of doing them! Which I actually cannot believe. As such I did a live stream and did a small prize giveaway. 👌 It was great to do the live and interact with some of the audience, so thank you to everyone that came along and commented. It is much appreciated. Someone during the live show asked me if I enjoy doing the updates and I do, they are a lot of work at times but they help keep me up to date and I think they are well received and useful to everyone. It's nice to hit the 2 year mark but I might miss a week or two now while I'm on holiday with family. I've always tried to keep the streak going, maybe I'll be a bit easier on myself, but then again, maybe not. lol If you missed the live show it is still available on demand, but in video format and audio format, so please do check it out! ### Windows Server: Extend expired Evaluation Period URL: https://www.techielass.com/windows-server-extend-expired-evaluation-period/ Last updated: 2024-01-15T13:32:20.000Z Have you ever used an evaluation license within Windows Server and had it expire on you just before you have finished your project? Yip, I think we've all hit that snag every so often. In this blog post, I want to cover how you extend the Windows evaluation period for the server. ## Windows Server 2016/2019/2022 To reactivate your trial license, you need to open a command prompt; this can be something like Command Prompt or [PowerShell](https://www.techielass.com/tag/powershell). The Software Licensing Management Tool (SLMGR) tool is the one you want to invoke. There are a lot of switches with this tool. The ones we are concerned with are: ```PowerShell slmgr.vbs -dlv ``` ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/dlvcommand.PNG) SLMGR verbose information This command displays the current license information with activation information as well. It's a pretty helpful command and provides a great deal of information. The second command is the one that rearms the license: ```PowerShell slmgr.vbs -rearm ``` ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/rearm.PNG) SLMGR rearm Be sure to **reboot** the server after this command to initiate the changes. Once you have done that, you can again use the **slmgr.vbs -dlv** command to check the licensing status and how many rearms you have left. This syntax will work on older versions of Windows Server as well. ## ### 2 Year Giveaway! URL: https://www.techielass.com/2-year-giveaway/ Last updated: 2022-12-01T18:27:54.000Z On Friday the 13th August it will be two year's since I started doing a [Weekly Update](https://www.youtube.com/playlist?list=PLbjernQTVXitYGv7gWIRNqeWBFyVZJOBk&ref=techielass.com) video on [YouTube](https://www.youtube.com/techielass?ref=techielass.com). I started doing these weekly updates so I could become more familiar with speaking to the camera and also learn more about sound and editing and the likes. It doesn't feel like two years have passed, it's definitely been a journey and I'm grateful to all of those that have watched, encouraged and supported me throughout this journey. My 2 year anniversary update is going to be a live one and there is going to be a GIVEAWAY during the live show! This giveaway is entirely sponsored by myself and is not endorsed by YouTube or Microsoft. I'll be paying for this prize and shipping to the recipient myself. The prize that you could win during the show is a [Lego Millennium Falcon™ Microfighter](https://www.lego.com/en-gb/product/millennium-falcon-microfighter-75295?ref=techielass.com). ![Millennium Falcon Microfighter](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/08/giveaway.PNG) Millennium Falcon Microfighter To get involved you need to be on the show live and leave a comment. The show is planned for **2pm UK time on the 13th August**. For other time zones that is: - 9am Eastern Time - 6am Pacific Time - 3pm Central European Summer Time Set your reminder on [YouTube](https://youtu.be/U17s8sdzFqU?ref=techielass.com) or [add this calendar entry to your calendar](https://techielass.azureedge.net/icsfiles/weeklyupdate104.ics?ref=techielass.com) I hope I see you there! ### Automatic virtual machine activation URL: https://www.techielass.com/automatic-virtual-machine-activation/ Last updated: 2024-11-26T14:42:27.000Z [Automatic virtual machine activation](https://docs.microsoft.com/en-gb/windows-server/get-started-19/vm-activation-19?WT.mc%5Fid=modinfra-35336-salean&ref=techielass.com) (AVMA) was released in in Windows Server 2012 R2\. It's a great feature that allows you to input your server license keys into the host and then subsequently all your virtual machines inherit that key, meaning you don't have to manage individual server licenses or activations. Microsoft recently announced that this feature is now available within your [Azure Stack HCI](https://www.techielass.com/azure-stack-hci-the-best-of-the-cloud-and-on-premises/) hosts. ### Requirements You should be running Hyper-V on Windows Server 2019 Datacenter, Windows Server 2016 Datacenter, or Windows Server 2012 R2 or Azure Local (previously named Azure Stack HCI). You can use AVMA through PowerShell on a Hyper-V server, but with Azure Local (previously named Azure Stack HCI) you have the option to use it via PowerShell and Windows Admin Centre, as long as you have the [June 2021 cumulative update](https://www.catalog.update.microsoft.com/Search.aspx?q=KB5003643&ref=techielass.com) installed. ### AVMA with PowerShell You can enter the key through this simple elevated PowerShell command: ```PowerShell slmgr /ipk ``` You can find the AVMA keys that you need to enter [here](https://docs.microsoft.com/windows-server/get-started-19/vm-activation-19?WT.mc%5Fid=modinfra-35336-salean&ref=techielass.com#avma-keys). *(Obviously you need to have purchased the right licenses to be able to use these ultimately.* 😉*)* ### AVMA with Windows Admin Centre With the June 2021 cumulative update you now have the ability to apply the key through [Windows Admin Centre](https://docs.microsoft.com/windows-server/manage/windows-admin-center/overview?WT.mc%5Fid=modinfra-35336-salean&ref=techielass.com) on your Azure Local (previously named Azure Stack HCI) cluster. This can be found within the Settings blade of your Windows Admin Centre. ![Azure Stack HCI Windows Admin Centre key activation](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/azurestackhci-1-automatic-vm-activation.png) Azure Stack HCI Windows Admin Centre key activation ### Give a whirl and let me know what you think! ### Weekly Update #103 - Azure General Availability news and UK Tech News! URL: https://www.techielass.com/weekly-update-103/ Last updated: 2023-12-06T08:29:49.000Z Another week, and another live stream! This week I focussed of a variety of news during my weekly update. We saw the announcements of 250 million monthly active users using Microsoft Teams this week and we also saw a rise in GPS equipment being stolen from farms here in the UK leading to a lot of losses and difficulties. I also covered off two [generally available](https://www.techielass.com/service-lifecycle/) news announcements from Microsoft Azure teams as well. Join me in the video version of the show: Or you can join me on the audio podcast here: More information on the news I covered: - [Software inventory and agentless dependency analysis generally available with Azure Migrate](https://azure.microsoft.com/updates/software-inventory-and-agentless-dependency-analysis-generally-available-with-azure-migrate/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [General availability: Azure Backup now supports Archive Tier for backups of SQL Server in Azure VMs](https://azure.microsoft.com/updates/general-availability-azure-backup-now-supports-archive-tier-for-backups-of-sql-server-in-azure-vms/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) ### Silence those Microsoft Teams notifications! URL: https://www.techielass.com/silence-those-microsoft-teams-notifications/ Last updated: 2021-08-05T07:21:59.000Z A while back I wrote an article about [Windows 10 Focus Assist](https://www.techielass.com/focus-assist/) and how you can configure it to avoid being distracted throughout the day with notifications. However, Microsoft Teams doesn't conform to those settings and still continues to pop up it's notifications. But I am here to tell you that you can silence those notifications with a quick change in settings! 👍 ### Settings The first thing to do is open up your Microsoft Teams client. Up in the right hand corner you will see a three dot menu option, near your profile picture. If you click on this you will see the Settings option. When you click on that it will open up a window with a lot of things you can customise within Microsoft Teams. Click on the Notifications blade down the left hand side. Near the top you will see an option called **Notification Style,** this will most likely be set to Teams built-in. You want to set this to Windows. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/06/teamsnotifications.PNG) Microsoft Teams notifications settings Once you've changed the notifications setting you can close the settings window. Now Microsoft Teams will respect whatever setting you have configured within [Focus Assist](https://www.techielass.com/focus-assist/). So you'll either get notifications or no notifications. 😉 Enjoy! ### Level your volume! URL: https://www.techielass.com/level-your-volume/ Last updated: 2021-08-03T11:41:00.000Z One thing that I've found bugs me when listening to podcasts or videos is when the audio levels aren't level. The creator's voice is at a low level, so you turn up your volume then their intro music or music during the video is high and your eardrums are completely burst with the sudden high volume. As a creator you can help to avoid with within your post production steps. I use Adobe Premiere Pro for my video editing and I have used Adobe Audition for audio editing. What I want to do is show you how to normalise your volume levels within Adobe Premiere Pro, DaVinci Resolve 17 and Camtasia which I think covers off the most popular software that people use. However, if you don't use any of these then I'm sure what you do use has the capability to level your volume out so do have a look. 👌 ### LUFS LUFS is the Loudness Units Full Scale. This is what you will see referenced when people talk about levelling off your podcast and video sound. I've found the setting that works for me. If you want to learn more about LUFS check out these great articles: - [Mastering Audio for Soundcloud, iTunes, Spotify, Amazon Music and YouTube](https://www.masteringthemix.com/blogs/learn/76296773-mastering-audio-for-soundcloud-itunes-spotify-and-youtube?currency=GBP&ref=techielass.com) - [What Is LUFS, and Why Should I Care?](https://www.sweetwater.com/insync/what-is-lufs-and-why-should-i-care/?ref=techielass.com) - [How to do loudness: the LUFS and LKFS FAQ for podcasters](https://podnews.net/article/lufs-lkfs-for-podcasters?ref=techielass.com) ### Camtasia *Instructions created in version 2021.4* Camtasia doesn't give you great control over the audio levels in my opinion. They seem to use their own settings and standards which I find a bit confusing. By default on any Camtasia project that you start up there is an "Auto Normalise loudness" setting. You can find this under Edit > Preferences > Advanced. This setting will try and normalise your loudness levels to -18 LUFS. One option within Camtasia is to use the Audio Effects > Audio Compression setting and play with the settings there but it's definitely not a perfect place to do it. ### Adobe Premiere Pro When it comes time to **export** your project there are a lot of options and one of them is to normalise the volume levels. Scroll down your options within the Effects tab and look for **Loudness Normalisation*.* ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/premierevolume.PNG) Adobe Premiere Pro Loudness Normalization There are a few options available in terms of Loudness Standard, I use [ITU BS.1770-3](https://en.wikipedia.org/wiki/LKFS?ref=techielass.com) and set my Target Loudness to -16 LUFS. Which seems to be the standard that a lot of people use and I believe it's what Apple Podcasts recommend. You can play around with the LUFS level you want. Try editing your videos or audio files with different levels and play them on different devices to get a level you are happy with. ### DaVinci Resolve 17 When you are in the Timeline of your edit if you right click on your audio track within the menu option you will get an option called **Normalise Audio Levels** ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/davinci.png) Normalise Audio Levels When you click on this option you'll be given an option to set the level, you'll have a couple of standards you can use and your target level and loudness. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/davinci2.png) Normalising Audio Levels ### Trial and Error One thing I would caution is to test out the settings on your own audio and make sure the settings I have suggested aren't going to cut out audio or cause it to be worse than before. But hopefully the tips above have helped. ### Weekly Update #102 URL: https://www.techielass.com/weekly-update-102/ Last updated: 2021-07-30T13:37:21.000Z I started my weekly update YouTube videos nearly two years ago, which seems like almost a lifetime ago. As we approach the two year anniversary what I want to do is a number of livestream events. So make sure you are [subscribe and sign up for notifications of my YouTube channel](https://www.youtube.com/techielass/?sub%5Fconfirmation=1&ref=techielass.com) so you get pinged when I am live and can join me. 😉 Weekly Update 102 YouTube video In this week's update I covered off the following Azure news stories: - [Azure Virtual Desktop Start Virtual Machine on Connect](https://docs.microsoft.com/azure/virtual-desktop/start-virtual-machine-connect?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Site Recovery update rollup 56 is now generally available](https://azure.microsoft.com/updates/azure-site-recovery-update-rollup-56-is-now-generally-available-july-2021/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure ExpressRoute: 3 New Peering Locations Available](https://azure.microsoft.com/updates/newerlocations/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) Hopefully catch you on one of the live streams and don't miss out on the 104 edition, I have a giveaway to run that day! 😉 ### Test your Windows Package Manager manifests with Windows Sandbox URL: https://www.techielass.com/test-your-windows-package-manager-manifests-with-windows-sandbox/ Last updated: 2022-06-16T15:09:00.000Z The other week I wrote about contributing to [Windows Package Manager and creating manifests to help build up the repository of software that could be installed via it](https://techcommunity.microsoft.com/t5/itops-talk-blog/contribute-to-windows-package-manager/ba-p/2439406?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com). I talked about part of the process being that you should test your manifest before submitting it to the repository for review. I want to talk a bit more about that and how you can take advantage of Windows Sandbox to test your manifests. ### Windows Sandbox Windows Sandbox is a Hyper-V piece of technology that allows you to spin up an isolated, temporary desktop environment you can run tests on, demos on or use if you are unsure about a bit of software. You can spin up a Windows Sandbox environment and when you close that Sandbox all the software with all it's files and state are permanently deleted. If you haven't already tried it out, check out my blog post on [installing it](https://www.techielass.com/install-windows-sandbox/). ### Windows Package Manager and Windows Sandbox When you launch the Windows Sandbox, it comes up the minimal installed on it. So if you want to use anything within it you need install it and build up that environment. The Windows Package Manager team have put together a handy [PowerShell script](https://github.com/microsoft/winget-pkgs/blob/master/Tools/SandboxTest.ps1?ref=techielass.com) that spins up a Windows Sandbox session with Windows Package Manager already installed so you can get started with your testing straight away. To make use of this script you first need to have Windows Sandbox installed and then you take a copy of the [script](https://github.com/microsoft/winget-pkgs/blob/master/Tools/SandboxTest.ps1?ref=techielass.com) and run it within a PowerShell session. ![Windows Sandbox with Windows Package Manager install setup](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/wingetsandboxinstall.PNG) Windows Sandbox with Windows Package Manager install setup The script will check that you have Windows Sandbox installed and if you don't then it will stop running. It will also check you don't already have any Windows Sandbox sessions open and if it does find one it will close it. It will then start to download Windows Package Manager in the background and start to create the Window Sandbox configuration file and then finally launch that Window Sandbox session. This should only take a few moments. ![Windows Sandbox session with Windows Package Manager installed](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/wingetsandbox.PNG) Windows Sandbox session with Windows Package Manager installed ### Now what? You now have a test environment where you can test your Windows Package Manager Manifest files work as you want them without destroying your own machine. And if something goes wrong within the Sandbox you can easily close it off, and then start again with a fresh session. Let me know how you get on with Windows Package Manager and Windows Sandbox. And I'd love to hear other use cases for the Windows Sandbox. 👍 ## Learn more! If you want to learn more about Windows Package Manager and see a complete overview of it's features, be sure to check out the [Microsoft Learn module - Explore the Windows Package Manager Tool](https://docs.microsoft.com/learn/modules/explore-windows-package-manager-tool/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com). ### Keep your software up to date with Windows Package Manager URL: https://www.techielass.com/keep-your-software-up-to-date-with-windows-package-manager/ Last updated: 2022-03-02T18:31:32.000Z [Windows Package Manager](https://docs.microsoft.com/windows/package-manager/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) can help you manage the software you need installed and uninstalled on your machine. It's quite a handy tool and one of it's benefits is that it can be used to help update or upgrade the software you have installed, quickly and easily. Some bits of software we have installed on our machines will automatically update itself or prompt up when we open it to check for the latest version and get that installed but what about if you wanted to check everything was updated and at it's latest version? This is where Windows Package Manager can help. There is a command built into the tool that can help check the software on your machine and find the latest version of it and get that installed for you. ### What's the command? So what is this fantastic command I hear you ask? Well it's ```bash winget upgrade ``` ### How do I use it? There are a couple of ways you can use this command. If you run ```bash winget upgrade --all ``` It will run through all the software installed on your machine and it if has information about it within it's [repository ](https://github.com/microsoft/winget-pkgs?ref=techielass.com)it will check for the latest version and get that installed for you. Which is a great way of getting your software up to date quickly and in one go, this is a command I like to use if I've maybe been off for a couple of weeks and not had my machine on for a while. If you know a piece of software has had an update and you want that updated and only that you can use the following command as an example: ```bash winget upgrade --id Microsoft.Bicep ``` ![Windows Package Manager upgrade specific package](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/winget-update.PNG) Windows Package Manager upgrade specific package So using the ID of the software, to check the ID of a piece of software you can use the ***winget search***. And the last example I want to show you is if you want to update to a specific version. Maybe you have a requirement to be on a certain version and nothing below or above that you can do that as well, you can use Windows Package Manager to be specific about that. ```bash winget upgrade --id Microsoft.Bicep --version 0.4.1 ``` ![Windows Package Manager update version](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/winget-update-version.PNG) Windows Package Manager update version ### Give it a go and let me know what you think of using Windows Package Manager to update your software! ## Learn more! If you want to learn more about Windows Package Manager and see a complete overview of it's features, be sure to check out the [Microsoft Learn module - Explore the Windows Package Manager Tool](https://docs.microsoft.com/learn/modules/explore-windows-package-manager-tool/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com). ### Monitor SSL Certificates with Azure Monitor URL: https://www.techielass.com/monitor-ssl-certificates-with-azure-monitor/ Last updated: 2025-05-25T18:42:36.000Z We've all been in the situation where an SSL certificate on a website has expired and we've completely forgot to renew it. Sometimes it can have massive implications on businesses and cause some reputational damage so it's definitely an event that we would love to avoid. Until now you've probably had to put some calendar event reminders in your team's diaries or do some kind of custom monitoring solution. 💡 This article and video were written in July 2021, at the time the service was in preview. This is now a [generally available](https://www.techielass.com/service-lifecycle/) feature and as such charges may occur when you use it. Within [Azure Monitor](https://www.techielass.com/tag/azure-monitor) Application Insights there is now a new type of availability test, a ["standard test"](https://azure.microsoft.com/updates/public-preview-new-application-insights-standard-test-for-synthetic-monitoring/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). This standard test can help you check your SSL certificates expiry date and alert you if it's due to expire in the time period that you have set. I've put together a tutorial of how to set this up in video format, which you can view below: Monitor SSL Certificates with Azure Monitor This is currently a preview feature, so it's free to use at present, but the team advise that there will be an associated cost per configured test execution once it becomes generally available. So one to be mindful of while using it currently and planning for it in the future. Do let me know if you use this feature and how you find it. ### Weekly Update #101 - Azure news and Ubiquiti URL: https://www.techielass.com/weekly-update-101/ Last updated: 2021-07-23T16:00:00.000Z Hello folks! Here we are at another Friday, so that means one thing a news catch up. It's been fairly quiet week with Azure announcements, but there were a few bits I wanted to touch on and also some new Ubiquiti announcements I wanted to highlight as well. Come and join me, and if there is any news I missed this week leave me a comment and let me know about it! - [Azure VMware Solution available in new regions](https://azure.microsoft.com/global-infrastructure/services/?products=azure-vmware®ions=all&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Firewall Premium now generally available](https://azure.microsoft.com/updates/announcing-the-azure-firewall-premium-general-availability/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [New Ubiquiti Dream Machine Pro with PoE](https://www.youtube.com/watch?v=Oja-PE0fFew&ref=techielass.com) ### Install Windows Sandbox URL: https://www.techielass.com/install-windows-sandbox/ Last updated: 2021-12-13T20:11:12.000Z Back with Windows 10 (1903) the team introduced a new feature called Windows Sandbox. Windows Sandbox is a Hyper-V piece of technology that allows you to spin up an isolated, temporary desktop environment you can run tests on, demos on or use if you are unsure about a bit of software. You can spin up a Windows Sandbox environment and when you close that Sandbox all the software with all it's files and state are permanently deleted. ### Prerequisites There are some prerequisites you need to meet before you can start to use Windows Sandbox: - Windows 10 Pro, Enterprise or Education build 18305 or later (*Windows Sandbox is currently not supported on Home SKUs*) - AMD64 architecture - Virtualization capabilities enabled in BIOS - At least 4 GB of RAM (8 GB recommended) - At least 1 GB of free disk space (SSD recommended) - At least two CPU cores (four cores with hyperthreading recommended) ### Installation There are two ways to install the Windows Sandbox (once you've met the above prerequisites). You can click on your Windows key and search for Turn Windows Features on or Off and select Windows Sandbox from that list. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/windowsandbox.PNG) Enable Windows Sandbox The second option is to use the PowerShell command: ```PowerShell Enable-WindowsOptionalFeature -FeatureName "Containers-DisposableClientVM" -Online ``` Your machine might need a reboot to finish off the installation. ### Start using the Sandbox Now that Windows Sandbox is installed you can launch it from your Windows menu just by searching for Sandbox. By default it will spin up a default image, however there are probably times you would like to be able to spin up a customised environment with some tools already preinstalled or with access to some local files on your physical machine. There are a lot of settings you can control with a configuration file. | Setting | Why | | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | vGPU (virtualized GPU) | Enable or disable the virtualized GPU. | | Networking | Enable or disable network access within the sandbox. | | Mapped folders | Share folders from the host with read or write permissions. Note that exposing host directories may allow malicious software to affect the system or steal data. | | Logon command | A command that's executed when Windows Sandbox starts. | | Audio input | Shares the host's microphone input into the sandbox. | | Video input | Shares the host's webcam input into the sandbox. | | Protected client | Places increased security settings on the RDP session to the sandbox. | | Printer redirection | Shares printers from the host into the sandbox. | | Clipboard redirection | Shares the host clipboard with the sandbox so that text and files can be pasted back and forth. | | Memory in MB | The amount of memory, in megabytes, to assign to the sandbox. | The Configuration Files are .wsb files, that are fairly straightforward to configure, you could get complex with them depending on your needs. There are several examples on the [Official Documentation](https://docs.microsoft.com/windows/security/threat-protection/windows-sandbox/windows-sandbox-configure-using-wsb-file?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com#example-1) that you can use to refer to and copy. Also check out my video where I talk more about Windows Sandbox: ### I'd love to hear how you are using Windows Sandbox, so please do leave a comment or question below! ### Install PowerShell 7 with Windows Package Manager URL: https://www.techielass.com/install-powershell-7-with-windows-package-manager/ Last updated: 2022-01-07T11:36:01.000Z I recently noticed that on my machine I was on an older version of PowerShell and not taking advantage of [PowerShell 7](https://docs.microsoft.com/powershell/scripting/whats-new/what-s-new-in-powershell-70?view=powershell-7.1&WT.mc%5Fid=modinfra-33034-salean&ref=techielass.com) and I wanted to make sure I was using the latest version. And since I am a big fan of [Windows Package Manager](https://docs.microsoft.com/windows/package-manager/?WT.mc%5Fid=modinfra-33034-salean&ref=techielass.com) at the moment I wanted to see if I could update my PowerShell version with that. 👍 ### Install PowerShell 7 So I fired up my Windows Terminal console and typed in *winget search powershell* To see if there was anything available for me to install via the Windows Package manager and I was in luck! ![PowerShell options within Windows Package Manager](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/10/wingetpowershell.PNG) PowerShell options within Windows Package Manager To install the latest version of PowerShell I typed *winget install --id microsoft.powershell* And after a few minutes the latest version of PowerShell was installed on my machine! 🎉 ### Using PowerShell 7 in Windows Terminal Now Windows Terminal is my go to these days for all commands, I have it set up and [customised ](https://www.techielass.com/customise-windows-terminal/)how I like with PowerShell, Azure CLI, Linux and just plain old command line. I wanted to make sure I could use this shiny new version of PowerShell 7 inside Windows Terminal. To my surprise it was already added into my profiles within Windows Terminal! This was done automatically as I had opened the new PowerShell 7 application on my machine and Windows Terminal had detected it! 😊 However, I did tweak my profile so that PowerShell 7 was the default window that loaded when I loaded Windows Terminal! Below is a short video showing the process that I took. ![Installing PowerShell 7 with Windows Package Manager](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/06/upgradepowershell-1.gif) Installing PowerShell 7 with Windows Package Manager ### Weekly Update #100 - A milestone URL: https://www.techielass.com/weekly-update-100/ Last updated: 2021-07-18T13:00:00.000Z When I started my weekly update videos it was for me, for only me. To learn how to speak to the camera, to learn how to edit and shoot footage. I realised it was becoming part of how I could progress my career. I never imagined I'd receive the support I do and never imagined I would reach the milestone of 100 videos! For my 100th video I went "on location" and did a live stream from one of my favourite places, the banks of the River Clyde in the heart of Glasgow. I'm not sure the picture or audio quality were completely up to scratch (who said 5G phone signal is great!) but I hope you enjoy seeing a different backdrop and hearing about the latest news in the Microsoft and Azure world! ### What is Hybrid Cloud and Why? URL: https://www.techielass.com/what-is-hybrid-cloud-and-why/ Last updated: 2022-12-12T15:47:22.000Z We hear a lot talk about Hybrid Cloud, people mention it as transition stage before moving all your resources into a cloud provider's datacentre, we hear it mentioned as the answer to all your IT needs, as a solution but what is it and why is it something you should know about? Gartner define Hybrid Cloud as: > *“…Hybrid cloud computing refers to policy-based and coordinated service provisioning, use and management across a mixture of internal and external cloud services…”* For me that can be simplified down to three words, **It's a Strategy.** It's a strategy that allows businesses and organisations to address their technology needs and problems, while taking advantage of both the private cloud services they have and the new public cloud opportunities. Every business or organisations hybrid strategy and implementation will be different depending on the size of their organisation, their motivations or the applications they support and need to operate their business. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/06/pexels-field-engineer-442150.jpg) Photo by **[Field Engineer](https://www.pexels.com/@field-engineer-147254?utm%5Fcontent=attributionCopyText&utm%5Fmedium=referral&utm%5Fsource=pexels)** from **[Pexels](https://www.pexels.com/photo/man-connection-utp-cables-on-switch-hub-inside-room-442150/?utm%5Fcontent=attributionCopyText&utm%5Fmedium=referral&utm%5Fsource=pexels)** ### Why Hybrid? Hybrid has a lot of benefits, as I said it can take advantage of both private and public cloud services. If we look at the benefits of having your own *private cloud/datacentre*: Over the years organisations have made **investments** in their own datacentres, throwing all that away is hard and costly. I'd say if you have really old hardware that is out of warranty etc, then that is an ideal candidate to change but if you've newer bits of kit then why get rid of them before the end of their life cycle? Look to leverage the good investments you've made. **Staff knowledge** is also something that has been invested in and again throwing all that away isn’t something to be done lightly. The years of experience and training that has went into staff is something you want to continue to leverage and take advantage of. And another benefit of keeping some applications on-prem is **compliance**, some organisations need to store or retain their data in certain location for compliance or regulatory needs. Doing that in a datacentre you can physically touch or have sole control over is very attractive and makes those compliance needs “easy” to match. But using *public cloud* services brings you flexibility, things can happen a lot quicker than traditionally they can on-prem. Hardware lead times can take a long time (I recently ordered a small server for a home project which should have taken 3 weeks to be delivered but is now sitting with a 3 month lead time). I can spin up a server in the public cloud in a matter of minutes. I can also spin up or down depending on needs and business needs really quickly and easily in public cloud offerings. It's not as easy to do so in a private cloud world. For me **costs** within the cloud are also simplified from a IT point of view. You have full visibility of what it's costs for your solutions to run. You can have more control over that budget, by doing things like turning services off out of hours or at weekends. And lastly you having a public cloud provider as part of your IT strategy means to you start to take advantage of the **new technology** that is constantly coming on line. You can test those new features to see if they can help you or would fit within your strategy very quickly. And start to use them or not, depending on your findings. And doing that shouldn't take a long lead time or a lot of investment. So in theory you can innovate and experiment a lot quicker and cheaper than in the past. ### Summary Hybrid is something a lot of organisations are starting to rely on for their IT departments, I think a recently Gartner survey said that over 90% of enterprise are relying on a Hybrid cloud scenario. It can be great for a lot of organisations and their IT departments and businesses, however it isn't right for everyone and correct research and evaluation should be done to understand if it's the right option and strategy for your organisation. ### Enterprise-Scale Landing Zone Community Call URL: https://www.techielass.com/enterprise-scale-landing-zone-community-call/ Last updated: 2021-07-14T07:18:59.000Z The team behind the [Enterprise-Scale Landing Zones](https://github.com/Azure/Enterprise-Scale?ref=techielass.com) are holding a community call where they will be share the latest news and answering your questions! The call is happening on the **25th August at 18:00 Central European Time (CET).** ### Get involved The team are encouraging anyone with a question to add it to the list [here on GitHub](https://github.com/Azure/Enterprise-Scale/issues/668?ref=techielass.com). Even if you don't have a specific question to ask, do check out the GitHub issue and take a minute to read the questions others have and look to upvote those questions. That will help tell the team what topics are of greatest interest to the community. 👍 ### Register to attend The community call is free to attend and will be held on Microsoft Teams using the new Live event capabilities. You can register to attend and get the information to join [here](https://teams.microsoft.com/registration/v4j5cvGGr0GRqy180BHbRw,icr4yhic5kOSajOG-9uq8Q,T%5FCNz3GFh0O73ifHyEXZow,a%5FDpeHYhs0SpQmgNVZnh%5FA,0nC2fvuk2kq5vtMPFqmqCg,8G46eio6Bk6-cBKIemljog?mode=read&tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47&ref=techielass.com). Do register and join the team on this community call. I've done a lot of work with the team behind the Enterprise-Scale Landing Zone's recently and they are all great folks. They are always more than happy to help share their knowledge or listen to feedback so I suspect this will be a great call to join in! ### PowerShell autocomplete and Windows Package Manager URL: https://www.techielass.com/windows-package-manager-command-line-tab-completion/ Last updated: 2022-01-07T11:36:33.000Z Autocomplete is something we all like, right? Helps with those moments when we can't quite remember the syntax for a command or where we're learning something new and need some help. I know I've had plenty of those moments. 🤣 I've been really enjoying learning about Windows Package Manager lately and realised the team have pulled together a PowerShell function using **[Register-ArgumentCompleter](https://docs.microsoft.com/powershell/module/microsoft.powershell.core/register-argumentcompleter?view=powershell-7.1&WT.mc%5Fid=modinfra-34190-salean&ref=techielass.com).** ### Setup Completion To make use of the auto completion functionality we need to configure our PowerShell environment first. You can either run the command to use it within your current session or you can configure your PowerShell Profile to load it every time you use PowerShell. To modify my profile I type in the command ```bash notepad $PROFILE ``` This will launch a notepad editor opening my PowerShell profile file. In this file I want to add the [PowerShell Command:](https://github.com/microsoft/winget-cli/blob/master/doc/Completion.md?ref=techielass.com#powershell) ```PowerShell Register-ArgumentCompleter -Native -CommandName winget -ScriptBlock { param($wordToComplete, $commandAst, $cursorPosition) [Console]::InputEncoding = [Console]::OutputEncoding = $OutputEncoding = [System.Text.Utf8Encoding]::new() $Local:word = $wordToComplete.Replace('"', '""') $Local:ast = $commandAst.ToString().Replace('"', '""') winget complete --word="$Local:word" --commandline "$Local:ast" --position $cursorPosition | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) } } ``` I save the file and close it. ![Configure PowerShell profile](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/powershellprofile.PNG) Configure PowerShell profile ### Using Completion with Windows Package Manager Now that we have the completion settings configured let's start to use it with Windows Package Manager! If we start to type the command to trigger Windows Package Manager we can start to use the tab key to complete the command line we need. So we start by typing **winget** then we can tab. **Install** is the first command so we will see that, which is the one we want in this example. We then want to look for [PowerToys](https://docs.microsoft.com/windows/powertoys/?WT.mc%5Fid=modinfra-34170-salean&ref=techielass.com) so we start typing and find the PowerToys Preview software available to install, by tabbing through the options shown to us. Now we want to look at versions, so we can start to type to find that switch within in the Windows Package Manager syntax. The auto completion helps us find the version switch. We can now hit tab and it will show us all the versions of PowerToys Preview that is available to install. You can see this in action below: ![WinGet in action](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/autocomplete.gif) WinGet in action Or it would look like this in terms of inputs into the keyboard: | Input | Result | | | | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | --------------------- | ------------------------------------ | | winget ⇥ | winget install | | winget install power⇥ | winget install "PowerToys (Preview)" | | winget install "PowerToys (Preview)" --⇥ | winget install "PowerToys (Preview)" --version | | | | | winget install "PowerToys (Preview)" --version⇥ | winget install "PowerToys (Preview)" --version 0.41.4 | | | | | Give it a go and let me know how you get on with it! 👌Learn more!If you want to learn more about Windows Package Manager and see a complete overview of it's features, be sure to check out the Microsoft Learn module - Explore the Windows Package Manager Tool. | | | | | ### Get started with Windows Package Manager URL: https://www.techielass.com/get-started-with-windows-package-manager/ Last updated: 2021-10-14T19:06:38.000Z Version 1 of Windows Package Manager was launched earlier this year at Microsoft Build, and I've been spending a lot of time getting to know how it works and what it's capabilities are. If you've missed out on the blogs I've created here's a list of them below: - [Install Windows Package Manager](https://www.techielass.com/how-to-install-winget-windows-package-manager/) - [Install software with Windows Package Manager](https://www.techielass.com/installing-software-with-windows-package-manager/) - [Configure your Windows Package Manager Settings](https://www.techielass.com/configure-windows-package-manager-settings/) - [Contribute to the Windows Package Manager Software Repository](https://techcommunity.microsoft.com/t5/itops-talk-blog/contribute-to-windows-package-manager/ba-p/2439406?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Windows Package Manager can help you export and import a collection of software! ](https://techcommunity.microsoft.com/t5/itops-talk-blog/windows-package-manager-can-help-you-export-and-import-a/ba-p/2515328?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Using PowerShell auto-complete to help you find the right Windows Package Manager command/switch](https://www.techielass.com/windows-package-manager-command-line-tab-completion) - [Keep your software up to date with Windows Package Manager](https://www.techielass.com/keep-your-software-up-to-date-with-windows-package-manager) - [Test your Windows Package Manager manifests with Windows Sandbox](https://www.techielass.com/test-your-windows-package-manager-manifests-with-windows-sandbox) - [RunAsRadio: Windows Package Manager](https://www.techielass.com/runasradio-windows-package-manager) - [Install software to a different location using Windows Package Manager](https://www.techielass.com/install-software-to-a-different-location-using-windows-package-manager) - [Install SysInternals with Windows Package Manager](https://www.techielass.com/install-sysinternals-with-windows-package-manager/) Please do check them out and let me know your thoughts on Windows Package Manager! 😊 ### Weekly Update #99 - Windows Server, Azure Security Centre, App Service Environment & much more URL: https://www.techielass.com/weekly-update-99/ Last updated: 2023-12-06T08:29:18.000Z This week seems like a quiet week in terms of news, but there is some interesting things happening. - [App Service Environment v3 now generally available](https://azure.microsoft.com/updates/app-service-environment-v3-now-generally-available/?WT.mc%5Fid=modinfra-34816-salean&ref=techielass.com) - [Public preview of OWASP ModSecurity Core Rule Set 3.2 for Azure Web Application Firewall](https://azure.microsoft.com/updates/public-preview-of-owasp-core-rule-set-32-for-azure-web-application-firewall/?WT.mc%5Fid=modinfra-34816-salean&ref=techielass.com) - [Prefix for Kubernetes alerts changed from "AKS\_" to "K8S\_"](https://docs.microsoft.com/azure/security-center/release-notes?WT.mc%5Fid=modinfra-34816-salean&ref=techielass.com#prefix-for-kubernetes-alerts-changed-from-aks%5F-to-k8s%5F) - [Windows Server 2022 Datacenter: Azure Edition *Core* Public Preview image & Windows Server 2022 Datacenter: Azure Edition (with *Desktop Experience)* image is now up in the Azure Gallery for all regions](https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Faka.ms%2FAutomanageWSAE&data=04%7C01%7CSarah.Lean%40microsoft.com%7C852645ec604147b7b1b008d9416898fd%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637612739774466461%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=G61pqM2JkPz12hO%2B5VWcqy3ITSRXbgc41PDvj4uI7nc%3D&reserved=0&ref=techielass.com) ### Let me know what has most excited you this week in the news! ### Install Windows Terminal with Windows Package Manager URL: https://www.techielass.com/install-windows-terminal-with-windows-package-manager/ Last updated: 2023-03-03T08:15:09.000Z [Windows Terminal ](https://docs.microsoft.com/windows/terminal/?WT.mc%5Fid=modinfra-32887-salean&ref=techielass.com)went generally available in May 2020, and since then, I've seen a lot of people utilise it as their go-to console for day-to-day use. And I'm one of those people; having a console that offers me the chance to work in PowerShell, Linux or Azure CLI from one window is great. If you haven't already got Windows Terminal installed on your machine, I'd highly recommend you do, and here's my guide to installing it via [Windows Package Manager](https://docs.microsoft.com/windows/package-manager/?WT.mc%5Fid=modinfra-32887-salean&ref=techielass.com). 😉 ### Install Windows Package Manager The first thing you need to ensure you have on your system is Windows Package manager; it's straightforward to install on your Windows 10 machine. Head over to [https://github.com/microsoft/winget-cli/releases](https://github.com/microsoft/winget-cli/releases?ref=techielass.com), and download the latest .appxbundle file,[.appxbundle](https://github.com/microsoft/winget-cli/releases/download/v1.0.11451/Microsoft.DesktopAppInstaller%5F8wekyb3d8bbwe.appxbundle?ref=techielass.com) file and install that on your device. Below is a quick video of the process. ![Installing Windows Package Manager](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/06/wingetinstalljune2021.gif) Installing Windows Package Manager ### Install Windows Terminal Now that we have Windows Package Manager installed, we want to look at installing Windows Terminal. To do that, we need to open up a PowerShell window and then issue the command: ```bash winget search Terminal ``` This will enable the Windows Package Manager to search for all the software in its repository with the word Terminal in its name or metadata. We should get a list of options back. ![Windows Package Manager in action](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/06/installwindowsterminal.png) Windows Package Manager in action We are looking to install the stable version, but you can see that the Preview version is also available. To install the stable version, we need to issue the following command: ```bash winget install Microsoft.WindowsTerminal ``` After a few moments, the software will be installed, and we can start using Windows Terminal and [customising ](https://www.techielass.com/customise-windows-terminal/)it! ### Tips for using Azure Static Web Apps URL: https://www.techielass.com/tips-for-using-azure-static-web-apps/ Last updated: 2021-07-07T17:22:55.000Z I've recently converted two of my websites to [Azure Static Web Apps](https://docs.microsoft.com/azure/static-web-apps/?WT.mc%5Fid=modinfra-30818-salean&ref=techielass.com) and had a lot of fun not only learning how to use Hugo as the platform for these sites but also learning how easy and quick it is to get an Azure Static Web App set up and configured. I wanted to share some tips and things I've noticed during these deployments to help you all out. 😊 ### Storage With Azure Static Web Apps you have a limit to how big the website you are deploying can be. This is no different to Azure Web Apps where you also have a file system storage quota. With the preview version of Azure Static Web Apps you were limited to *100MB* but now with the Generally Available version you have **250MB** of space in the free tier or **500MB** if you are using the Standard (paid) tier. So this is one to watch, there is no view of how much storage you are using within the Azure Portal, you'll need to keep a check of the size on your machine when working on our source files. I have [git-sizer](https://github.com/github/git-sizer/?ref=techielass.com#getting-started) installed on my machine so running *git-sizer --verbose* when working on my files can be a good checker. ### Workflow Azure Static Web Apps when used with GitHub can have only one GitHub Actions Workflow. So be sure to remove any old YAML files created and that might be within your **.github\\workflows** directory. Although they won't necessarily cause any issues GitHub Actions will still try and run those old workflows and it'll cause you an admin headache, easily if they fail and you think it's your production workflow. 😉 ### Just HTML Although Azure Static Web Apps is great for static web building and hosting, it can also handle just good old fashioned HTML websites. You just need to set up the workflow to point to the right locations. If you are using GitHub as your source code repository, your YAML workflow will look like this: ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/07/githubyaml-1.PNG) YAML Configuration Assuming that the root directory of your GitHub repository is the root of the website. There is also a [skip app build](https://docs.microsoft.com/azure/static-web-apps/github-actions-workflow?WT.mc%5Fid=modinfra-30818-salean&ref=techielass.com#skip-building-front-end-app) functionality that you can use if you want full control of the build of your front end app. ### Do let me know how you are getting on with Azure Static Web Apps and what tips you've learned! ### Weekly Update #98 - Azure VPN NAT, Azure Automanage & Azure Azure and Windows 11! URL: https://www.techielass.com/weekly-update-98/ Last updated: 2021-07-02T15:44:59.000Z This week it's a bit quiet on the news front, but this is some awesome stuff happening. So join me in the my update video! ### Summary - [Azure VPN NAT in public preview](https://azure.microsoft.com/updates/vpn-nat-in-public-preview/?WT.mc%5Fid=modinfra-34099-salean&ref=techielass.com) - [Azure Automanage now supports Arc enabled servers](https://azure.microsoft.com/updates/automanage-arc/?WT.mc%5Fid=modinfra-34099-salean&ref=techielass.com) - [Windows 11](https://blogs.windows.com/windowsexperience/2021/06/24/introducing-windows-11/?WT.mc%5Fid=modinfra-34099-salean&ref=techielass.com) ### How to install Hugo on Windows 10 URL: https://www.techielass.com/how-to-install-hugo-on-windows-10/ Last updated: 2024-11-29T09:15:41.000Z So Hugo is one of those things that I've dabbled with, struggled with, cursed at, and celebrated. I am once again diving into the realm of trying to make Hugo create a nice looking website for me once again. So I've had to install it on my system. I wanted to share this quick tutorial of installing Hugo on my Windows 10 machine to start the journey with ya'll. 😊 ## Download the Hugo latest version First thing to do is go and download the latest release of Hugo from their official download area - [Hugo GitHub Releases](https://github.com/gohugoio/hugo/releases?ref=techielass.com). You are looking for the file that is called "hugo\_version\_windows-amd64.zip" With that file now on your machine you need to get Hugo installed... ## Install Hugo Take the zip file that you've just downloaded and extract it, I always extract to C:\\Hugo\\bin ## Environmental Variables We now need to set an environment variable. If you hit the Windows key on your keyboard and then search for environmental variables, the first results should be how to edit your environmental variables. Click on Environmental Variables at the bottom of the dialog box that is open. Click on Path in the top half of the next dialog box and edit that. Now enter the path you extracted Hugo to. In my case this will be C:\\Hugo\\bin. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/05/environmentvariables.png) ## Test Install To test the install open up a PowerShell command shell or a Command Prompt and type in **hugo version** You should get back information on the version that has been installed! You can now go off and use Hugo to build some funky websites! 😉 ### From SysAdmin to Developer Relations! URL: https://www.techielass.com/from-sysadmin-to-developer-relations/ Last updated: 2022-01-06T09:15:13.000Z Over the past few years within the IT industry the rise of Developer Relations or Cloud Advocate roles has increased. The Developer Relations teams act as a link between the products and the users. One thing to note is that the term Developer Relations or DevRel they aren't exclusive to talking to the developer audience. I've made a career within the IT Pro/Sys Admin/Infrastructure side of things and I work within DevRel. There are a lot of audiences within IT and they all need attention. The industry isn't just made up of developers. 😉 If you are someone who wants to help build and develop relationships with users, and ensure their voice is heard then I'd like to share some practical advice that might help you make the transition into DevRel. 👍 ## Practice Public Speaking Changes are your role as a Cloud Advocate will involve public speaking in some form or other. So it's definitely something that you want to invest in and learn about. For me **practice** is key here. Doing it gives you experience and learning opportunities each time. Look for your [local meetups](https://aka.ms/azurefamily?ref=techielass.com) and start there, they are usually very welcoming to new speakers and are usually very friendly communities. The more you do it the more you will feel confident about the process. **Training** and **mentorship** is something that can also help. There are lots of training courses both virtual and in person that can help you learn more about public speaking. Looking to someone who has done a lot of public speaking and asking them to help mentor you, and give you feedback and practical tips. There are a lot of groups that can help identify a mentor, [Speaking Mentors](http://www.speakingmentors.com/?ref=techielass.com) is one. ## Contribute to the community It's crucial to be a part of the community, there are a number of ways you can do this. Being active on **social media** is one way. Social Media has it's negative points but it does have it's advantages as well. Find the hashtags that your community and audience use. Join in conversations, get to know people. 😊 Create **blogs** and **video** content. You can build up your portfolio on both, or just one. But starting to build up your portfolio of tips, tricks, technical solutions you've created/found will not only help you (they can act as your own wee knowledge base), but it can also help to raise your profile. I recently did some panel discussions with some colleagues around [the reasons we blog](https://youtu.be/J5q%5FDZJRpYM?ref=techielass.com) and also one on [video creation](https://youtu.be/8vJriig4x4M?ref=techielass.com). ## Learn about Developer Relations As well as interacting with your audience you also need to think about being a better professional, getting better at your role and being able help grow the Developer Relations org within your company. So learning about it, speaking to your peers can be helpful. I've subscribed to [Developer Avocados Weekly](https://developeravocados.net/?ref=techielass.com) and [DevRel Weekly](https://devrelweekly.com/?ref=techielass.com) newsletters to get a broader insight into other things happening in the community. ## The Big Picture Ultimately Developer Relations. Cloud Advocacy is all about **education**, **community**, **awareness** and **feedback**. And if you focus on those four pillars you'll not go far wrong! 😉 If you are setting up a Developer Relations program, looking to make a career move, or need to do some research to achieve corporate buy-in for Developer Relations department inside your organization, pick up a copy of [***DevRel for Beginners: What to Know and How to get Started***](https://techielass.gumroad.com/l/devrel-for-beginners?ref=techielass.com)***.*** ### Is your PC ready for Windows 11? URL: https://www.techielass.com/is-your-pc-ready-for-windows-11/ Last updated: 2021-07-26T12:07:19.000Z *This information is based on what we know so far and is subject to changes as more information is shared and becomes clear.* There has been a lot of excitement around the announcement of [Windows 11](https://docs.microsoft.com/windows-hardware/get-started/what-s-new-in-windows?WT.mc%5Fid=modinfra-33205-salean&ref=techielass.com) this week. If you missed the announcement, you can find it here on demand: ### TPM Chip Since the announcement social media has been on fire about the requirement of a [TMP chip](https://docs.microsoft.com/windows/security/information-protection/tpm/trusted-platform-module-overview?WT.mc%5Fid=modinfra-33205-salean&ref=techielass.com) to run Windows 11\. The Trusted Platform Module (TPM) technology is there to provide hardware based security related functions. I believe almost every CPU in the last 5-7 years has a TPM. However if like me you are not 100% convinced on this there are a few things you can check. 👍 Microsoft have put together a list of supported processors: - [Windows 11 Supported Intel Processors](https://docs.microsoft.com/windows-hardware/design/minimum/supported/windows-11-supported-intel-processors?WT.mc%5Fid=modinfra-33205-salean&ref=techielass.com) - [Windows 11 Supported AMD Processors](https://docs.microsoft.com/windows-hardware/design/minimum/supported/windows-11-supported-amd-processors?WT.mc%5Fid=modinfra-33205-salean&ref=techielass.com) If your processor is on one of those lists, then things are looking good for you. 😉 > Getting a few questions about TPMs this morning. Note that virtually every PC shipped in the last five years has a TPM, but many are disabled in the bios. If your recent-vintage system claims not to have a TPM, check your bios. /cc [@dwizzzleMSFT](https://twitter.com/dwizzzleMSFT?ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [https://t.co/MH74kuyB9f](https://t.co/MH74kuyB9f?ref=techielass.com) > > — Steve Dispensa (@dispensa) [June 24, 2021](https://twitter.com/dispensa/status/1408132764092616706?ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) ### I don't know what Processor I have! If your not 100% sure what your processor is, then there is a quick check you can make. Click on your Windows button and type in System Information. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/06/systeminfo.png) System Information Within the System Summary page you'll see about 10 items down the processor type. You can take that and compare it with the lists above. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/06/proc.png) System Summary Information ### BIOS Mode The other thing that has been much talked about after the launch is the BIOS mode. Windows 11 is going to use UEFI and UEFI only. Unified Extensible Firmware Interface (UEFI) has been around for a while. Again I think a lot of computers and hardware support that form of device booting. This one is going to be a bit harder for non-techies to handle. As your machine is going to need a rebuild using UEFI boot to install Windows 11, rather than being able to do an in place upgrade when Windows 11 starts to roll out. *(As far as I understand the information I've seen so far)*. You can check what BIOS mode your machine is currently in, again Click on your Windows Button and type in System Information. About 14 down within the System Summary page you'll see the BIOS mode your machine is currently in. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/06/bios.png) System Summary Information ### Windows PC Health Checker Microsoft have launched a helpful [Windows ](https://www.microsoft.com/windows/windows-11?WT.mc%5Fid=modinfra-33205-salean&ref=techielass.com#pchealthcheck)[PC Health Checker](https://www.microsoft.com/windows/windows-11?WT.mc%5Fid=modinfra-33205-salean&ref=techielass.com#pchealthcheck), which can also be used to assess if your machine is ready for Windows 11\. This app does a few things, like telling you how much RAM you have, what your battery capacity is (if your laptop) and a ton more, but now it can check if your PC meets the system requirements for the FREE upgrade to Windows 11\. On my work device I get the following message: ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/06/pccheckwork.PNG) PC Health Check Which means I'll need to see what happens with the upgrade. Although from checking the processor and TPM requirements, I am confident it will be able to have Windows 11 installed. I'll just need to wait on my IT department at work managing the upgrade. 😉 On my own personal desktop PC I initially got an error message saying that my PC didn't meet the requirements. However I realised that my BIOS didn't have TPM enabled, so a quick delve into my BIOS settings and I enabled AMD Firmware TPM (fTPM) *(which is called Platform Trust Technology or PTT in Intel's world).* ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/06/tpmbios.jpg) MSI BIOS TPM Setting After a reboot and a rerun of the PC health checker software I look good to go when the time comes! ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/06/pchealthhappy.PNG) PC Health Checker **I see on social media some people are not having a great experience with PC Health Checker, there has been feedback from Microsoft on that saying fixes are coming:** > Sorry for the irritating experience! We're going to improve the PC Health Check app over the next couple of weeks. Hopeful that the first update will be out tomorrow. > > — Steve Dispensa (@dispensa) [June 25, 2021](https://twitter.com/dispensa/status/1408226015260790787?ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) *This information is based on what we know so far and is subject to changes as more information is shared and becomes clear.* ### Weekly Update #97 - NFS, OS Upgrades and Streaming Support URL: https://www.techielass.com/weekly-update-97/ Last updated: 2023-12-06T08:30:36.000Z This week I want to cover off news not only from Azure but also Microsoft Teams as there are some interesting things that I've seen pop up! Join me in this week's update either in video format or audio! For more information about the news that I covered in the update be sure to check out the official documentation: - [NFS 3.0 protocol support generally available with Azure Blob Storage](https://azure.microsoft.com/updates/azure-blob-storage-nfs-30-protocol-support-generally-available/?WT.mc%5Fid=modinfra-33144-salean&ref=techielass.com) - [Operating System image upgrades for Virtual Machine Scale Sets](https://azure.microsoft.com/updates/general-availability-maintenance-control-for-vmss-os-image-upgrades/?WT.mc%5Fid=modinfra-33144-salean&ref=techielass.com) - [Microsoft Teams RTMP Streaming Support](https://www.microsoft.com/microsoft-365/roadmap?filters=Microsoft%20Teams%2CNew%20Last%20Month&searchterms=streaming&WT.mc%5Fid=modinfra-33144-salean&ref=techielass.com) - [Microsoft Teams Meeting Auto Recording](https://www.microsoft.com/microsoft-365/roadmap?filters=Microsoft%20Teams%2CNew%20Last%20Month&searchterms=auto%2Crecord&WT.mc%5Fid=modinfra-33144-salean&ref=techielass.com) ### Reset Ubuntu Password in WSL on Windows 10 URL: https://www.techielass.com/reset-ubuntu-password-in-wsl-on-windows-10/ Last updated: 2023-03-03T08:13:03.000Z I recently wanted to install something within my Ubuntu shell and could not remember the password, and thought I was stuck. However, I found a way of resetting it quickly and easily. 1. Open Bash on Ubuntu to take note of your Linux username (note that this may or may not match your Windows username) 2. Close your bash session; you must do this for the following commands to work. 3. Open a Windows command prompt as Admin 4. Enter `ubuntu config --default-user root` to set the default user as root. 💡 If you find ubuntu is unrecognised as a command, try **ubuntu2004** or swap the numbers to represent your version. 5\. Now open your Ubuntu shell again. This time you'll notice you are logged in as root. 6\. You now want to change the password of your account type, `passwd [username]` and follow the instructions to reset your password. Close the Ubuntu shell. 7\. Now, you want to change your Ubuntu shell to make your profile the default user. Within a Windows command prompt, run the following command `ubuntu config --default-user [username]` When you open your Ubuntu shell, your profile will defaultto yours, and the password will be reset. Enjoy! ### What is Developer Relations? URL: https://www.techielass.com/what-is-devrel/ Last updated: 2022-01-06T09:15:01.000Z I've been in Developer Relations (DevRel) for nearly two years and recently I've been doing some thinking, career planning, reflection and such. And as part of that I've been doing some research on what others within the DevRel community do as part of their roles and their career paths etc. But I've also been doing some research with a wider audience and I found that some folks weren't sure what Developer Relations or had never heard of it. So I thought it would be good to give you my definition of it. Especially as I'm not a developer, but an IT Pro! 😉 ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/06/BIT_PUPPIES.png) Puppies ### What is Developer Relations? Developer Relations or DevRel as you'll sometimes hear it referred to is the department or umbrella term within a company that is responsible for helping to build a community and help that community. Under this department you'll find Advocacy, Events, Community Management, Content, Documentation and a lot more... And obviously every company will define their Developer Relations department differently, so it might not include all those things. 😉 Developer Relations is something that's relatively new, but when we think of technical community engagement it's been around since like the 50s or 60s. Developer Relations isn't trying to reinvent the wheel in that space, it's just trying to make it better. And as things evolve terminology has changed as well. Again every company will have their own definition and goals for Developer Relations, but ultimately that department within the company should help to represent the external community, helping to give the feedback, concerns, suggestions that that community has back into the company to help make things better or understand where the education/content gaps are and improve them. Connecting the dots essentially. For me there are four key principles that Developer Relations should revolve around, and this is what drives me. Others in the Developer Relations space might be different. - **Community** \- being involved, helping organise conferences etc - **Awareness** \- helping to show the companies' product(s), mission and how those products can be used - **Feedback** \- taking feedback from the audience back to the engineering team and vice versa - **Education** \- helping audiences understand the companies' product(s) or even just understanding the industry and answering their questions ### It's not sales or marketing ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/06/BIT_WHITEBOARDING.png) For me it's not about selling or about being a marketer. It's about helping people to solve their problems or understand the use cases of a product or technology. Developer Relations shouldn't be an extension of the company's sales team or marketing team. Yes you can work with these departments within your company to help each other and offer suggestions to make everything better. Again for me for a Developer Relations department to be truly successful, and trusted by the community it needs to sit separately from the sales and marketing departments. ### Only for developers? One misconception I've seen is that Developer Relations is only for developers and for me that's definitely not the case. Developer Relations is the industry term but it doesn't mean it's only about talking to developers. It's about talking to the community, the audience. For each organisation that audience will be different. At some organisations it's only developers that they will talk to because the product they have is only aimed at developers. For an organisation like Microsoft though, which is where I work, the audience is quite extensive, covering developers, IT Pros, business decision makers, database administrators, and well everyone else within the IT department. 👍 It's ultimately about helping those that need help, regardless of their job title. ### Developer Relations Advocacy ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/06/bit_community-1.png) Advocacy I've also seen a lot of confusion over what job titles look like in Developer Relations. Now there are a lot of different roles within Developer Relations, but you'll often see folks on Social Media and LinkedIn call themselves Cloud Advocate, Developer Advocate, Cloud Developer Advocate. Those to me, are all the same role but with different word combinations. 😊 These are often the folk that are most visible from a Developer Relations point of view, they'll be the people speaking at events, active on Social Media etc. At Microsoft we have a lot of [Cloud Advocates](https://developer.microsoft.com/advocates/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) that are geographically spread out and cover a variety of subject matters. ### Technical Again another thing that has to happen for the Developer Relations department to be successful is to have people who have been there and done it, who are technical, who have experience of what they are talking about. Some of the best Advocates I've seen help the community and be successful at their role are folks who have been in the IT industry for years and have experience of implementing IT systems, running them, building software etc. They know what they are talking about. They aren't just talking heads who are pushed out onto stage when the company want, they are they because they have the skills, experience and passion to be out on that stage. But they also have to have the "soft skills" in their toolset as well. Being able to relate to people, talk to them and understand how to communicate the knowledge across. You don't need to be an extrovert but you do have to be able to interact with people. ### Me as an Advocate For me as an Advocate within a Developer Relations team, it can be hard sometimes as I'm not a Developer, I'm a Sys Admin/IT Pro/Operations person so it can be tricky trying to explain to people what my role and why I'm under that Developer Relations umbrella. But for me I do this role because I want to help people, make their lives easier if I can, even if that means taking hard feedback back to our engineering teams. My job isn't to sell, it's to help. It can be a LOT of work to create content, people don't see the hours spent in meetings, Camtasia, PowerPoint, Word, Photoshop, Premiere Pro that are required to write that blog, create that video, or create that Twitter thread. Some weeks I do spend more time within PowerPoint than within Azure or doing anything "technical". But it's part and parcel of the job, and it's no less important than the technical parts. If you are setting up a Developer Relations program, looking to make a career move, or need to do some research to achieve corporate buy-in for Developer Relations department inside your organization, pick up a copy of [***DevRel for Beginners: What to Know and How to get Started***](https://techielass.gumroad.com/l/devrel-for-beginners?ref=techielass.com)***.*** ### Installing software with Windows Package Manager URL: https://www.techielass.com/installing-software-with-windows-package-manager/ Last updated: 2022-06-16T15:07:50.000Z If you've followed me for a while you'll know that I am fan of [Chocolatey](https://community.chocolatey.org/?ref=techielass.com), I use it to help install packages in bulk or keep them update to without much faff. Whenever I share my love for Chocolatey people ALWAYS ask why I don't use Windows Package Manager. I recently [installed Windows Package Manager](https://www.techielass.com/how-to-install-winget-windows-package-manager/) and I want to have a look at if it can replace my [Chocolatey script I have for when I rebuild my laptop](https://www.techielass.com/rebuilding-my-laptop/). ## Install packages with Windows Package Manager Before I look at whether or not Windows Package Manager can replace my Chocolatey script let's take a look at how you install packages with Windows Package Manager. If you want to find a package to install you can use the command ***winget search*** Once you find the package you want to install, you can then install it with the command: *winget install*. So for example if I wanted to install the [Notepad++](https://notepad-plus-plus.org/?ref=techielass.com) application I would use the command ***winget install notepad++*** ![Installing Notepad++ with WinGet](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/05/wingetinstall.PNG) Installing Notepad++ with WinGet ## Can Windows Package Manager replace my Chocolatey script? I love my Chocolatey script as it can help me get my laptop back up to speed after a rebuild. It helps me install a bunch of packages, Git, Azure Storage Explorer, AzCopy, Visual Studio Code, Putty, Spotify, Microsoft Windows Terminal, Jabra Direct, VLC, Audacity, PowerToys and WhatsApp. Having to manually install each of those apps would be really time consuming! lol So let's go through that list and see if they are available within WinGet: - Git ✔️ - Azure Storage Explorer ✔️ - AzCopy ❌ - Visual Studio Code ✔️ - Putty ✔️ - Spotify ✔️ - Microsoft Windows Terminal ✔️ - Jabra Direct ✔️ - VLC ✔️ - Audacity ✔️ - PowerToys ✔️ - WhatsApp ✔️ The list looks positive! I can install all but one of the packages. And if you want to install those packages using Windows Package Manager you can via this [script](https://gist.github.com/weeyin83/cf0757eee969c1a32fc1a301ed3c8d51?ref=techielass.com). ## Conclusion To be honest, I'm torn. It looks like Windows Package Manager can the things I like about Chocolately. So I'm torn, I think they are both great at helping to install packages quickly and easily as well as keeping them up to date. Be sure to stay tuned for more blogs on Windows Package Manager as I explore it more! 😊 ### Weekly Update #96 - New Azure Region URL: https://www.techielass.com/weekly-update-96/ Last updated: 2023-12-06T08:30:09.000Z I've been off work this week and I've really enjoyed my downtime, but I've kept up a good streak with these weekly updates and I want to continue that. So I've had a little fun with the video, live on location in Scotland! 😉 ### New Azure Region Azure now has a West US 3, which is located in Arizona. I spoke to Brian Janous about this I think at Ignite 2020 and we talked about sustainability in the datacentres. The location in Arizona was choose because of it's abundance of solar power, land availability, as well as being close to customers. The new region is available to pick and includes [Availability Zones](https://techcommunity.microsoft.com/t5/itops-talk-blog/understanding-availability-sets-and-availability-zones/ba-p/1992518?WT.mc%5Fid=modinfra-11089-salean&ref=techielass.com). It's exciting to see Microsoft investing beyond the datacentre though and helping with water conservation and replenishment projects in Arizona. ### Call Recording Coming soon to the Azure Communication Services is call recording is going to be in preview next month. The feature will allow you stop, start, pause and resume recording functionality, with in built temporary storage for up to 48 hours. Output files can be run through Azure Cognitive Services for post call insights with sentiment analysis. So keep an eye out for this preview features coming out next month. ### Azure Cache for Redis Redundancy There is now a zone redundancy feature for Azure Cache for Redis in the premium tier. You can deploy your caches across multiple availability zones and obtain increased availability. ### Azure Monitor Agent Azure Monitor Agent was also announced this week. Which is a new agent that is aimed at addressing some data collection aspects of Azure Monitor. It's supposed to replace all other agents in this are consolidating features and providing more capabilities. It collects telemetry data and sends it to Azure Monitor Logs or Metrics (today), and Event Hubs, Storage Accounts and many other destinations that you need to send telemetry data to (in future). ### How to plan for cloud adoption URL: https://www.techielass.com/how-to-plan-for-cloud-adoption/ Last updated: 2021-06-17T05:59:59.000Z For the past year I have been working with the team on the [Azure Enablement Show](https://channel9.msdn.com/Tags/cloud-adoption-framework-series?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) and some new episodes of have been released! The newest being a chat I had with Wayne Meyer chatting about how to build a cloud adoption plan and why it's a key part of your journey. Wayne is the Cloud Adoption Lead in the US, so he's been involved in a lot of cloud adoption projects with customers at Microsoft. So it was really great chatting to him about his experiences and getting some of his tips. We spoke about how organisations need to adapt to agile planning to help their cloud adoption and how to choose the workloads to start your cloud journey with. ### Configure Windows Package Manager Settings URL: https://www.techielass.com/configure-windows-package-manager-settings/ Last updated: 2022-03-02T18:29:24.000Z The Windows Package Manager is a great tool that can help you install packages (software/applications) and manage those packages by helping to update them as well in a programmatic way. I [installed the Windows Package Manager](https://www.techielass.com/how-to-install-winget-windows-package-manager/) in a previous blog and since then I've been tinkering with the various commands and seeing what secrets it holds. Today I found the settings configuration and wanted to share that with you all. 😊 You can start to customise your Windows Package Manager experience by typing **winget settings.** This will open a JSON file that you can change in order for Windows Package Manage to behave the way you'd like or look the way you'd like. 👍 ### Progress Bar When Windows Package Manager is searching, installing or downloading packages it displays a small progress bar, which you can configure! There are three options, accent (which is the default), retro and rainbow. I've went for the rainbow open, so I have added the following code within my settings file: ``` "visual": { "progressBar": "rainbow" }, ``` ![Windows Package Manager Rainbow Progress Bar](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/06/wingetprogressbar.png) Windows Package Manager Rainbow Progress Bar ### Experimental Features Being the daredevil that I am I've configured Windows Package Manager to allow the experimental features the team are using to be turned on and used within my machine. So I have the following code within my settings file: "experimentalFeatures": { "experimentalCmd": true, "experimentalArg": true, "experimentalMSStore": true }, ### Other settings There are other customisable settings such as locale, telemetry, network and install scope that you can configure. If you are interested in seeing what else can be configured you can head over to [https://aka.ms/winget-settings](https://aka.ms/winget-settings?ref=techielass.com), which will have all the latest information and details. With Windows Package Manager being open source I'd love to see the community grow things like the Progress Bar and add in some extra options for us. 🦄 ## Learn more! If you want to learn more about Windows Package Manager and see a complete overview of it's features, be sure to check out the [Microsoft Learn module - Explore the Windows Package Manager Tool](https://docs.microsoft.com/learn/modules/explore-windows-package-manager-tool/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com). ### Run Windows Update From PowerShell URL: https://www.techielass.com/run-windows-update-from-powershell/ Last updated: 2021-06-15T05:59:59.000Z I've been recently playing with a lot of labs and I found an old lab I had which hadn't been patched since July 2019! I wanted to get it back up and running again, and I thought can I do it from PowerShell and the answer is yes! There is a module that has been created by [Michal Gajda](https://mvp.microsoft.com/en-us/PublicProfile/4039679?fullName=michal%20gajda&ref=techielass.com) that can trigger checking for updates and then install those updates. I love these kinda wee things that can help make life a little easier. ## Install Module The first thing that you need to do is install the module, this will require NuGet installed so if you haven't already got that make sure you do that. To install the module use the command: **Install-Module PSWindowsUpdate** ## Get Updates How that the module is installed you'll want to check for updates on your server, that command is: **Get-WindowsUpdate** ## **Install Updates** Once you've triggered the server to check for updates you'll want to install them, that command is: **Install-WindowsUpdate** You can add the **\-AcceptAll** switch to allow the system to accept them without prompting you again. ## Uses Now you can do the above on a machine to save you interfacing with the GUI or you can use it to schedule updates or even apply updates to remote machines. It's worth checking out the help and examples within the module as it has some great advice. ## Script I've pulled together a quick script that can be used to deploy the module and pre-requisites and install the needed patches, you can find a copy here or below. ### Weekly Update #95 - Windows Virtual Desktop rename! URL: https://www.techielass.com/weekly-update-95/ Last updated: 2023-12-06T08:31:03.000Z In this week's catch up with the Azure news we have had product name changes, pricing changes, and public preview releases! You can catch my update on YouTube or via an audio podcast. If you scroll down there is a transcript of the update should you need or want it. ### YouTube ### Audio ### Windows Virtual Desktop This week we saw the team rename Windows Virtual Desktop to [**Azure Virtual Desktop**](https://azure.microsoft.com/blog/azure-virtual-desktop-the-desktop-and-app-virtualization-platform-for-the-hybrid-workplace/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com)**,** it's exciting to see the innovation that has went into this product. While they were renaming the product they also announced the [public preview of metadata storage in the UK](https://docs.microsoft.com/azure/virtual-desktop/data-locations?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) is now available. And they also teased that very soon they will be launching a public preview that allows native Azure Active Directory join so there will be no need for traditional Active Directory! ### **Key Rotation** Key rotation is one of the best security practices organisations can employ to help reduce the risk of secrets leaking. There are now [new policie](https://azure.microsoft.com/updates/key-rotation-and-expiration-policies-for-azure-storage/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com)s you can deploy that ensure that anyone deploying an Azure Storage endpoint have to specify key rotation duration. And you can set alerts if a key is about to expire and then look at rotating that key using APIs, CLI, PowerShell or the Azure Portal. ### Pricing Changes There have been pricing changes to Azure Sentinel and Azure Monitor to help reduce costs. Capacity Reservation is now being called Commitment Tiers and they are introducing new commitment tiers for higher data ingestion. There's some important changes about the tier pricing once you go over that tier and how it resets so do check out the [announcement for more information](https://techcommunity.microsoft.com/t5/azure-sentinel/announcing-pricing-changes-to-azure-sentinel-and-azure-monitor/ba-p/2408416?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). ### Azure Migrate [Azure Migrate Private Link support](https://azure.microsoft.com/updates/azure-migrate-private-endpoint-support-available-in-public-preview/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) allows you to connect privately and securely to the Azure Migrate service over an ExpressRoute private peering or a site-to-site VPN connection. You can now ensure that your transactions from a discovery or migration point of view are being transferred with extra security in mind. ### Transcription Hey everybody, and welcome to this weekly update with myself Sarah Lean. So as usual, I'm going to be covering off some of the news stories that's been happening within the Microsoft as your world this week, and giving you some context around these news items. So stay tuned. So the first bit of news that I want to cover is actually several bits of news about one of the Azure products. So we've seen windows virtual desktop be renamed this week. So we're calling it Azure virtual desktop. So that's something to bear in mind. If you're looking at documentation, if you're searching for information on the internet, you might no see that being labelled as Azure virtual desktop. And in terms of what's been happening with that product this week, we have seen some announcements in terms of new features. So in public preview is know the ability to store your Azure virtual desktop metadata in the UK, which is a big one for a lot of customers. We've also seen the team announce that they are actually going to be releasing a new public preview very soon. And that public preview is going to be around Azure Active Directory native join. So you're no longer going to need a traditional Active Directory server to join your Azure virtual desktops to your nobility use Azure Active Directory. So that's a public preview that's been announced but isn't quite out in public at the moment. So stay tuned for more information on that. So key rotation is something that a lot of customers are employing now to try and reduce the risk of secrets leaking out into the public. And what we've seen now with the Azure Storage team is that there's going to be new policies that you can set that enable. So as people are creating new Azure Storage endpoints, they will be forced to actually put in a key rotation policy so that that key will be rotated after a certain amount of time, or after certain amount of other activities that are happening. And this is quite crucial to being able to, like I said, Keep those secrets and keep those keys quite secure it within your environment. You'll also be able to set alerts so that you know that a key is coming up for expiry, and then you can actually start to rotate that either with API's or in the CLI command or in a PowerShell, or even in the Azure portal. So lots coming around that feature as well. So we've also seen some pricing announcements made and the Azure Sentinel and Azure monitor team have introduced something that will help reduce your costs. So when you look at Azure Sentinel, you'll see something called capacity reservations. And that's the pricing plan that you would have bought. They've now renamed that to commitment tiers. And with these new commitment to your namings, we've actually seen new tiers being introduced around higher data ingestion. There's also been announcements around some of what happens to the tiers, if you go over that data ingestion, and how that resets and the pricing that happens when you do go over that commitment to you that you've committed to. So definitely have a look at this announcement in more detail, understand the nitty gritty, and how the new placing changes and the new name will actually affect your environment and hopefully save you some money. Now, the last bit of news is around Azure migrate, and they've released a public preview that now supports a private link. So that's new private preview actually allows you to connect privately and securely to the Azure migrate service over an Express Route connection with private peering, or a site to site VPN connection. And West s, this is going to allow you to be more compliant and add an extra layer of security to that transactions that are you're either doing from a discovery point of view with Azure migrate, or a migration point of view. So again, have a look at this and see if you can implement it, but it's still in public preview at the moment. Thank you so much for tuning in to this weekly update. Hopefully this has been helpful to you and you have caught up on some of the amazing Azure news that has happened this week. If you've liked this video, please do hit that like button and hit subscribe because I do these videos every Friday and we're coming up to the 100th one. So hopefully that will be a good one. ### Azure Static Web Apps are awesome! URL: https://www.techielass.com/azure-static-web-apps-are-awesome/ Last updated: 2021-06-10T06:00:00.000Z [Azure Static Web Apps](https://azure.microsoft.com/pricing/details/app-service/static/?WT.mc%5Fid=modinfra-29186-salean&ref=techielass.com) have went generally available (GA) which is great news as they are a pretty cool feature within Azure. They allow you to automatically build and deploy full stack web apps to Azure from a code repository. I actually have a website running on one at the moment, [Azure Family](https://aka.ms/azurefamily?ref=techielass.com). The source code for that website is stored within [GitHub](https://github.com/weeyin83/azureusergroup/?ref=techielass.com) and is then published to the Interwebs using an Azure Static Web App. This was setup with Azure Static Web Apps were in preview and it was a smooth process then. ## What features do we have now? Now that we are in GA mode with the product we have some more functionality than what we did when it was in preview. You are able to add in your own [custom domain](https://docs.microsoft.com/azure/static-web-apps/custom-domain?tabs=azure-dns&WT.mc%5Fid=modinfra-29186-salean&ref=techielass.com). So you can have the domain you want for your website, although the ones that are automatically generated by Azure Static Web Apps are pretty cool. 😉 You are also able to get a free SSL/TLS certificate for your auto generate domain name and ANY CUSTOM DOMAIN name you add. Which is a pretty cool! To get the certificate you need to have a added your custom domain and also configured all the DNS configuration for that domain. We also have the ability to have production and staging environments, depending on how you've set up your code repository, which is create for checking changes before releasing to everyone. ## Not just for developers There's a lot of info out there that says Azure Static Web Apps are just for developers, I'm here to say that's rubbish! They are great for everyone, and they are especially create for people who aren't developers. Because they are so simple to set up and get started. Lots of people, including me are taking advantage of static web site frameworks like Hugo or Jekyll and Azure Static Web apps is aware of how to build those frameworks are turn them into websites for visitors without any complicated configuration. ## Pricing The [pricing of Azure Static Web Apps](https://azure.microsoft.com/pricing/details/app-service/static/?WT.mc%5Fid=modinfra-29186-salean&ref=techielass.com#pricing) is really pleasing, there is a FREE tier. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/05/staticwebapppricing.PNG) Azure Static Web App Pricing There are obviously some limitations of the free tier, but it's great for those personal projects and I think I'll be spending sometime redesigning and moving the [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com)'s site over to Azure Static Web Apps. 😊 ## VS Code Extension I'm a big fan of [Visual Studio Code](https://code.visualstudio.com/?WT.mc%5Fid=modinfra-29186-salean&ref=techielass.com) and there is an extension that helps you manage your [Azure Static Web Apps](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurestaticwebapps&ref=techielass.com) from within there, which is pretty awesome. It's one of those cringe worthy phrases but it means a single pane of glass, you can do your development of the web app within VS Code and configure the Static Web App from in there without leaving. There's so much scope for the Azure Static Web Apps and I look forward to where this product goes and how the community uses it. ### How to Install winget (Windows Package Manager) URL: https://www.techielass.com/how-to-install-winget-windows-package-manager/ Last updated: 2025-10-29T08:34:48.000Z If you've followed me for a while, you'll know that I am a fan of [Chocolatey](https://community.chocolatey.org/?ref=techielass.com); I use it to help install packages in bulk or keep them updated without much faff. Whenever I share my love for Chocolatey, people ALWAYS ask why I don't use WinGet. And to be honest, I've not looked at it properly, but today is the day. Today I will look at installing it on my machine and seeing what it can do. WinGet was announced at Build in May 2020\. And version 1.0 was released in May 2021\. ## How to install WinGet manually There are a couple of options for getting WinGet installed on your machine. As it's open source, you can clone, build, and run deploy from the source code, which is in the [GitHub repository](https://github.com/microsoft/winget-cli?ref=techielass.com) if you want to go down that route. The other options for those who aren't comfortable with that are via the Windows Store ordownloading the Release file from GitHub. I went with downloading the latest release file from [https://github.com/microsoft/winget-cli/releases](https://github.com/microsoft/winget-cli/releases?ref=techielass.com) If you are running Windows 10, find the latest .appxbundle file, download that and install it. There are some considerations you need to remember when trying to install the WinGet tool. To get the whole picture and the latest guidance, you can head over [here](https://docs.microsoft.com/windows/package-manager/winget/?WT.mc%5Fid=modinfra-29195-salean&ref=techielass.com). ## Installation I've downloaded the latest .appxbundle file to install; just double-click and go through the install wizard prompted. It should be pretty quick. ![Install Windows Package Manager on Windows 10](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/06/wingetinstalljune2021-1.gif) Install Windows Package Manager on Windows 10 [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2025/10/blogcoffee-2-3-8.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) ## How do I know if WinGet is installed and running on Windows? To check the installation has happened, launch PowerShell or Command Prompt shell and type in ***winget --version*** ![Check winget version](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/05/wingetversion.PNG) Check winget version ## What packages can be installed by WinGet? There is a long list of packages that can be installed with WinGet if you type in the command ***winget search*** It will take you through the list, and it's pretty extensive! You can narrow that search down by issuing a command such as: ***winget search vlc*** ![Winget Install VLC](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/wingetvlc.jpg) Winget Install VLC This shows me the [VLC ](https://www.videolan.org/vlc/?ref=techielass.com)packages that I can install via WinGet. You can search for anything you want, VLC, PowerShell, Azure, and many things. 😊 WinGet YouTube video ## Learn more! To learn more about Windows Package Manager and a complete overview of its features, check out the [Microsoft Learn module - Explore the Windows Package Manager Tool](https://docs.microsoft.com/learn/modules/explore-windows-package-manager-tool/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com). ### Your opinion matters! URL: https://www.techielass.com/your-opinion-matters/ Last updated: 2021-06-07T09:33:59.000Z I've went from a Sys Admin, someone who resets passwords, designs architecture solutions for customers, and fights with servers to fit into rack space to someone who works within Developer Relations. It's been an interesting journey for my career and a steep learning curve for me over the past 18 months. I'm looking to reach out to the community to understand what everyone's impressions are of Developer Relations within the IT industry for two reasons: - to understand if a side project idea is worth pursuing - understanding my career journey and where I should focus my attention at over the next year or so If you have a few minutes spare I'd be grateful if you fill in this short form - [take the survey](https://forms.office.com/Pages/ResponsePage.aspx?id=qQZdxE7MWUS4OrXKUKG%5FtWJfXrHCX6BKlAV5Vk6J4b1UNzBGSE5BTE02MFAyT1IzWFE4QzJMREgxSC4u&ref=techielass.com). It doesn't gather any personal information and there are no right or wrong answers. 😊 Thank you! ### Weekly Update #94 - Azure news roundup URL: https://www.techielass.com/weekly-update-94/ Last updated: 2021-06-04T15:00:00.000Z Last week we had a ton of news thanks to Microsoft Build and the amazing things that happened then. However, there has been some news this week. I've created a quick round up video and audio podcast that you can view or listen to in order to catch up. 😊 ### Transcription Hey everybody, welcome to this weekly update with myself, Sarah Lean. Now in this week's news, we have a new roll up update from the Azure Site Recovery Team. So update roll out 55 is now available. So if you have Azure Site Recovery in your environment, go and check that out. Also, this week and the Azure Security centre team have released new recommendations around hardening your Kubernetes clusters. Now these recommendations are in preview again, go and check them out if you're using Azure Security centre and Kubernetes clusters in your environment. So the third bit of news is that the Azure digital twins Explorer is now available. Now. This is visualising explorer that allows you to see things like the Azure digital twins API's. So again, if you're using Azure digital twins, go and check out this new visualizer. Now, we all love a bargain. And this generally available feature should help you with that if you're using Azure Data bricks, you now have the ability to use Azure sport virtual machines there and save some money. So again, go and check that out if you're using Azure data, bricks and your environment. So again, another bargain the Azure Cosmos DB free tier has no been extended, you can now get more provisioned throughput or request units per second and storage each month. So if you're using that fleet here, go and check out the new aim extended options that you have. Thank you everybody for tuning in to this weekly update. I hope you're all having a good week and I'll catch you in my next video. ### Customise Windows Terminal URL: https://www.techielass.com/customise-windows-terminal/ Last updated: 2023-01-06T08:14:40.000Z Windows Terminal is a modern command-line tool. It's a great way to set up configure different shells like Command Prompt, PowerShell, Windows Subsystem for Linux (WSL) and more. It's great being able to open up Windows Terminal and have access to different shells all in one place. What I also love about it you can customise to look how you would like it and how works for you. Colour scheme, font, logos, spacing, key shortcuts the full thing. You have full customisation over that. ## Where are the customisation settings? You can access the settings by click on the down arrow at the top of your screen and then Settings. ![Windows Terminal Settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/windowterminalsettings.jpg) Windows Terminal Settings Within the settings you have access to the JSON configuration file, that stores all the information relating to your setting, the default shell that opens, the colour scheme, fonts used etc are all stored within this JSON file. ![Windows Terminal JSON file location](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/05/terminaljsonlocation-1.PNG) Windows Terminal JSON file location ## My configuration Today I want to share with you how to setup the configuration and what my setup looks like. You can find my JSON file configuration [here](https://github.com/weeyin83/TechielassWindowsTerminal/blob/main/settings.json?ref=techielass.com) or below. // This file was initially generated by Windows Terminal 1.4.3243.0 // It should still be usable in newer versions, but newer versions might have additional // settings, help text, or changes that you will not see unless you clear this file // and let us generate a new one for you. // To view the default settings, hold "alt" while clicking on the "Settings" button. // For documentation on these settings, see: [https://aka.ms/terminal-documentation](https://aka.ms/terminal-documentation?ref=techielass.com) { "$schema": "[https://aka.ms/terminal-profiles-schema](https://aka.ms/terminal-profiles-schema?ref=techielass.com)", ``` "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", // You can add more global application settings here. // To learn more about global settings, visit https://aka.ms/terminal-global-settings // If enabled, selections are automatically copied to your clipboard. "copyOnSelect": false, // If enabled, formatted data is also copied to your clipboard "copyFormatting": false, // A profile specifies a command to execute paired with information about how it should look and feel. // Each one of them will appear in the 'New Tab' dropdown, // and can be invoked from the commandline with `wt.exe -p xxx` // To learn more about profiles, visit https://aka.ms/terminal-profile-settings "profiles": { "defaults": { // Put settings here that you want to apply to all profiles. }, "list": [ { // Make changes here to the powershell.exe profile. "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", "name": "Windows PowerShell", "commandline": "powershell.exe", "hidden": false, "acrylicOpacity": 0.8, "backgroundImage": "C:/unicornlogo.png", "useAcrylic": true, "backgroundImageOpacity" : 0.1, "colorScheme": "Cobalt2" }, { // Make changes here to the cmd.exe profile. "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}", "name": "Command Prompt", "commandline": "cmd.exe", "hidden": false, "acrylicOpacity": 0.8, "backgroundImage": "C:/unicornlogo.png", "useAcrylic": true, "backgroundImageOpacity" : 0.1 }, { "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}", "hidden": false, "name": "Azure Cloud Shell", "source": "Windows.Terminal.Azure", "acrylicOpacity": 0.8, "backgroundImage": "C:/unicornlogo.png", "useAcrylic": true, "backgroundImageOpacity" : 0.1, "colorScheme": "Frost" }, { "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}", "hidden": false, "name": "Ubuntu", "source": "Windows.Terminal.Wsl", "acrylicOpacity": 0.8, "backgroundImage": "C:/unicornlogo.png", "useAcrylic": true, "backgroundImageOpacity" : 0.1, "colorScheme": "Raspberry" } ] }, // Add custom color schemes to this array. // To learn more about color schemes, visit https://aka.ms/terminal-color-schemes "schemes": [ { // Color Scheme: Raspberry "name" : "Raspberry", "background" : "#3C0315", "black" : "#282A2E", "blue" : "#0170C5", "brightBlack" : "#676E7A", "brightBlue" : "#80c8ff", "brightCyan" : "#8ABEB7", "brightGreen" : "#B5D680", "brightPurple" : "#AC79BB", "brightRed" : "#BD6D85", "brightWhite" : "#FFFFFD", "brightYellow" : "#FFFD76", "cyan" : "#3F8D83", "foreground" : "#FFFFFD", "green" : "#76AB23", "purple" : "#7D498F", "red" : "#BD0940", "white" : "#FFFFFD", "yellow" : "#E0DE48" }, { // Color Scheme: Frost "name" : "Frost", "background" : "#FFFFFF", "black" : "#3C5712", "blue" : "#17b2ff", "brightBlack" : "#749B36", "brightBlue" : "#27B2F6", "brightCyan" : "#13A8C0", "brightGreen" : "#89AF50", "brightPurple" : "#F2A20A", "brightRed" : "#F49B36", "brightWhite" : "#741274", "brightYellow" : "#991070", "cyan" : "#3C96A6", "foreground" : "#000000", "green" : "#6AAE08", "purple" : "#991070", "red" : "#8D0C0C", "white" : "#6E386E", "yellow" : "#991070" }, { // Color Scheme: Cobalt2 "name" : "Cobalt2", "background": "#193549", "black": "#000000", "blue": "#1478DB", "brightBlack": "#808080", "brightBlue": "#1478DB", "brightCyan": "#00ffff", "brightGreen": "#33ff00", "brightPurple": "#cc00ff", "brightRed": "#ff0000", "brightWhite": "#ffffff", "brightYellow": "#ffff00", "cyan": "#00c5c7", "foreground": "#c7c7c7", "green": "#3AD900", "name": "Cobalt2", "purple": "#ff2c70", "red": "#ff2600", "white": "#c7c7c7", "yellow": "#ffc600" } ], // Add custom actions and keybindings to this array. // To unbind a key combination from your defaults.json, set the command to "unbound". // To learn more about actions and keybindings, visit https://aka.ms/terminal-keybindings "actions": [ // Copy and paste are bound to Ctrl+Shift+C and Ctrl+Shift+V in your defaults.json. // These two lines additionally bind them to Ctrl+C and Ctrl+V. // To learn more about selection, visit https://aka.ms/terminal-selection { "command": {"action": "copy", "singleLine": false }, "keys": "ctrl+c" }, { "command": "paste", "keys": "ctrl+v" }, // Press Ctrl+Shift+F to open the search box { "command": "find", "keys": "ctrl+shift+f" }, // Press Alt+Shift+D to open a new pane. // - "split": "auto" makes this pane open in the direction that provides the most surface area. // - "splitMode": "duplicate" makes the new pane use the focused pane's profile. // To learn more about panes, visit https://aka.ms/terminal-panes { "command": { "action": "splitPane", "split": "auto", "splitMode": "duplicate" }, "keys": "alt+shift+d" } ] ``` } ## Profile customisation I have four shells setup within my Windows Terminal, PowerShell, Command Prompt, Azure Cloud Shell and Ubuntu. Each shell has a slightly different configuration set up. If you scroll down to the profile section of the JSON file you will see the profiles, part this is where you can set the font, colour scheme, background image etc for your shells. ![Windows Terminal Profile config](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/05/windowsterminalprofiles.PNG) Windows Terminal Profile config ``` { // Make changes here to the powershell.exe profile. "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", "name": "Windows PowerShell", "commandline": "powershell.exe", "hidden": false, "acrylicOpacity": 0.8, "backgroundImage": "C:/unicornlogo.png", "useAcrylic": true, "backgroundImageOpacity" : 0.1, "colorScheme": "Cobalt2" }, ``` The above code is my PowerShell window configuration, you can see I have a background image setup, I have it set up so the background image isn't to bold and I have a custom colour (color?) scheme setup for that shell. And I have that setup for each of my shell windows, so that each look different. ## Colour Schemes Beyond the profiles section there is a section for colour schemes. Within here I have setup some custom ones, and these are ones that are readily available on the web, I haven't created them from scratch. 😉 I am using [Raspberry](https://docs.microsoft.com/windows/terminal/custom-terminal-gallery/raspberry-ubuntu?WT.mc%5Fid=modinfra-29194-salean&ref=techielass.com) and [Frost](https://docs.microsoft.com/windows/terminal/custom-terminal-gallery/frosted-glass-theme?WT.mc%5Fid=modinfra-29194-salean&ref=techielass.com) and [Cobalt2](https://github.com/Reidond/cobalt2-windows-terminal?ref=techielass.com). ## Custom Actions and Key Shortcuts The last section within JSON file is about configure any custom key shortcuts or actions you want. I haven't configured anything within this section but this is the place you want to use if say you wanted to change the shortcut for opening the search box. ![My Windows Terminal](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/05/windowsterminal-1.PNG) My Windows Terminal ### Print Simple Markup in Word URL: https://www.techielass.com/print-simple-markup-in-word/ Last updated: 2023-03-08T21:02:55.000Z So I had an IT support call from my office mate (aka my husband) the other day, and it had me a bit stumped until I started clicking some buttons and found the answer to his query. 😉 He had a Word file that had track changes enabled, and he wanted to save/print the document as a PDF file with a marker in the margin to where the changes were. I believe that's referred to as a Simple Markup. I'd never been asked or had to do that before. But going back to my roots of looking through the menu systems, I found the answer. The answer lies in this little arrow: ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/05/trackingadvantaged.PNG) Change Tracking Options This arrow options up the Tracking Changes Options, and you have Advanced Options. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/05/advancedtoptions.PNG) Change Tracking Advanced Options In order to achieve what he was looking for, we had to change some of the Markup settings. Normally your Insertions will display as an Underline, and you Deletions will appear as a Strikethrough. To get the Word document to look like what he wanted, with a mark down the margin where something had changed, we need to configure the Advanced Track Changes Options to, Insertions = None and Deletions = Hidden. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/05/trackingsettings.PNG) Advanced Track Changes Options He was then able to save/print a copy of the Word document into a PDF with the notation that he needed. > It's important to note that these changes to the Tracking Changes options are applied to all documents, so if you want the normal settings to apply in the future you need to change them back. ### Weekly Update #93 - Round up from MS Build URL: https://www.techielass.com/weekly-update-93/ Last updated: 2021-05-28T09:08:12.000Z This week we saw [Microsoft Build](https://mybuild.microsoft.com/home?WT.mc%5Fid=modinfra-29748-salean&ref=techielass.com) happen, another virtual Microsoft Build. Although it's primarily focused on talking to the developer audience there are bits and pieces that the IT Pros can still glean from what's happened at the event. In this weekly update I cover off some of the awesome news that has happened at the event. - [Windows Package Manager 1.0](https://devblogs.microsoft.com/commandline/windows-package-manager-1-0/?WT.mc%5Fid=modinfra-29748-salean&ref=techielass.com) - [WSL GPU Support](https://blogs.windows.com/windowsdeveloper/2021/05/25/the-windows-developers-guide-to-microsoft-build-2021/?WT.mc%5Fid=modinfra-29478-salean&ref=techielass.com) - [Bicep v0.4](https://azure.microsoft.com/blog/new-azure-capabilities-to-simplify-deployment-and-management/?WT.mc%5Fid=modinfra-29748-salean&ref=techielass.com) - [Windows Terminal 1.9 Preview ](https://devblogs.microsoft.com/commandline/windows-terminal-preview-1-9-release/?WT.mc%5Fid=modinfra-29748-salean&ref=techielass.com) - [Azure Storage Blog Inventory Preview](https://docs.microsoft.com/azure/storage/blobs/blob-inventory?WT.mc%5Fid=modinfra-29748-salean&ref=techielass.com) - [AKS on Azure Stack HCI GA ](https://azure.microsoft.com/updates/azure-kubernetes-service-aks-on-azure-stack-hci-is-now-generally-available/?WT.mc%5Fid=modinfra-29748-salean&ref=techielass.com) - [Managed certificates Azure App Service](https://docs.microsoft.com/azure/app-service/configure-ssl-certificate?WT.mc%5Fid=modinfra-29748-salean&ref=techielass.com#create-a-free-managed-certificate) - [Azure Application Services Anywhere](https://azure.microsoft.com/updates/public-preview-run-app-service-on-kubernetes-or-anywhere-with-azure-arc/?WT.mc%5Fid=modinfra-29748-salean&ref=techielass.com) - [Log Analytics Workspace Insights](https://docs.microsoft.com/azure/azure-monitor/logs/log-analytics-workspace-insights-overview?WT.mc%5Fid=modinfra-29748-salean&ref=techielass.com) If you'd prefer the audio only version you can find it on most platforms: - [Anchor](https://anchor.fm/techielass?ref=techielass.com) - [Breaker](https://www.breaker.audio/sarah-leans-weekly-update-podcast?ref=techielass.com) - [Google Podcasts](https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy8xYjM2ZDgxYy9wb2RjYXN0L3Jzcw==&ref=techielass.com) - [Apple Podcasts](https://podcasts.apple.com/us/podcast/sarah-leans-weekly-update-podcast/id1506712194?uo=4&ref=techielass.com) - [Overcast](https://overcast.fm/itunes1506712194/sarah-leans-weekly-update-podcast?ref=techielass.com) - [Pocket Casts](https://pca.st/mnod1w6y?ref=techielass.com) - [RadioPublic](https://radiopublic.com/sarah-leans-weekly-update-podcast-6r03jz?ref=techielass.com) - [Spotify](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) ### Content Creation Tips URL: https://www.techielass.com/content-creation-tips/ Last updated: 2021-05-27T12:49:07.000Z My job, as a Cloud Advocate involves creating content. In whatever form that may take. However, it isn't something I've always done as a job it's been a passionate for a good number of years now. And I did it in my spare time. Over the years I've learnt a few things that can help make content creation more efficient and more effective. ## Reuse Content If you create something look at reusing it, slicing it up into smaller or different chunks to help a different audience or to be reused on another platform. A great example is if you are building a presentation and you have to do things to create a demo or if you have demo videos look at creating blogs or videos out of those steps. Do a voice over on that demo video and post it on your YouTube channel, give it a new audience. If you had to work through a bunch of steps, troubleshoot issues to create a demo of say something like Azure Traffic Manager (this was me a few weeks ago! 😉) share your learnings in blog posts. Make the time you spent learning and creating for that one presentation work for you on different platforms and with different audiences. ## Build up a bank of presentations If you are someone who likes to speak at user groups or conferences, spend sometime working on a number of presentation ideas for the year and focus on them. I have a bank of 3 or 4 presentations that I deliver at various different user groups and conferences and stick to that for a period of time and then look to do new topics. Yes it does mean that sometimes I repeat content, but it's never a full repeat as each time I present I refine that presentation based on how I think the presentation has flowed or based on audience feedback. Working on those 3 or 4 presentations at a time can really help you focus on delivering quality content, as each delivery of that presentation will help refine it and hopefully make it better. Doing this and keeping my presentation pool of suggestions means I can focus on making my presentation delivery the best it can be. It takes a really long time to build a talk track and you want to get the best out of it both for you and the audience. ## Build a plan and schedule Having a plan and sticking to it takes time and disciple. Any new habit, any new hobby takes time to become the norm and creating content shouldn't be any different. Set a schedule of how many times a week and how often you are going to take time to sit and create new content. Having that time in you diary or calendar will hopefully help you build up the muscle of doing it. It isn't always easy to create something new on demand but the more you get into the habit the easier it will become. And with a schedule you can start to plan ahead, and have a steady stream of content you can release. At the moment I am working with a whole set of content for the month for my blog, that's 3 blogs a week. And I am a week ahead for my [YouTube channel](https://www.youtube.com/techielass?ref=techielass.com). That means if there is a day or a week when I am not feeling great or maybe I want to go and spend time outside cause the weather is good I can go do that without stressing that I have a blog due the next day etc. It also helps to have a schedule when you release content so your audience knows when to expect or look for that new content, it will help to build up your visitors and interactions with you. ## Understand the metrics When you write a blog or create videos on YouTube you'll be thrown some kind of metrics, telling you how many people have viewed your blog or how long people are watching your videos for. These metrics are important. But they aren't the only thing to concentrate on. They can help you understand if the topics you are touching on or the format you are using is useful, but it won't tell all the picture. Use it to understand popular topics or styles of content, maybe even times when your visitors are most active so you can time releasing new content to match and hopefully have maximum impact. Don't obsess with how many visitors or likes you have though, that will all come in time. Build quality content, consistent content and they will come. It's a long term plan this content creation thing, it isn't an overnight success. 😊 ## Ask for feedback It's important to look at your content objectively, which can be hard to do. So ask for feedback. Ask someone you trust to review what you've done and get some feedback, even if it's just spelling and grammar feedback. It can be helpful to catch those small mistakes which can bring the quality of your content down. Use the feedback to see where you can improve. ## Learn other skills I've recently started looking to into writing courses to help improve my writing skills and understand the different types of writing and telling a story to audience. Build the skills around your content creation. Whether that be taking a course on how to do photography, video editing, writing, social media engagement, these skills can help bring up the quality of your content and may lead to other opportunities. Invest in yourself, it will be worth it! ### Recorded demos or Live in a presentation? URL: https://www.techielass.com/recorded-demos-or-live-in-a-presentation/ Last updated: 2021-05-25T08:36:32.000Z During technical presentations you often need to show off the technologies you are talking about, the demo part of the presentation. And this section of the presentation often leads to lots of discussion. Whether to do the demos live or whether to use recorded demos. I've heard people argue both sides of this and I've even heard people say that they will walk out of a presentation if someone is using recorded demos as that isn't worth their time. I personally opt for recorded demos 90% of the time for a number of reasons and I thought it would be great to have a panel discussion on the subject and see what others say and what the community says. So on the **2nd June** at 6pm BST/ 7pm CEST / 10am PDT I will be chatting to [Chris Reddington](https://twitter.com/reddobowen?ref=techielass.com) and [Alexander Arvidsson ](https://twitter.com/arcticdba?ref=techielass.com) about this subject and we'd love you all to join us and the discussion. The session will be live on [YouTube](https://youtu.be/Y5m3YfEO1ks?ref=techielass.com), you can set a reminder to attend the session there or you can download this [ICS file](https://techielass.azureedge.net/icsfiles/live-recorded-demos-panel-discussion.ics?ref=techielass.com) and mark your calendars. 😊 ### Weekly Update #92 - I need you! URL: https://www.techielass.com/weekly-update-92/ Last updated: 2021-05-24T14:53:57.000Z This week I am asking for something from all of my listeners and viewers. I need your feedback, I wan to hear what you enjoy, what you hate, what you would like to see me do more of etc on my [YouTube channel](https://www.youtube.com/c/techielass?ref=techielass.com). I have a ton of ideas of things I'd like to blog about, create videos about, but I never seem to get any time to do that strategically. I always seem to be rushing around so I am taking a step back to try and focus and concentrate on the direction I am going on. Your feedback will help make sure I am heading in a direction that works for you as well. So your input is **important**. So please don't be shy. ## Azure News - [Windows Virtual Desktop web client to end support for Internet Explorer 11 on September 30, 2021](https://techcommunity.microsoft.com/t5/windows-virtual-desktop/windows-virtual-desktop-web-client-to-end-support-for-internet/m-p/2369007?WT.mc%5Fid=modinfra-29110-salean&ref=techielass.com) - [General availability: VNET peering support for Azure Bastion](https://docs.microsoft.com/azure/bastion/vnet-peering?WT.mc%5Fid=modinfra-29110-salean&ref=techielass.com) - [Azure Stack HCI learning path](https://docs.microsoft.com/learn/paths/operate-maintain-azure-stack-hci/?WT.mc%5Fid=modinfra-29110-salean&ref=techielass.com) My weekly update on YouTube My weekly update in podcast format ## Vlogging Kit I often get asked what I use to create my videos, here's the equipment I used for this video: - [Samsung S20 Mobile Phone](https://capitaloneshopping.com/p/samsung-galaxy-s-20-fe-5-g-facto/PGS5HJ7D9H?ref=techielass.com) - [Boya BY-M1 Lavalier Microphone](https://capitaloneshopping.com/p/boya-by-m-1-lavalier-microphone-/GG7MN2C6L2?ref=techielass.com) - [Logitech C920 Webcam](https://capitaloneshopping.com/s/logitech.com/coupon?ref=techielass.com) - [3 Legged Thing Punks - Brian](https://capitaloneshopping.com/p/3-legged-thing-brian-74-carbon-f/TM7TPFN2MG?ref=techielass.com) - Adobe Premiere Pro - [StreamYard](https://streamyard.com/?pal=5940677089689600&ref=techielass.com) ### Check website response time with a bash command URL: https://www.techielass.com/check-website-response-time-with-a-bash-command/ Last updated: 2022-05-12T19:16:32.000Z Recently I had to build some demos where I had websites behind Azure load balancers and I wanted to simulate some traffic, and test my configurations. I did use Twitter to help me visit one of the websites but I wanted to test the other websites without asking to many favours of my Twitter friends. So I came up with this [bash script](https://gist.github.com/weeyin83/c697468c5986cb3385990fa1c4c2d72b?ref=techielass.com). 😊 ## What does it do? The short story is it's a bash script that queries your website 50 times and then reports back details of the response time for each query and the average for the 50 queries. You can use this script to query for response time or even just to simulate traffic to your website. ![Bash command running](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/05/command-1.PNG) Command running ## Let's break it down Let's walk through the script though, because let's face it, there's nothing worse than finding a helpful script on the Internet and not really knowing why things are there. 👍 **for i in {1..50}; do echo -n "Run # $i :: ";** This first line is looping for 50 times, you can chance the number range up or down depending on your needs. **curl -w 'Return code: %{http\_code}; Bytes Received: %{size\_download};** For this line the curl command is being activated to pull information and also return information, so it's being instructed to write back the HTTP code response the curl command gets and the size of download that is being performed by the curl command. **Response Time: %{time\_total}\\n' https://www.insertyoururl.com -m 2 -o /dev/null -s;** This line states another output you'll get from the command, response time. And it also states the URL you are querying. The other commands -m, -o and -s are centered around the maximum time allowed for the transfer to take place, the output file (in this example we say no output file) and also silencing the output you normally get from the curl command. **done|tee /dev/tty|awk '{ sum+= $NF; n++ } END { if (n > 0) print "Average Response time =",sum / n; }'** The last line is wrapping things up for the script. It's calculating and printing out the Average Response Time for the 50 queries that have just been run. ### Error when deploying an Azure Landing Zone template! URL: https://www.techielass.com/error-when-deploying-an-azure-landing-zone-template/ Last updated: 2022-03-04T08:16:25.000Z I was recently testing out some of the [Enterprise-Scale Landing Zones](https://docs.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) templates and trying to deploy them to answer some questions I had been sent by someone. And I hit a snag at the first hurdle! > The client 'live.com#\*\*\*\*\*@\*\*\*.com' with object id 'subid-xxxx-xxxx-xxxx-xxxxxxx' does not have authorization to perform action 'Microsoft.Resources/deployments/validate/action' over scope '/providers/Microsoft.Resources/deployments/NoMarketplace-20210322140411' or the scope is invalid. If access was recently granted, please refresh your credentials. (Code: AuthorizationFailed) Now I'm going to fully admit this error could have been avoided if I had read the documentation fully before hitting the deploy to Azure button. However, I wanted to document this in case someone else hit the same snag, or even if I hit the same snag again. 😉 What I had to do to fix it was this: - Head into the Azure Portal and open Azure Active Directory - Under the Manage section select Properties - Under Access management for Azure resources, set the toggle to Yes. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/04/accessmanagement.jpg) As simple as that. 😉 If you are trying to deploy the Enterprise-Scale Landing Zone templates, be sure to check out the [full documentation](https://github.com/Azure/Enterprise-Scale?ref=techielass.com) the team have prepared and you'll avoid issues like these. 👍 ### Weekly Update #91 - Normalise taking time off URL: https://www.techielass.com/weekly-update-91/ Last updated: 2021-05-14T10:40:28.000Z I've been off for the past few days and it's strange coming back to work, but I'm glad of this weekly update as it forces me to catch up with what has been happening and not just move onto the next thing. What this past week has reminded me of it should be normal to take time off and we shouldn't feel guilty of it. I really hate and am sick of people boasting that they are still working at 10pm as it makes others think they should also be doing that as well. It's such a horrid part of social media. I've missed some news from the technology world while taking time off... - [Azure Static Web Apps went GA](https://azure.microsoft.com/blog/develop-production-scale-modern-web-apps-quickly-with-azure-static-web-apps/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Enable Azure Site Recovery when creating a virtual machine](https://azure.microsoft.com/updates/enable-asr-create-vm/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [A new Azure Logo was launched!](https://azure.microsoft.com/blog/a-fluent-new-look-for-the-azure-icon/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Microsoft Teams webinars](https://adoption.microsoft.com/meetings-and-webinars-in-microsoft-teams/webinars/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) Below is links to my video and podcast update, please do check them out! ### Create an Azure SQL Database with built-in sample data URL: https://www.techielass.com/create-an-azure-sql-database-with-built-in-sample-data/ Last updated: 2021-05-13T05:59:59.000Z I was recently building some demo environments for a presentation and needed to have a SQL server in the mix. But I as I was building the SQL server within Azure I realised I need to find some sample data to populate it with so I could have an accurate picture of solution and not just be an empty database. Through the build process I noticed there was a new option when building the database there was a new setting talking about data source and one of the options was to use sample data(!) that would be deployed with the new SQL database. So let's take a look at deploying a Azure SQL database with built-in sample data! ## Let's build The first step in the process is to select the Azure SQL deployment within the Azure Portal. You'll be presented with three options: ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/04/sqlstep1.PNG) Azure SQL deployment options For this purpose, I selected a single database within SQL databases. The next screen asks you the bases, the subscription you want to use, the resource group, database name and size. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/04/sql2.PNG) Azure SQL deployment basics Once you've filled in those details you'll be asked to start to configure the networking settings. And after that you will be asked about security, in this case if you want to enable Azure Defender for SQL. Once you get through those steps the next step is around the data and database collation. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/04/sqlstep3.PNG) Azure SQL data deployment You can choose to deploy an empty database or you can use data from a backup that you have from another SQL server within Azure. Or, and this is the option that excited me as deploy sample data without any additional steps. The deployment will put data from that famous *AdventureWorksLT* source I'm sure we've all used at some point or see within tutorials before. I selected this option and completed my deployment making sure I applied Tags to my deployment. After the deployment had completed, I was able to connect to the database via Visual Studio Code and query the data. 😊 ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/04/sqlstep4.PNG) SQL query within Visual Studio Code I love this, being able to deploy this and get sample data within the deployment saves me a couple extra steps. Go on give it a go! 😊 ### Counting Down to ESPC21 Online URL: https://www.techielass.com/counting-down-to-espc21-online/ Last updated: 2022-12-22T07:48:14.000Z In just under 3 weeks, I will be delivering my session: [The Hybrid Azure Story](https://www.sharepointeurope.com/events/the-hybrid-azure-story/?ref=techielass.com) at *ESPC21 Online* this June. ESPC (European SharePoint, Office 365 & Azure Conference) is always amazing, whether in-person or virtual – the best speakers, topics and audience and everyone is so engaged, so I am really excited to be speaking at this event. [Register for free](https://www.sharepointeurope.com/pricing/?utm%5Fsource=SB&utm%5Fmedium=Blog&utm%5Fcampaign=SB) today to be sure you don’t miss it! In my session, I will talk about how tools such as Windows Admin Centre, Azure Arc, Azure Update Management and how they can help you manage those environments as well as talk about some tools you can use in Azure to extend your on-premises capabilities. Really understanding the the art of the possible. I will be taking any questions you may have live during my session, so come prepared! As a speaker at *ESPC21 Online* I can share with you a special 25% discount on Pro Access tickets, which includes a pre-event tutorial of your choice, all event sessions on demand and more. If interested, just use code **ESPCPRO** when booking [here.](https://www.sharepointeurope.com/pricing/?utm%5Fsource=SB&utm%5Fmedium=Blog&utm%5Fcampaign=SB) You can find the full event schedule [here](https://www.sharepointeurope.com/conference/schedule/?ref=techielass.com). I hope to see you at ESPC21 Online! [Book your ticket today](https://www.sharepointeurope.com/pricing/?utm%5Fsource=SB&utm%5Fmedium=Blog&utm%5Fcampaign=SB)! ### “WARNING: Unable to download the list of available providers. Check your internet connection.” Unable to update PowerShell Packages URL: https://www.techielass.com/warning-unable-to-download-the-list-of-available-providers-check-your-internet-connection-unable-to-update-powershell-packages/ Last updated: 2021-05-16T16:34:44.000Z Recently I've been building some "servers" on-premises in order for me to demo [Azure Arc](https://azure.microsoft.com/pricing/details/azure-arc/?WT.mc%5Fid=modinfra-26633-salean&ref=techielass.com) for some presentations that I am delivering and I hit a snag trying to run the [PowerShell ](https://docs.microsoft.com/powershell/?WT.mc%5Fid=modinfra-26633-salean&ref=techielass.com)script that would set up the Azure Arc agent on my server. It was a bit of a weird error, so I wanted to share it with you all *(and have something for me if I hit this error again! lol).* The server that I had built didn't have the correct NuGet or Az.Accounts modules installed in order to run the Arc install script and it couldn't seem to update them. It was throwing an *"Unable to download the list of available providers. Check your internet connection".* Which seemed strange as the server did have internet access, I was interacting with the Azure Portal on it. 😉 So I did the usual checks with this kind of error, checked DNS, checked ping commands and and WGET from the PowerShell command shell, and even tried to browse the URL it said it couldn't get via my Edge browser. All was coming back okay. Turning to the Internet I found this article: [https://devblogs.microsoft.com/powershell/powershell-gallery-tls-support/](https://devblogs.microsoft.com/powershell/powershell-gallery-tls-support/?WT.mc%5Fid=modinfra-26633-salean&ref=techielass.com) In April 2020 the PowerShell Gallery team **deprecated** Transport Layer Security (TLS) versions 1.0 and 1.1 support meaning all client-server connections would need to use TLS 1.2 (or a later version). ## By default Windows Server and Windows Clients allow SSL3, TLS 1.0, TLS 1.1 and TLS 1.2 connections. Any outbound request for an SSL site will attempt to use SSL3/TLS 1.0 as it's default protocol. Which was my problem, my server was trying to communicate with the PowerShell Gallery via TLS 1.0 and it wasn't responding because it only wanted to connect over TLS 1.2 or above! To check what TLS protocol your PowerShell session or server is set to you can run the [following command](https://gist.github.com/weeyin83/6b60f9bd69e0a47299794a700427231d?ref=techielass.com): ## Changing it To change the TLS setting you can run this [PowerShell command](https://gist.github.com/weeyin83/c80ec2cce2c9aa06e340604e494cba73?ref=techielass.com): This will change the security protocol to TLS 1.2 for that action and then it will revert back to the user’s security protocol back to what it was. ## Call to Action I do wish the error message had been a bit more explicit instead of leading me down a rabbit hole, but thankfully I found the fix and managed to get on with what I was trying to do. 😉 ### Weekly Update #90 - What is the purpose of these updates? URL: https://www.techielass.com/weekly-update-90/ Last updated: 2021-05-07T12:48:36.000Z As I hit my 90th weekly update video I thought I'd look back on my journey a little and explain to any new followers the real purpose of these weekly update videos. These videos have been a real journey for me, they've taught me so much about talking to the camera, filming videos, editing videos, turning them into podcasts and lots more. I hope that folk find them useful as I really do enjoy them and I'm looking forward to number 100 and beyond! You can catch up on what I talk about from my video journey point of view and the weekly Azure news below: My weekly update video You can also listen to the update in podcast format on a ton of platforms here: ### Troubleshooting degraded state in Azure Traffic Manager URL: https://www.techielass.com/troubleshooting-degraded-state-in-azure-traffic-manager/ Last updated: 2021-05-06T06:52:00.000Z I've been looking at [Azure Traffic Manager](https://docs.microsoft.com/azure/traffic-manager/traffic-manager-overview?WT.mc%5Fid=modinfra-26190-salean&ref=techielass.com) lately and I've had a demo environment set up for a few weeks now. This was both for my own personal development and also in preparation for a demo/presentation that was I was delivering. If you'd like to see that presentation in full here it is: ## Degraded I noticed earlier today when I was looking to dig into some of the features and create some videos around them that my Monitor Status was showing as degraded, which was strange! Azure Traffic Manager has [endpoint probes](https://docs.microsoft.com/azure/traffic-manager/traffic-manager-monitoring?WT.mc%5Fid=modinfra-26190-salean&ref=techielass.com) that are used to ultimately determine if they are there and healthy and ready to receive traffic. Ultimately trying to avoid routing your end users to an endpoint that isn't available. ## How do probes work Before I tell you what I did to fix this situation, let look at how Traffic Manager probes actually work and think. - A probe will consider a endpoint online if it gets an HTTP 200 response back from the probe path. - For HTTPS probes any certificate errors are ignored. - A 30X redirect response is treated as a failure unless you've specified that as a valid response. - If all endpoints are reporting as DEGRADED then Traffic Manager treats all endpoints as healthy and routes traffic to the endpoints. ## My issue All my endpoints were reporting as degraded meaning traffic was getting routed. After a few minutes of scratching my head, I was unsure what had happened. And then the penny dropped!! I had set my endpoints/web apps up to ONLY use **HTTPS** and my probes were set to look for HTTP. Meaning the tests were failing. ## **My fix** As I wanted to changed all my endpoint probes to HTTPS tests, the easiest and quickest way for me to do that was to go into the "Configuration" blade within my Traffic Manager and change the Endpoint Monitoring Settings to HTTPS. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/04/endpointmonitoring.PNG) Azure Traffic Manager Configurations Settings Saving this new configuration and waiting a few moments resulted in my Traffic Manager endpoint monitoring status to return to online. 😊 ## A lesson Definitely a lesson to me that one change somewhere can have a negative impact elsewhere! Hope this article helps you understand a bit more about Azure Traffic Manager endpoint monitoring. ### PowerBI: The last refresh attempt failed because of an internal service error URL: https://www.techielass.com/powerbi-the-last-refresh-attempt-failed-because-of-an-internal-service-error/ Last updated: 2023-03-02T19:44:27.000Z ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/04/powerbiterror.PNG) PowerBI Refresh failure notification I have a [PowerBI report](https://powerbi.microsoft.com/?WT.mc%5Fid=modinfra-25380-salean&ref=techielass.com) that I use to store my speaking data, where I've spoken, how many people I've talked to etc.; it's a great way of reminding me of my achievements and showing me how far I've come from that first speaking event back in 2017. [The PowerBI report](https://www.techielass.com/speaking-reports/) was something that I created following [Paul Andrew's](https://twitter.com/mrpaulandrew?ref=techielass.com) great contribution to the community back in 2018. I've been getting an email every morning saying that my data refresh has been failing, and the error message was vague. I left it for a few days to see if it would clear itself up, per the email suggestion. However, after four days of seeing these emails, I decided to investigate. The first thing I did was try to do a manual refresh of the data, which didn't work; it threw the same error back at me. So I knew it was something more fundamental and not something wrong with the scheduled refresh. My next step was to fire up [PowerBI Desktop](https://www.microsoft.com/download/details.aspx?id=58494&WT.mc%5Fid=modinfra-25380-salean&ref=techielass.com) and look at the report and data from there. And this is where I found the error! > Spoiler: the error was due to something wrong my in data! To start to troubleshoot the error within PowerBI Desktop, I initiated a refresh of the data, as the copy I had on my desktop wasn't up to date, I wasn't sure this would work as the refresh wasn't working, but I gave it a try as a starting point. And I received this error back: ![PowerBI Refresh error](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/04/powerbiduplicate.PNG) PowerBI refresh error > I had a duplicate data entry in one of my tables and it was causing an issue! My data is stored within an Azure SQL database, so I launched the Azure Portal to edit the table data, and yup, there it was, a duplicate row, which I duly deleted. I kicked off the refresh of the data within my PowerBI Desktop app, and it was successful! My scheduled refresh is now working as it should again! I am trying to understand why the emailed error was so vague, whereas the PowerBI Desktop app was so verbose with its error message, but at least it helped me understand the issue and fix it. My hope is that sharing what fixed my error helps you. ### Weekly Update #89 - I'm not a social media influencer URL: https://www.techielass.com/weekly-update-89/ Last updated: 2021-04-30T09:11:14.000Z Welcome to another Friday update! The week's are fair flying in, here we are at the end of April! It's been a fairly quiet week for Azure news, but this week I've taken the opportunity to share what there is and also highly some awesome news from the team over at Jabra around the new [video bar](https://www.jabra.co.uk/panacast50?ref=techielass.com) and [personal webcam](https://www.jabra.co.uk/panacast20?ref=techielass.com) that they announced this week. I also take the chance to share where my head is at the moment in regards to social media, and how I'm trying to distance myself from the negative part of it and focus on being a technical expert in my field and not a social media influencer. Focussing on what makes me happy. 😊 My update is also available in an audio only format: ### Which Azure exam should you sit? URL: https://www.techielass.com/which-azure-exam-should-you-sit/ Last updated: 2025-08-21T08:13:15.000Z There are a lot of [Microsoft exams](https://aka.ms/traincertposter?ref=techielass.com) available and it can be quite a daunting task trying to figure out which one is the best for you and our goals. What I would like to do in this post is try and explain what things mean and help you with your certification path. 💡 ****New Resource:** Want to go beyond this blog? I’ve written a practical guide — [**How to Prepare for a Microsoft Exam*](https://leanpub.com/howtoprepareforamicrosoftexam?ref=techielass.com) — packed with tips, study strategies, and real-world advice to help you succeed. ### Exam Codes Each Microsoft exam has a code in front of it, if we focus on the Azure track exams we have, AZ, DP and AI codes. AZ stands for Azure, DP stands for Data and AI stands for Artificial Intelligence. If you look beyond those first letters there are numbers for each exam, those numbers are not in relation to the skill level, or "hardness" of the exam. They relate to the "series" that they are in. Let's take a look at each of the paths and explain what the numbers mean for them. ## Azure ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/11/azureexamcodesexplained.jpg) Azure Exam Codes explained **AZ-1XX exams** focus on those System Administrator type activities, storage, networking, identity, monitoring, security etc. **AZ-2XX exams** focus on Developer-type activities, PaaS, security, coding, 3rd party integrations, etc **AZ-3xx exams** are the architecture series of exams. Which test your knowledge on the implementation of the environment, platform management, this would be considered quite an experienced path. **AZ-4xx exams** are those reserved for DevOps topics, such as Site Reliability Engineering (SRE), compliance, security, source control, and code deployment. **AZ-5xx exams** are focused solely on security. Secret management, user access, securing apps and data, protecting the infrastructure. **AZ-7xx exams** are focused on Networking. At the moment there is only one networking exam. **AZ-8xx** **exams** are focused on Hybrid. This is focussing on Windows and Azure and the Hybrid solutions that are now quite common. **AZ-9xx exams** are the fundamental exams, looking at the basics around Azure and are aimed at technical and non-technical people. It's worth nothing that even though there is a dedicated security exam track there is security throughout the exams, I personally think everyone has to have some kind of security knowledge these days due to the way cybersecurity threats are so prevalent. ## Data ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/04/Slide3.JPG) Azure Data exam codes explained **DP-1XX exams** are classed as data science exams looking at topics such as machine learning and data models. **DP-2XX exams** are data engineer exams focusing on topics such as data processing and data storage solutions. **DP-3XX exams** are database admin exams looking at storing data correctly. **DP-9xx exams** again this is the fundamentals path, looking to give people a good grounding for their data knowledge. ## Artificial Intelligence ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/04/Slide4.JPG) Artificial Intelligence exam codes explained **AI-1XX exams** are focused on the AI solutions within Azure and designing them. **AI-9XX exams** like the other paths this is the fundamental exam section. ## Speciality There are some exams that sit outside of those paths and are focused on a particular technology. [**AZ-120**](https://docs.microsoft.com/learn/certifications/exams/az-120?WT.mc%5Fid=modinfra-24416-salean&ref=techielass.com)is the SAP exam looking at planning and administering Azure for SAP workloads. [**AZ-140**](https://docs.microsoft.com/learn/certifications/exams/az-140?WT.mc%5Fid=modinfra-24416-salean&ref=techielass.com)is the Windows Virtual Desktop exam focused on configuring and operating WVD within Azure. [**AZ-220**](https://docs.microsoft.com/learn/certifications/exams/az-220?WT.mc%5Fid=modinfra-24416-salean&ref=techielass.com) is the Azure IoT Developer exam for those that are developing cloud and edge components on the Azure IoT solution. ## What is the purpose of the fundamental exams? Lots of people have asked me whether or not the fundamental exams are worth sitting or if they are required to go further with their certification journey. They aren't a requirement or a pre-requisite for sitting any of the other exams, they are there for those looking to start their Azure journey or start to learn a new skill. I've sat both the Data and AI fundamental exams to expand my knowledge a little and have an understanding of what is available. These exams are optional, but for those starting out they are a great way of starting your journey. ## Becoming an Azure Architect Another question I often get asked is how to become an Azure Architect? What exams do I need to sit? For me becoming an Azure Architect isn't just about exams though, it takes experience and knowledge of how end users think and their needs, have an idea how business stakeholders operate, etc For me personally I don't think becoming an Azure Architect is something you would undertake as your first role within IT, it's something you work up to, gaining experience and qualifications. If I was to pick an exam path though I would recommend the following: ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/04/Slide8.JPG) Potential Azure Architect Exam path Starting off with the [Azure Fundamentals exam](https://docs.microsoft.com/en-gb/learn/certifications/exams/az-900?WT.mc%5Fid=modinfra-24416-salean&ref=techielass.com) and then either looking at [AZ-104](https://docs.microsoft.com/en-gb/learn/certifications/exams/az-104?WT.mc%5Fid=modinfra-24416-salean&ref=techielass.com) in your interests are more towards the system administration side of IT or [AZ-204](https://docs.microsoft.com/en-gb/learn/certifications/exams/az-204?WT.mc%5Fid=modinfra-24416-salean&ref=techielass.com) if you are more interested by the developer side of things. Then I'd focus on the [AZ-500](https://docs.microsoft.com/en-gb/learn/certifications/exams/az-500?WT.mc%5Fid=modinfra-24416-salean&ref=techielass.com) exam, and build up experience around security and understand the concerns and solutions that are available to help mitigate those threats. Security is something that every organisation is concerned with and as an Architect you need to be aware of that when you are designing systems and understand the implications of that within the environment. You don't need to make it your specialist area but having a good grounding will help you. Then I would focus on the [AZ-303](https://docs.microsoft.com/en-gb/learn/certifications/exams/az-303?WT.mc%5Fid=modinfra-24416-salean&ref=techielass.com) and [AZ-304](https://docs.microsoft.com/en-gb/learn/certifications/exams/az-304?WT.mc%5Fid=modinfra-24416-salean&ref=techielass.com) exams, which are the architect exams. For me this path would give you a good grounding and demonstrate your expertise. It is just my opinion and I'm sure lots of people have different opinions. 😁 ### Weekly Update #88 - Never Stop Learning URL: https://www.techielass.com/weekly-update-88/ Last updated: 2023-12-07T14:26:32.000Z In this weekly update I am out and about exploring again, as the weather in Scotland has been really nice, so it felt wrong to film inside! 😊 I hope you like the location I found. This past week I have re-found my passion of building tech and creating content from it. I learnt a ton from building demos for my ["Scaling with Azure"](https://youtu.be/M78vgG3NFe0?ref=techielass.com) presentation and had a lot of fun doing it! Over the past few months I've been *other* stuff that hasn't always involved making demos and learning with the technology. I definitely need to do more of that and **NEVER STOP LEARNING**. Join me in my update either as a video or as an audio only version, I'd love to hear your feedback so please remember to leave a comment and say hi! 👋 The Audio only version of my update is also available on a [variety of platforms](https://anchor.fm/techielass?ref=techielass.com): ### Using GitHub Gists! URL: https://www.techielass.com/using-github-gists/ Last updated: 2022-12-22T08:19:03.000Z GitHub is a great way to store and share code, create websites and just collaborate with your peers and community. But did you know about the other service that [GitHub offers, called Gists](https://gist.github.com/?ref=techielass.com)? It's something I discovered when I was reading [Christos Matskas's](https://twitter.com/christosmatskas?ref=techielass.com) [blog ](https://cmatskas.com/?ref=techielass.com)a few years ago and thought it was a great way to put code snippets into your blog. Since then I've actually found it such a powerful tool. The gist feature allows anyone to put code snippets in a easily readable, formatted away for people to grab and use in their own environment but that's not all that it can do. ### Creating a Gist The Gists you create can be publicly assessible or secret. So you can have little notes, or code snippets available to the community or just for you, for ease of use or as a great storage location you can access as long as you have an Internet connection. Although once you create a Gist as a public one you can't convert it to secret. With gist's you can either use the GUI interface through a browser to create, interact and share or you can use something like Visual Studio Code and Git to interact with it. From what I understand from the [documentation ](https://docs.github.com/en/github/writing-on-github/creating-gists?ref=techielass.com)and experience of using gist's you can only create them via the browser interface but once you have it created you can [fork it or clone it](https://docs.github.com/en/github/writing-on-github/forking-and-cloning-gists?ref=techielass.com) just like you would with a Git repo. ### Features Much like Git repo's people can star them or subscribe to be notified of changes. As I mentioned above it's a create way of storing code you want to share in a blog post, or provide people with a copy and there is an Embed, option, where a piece of code will be generated that you can paste in your blog and it will show the code formatted in an easy to read format and easy to copy/paste format as well. *(How many times have you copied code from a website and you've had to format tabs to spaces or change the capitalisation for it to work?)* Here's an example of a Git gist that I created with some [PowerShell](https://www.techielass.com/tag/powershell/) code of what I use to install applications via [Chocolately](https://www.techielass.com/chocolatey-what-is-it/) on my laptop after a rebuild. *If you can't see the above embedded code you can find it [here](https://gist.github.com/weeyin83/7262760aedab6437289300793e393b3c?ref=techielass.com).* GitHub supports a good number of programming languages, I think last time I saw some stats it was over 200 programming languages that it supported and gists are no different. You can create Gists with a PowerShell extension, Markdown extension, HTML extension and it will format it correctly for you. ### Public or Secret Gist As I mentioned above you have the option of having a public or secret Gist. It's worth noting you can easily share a secret Gist if you give someone else the URL to it. It's only secret if no one knows the URL. ### Sharing I just love the flexibility of Gists, they allow you to share with others in a frictionless and versatile manner. The code snippet part is my favourite and means I don't have to worry about having a plugin etc within my blog that will format my code correctly. Let me know how you use Gists and the value you've found! ### Weekly Update #87 - Azure and Surface News! URL: https://www.techielass.com/weekly-update-87/ Last updated: 2021-04-16T19:10:41.000Z We've had some great news this week for folks in Scotland, restrictions have been lifted and we can now travel outside our local areas. Albeit we still have to maintain social distancing and a lot of businesses etc are still closed we now have a bit of freedom. I'm hopefully that this will allow me to be a bit more creative with my weekly updates and film more of Scotland during my weekly updates. 😁 There is a lot of Azure and Surface news covered this week in my update: - [Log analytics workspace name uniqueness is now per resource group](https://docs.microsoft.com/azure/azure-monitor/logs/quick-create-workspace/?ocid=AID3023451&WT.mc%5Fid=modinfra-24688-salean&ref=techielass.com) - [MSIX App Attach](https://docs.microsoft.com/azure/virtual-desktop/app-attach-azure-portal/?ocid=AID3023451&WT.mc%5Fid=modinfra-24688-salean&ref=techielass.com) - [Surface Laptop 4 and accessories](https://blogs.windows.com/devices/2021/04/13/introducing-surface-laptop-4-and-new-accessories-for-enhanced-meeting-experiences/?ocid=AID3023451&WT.mc%5Fid=modinfra-24688-salean&ref=techielass.com) Join me as I talk more about these updates and share my thoughts from the week, you can join me in the video format or audio format below: ### Why I started a YouTube channel and what I've learned URL: https://www.techielass.com/why-i-started-a-youtube-channel-and-what-ive-learned/ Last updated: 2023-01-06T08:16:42.000Z If you look back at the statistics I started my [YouTube channel](https://www.youtube.com/techielass?ref=techielass.com) way back in 2006, but I never really invested in it. I just posted some videos of random things not really understanding what or how YouTube worked and how to become successful in it. My real journey started in August 2019 when I decided that I needed to learn how to talk to a camera. Public speaking was becoming part of my job, part of my side hustle, my hobby and I wanted to get better at it and I wanted to be able to scale better. That's when I started my [weekly update video](https://www.youtube.com/playlist?list=PLbjernQTVXitYGv7gWIRNqeWBFyVZJOBk&ref=techielass.com), every Friday for **80+ weeks** (at least at the time of writing) I've shared thoughts on my week, the Azure news and generally just shared. Over those 80 odd weeks I've changed the format, changed the location, changed the way I create the videos, changed the equipment I use, changed the way I share the videos. All of it has evolved. It's been a really long learning curve and journey. > If you don't try, you'll never know! One that's been frustrating and one that's been educational. I've so much, I'm not even sure I can really quantify some of the things that I've learnt fully. There is such a lot of think about with YouTube, it is much like blogging but figuring out what works and what doesn't work. As well as figuring out **what you enjoy doing.** There is really no point doing something that you don't enjoy. **Branding** Branding is something you see and hear all the time from content creators. You see folks creating logos, intro and outro videos, etc and it is something that can help your YouTube channel, your blogs etc. But you can go overboard with it. I have a unicorn logo that scattered across my blog, YouTube channel, and social media as a method of showing folks that all my accounts are linked together and that it's me. 😊 If your not sure what to do in regards to branding, take a look at your favourite YouTube channels, spend time looking at what they've got, where do they place their logos, where don't they. Really look at their channels, analysis it and try to follow their lead, but don't copy. 😉 **Thumbnails** ![YouTube thumbnails](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2023/01/thumbnails.jpg) YouTube thumbnails This is one thing that's constantly been a focus for me. You'll hear people talk alot of about thumbnail design on YouTube. It's your shop window effectively, it's the thing that will entice people to click on the video and watch it. If you get it wrong it can mean people won't click through and view your content. There is no right or wrong to it though, to be honest, every channel will have a different strategy, every content creator will have a different idea, and everyone watching videos wants something slightly different. For me thumbnails need to fun looking, and legible on all devices. Look at your channel on all devices, something you design on your desktop might not look great on a mobile phone screen. Be conscious of experimenting with your thumbnail designs, having a thumbnail that is the same for every video isn't going to work. Don't be frightened to try new things and learn new techniques. And again analysis what makes you click on a thumbnail, what makes it exciting to you? Can you use that for your own? (Again without copying completely.) **Routine** Getting into a routine is something that does take a while, whether you are new to creating content or learning a new hobby. But it's a hurdle you need to get over and then hopefully at the end of it results in the success that you are aiming towards. Thinking of, creating and publishing new content is a lot of work and it takes a lot of dedication. However, if your doing something you enjoy then it won't always seem like work. 😉 Pick a day or time when it suits you to release content, and stick to it. Only change if the data in YouTube tells you there are better times to use. Create that connection with your audience that they know and expect your videos to be released. A few of my favourite YouTube channels have consistent schedules and I know when to look for a video from them and enjoy those days, do the same with your audience. **Look at the data but don't obsess** YouTube throws a lot of data at you, data about how long people watch your videos, where your subscribers are from, if people watch with subtitles, all sorts of data. It can be really overwhelming at first and hard to understand, but take the time to learn more about it and try and understand what the information is telling you. But please don't obsess about it. Don't be refreshing every minute after you release a video waiting for it to go viral and get all the likes and comments, it's not a healthy hobby. (And take it from someone who has been there and done it!) Focus on learning from the data, what thumbnails have worked, what content subjects have worked? **Don't be frightened to change it up** As I said I've been a "YouTuber" since August 2019 and I've changed it up, played with thumbnail designs, playlists, schedules, content types the whole lot. As you learn new things or interpret the data don't be frightened to change it up. Your audience and new audience members will appreciate it! 👍 ### Weekly Update #86 - Happy Unicorn Day! URL: https://www.techielass.com/weekly-update-86/ Last updated: 2021-04-09T09:08:31.000Z Happy Unicorn Day everyone, the national animal of Scotland is the unicorn so it's definitely worthy of celebrating! 😊 In this week's update I talk about the Azure news and then also what I've been up to. It seems like a lot of deadlines are all hitting me at once at the moment, full steam ahead! A public preview feature that I'm excited is now available is the [Start virtual machine on connect feature for Windows Virtual Desktop](https://azure.microsoft.com/updates/public-preview-start-vm-on-connect-feature-for-windows-virtual-desktop/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). This was a feature I talked to Tom Hickling about in February in our [Windows Virtual Desktop Roadmap Deep Dive](https://www.youtube.com/watch?v=FC7Oh3YXwQU&ref=techielass.com) interview. This is definitely one that you should look to implement in your environment as it could save a lot of money by deallocating your virtual machines when you aren't using them but allowing your users the ability to start the virtual machines when they need them. The other feature that has recently been released in public preview is the ability to download [Azure Audit reports within the Azure Security Centre regulatory compliance dashboard](https://docs.microsoft.com/azure/security-center/release-notes?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com#regulatory-compliance-dashboard-now-includes-azure-audit-reports-preview). With it being a four day week, there's been a lot of things to get to grips with and sort out. It does feel like all the deadlines I have this month are hitting at once. 🤣 One of the great things that I worked on this week was a livestream with my colleague Thomas Maurer, we finished off our 5 part blog series with a live Q&A session on [Azure Landing Zones](https://azure.microsoft.com/blog/author/sarah-lean/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). The 30 minutes we had scheduled, went really fast, but it was a great session. If you missed it then there is a [recording available, and I highly recommend you check it out](https://channel9.msdn.com/Shows/IT-Ops-Talk/Azure-Landing-Zone-QA?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). 😉 Grab your favourite drink and comfy chair and settle in for the full update either in video or audio format. ### Studying for SC-900 - Day 5 URL: https://www.techielass.com/studying-for-sc-900-day-5/ Last updated: 2021-04-06T06:59:59.000Z > Disclaimer: I have no insight into what the exam questions are or what the exam will be like. I am studying for this exam based on the public information available from Microsoft. I have no idea if my study plan will be enough to pass the exam, time will tell. Please use my study guide and reference material as guidance and build your own study plan to suit your needs. So day five of studying for the [Microsoft Security, Compliance, and Identity Fundamentals](https://docs.microsoft.com/learn/certifications/exams/sc-900?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) exam. This is the last big push before sitting the exam. I've covered off all the objectives, to at least some degree so I am hopefully of having a successful exam. 😁 There is one section I had left to study under the "Describe the Capabilities of Microsoft Compliance Solutions" which is the *Describe resource governance capabilities in Azure.* This is covering things like resource locks, Azure Blueprints, Azure Policy and the Cloud Adoption Framework. All areas I am familiar with as I've delivered customer engagements in the past surrounding them. However I still spend time going through the [relevant module ](https://docs.microsoft.com/learn/modules/describe-resource-governance-capabilities-azure/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com)within Microsoft Learn to make sure I wasn't missing anything obvious. **Microsoft Security Solutions** With that section covered off the last big section I wanted to go through which covers 30-35% of the overall exam, "Describe the capabilities of Microsoft Security Solutions". Looking at the areas under this big topic there are a lot of things that I do know about but there is also a large portion of things I haven't touched in a long time around the Microsoft 365 platform. Thankfully there is a comprehensive [Learning Path within Microsoft Learn](https://docs.microsoft.com/learn/paths/describe-capabilities-of-microsoft-security-solutions/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) that helps to cover off the areas. During the studying I was able to really understand [SIEM, SOAR and XDR](https://docs.microsoft.com/learn/modules/describe-security-capabilities-of-azure-sentinel/2-define-concepts-of-siem-soar-xdr?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) and define what each was. And also look at the [Microsoft 365 Defender platform](https://docs.microsoft.com/learn/modules/describe-threat-protection-with-microsoft-365-defender/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) and understand the name changes it under went in 2020 and also understand the differences between each of the products. There was definitely a lot of take in for this section and it might actually be my weakest section of the whole exam given the Microsoft 365 content, but I'm making progress and learning as I go. **Sharing my journey** In theory I have covered off the study material for the exam, and am ready to sit the exam. As I said at the start of this journey and the start of this blog, I have no idea of knowing what the questions will be, I don't have any insider information. So there is a chance that I am under prepared for the exam, but I am still going to try. Without trying you never know. 👍 It might be a while before I report back on the result as the exam is still within Beta mode meaning I will sit it and not get my results back instantaneously. But I will update you all on my progress. Good luck if you are studying for this exam or any other exam and please do let m know how you are getting on. 😁 ### Weekly Update #85 - Parallels between women in tech and women in farming URL: https://www.techielass.com/weekly-update-85/ Last updated: 2021-04-03T08:35:57.000Z Hello everyone! Welcome to my weekly update! This week has been a bit of a hectic short one, here in the UK we are off for Easter on Friday (today) and then again on Monday and I so wasn't prepared for two 4 days weeks, definitely hadn't built my schedule around that. However, not to worry, tasks will still be completed. 😊 In my weekly update this week I catch up on some of the Azure news that's happened and I also talk about the parallels I've been noticing between the women in farming struggles and women in tech issues. You can watch my weekly update below, or listen to the audio only version. And then if you scroll further down you'll get links to further reading for the Azure news and also more resources. So grab a comfy seat and your favourite drink and join me, I'd love to hear your thoughts on the news or what else I talk about. 👍 **Resources**: - [ExpressRoute monitoring within Azure Monitor network insights](https://azure.microsoft.com/updates/general-availability-expressroute-monitoring-in-azure-monitor-network-insights/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Private Link for Azure Redis Cache](https://azure.microsoft.com/updates/azure-private-link-for-azure-cache-for-redis-in-general-availability/?WT.mc%5Fid=modinfra-23397-salean&ref=techielass.com) - [Public preview: Azure Static Web Apps now supports deployment with Azure DevOps](https://docs.microsoft.com/azure/static-web-apps/publish-devops?WT.mc%5Fid=modinfra-23397-salean&ref=techielass.com) - [Backup for Azure Managed Disks](https://azure.microsoft.com/updates/azure-disk-backup-ga/?WT.mc%5Fid=modinfra-23397-salean&ref=techielass.com) ### Azure Landing Zones Q&A URL: https://www.techielass.com/azure-landing-zones-qa/ Last updated: 2021-04-08T08:52:23.000Z When organisations are embarking on their Cloud Adoption Journey one of the things that they need to establish is a [landing zone](https://www.techielass.com/what-is-an-azure-landing-zone), or environment where their servers, workloads, resources can live when hosted within Azure. It's almost the equivalent to building out a new physical datacentre, you need things like network subnets, security roles, storage, etc Over the last few months myself and [Thomas Maurer](https://www.twitter.com/thomasmaurer?ref=techielass.com) have been working on a series of blog posts that explain a bit more about Azure Landing Zones and how you can start to think about them from your companies perspective when embarking on your cloud journey. - [Choose the landing zone for your cloud adoption journey](https://azure.microsoft.com/blog/choose-the-landing-zone-for-your-cloud-adoption-journey/?ocid=AID3023451&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Accelerate your cloud adoption with the start small and expand landing zone](https://azure.microsoft.com/blog/accelerate-your-cloud-adoption-with-the-start-small-and-expand-landing-zone/?ocid=AID3023451&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Scale cloud adoption with modular designs for enterprise-scale landing zones](https://azure.microsoft.com/blog/scale-cloud-adoption-with-modular-designs-for-enterprisescale-landing-zones/?ocid=AID3023451&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Deploy key design principles with enterprise-scale architecture](https://azure.microsoft.com/blog/deploy-key-design-principles-with-enterprise-scale-architecture/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Leverage Enterprise Scale Reference Implementations for your Cloud Adoption](https://aka.ms/landingzone/blog5?ref=techielass.com) We've had a really good time working through the blog series and trying to answer some of the questions that we often hear around landing zones. As part of the series we're doing a live Q&A on the 7th April. This live session is aimed at trying to answer your questions and also show you a landing zone being deployed live. 😁 The session is scheduled to be live at 3pm BST (UK Time), or 4pm CEST, or 10am EDT. It will be live on [LearnTV](https://aka.ms/landingzone-qa?ref=techielass.com) or [YouTube](https://youtu.be/Uq02PSkyg%5FI?ref=techielass.com). We'd love to have you join us and ask your questions, if you want to add it to your diary to block out the time then you can download this [ICS file 📅](https://techielass.azureedge.net/icsfiles/Azure%5FLanding%5Fzone%5FQA.ics?ref=techielass.com). (UK ### Microsoft Teams recap of Microsoft Ignite announcements URL: https://www.techielass.com/microsoft-teams-recap-of-microsoft-ignite-announcements/ Last updated: 2021-03-30T07:00:00.000Z At Microsoft Ignite March 2021 there were a bunch of announcements made specifically around Microsoft Teams. I've personally very excited about a bunch of the new features as they will make presenting virtually a much better experience as a presenter and an audience member. What I've done is gone through the announcements and created a summary video of the ones that caught my eye. So grab your favourite drink and sit down with me for a few minutes and catch up on what's new within Microsoft teams. You can also listen to this update in a podcast version: ## Resources: - [Presenter View now in public preview](https://techcommunity.microsoft.com/t5/microsoft-teams-public-preview/now-in-public-preview-powerpoint-presenter-view-in-teams/m-p/2062591/page/2?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Meeting reactions now in public preview](https://techcommunity.microsoft.com/t5/microsoft-teams-public-preview/now-in-public-preview-meeting-reactions/m-p/1978451?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Virtual Events with Microsoft Teams](https://www.microsoft.com/en-gb/microsoft-teams/virtual-events?WT.mc%5Fid=modinfra-0000-salean&rtc=1&ref=techielass.com) ### Why blog, what platform? Let's discuss! URL: https://www.techielass.com/why-blog-what-platform-lets-discuss/ Last updated: 2021-03-29T08:04:42.000Z I've been blogging for over 6 years now and I remember at the start of that journey being unsure on what blogging platform to choose and how to even evaluate the platforms that were available and come to the "right one". Over the years I have flipped between a variety of different platforms to host my blog on, the latest change is moving my blog to [Ghost](https://www.techielass.com/moving-from-grav-to-ghost/). 😁 It's always interesting chatting to others who blog and understanding why they've gone with the platform and blogging options that they have. And it's also something that draws in a lot of interest whenever I bring it up on Twitter so I've decided to bring a few friends (experts?) together to chat about blogging and make it a bit of a panel discussion where others can join us. So on the **31st March 2021** at 6:30pm UK time or 1:30pm EDT or 10:30am PDT join me, [Chris Reddington](https://twitter.com/reddobowen?ref=techielass.com), [Jamie Maguire](https://twitter.com/jamie%5Fmaguire1?ref=techielass.com), [Shannon Kuehn](https://twitter.com/shankuehn?ref=techielass.com) and [John Lunn](https://twitter.com/jonnychipz?ref=techielass.com) as we chat blogging! We're hoping to share some of our thoughts and experiences and answer your questions so be sure to join us! ### Moving from Grav to Ghost URL: https://www.techielass.com/moving-from-grav-to-ghost/ Last updated: 2021-03-28T07:12:30.000Z I've had a blog since 2015, and I've had many platforms. From Blogger to WordPress to [Grav](https://getgrav.org/?ref=techielass.com). It's time for a new platform! 😊 I have loved having [Grav](https://getgrav.org/?ref=techielass.com) as my blogging platform, it was a platform that allowed me to learn more about about how to use Visual Studio Code and Azure DevOps and Azure itself. I covered off my story in previous blog posts, the migration from [WordPress to Grav](https://www.techielass.com/migration-from-wordpress-to-grav), the [lessons that I learnt during the migration](https://www.techielass.com/grav-lessons-learned) and also how I built a [deployment pipeline](https://www.techielass.com/azure-devops-by-an-it-pro) to deploy my changes from Visual Studio Code to Azure via Azure DevOps. ## Why the move? I maintained the front end and the back end of my blog when I ran Grav on Azure. I had to do the changes to the code if Grav released an update, or there was an update for a plug in or if there was a change to something within Azure DevOps. Sometimes that meant I had to spend hours sorting the backend before I code publish a blog. It was time consuming and it was frustrating. Also my blog was starting to look a bit "tired" and it needed an overhaul. 😉 ## **Why Ghost?** I looked at lot of platforms before settling on Ghost. I thought about WordPress or Hugo or Jekyll, but looking at Ghost I saw everything that I liked. This blog is now being hosted on Ghost, by Ghost. I've went with the hosted version. I didn't want to have to look after the back end this time. I've reached the stage where I want to focus on the content and blogs that I write and let someone else worry about the up time and updates. 😉 Ghost is a platform I've looked at a few times and worried it would be to much work to migrate across to or even to much of a learning curve for me to move to. I first heard about the platform from [Troy Hunt](https://www.troyhunt.com/its-a-new-blog/?ref=techielass.com) when he moved several years to Ghost. Ghost has integration with all the platforms that I want to use. No more plugins, so more tweaking some open source plugin to make it display code on my blog the way I want or use the latest FontAwesome font I want. The things you want are [integrated](https://ghost.org/integrations/?ref=techielass.com). The most I've had to do is take a snip of code from say Disqus or Google Analytics and pasted it into my theme's code or into the part within Ghost that injects code into the whole site. I've got a GUI editor that I can use to write my blog posts, or I can use Markdown or I can write raw HTML and Ghost will turn that into a blog. So I haven't lost that functionality which is something I had with Grav. What I have lost is the ability to write a blog offline, the editor I use is hosted online. So if I am ever sitting in an airplane again with no Internet access I wouldn't be able to get to the site. However, I can do what I did many moons ago, save the file in a Word document or a notepad or something and the paste it into the online Ghost platform when I am back online. 👍 ## Speed I had started to notice that my site on Grav and Azure was starting to load slowly. That it wasn't a great experience. Despite my using Cloudflare in front of the site the performance of it over the last few years has degraded. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/gtmetrixgrav.PNG) Speed test on Grav & Azure I don't for one minute think Grav or Azure were to blame, I think it was my lack of configuration, my lack of maintenance. With Ghost I get a Worldwide CDN that is producing **much** faster results. ## Support There is community support for Ghost, lots of people run their own Ghost platform within containers or on Azure. There is also a team of people at Ghost who answer your questions and have helped me with some various questions during the transfer. They've all been very helpful. There are also a host of different themes available for Ghost, free or paid ones. I am currently running the [Liebling](https://github.com/eddiesigner/liebling?ref=techielass.com) theme. Which is a free theme. There were so many themes it really was hard to choice one. I hope you like what I've chosen. 😉 ## Cost Looking at my cost of my Grav blog I was utilising the free plan within Cloudflare, the free Azure DevOps tier and then using an Azure App Service. Over the last three months here are the costs within Azure: ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/azurecost.jpg) Monthly Costs in Azure In terms of Ghost and the Ghost hosted option there are 4 plans you can choose from, each have different usages, I've went with the basic tier as it suits me in terms of views per month and customisation. The cost to me run this Ghost blog is $29 a month, or £21.12, so ultimately cheaper than the solution I was running in Azure. To get that monthly cost though you do have to sign up for a whole year, if you pay monthly it's a bit more expensive. ## Migration from Grav to Ghost There are many guides on how to migrate your existing platform to Ghost within the [Ghost documentation](https://ghost.org/docs/migration/?ref=techielass.com). Now of those were for Grav to Ghost though. 😉 For me the migration process was all about that good old fashioned copy and paste from one platform to another. All my posts within Grav were written in Markdown so I took that and copied it straight into here. For the most part it worked, there were only a few things I had to tweak. One of them being images, I had to upload every image I'd ever embedded into a blog post again. This part was time consuming but obviously necessary. I could have written a tool using the documentation from Ghost to make a migration tool, but I figured it would still be quicker to do it all manually. I had over 300 blog posts and it took me about 2 weeks on and off to do the migration. ## Final Results I'm happy with how it is turned out and pleased that things are up and running on this platform. I've got a few blogs in draft that now need to finalise and get published for you all as my blog writing basically stopped during the migration. Please do let me know if you find any dead links, or issues with pages. I hope I did a good job of migration things but I am sure I missed a few things. Also let me know if there is any design tweaks I need to make. I do welcome constructive feedback. 😊 ### Weekly Update #84 - Recertification URL: https://www.techielass.com/weekly-update-84/ Last updated: 2021-03-26T11:04:26.000Z This week I've sat down for a catch up on the news and take stock of the week I've just had. You can view the video here or on [YouTube](https://www.youtube.com/techielass?ref=techielass.com). 🎧 I also have the update in podcast format, you can listen to it here, or head over to my podcast site [here](https://anchor.fm/techielass?ref=techielass.com). In terms of Azure new it is fairly quiet, but there were two pieces of news that caught my eye. A new version of [AzCopy](https://github.com/Azure/azure-storage-azcopy?ref=techielass.com) has been released that adds preview support for importing from GCP storage to Azure Block blobs and also support for preservation of tags when copying blobs. It was also announced that [Azure Automation is now available](https://azure.microsoft.com/updates/azure-automation-in-uk-west-region/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) within the UK West region giving greater flexibility for those looking to implement automation and state configuration within their cloud and on-premises environment. For me this week I also hit a big milestone where I [renewed my Azure Solutions Architect Expert certification](https://docs.microsoft.com/learn/certifications/azure-solutions-architect/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). This was my first attempt at using the new [renewal ](https://docs.microsoft.com/learn/certifications/renew-your-microsoft-certification?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com)for Microsoft Certification and it was a straight forward process. I'd definitely recommend those that have been notified of their upcoming exam expiry to set aside some time and do the renewal. 😊 And the last thing that I talk about is my new blog platform. 😉 After several weeks of transferring all my posts across to this new layout I have made it live. I'd love to hear your feedback and any suggestions going forward. I do hope you enjoy the new platform. 👍 ### Weekly Update #83 - Spring has Sprung URL: https://www.techielass.com/weekly-update-83/ Last updated: 2023-12-06T08:27:04.000Z Another weekly update, I can't believe I am on number 83, it definitely has been a journey doing these videos. Here's to many more! In this week's update I cover off the Azure news around Availability Zones, Forecast alerts in Cost Management and the new Azure Storage Explorer that has been released. I also talk about my blog transition and some livestreams that are coming up later this month! For more information about the news that I shared check out the links below: - [Azure Storage Explorer new version](https://github.com/microsoft/AzureStorageExplorer/releases/tag/v1.18.0?ref=techielass.com) - [Azure Forecasted Cost Alerts](https://azure.microsoft.com/blog/prevent-exceeding-azure-budget-with-forecasted-cost-alerts/?WT.mc%5Fid=modinfra-21065-salean&ref=techielass.com) - [Azure Availability Zone Commitments](https://azure.microsoft.com/blog/our-commitment-to-expand-azure-availability-zones-to-more-regions/?WT.mc%5Fid=modinfra-21065-salean&ref=techielass.com) ### Microsoft Beta Exams URL: https://www.techielass.com/microsoft-beta-exams/ Last updated: 2021-03-21T17:19:12.000Z Over the years I have sat many exams for Microsoft ranging from my first exam of Windows 7 to the latest ones for Azure over the last few years. This has meant that occasionally I have sat what Microsoft call a Beta exam. ### What is a Beta exam? A Beta exam is ultimately a new exam that Microsoft have developed and have released for feedback from the community. The exam is still an official exam, you get the relevant qualification behind it. Often when a Beta exam is released there is no official learning materials (think training courses, training books, etc) available to study, so there is an expectation that you either have the relevant experience that is being tested in the exam or you are able to locate the relevant study materials yourself. ### When do I get my result? One thing to note with Beta exams is you won't get your score or exam result back straight away. Normally when you sit a Microsoft exam you'll get your score at the end of the exam, whether that is a pass or fail. But with a Beta exam you won't get your result straight away. Beta exam scores are released after the exam goes live. So you may have to wait several days or weeks after the exam goes live. ### Are Beta exams free? There is still a cost associated with sitting a Beta exam. The price can vary, often when a Beta exam launches there is a discount code that can be used to reduce the cost of the exam. Prices may vary due to your country location and the exam being released. ### Where can I find out more information about new exams? Be sure to keep an eye on the [Microsoft Learn Blog](https://techcommunity.microsoft.com/t5/microsoft-learn-blog/bg-p/MicrosoftLearnBlog?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) for news and announcements about new exams, discount codes and learning tips. ### Studying for the SC-900 Exam - Day 4 URL: https://www.techielass.com/studying-for-the-sc-900-day-4/ Last updated: 2021-03-20T14:06:20.000Z > Disclaimer: I have no insight into what the exam questions are or what the exam will be like. I am studying for this exam based on the public information available from Microsoft. I have no idea if my study plan will be enough to pass the exam, time will tell. Please use my study guide and reference material as guidance and build your own study plan to suit your needs. Day 4 of studying for the [Microsoft Security, Compliance, and Identity Fundamentals](https://docs.microsoft.com/learn/certifications/exams/sc-900?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) exam and sharing my journey. Today I have a bit more time than usual to study so let's see where I can get to and what exam objectives I can cover off! ## Microsoft Compliance Solutions I'm still focussing on the section of the exam that covers "Describe the capabilities of Microsoft Compliance Solutions". This section of the exam takes up 25-30% of the exam, so it's an important section to understand. This section covers off a lot of Microsoft 365, which isn't something I'm familiar with of late. I used to do this kind of stuff but it's been a number of years since I've fully dug into it and implemented it in a production environment. Again turning to [Microsoft Learn](https://docs.microsoft.com/learn/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) I've focussed on [Describe insider risk capabilities in Microsoft 365](https://docs.microsoft.com/en-us/learn/modules/describe-insider-risk-capabilities-microsoft-365/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) and [Describe information protection and governance capabilities of Microsoft 365](https://docs.microsoft.com/en-us/learn/modules/describe-information-protection-governance-capabilities-microsoft-365/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). I'm going to be honest here and didn't enjoy this at all. I guess it's just one of those areas where I know it's important but my brain doesn't like the theory. For thing kind of content I would probably be better sitting within a demo Microsoft 365 tenant and applying labels and policies and see what it looks like for the end users. Which is something I might yet build into my study plan. There are areas in the exam that I feel confident I have enough knowledge about and some I'm sure I have no knowledge off so I am being conscious to cover off the areas I am weak at first and ensuring I am not wanting in those areas when I sit the exam. I was pleased to read that the [customer lockbox](https://docs.microsoft.com/azure/security/fundamentals/customer-lockbox-overview?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) functionality I was aware of being in place within Azure is also available within [Microsoft 365](https://docs.microsoft.com/microsoft-365/compliance/customer-lockbox-requests?view=o365-worldwide&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com), because I didn't realise we had that within Microsoft 365! So going through these modules and learning paths is hopefully helping me on the road to passing the [Microsoft Security, Compliance, and Identity Fundamentals (SC-900)](https://docs.microsoft.com/learn/certifications/exams/sc-900?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) exam and helping me learn about features and products I didn't realise existed! ### Sharing my Journey Making progress everyday is what this journey is about, making sure I learn something and don't just go into the exam and guess the answers and hope for a pass. 😁 Let me know if you are studying for the exam and what resources you are finding useful! ### Weekly Update #82 - Taking time to reflect and take control URL: https://www.techielass.com/weekly-update-82/ Last updated: 2021-03-13T12:42:02.000Z In today's weekly update I am talking about some of the Azure news that has happened and also about the presenter features that are coming out within Microsoft Teams. I also share how I've been reflecting on my to do list and what I need to prioritise while we run down to the end of the Microsoft FY. My side project is changing my blogging platform, it's time for a change! 😉 ### Studying for the SC-900 Exam - Day 3 URL: https://www.techielass.com/studying-for-the-sc-900-day-3/ Last updated: 2021-03-20T14:06:49.000Z > Disclaimer: I have no insight into what the exam questions are or what the exam will be like. I am studying for this exam based on the public information available from Microsoft. I have no idea if my study plan will be enough to pass the exam, time will tell. Please use my study guide and reference material as guidance and build your own study plan to suit your needs. As I explained in my previous blog, I am looking to study for the [Microsoft Security, Compliance, and Identity Fundamentals](https://docs.microsoft.com/learn/certifications/exams/sc-900?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) exam and share my journey. Today is another day of studying and making sure I cover off the objectives the exam might ask me. ## Microsoft Compliance Solutions Today I am tackling the section of the exam on "Describe the capabilities of Microsoft Compliance Solutions". This section of the exam takes up 25-30% of the exam, so it's an important section to understand. This section covers off some of the governance and information protection capabilities of Microsoft 365, so this is a section I am definately not 100% up to speed with. I used to use Microsoft 365 a lot, either migrating customers to it or helping them with the adoption plans. However, over the last few years I've not really used it. My own email address is hosted in a Microsoft 365 tenant so I dabble every now and again, but I'm not using it every day. Again turning to [Microsoft Learn](https://docs.microsoft.com/learn/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) there is a Learning path that covers off this section of the exam [Describe the capabilities of Microsoft compliance solutions](https://docs.microsoft.com/learn/paths/describe-capabilities-of-microsoft-compliance-solutions/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). I didn't have a lot of time today to study but I have managed to cover off a couple of the modules in the learning path. But I have managed to learn some things that I wasn't sure of, so it's been a good session! 😁 The [Microsoft Compliance Manager](https://docs.microsoft.com/microsoft-365/compliance/compliance-manager?view=o365-worldwide&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) isn't something I'm familiar with but I've learnt it is an end to end solution in the [Microsoft 365 compliance center](https://docs.microsoft.com/microsoft-365/compliance/microsoft-365-compliance-center?view=o365-worldwide&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) that enables admins to manage and track compliance activities. Where as the compliance score, which is available through the Compliance Manager helps gives you an overall compliance posture overview. The Compliance Manager can help you understand and increase your compliance score and help to stay within compliance requirements. I'm not sure I could have told you the difference between the two before today's study session. I also learnt a bit more about the [Advanced Audit](https://docs.microsoft.com/microsoft-365/compliance/advanced-audit?view=o365-worldwide&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) capability within Microsoft 365 and how it can help organisations conduct forensic and compliance investigations. The Advanced Audit keeps all Exchange, SharePoint, and Azure Active Directory audit records for one year, but I believe a longer retention capabilities is on the roadmap. ### Sharing my Journey Making progress everyday is what this journey is about, making sure I learn something and don't just go into the exam and guess the answers and hope for a pass. 😁 Let me know if you are studying for the exam and what resources you are finding useful! ### Studying for the SC-900 Exam - Day 2 URL: https://www.techielass.com/studying-for-the-sc-900-day-2/ Last updated: 2021-03-22T12:50:14.000Z > Disclaimer: I have no insight into what the exam questions are or what the exam will be like. I am studying for this exam based on the public information available from Microsoft. I have no idea if my study plan will be enough to pass the exam, time will tell. Please use my study guide and reference material as guidance and build your own study plan to suit your needs. As I explained in my previous blog, I am looking to study for the [Microsoft Security, Compliance, and Identity Fundamentals](https://docs.microsoft.com/learn/certifications/exams/sc-900?WT.mc%5Fid=modinfra-15284-salean&ref=techielass.com) exam and share my journey. Today was my first day of studying, so let's see what I used and how I tackled studying! ## Starting to study As this is a new exam there is not a lot of reference material and because it's in beta not a lot of people will have sat the exam. And even those that have sat it won't know if they have passed or not yet so trying to understand how hard or how much experience you need for this exam is a bit of a guessing game. On each Microsoft exam page they do list reference material to help you study for the exam objectives, whether that be hands on labs, training courses, course books or [Microsoft Learn](https://docs.microsoft.com/learn/?WT.mc%5Fid=modinfra-15284-salean&ref=techielass.com) training. The [SC-900](https://docs.microsoft.com/learn/certifications/exams/sc-900?WT.mc%5Fid=modinfra-15284-salean&ref=techielass.com) has a bunch of [Microsoft Learn](https://docs.microsoft.com/learn/?WT.mc%5Fid=modinfra-15284-salean&ref=techielass.com) modules it suggests would make a good start to studying. So that's where I am starting! One of the skills measured in the exam is "Describe the concepts of security and compliance and identity" and this accounts of 5-10% of the exam. There is [Microsoft Learn](https://docs.microsoft.com/learn/?WT.mc%5Fid=modinfra-15284-salean&ref=techielass.com) Learning Path that directly talks about those kind of things [here](https://docs.microsoft.com/learn/paths/describe-concepts-of-security-compliance-identity/?WT.mc%5Fid=modinfra-15284-salean&ref=techielass.com). This is where I have started, the learning path has two modules and took me just under an hour to complete. I am already familiar with a lot of the concepts and things that the learning path talks about, but it was good for a refresher and to make sure my definition of things are still correct. 😉 > As I said at the start I have no idea what the questions will be like or if this Learning Path does into enough depth to ensure I am skilled enough to take and pass the exam. Please use your own discretion to understand if the material covers enough or not. If you aren't familiar with any please do further research. I think some of the concepts in this Learning Path are important for people to be aware of regardless of whether you are studying for the exam or just embarking on a cloud journey with your organisation. Being aware of [Microsoft's Privacy Principles](https://www.microsoft.com/trust-center/privacy?rtc=1&WT.mc%5Fid=modinfra-15284-salean&ref=techielass.com) or understanding the cloud's shared responsibility model are something everyone should be aware of. ![Cloud Shared Responsibility](https://www.techielass.com/wp-content/uploads/2021/02/shared-responsibility.png) ### Sharing my Journey So that's the first study session under my belt, a bit short today due to other commitments but you've got to start somewhere, I'll be continuing to share my journey over the next few weeks. Let me know if you are studying for the exam and what resources you are finding useful! ### Microsoft Ignite March 2021 News Recap URL: https://www.techielass.com/microsoft-ignite-march-2021-recap/ Last updated: 2021-03-15T19:49:36.000Z There has been a lot of news announced at this year's Microsoft Ignite virtual conference. It's definately an exciting time to be working in the IT industry. It can be hard trying to follow all these announcements, understand what they mean for your organization and juggle everything else that is currently going on in the world. What I've done is taken some time to go through the announcements and pick out 12 different pieces of news that have caught my eye and done a recap video and a podcast. So grab your favourite drink and snack and either tune into the video below or listen to the podcast episode. My podcast is available on all the usual platforms, you can find out more [here](https://anchor.fm/techielass?ref=techielass.com). ### Studying for the SC-900 Exam - Day 1 URL: https://www.techielass.com/studying-for-the-sc-900-day-1/ Last updated: 2021-03-20T14:03:27.000Z Over the last few days Microsoft have announced a bunch of new exams. These exams are currently in [beta](https://techcommunity.microsoft.com/t5/microsoft-learn-blog/just-how-does-one-prepare-for-beta-exams/ba-p/1469421?WT.mc%5Fid=modinfra-15198-salean&ref=techielass.com) and are focussed on security. - [Microsoft Security, Compliance, and Identity Fundamentals](https://docs.microsoft.com/learn/certifications/exams/sc-900?WT.mc%5Fid=modinfra-15198-salean&ref=techielass.com) - [Microsoft Security Operations Analyst](https://docs.microsoft.com/en-gb/learn/certifications/exams/sc-200?WT.mc%5Fid=modinfra-15198-salean&ref=techielass.com) - [Microsoft Identity and Access Administrator](https://docs.microsoft.com/en-gb/learn/certifications/exams/sc-300?WT.mc%5Fid=modinfra-15198-salean&ref=techielass.com) - [Microsoft Information Protection Administrator](https://docs.microsoft.com/en-gb/learn/certifications/exams/sc-400?WT.mc%5Fid=modinfra-15198-salean&ref=techielass.com) These exams are all targeted a different job roles and for those at different technical levels. The [Microsoft Security, Compliance, and Identity Fundamentals](https://docs.microsoft.com/learn/certifications/exams/sc-900?WT.mc%5Fid=modinfra-15198-salean&ref=techielass.com) exam is aimed at those that are business stakeholders, new or existing IT professionals, or students who have an interest in Microsoft security, compliance, and identity solutions. It's expected that those sitting the exam have a broad overview of Azure and Microsoft 365. > Disclaimer: I have no insight into what the exam questions are or what the exam will be like. I am studying for this exam based on the public information available from Microsoft. I have no idea if my study plan will be enough to pass the exam, time will tell. Please use my study guide and reference material as guidance and build your own study plan to suit your needs. ### Starting my journey Having had a quick read of the exam aims and objectives I've decided that I want to try and study for the [Microsoft Security, Compliance, and Identity Fundamentals](https://docs.microsoft.com/learn/certifications/exams/sc-900?WT.mc%5Fid=modinfra-15198-salean&ref=techielass.com) exam. And I would like to take you on that journey with you and show you how I prepare for the exam and where I get my study material from. The SC-900 exam focuses on Azure and Microsoft 365\. My focus these days is Azure, but I have used Microsoft 365 in years gone by and still dabble a little as I have my on personal tenant for my email and file share. Having a look at the detailed exam skills outline there are some areas I am not 100% up to date or entirely clear on. So rather than just attempt the exam and see where I land, I want to spend some time, especially on the areas I am weak on so I can nail the exam. 😁 It's also a good opportunity for me to understand what training material is available for this exam and if there are any holes in it then I can look at trying to help fill that, that is part of my role as a [Senior Cloud Advocate](https://developer.microsoft.com/advocates/?WT.mc%5Fid=modinfra-15198-salean&ref=techielass.com) at Microsoft after all. 😉 ### First steps The first steps whenever I prepare for an exam is to take that deep dive look into the exam skills outline. Within every Microsoft exam page there is a link to a detailed file should you what kind of topics you might be asked about. It really explains how the exam is split up and where you should be focusing your attention. The exams skills outline really helps you understand where you need to study and strengthen. As I said my focus is on Azure these days and I've got over 14 years of IT experience in my back pocket, but I don't know everything. There are areas of the exam that I know I am strong in and will probably not do any additional work but there are some areas and subject I am definately sketchy on, those are where I will be focusing on. ### Study Material At the bottom of each Microsoft exam there is a section that suggest learning resources. Depending on the exam you might get links to books, or training courses or online material. For this exam the suggest is material and learning paths on [Microsoft Learn](https://docs.microsoft.com/learn/?WT.mc%5Fid=modinfra-15198-salean&ref=techielass.com). I've always found Microsoft Learn material to be really helpful, I passed the [AI-900](https://www.techielass.com/studying-for-ai-900), [PL-900](https://www.techielass.com/passing-PL-900) and [DP-900](https://www.techielass.com/studying-for-dp-900) exams. So we will see how the material fairs for this exam. 😁 ### Sharing my Journey So I'll be sharing my journey for this exam, I've got the exam booked and I have set aside time several times during the week to study so I'll share each learning session and what I've found. Let me know if you are studying for the exam and what resources you are finding useful! ### Weekly Update #81 URL: https://www.techielass.com/weekly-update-81/ Last updated: 2021-03-23T16:58:49.000Z Hey everybody! Thanks to everyone that has supported my [YouTube channel](https://www.youtube.com/techielass?ref=techielass.com) I can now stream live from my mobile phone. So today as I have time off work I decided to go for a walk and do my weekly update video! It's always nice to get out of the office and see something different. Thank you also to everyone that tuned in when I was live today, it was much appreciated. I'm hoping I can do more of these with the nicer weather now making an appearance in Scotland. In this week's update I spoke about some of the news announcements from [Microsoft Ignite March 2021](https://ignite.microsoft.com/?ref=techielass.com), my experience of speaking at the event and also spent some time trying to spot the wild life in the background! 😉 [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Free Screen Recording Software URL: https://www.techielass.com/free-screen-recording-software/ Last updated: 2021-03-18T19:10:56.000Z Recording your screen for documentation or demo purposes is something we've probably all had to do at some point, or wish we'd love to be able to do. Many have turned to [Camtasia](https://www.camtasia.com/?ref=techielass.com) for their screen recording software. The one draw back to Camtasia is the cost, it's prohibitive to a lot of people unfortunately despite it's great capabilities. I talked my video creating and editing process in my [Camtasia v Premiere Pro](https://www.techielass.com/camtasia-vs-premiere-pro) blog post. I talked about how I used Camtasia for the screen recording and then exported the recording into [Adobe Premiere Pro](https://www.adobe.com/uk/products/premiere.html?ref=techielass.com). On that blog post someone commented that [Logitech Capture](https://www.logitech.com/en-gb/product/capture?ref=techielass.com) was able to do screen recording. Now [Logitech Capture](https://www.logitech.com/en-gb/product/capture?ref=techielass.com) is a bit of software that I previously had installed to try and record videos via my Logitech camera but didn't really like it so hadn't fired it back up in a long time. After the comment was posted, I opened the software back up again and low and behold, it does do screen recording!! [Logitech Capture](https://www.logitech.com/en-gb/product/capture?ref=techielass.com) is a free bit of software that can be installed on Windows 7 and above machines. It doesn't seem to have been updated since 2019 however, the functionality is there. It can record video from your webcam, what is happening on one of your screens or what is happening within a specific window. It can record audio as well if you want it to do that also. It records the footage in MP4 format. You can record horizontal video or even vertical for mobile phones type optimised footage. You also have the option of combining those sources at recording, so recording your screen with a window of your webcam (or another source) there already. So you wouldn't need to do editing afterwards to combine the two. The thing I have found when recording footage on my video camera, the audio doesn't sync very good. There is a delay. Which isn't great or what you'd like. I haven't been able to figure out what the issue is, but it seems to be there when I record from my Logitech C920 on my Microsoft Surface Book 2. However, screen recording is great. I mostly record what I am doing without any sound, I prefer to do that so I can do commentary separately that won't include mouse clicks and button clicks or use as a demo video during presentations etc. This is a great bit of software that can be used in a variety of ways, but the ability to screen record without having to pay any money is a great feature! Be sure to have a look at it and [download](https://www.logitech.com/en-gb/product/capture?ref=techielass.com) a copy. ### Weekly Update #80 URL: https://www.techielass.com/weekly-update-80/ Last updated: 2021-03-23T16:43:11.000Z The weather has improved this week so I've taken advantage of it and got outside for this week's update. I really like this little filming spot that I've found, it's near my house and it's lovely and calm. When Spring really kicks in I think it's been even better with everything having awoken from it's Winter sleep. 😊 In this week's update I am talking about some of the Azure news and also about how we need to be respectful of people's time and not just assume because we are all at home that we are constantly free to answer messages and attend meetings or meetups. - [Community support for Python 3.6 is ending on 23 December 2021](https://azure.microsoft.com/en-gb/updates/community-support-for-python-36-is-ending-on-23-december-2021/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [The E64i\_v3 & E64is\_v3 Azure VMs will not be hardware-isolated on 28 February 2022](https://azure.microsoft.com/en-gb/updates/the-e64iv3-e64isv3-azure-vms-will-not-be-hardwareisolated-on-28-february-2022/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Application Gateway analytics will be retired on 29 February 2024](https://azure.microsoft.com/en-gb/updates/azure-application-gateway-analytics-will-be-retired-on-29-february-2024/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Azure Unblogged - Azure Migrate URL: https://www.techielass.com/azure-unblogged-azure-migrate/ Last updated: 2021-03-12T16:25:37.000Z In this new episode of [Azure Unblogged](https://www.youtube.com/playlist?list=PLjt5SKzX1iI-JC60PPx%5FC60pF%5F0oITmza&ref=techielass.com) I had the pleasure of sitting down with Bharath Sivaraman to talk about Azure Migrate. Azure Migrate is a product I've been using and talking about for many years now, I often say that it's my favourite product within the the Azure range. During the interview Bharath and I talked about what Azure Migrate is and how it can help organisations. We also spoke about some of the functionality within the tool and Bharath demo'd it for us. He also spoke about the new preview which helps you containerize your apps into Azure Kubernetes Services (AKS). You can watch the full video here or on [Microsoft Channel 9](https://channel9.msdn.com/Shows/IT-Ops-Talk/Azure-Unblogged-Azure-Migrate?WT.mc%5Fid=modinfra-11072-salean&ref=techielass.com). During the show Bharath mentioned a few places for further information, below are the links if you need them: - [What's new with Azure Migrate](https://docs.microsoft.com/en-gb/azure/migrate/whats-new?WT.mc%5Fid=modinfra-11072-salean&ref=techielass.com) - [Microsoft Learn: Design your migration to Azure](https://docs.microsoft.com/en-gb/learn/modules/design-your-migration-to-azure/?WT.mc%5Fid=modinfra-11072-salean&ref=techielass.com) - [Azure Migrate Documentation](https://docs.microsoft.com/en-gb/azure/migrate/migrate-services-overview?WT.mc%5Fid=modinfra-11072-salean&ref=techielass.com) - [Sign up for the App Containerization - Migrate apps to Azure Kubernetes Service preview feature](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR2movJJumhJAnlM3ikajletUMldCVTNBMzVCUUVNOEpNWktCUlBKSkdLMS4u&ref=techielass.com) If you'd like to see me interview anyone for an episode of Azure Unblogged please do let me know! ### Windows Virtual Desktop Roadmap URL: https://www.techielass.com/windows-virtual-desktop-roadmap/ Last updated: 2023-12-07T14:44:07.000Z As part of the [IT Ops Talks: All things Hybrid](https://aka.ms/itopstalks?ref=techielass.com) event that my team and I created I had the opportunity to sit down with [Tom Hickling](https://www.twitter.com/tomhickling?ref=techielass.com) to talk about [Windows Virtual Desktop(WVD)](https://azure.microsoft.com/services/virtual-desktop/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com), how it's been helping organisations during the pandemic and also how organisations can use it in a hybrid environment and what that would mean. We also got a chance to look at the [WVD Roadmap](https://aka.ms/ops110-roadmap?ref=techielass.com), which has some cool features. Tom shared information about [RDP Shortpath](https://aka.ms/ops110-shortpath%E2%80%8B?ref=techielass.com) and demo'd it in action for us. A new feature on the roadmap is also [MSIX App Attach](https://aka.ms/ops110-msixapp?ref=techielass.com). MSIX App Attach is a new packaging method that aims to improve the packaging experience for all Windows apps. The aim is to keep the user, operating system and data seperate from the apps, so that if you need update or change the app for whatever reason it's independant and not backed into your traditional master image. The next feature that Tom demo'd was [Anti Screen Scraping](https://aka.ms/ops110-antiscreen?ref=techielass.com). This feature is all about stopping users from sharing sensitive data, either by accident or on purpose. It blacks out your WVD desktop if you are using a screen sharing app, such as [StreamYard](Streaming), [Microsoft Teams](https://www.microsoft.com/microsoft-teams/group-chat-software?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) and much more. Check out the session, Tom shares alot of insight into these roadmap features and how you can [drive future roadmap features](https://aka.ms/ops110-uservoice?ref=techielass.com). ### Weekly Update #79 URL: https://www.techielass.com/weekly-update-79/ Last updated: 2021-03-23T16:44:19.000Z This week's update sees me inside as unfortunately the weather is pretty miserable and not ideal for filming. I have found a nice spot I'd love to film from so hopefully it will be nice again soon. In terms of Azure news I cover off a few bits and pieces: - [Cross Region Restore of Azure VMs now generally available](https://azure.microsoft.com/updates/cross-region-restore-of-azure-vms-now-generally-available/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Cost Management now available for Azure Government Pay-As-You-Go subscriptions](https://azure.microsoft.com/updates/acm-for-payg-azure-gov/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Automatic Azure VM extension upgrade capabilities now in public preview](https://azure.microsoft.com/updates/automatic-extension-upgrade-now-in-preview/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) I also talk about some of the events I've started to be asked to present at. I'm very excited about talking to audiences at [Microsoft Ignite](https://myignite.microsoft.com/home?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) and [Techorama](https://techorama.be/?ref=techielass.com) this year. [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Azure Unblogged - Azure Policy URL: https://www.techielass.com/azure-unblogged-azure-policy/ Last updated: 2021-03-12T16:26:59.000Z In this new episode of [Azure Unblogged](https://www.youtube.com/playlist?list=PLjt5SKzX1iI-JC60PPx%5FC60pF%5F0oITmza&ref=techielass.com) I had the pleasure of sitting down with [Liz Kim](https://www.twitter.com/lizkim101?ref=techielass.com) to talk about Azure Policy. In this episode Liz tells us the journey the product has been on since it was launched in 2017, where Azure Policy fits in in the Hybrid story and also shares some customer insights with us. You can watch the full video here or on [Microsoft Channel 9](https://channel9.msdn.com/Shows/IT-Ops-Talk/Azure-Unblogged-Azure-Policy?WT.mc%5Fid=modinfra-12795-salean&ref=techielass.com). I hope you enjoyed the video if you have any questions feel free to leave a comment and if you want to check out some of the resources Liz mentioned please check out the links below: - [Azure Policy](https://docs.microsoft.com/azure/governance/policy/overview?WT.mc%5Fid=modinfra-12795-salean&ref=techielass.com) - [Azure Policy definitions for Azure Arc](https://docs.microsoft.com/azure/azure-arc/servers/policy-reference?WT.mc%5Fid=modinfra-12795-salean&ref=techielass.com) - [Build a cloud governance strategy on Azure](https://docs.microsoft.com/learn/modules/build-cloud-governance-strategy-azure/?WT.mc%5Fid=modinfra-12795-salean&ref=techielass.com) If you'd like to see me interview anyone for an episode of Azure Unblogged please do let me know! ### Weekly Update #78 URL: https://www.techielass.com/weekly-update-78/ Last updated: 2021-03-23T16:45:28.000Z Happy Friday everyone! I hope you are all well, it's been a busy week here with lots of things going on. In my weekly update I share the Azure news that has happened this week and also talk about team work. Some 20 odd years ago I took up the sport of curling, after seeing it demonstrated at the winter olympics. The sport has given me some wonderful opportunities and adventures. But it's also helped give me skills that I can use within my professional career. Curling is a sport that teaches you teamwork skills, leadership, trust and communication. There are large parts of it that are based around working as a team but there are also parts of it where you have to be a leader. I've taken those skills from my hobby into my professional career. In my job there are times when I need to work as a team, be a leader or be an individual contributor. I'd love to hear what skills outside of your career have helped you within your career? [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### My Journey to 1000 YouTube Subscribers URL: https://www.techielass.com/my-journey-to-1000-youtube-subscribers/ Last updated: 2021-03-15T20:06:20.000Z Back in August 2019, I released my first [Weekly Update](https://youtube.com/playlist?list=PLbjernQTVXitYGv7gWIRNqeWBFyVZJOBk&ref=techielass.com) video and to be honest, that was the first time I really start to invest into my [YouTube channel](https://www.youtube.com/techielass?ref=techielass.com). I had dabbled in making videos before, and got some good results from them before, but my content creation was really sporadic and there was no really strategy or thought behind the videos. However, in August 2019 I decided that I need to get more familiar with talking to a camera, and just being a bit more visible. I'd done a lot of public speaking and thought doing the videos and sharing my knowledge would help me get better both at public speaking and add new skill to my CV. And that's how the [Weekly Update](https://youtube.com/playlist?list=PLbjernQTVXitYGv7gWIRNqeWBFyVZJOBk&ref=techielass.com) video came around. The [Weekly Update](https://youtube.com/playlist?list=PLbjernQTVXitYGv7gWIRNqeWBFyVZJOBk&ref=techielass.com) video has evolved and changed since I started in 2019, I've done over 70+ of them (at the time of writing this blog) and it is a big commitment every week but at the same time it's such a nice thing to do. It's fun to me and it's also a great way of sharing with everyone as we are currently locked down and due to the pandemic. I'm extremely grateful to everyone that has taken the time to watch one of my videos or shared or commented, I truly do appreciate all the support I get. My channel isn't just [Weekly Update](https://youtube.com/playlist?list=PLbjernQTVXitYGv7gWIRNqeWBFyVZJOBk&ref=techielass.com) videos though, there is some different content on there. I've created quick videos showing off new features within Azure, or answering questions people have or sharing things I do or use as a presenter. The videos I made last year covering off [Presenting Tips](https://youtube.com/playlist?list=PLbjernQTVXisMi7dG%5FvRyGFm5Jw0bquC5&ref=techielass.com) were well received and I loved doing them. I still have some ideas to share on that front, so it's always worth [subscribing](https://www.youtube.com/user/techielass?sub%5Fconfirmation=1&ref=techielass.com) to my YouTube channel to get notified when a new video drops. ### 1000 subscribers I finally reached the magically number of 1,000 subscribers on the 30th January! ![1k_bananas_en_uk_us](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/1k_bananas_en_uk_us.gif) My aim was to reach 1,000 by the end of 2021 so to reach that number by the end of January 2021 has completely blown my mind! Again I'm thankful to everyone that has subscribed and is supportive of what I am trying to do. Creating video content can be a lot of work however, I do enjoy the process. I'm slowing adding to my video and audio setup and enjoying exploring different techniques. And I'm also building my knowledge of how to edit a video as well. There is a list of videos I'd love to create this year so I'm excited to complete that list and also create videos for ideas I've not even thought of yet! 😁 ### My Journey Creating video content isn't something that everyone would enjoy, some people find it gives them energy and others find it doesn't. But I would recommend that everyone gives it a go and see if it's something that you would enjoy. I've found it a great personal growth area, both in confidence and technical skills. I look forward to growing my channel and seeing where it can take me and the community! ### Weekly Update #77 URL: https://www.techielass.com/weekly-update-77/ Last updated: 2021-03-23T16:46:48.000Z Despite the rain and bleak day here in Scotland I braved the outdoors to get some fresh air and also do my weekly update video! Not the most pleasant scenery this week, but with lockdown restrictions in place in Scotland I am limited to where I can travel at the moment. Here's hoping as we start to approach Spring we can get the restrictions lifted and get to travel a bit more and explore different locations. This week has been a big week, my team and I launched the [IT Ops Talks: All things Hybrid](https://aka.ms/itopstalks?ref=techielass.com) event, which saw us do a live stream for the keynote with [Mark Russinovich](https://www.twitter.com/markrussinovich?ref=techielass.com) followed by a live Q&A with the man himself. We then released all the sessions that we had recorded, which you can view at your leisure on [YouTube](https://www.youtube.com/playlist?list=PLjt5SKzX1iI8k8%5FI80quMWgeNdSGyXzaF&ref=techielass.com). Please do let us know what you think of the sessions and if you have any questions. As well as that news I covered off why I do what I do, the creating videos, the creating blogs, the community activities, I enjoy it, and I think folks need to remember to focus on the things they enjoy and focus on that. Not what everyone else is doing. If you enjoy it and the success, the audience will follow you. Even if that audience is just your boss noticing you. 😉 For the Azure news that I mentioned check out the links below: - [Azure Security Center—Public preview updates](https://azure.microsoft.com/en-gb/updates/asc-january2021-2/?WT.mc%5Fid=modinfra-15011-salean&ref=techielass.com) - [Support for more workloads, tag based policies now in Backup Center public preview](https://azure.microsoft.com/en-gb/updates/support-for-more-workloads-and-tag-based-policies-now-in-backup-center-public-preview/?WT.mc%5Fid=modinfra-15011-salean&ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### StreamYard - Doesn't Automatically Share Screen URL: https://www.techielass.com/streamyard-dont-automatically-share-screen/ Last updated: 2023-12-07T14:42:17.000Z In a previous blog post I talked about how I have started to [use Streamyard](https://www.techielass.com/using-streamyard) for my recordings and live streaming. I've become a firm fan of [StreamYard](https://streamyard.com/?pal=5940677089689600&ref=techielass.com) over the last few months. It's great for doing interviews with others and for some straight forward streaming live shows. What I have notice though, is if you are streaming and half way through you start to share your screen, maybe you've decided that you want to show something to your audience after all. [StreamYard](https://streamyard.com/?pal=5940677089689600&ref=techielass.com) automatically shares the screen, which could lead to some awkward moments if you are not expecting it. Now it only does this if you are the admin for the StreamYard account, if you are a guest on someone else's StreamYard it doesn't automatically add your screen to the stream. To avoid this happening there is a checkbox that you can turn off. You configured your broadcast studio as you need it, once you enter the broadcast studio this is where you want to configure the setting. Click on Settings down the right hand side, it will launch a pop up menu. Click on General and then untick "Automatically add shared screens/videos to stream" and then close the settings menu. ![streamyard-settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/streamyard-settings.PNG) ### Azure Unblogged - Azure Resource Mover URL: https://www.techielass.com/azure-unblogged-azure-resource-mover/ Last updated: 2021-03-12T16:28:13.000Z I am continuing to add interviews to the [Azure Unblogged](https://www.youtube.com/playlist?list=PLjt5SKzX1iI-JC60PPx%5FC60pF%5F0oITmza&ref=techielass.com) series and today I am happy to share the latest with Kaza Sriram about Azure Resource Mover. Announced at Microsoft Ignite 2020, Azure Resource Mover aims to help organisations move resources between resource groups, subscriptions or regions more efficently. Currently in preview the new product makes it easier to plan for a move. In this interview Kaza takes me through the use case of Azure Resource Mover, the benefits of using it and he also walks me through a demo of the product inside the Azure Portal. You can watch the full video here or on [Microsoft Channel 9](https://channel9.msdn.com/Shows/IT-Ops-Talk/Azure-Unblogged-Azure-Resource-Mover?WT.mc%5Fid=modinfra-12450-salean&ref=techielass.com). I hope you enjoyed the video if you have any questions feel free to leave a comment and if you want to check out some of the resources Kaza mentioned please check out the links below: - [Azure Resource Mover Documentation](https://docs.microsoft.com/en-us/azure/resource-mover/?WT.mc%5Fid=modinfra-12450-salean&ref=techielass.com) If you'd like to see me interview anyone for an episode of Azure Unblogged please do let me know! ### Weekly Update #76 URL: https://www.techielass.com/weekly-update-76/ Last updated: 2021-03-23T16:48:01.000Z This week I am back in the home office to give you the weekly update. The snow here in Scotland has kind of turned into a slushy mess so it's not that great to look at. Alongside the Azure news this week I've shared a bit more information about sound when thinking about creating videos and podcasts. Sometimes it's easy to overlook it and go for the visuals. I've seen to many content creators forget about making sure the sound is enjoyable. So I've shared some of my tips on what I do and my thoughts on the subject. For information on the kit I use and the process I follow check out my [Vlogging Update](https://www.techielass.com/vlogging-update) blog post. During my update I mentioned some things I think you should check out: - [Public preview: Azure Log Analytics in UAE Central & Japan West](https://azure.microsoft.com/updates/public-preview-azure-log-analytics-in-uae-central-japan-west/?WT.mc%5Fid=modinfra-14023-salean&ref=techielass.com) - [Azure Site Recovery update rollup 53 is now available](https://azure.microsoft.com/updates/site-recovery-update-rollup-53-january-2021/?WT.mc%5Fid=modinfra-14023-salean&ref=techielass.com) - [Resource instance rules for access to Azure Storage now in public preview](https://azure.microsoft.com/updates/storage-resource-instance-rules-preview/?WT.mc%5Fid=modinfra-14023-salean&ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### AzUpdate URL: https://www.techielass.com/azupdate/ Last updated: 2021-03-11T14:12:40.000Z I wanted to introduce to a show on [YouTube](https://www.youtube.com/itopstalk?ref=techielass.com) that myself and team started in 2020 and are continuing in 2021. Back in 2020 when the pandemic completely ground the world to a halt my colleague [Anthony Bartolo](https://www.twitter.com/wirelesslife?ref=techielass.com) came up with the idea of a live news show where he and a guest (or two) chat about what has been going on in the [Azure](https://azure.microsoft.com/free/search/?OCID=AID2100128%5FSEM%5F76f0ed64d65a19bdc8248d626a9baf55:G:s&ef%5Fid=76f0ed64d65a19bdc8248d626a9baf55:G:s&msclkid=76f0ed64d65a19bdc8248d626a9baf55&WT.mc%5Fid=modinfra-13010-salean&ref=techielass.com) world and interact with the community. The show happens at 3pm UK time, 10am Eastern, or midnight in Tokyo, on a Friday. So it's a great way to end your week by catching up on the Azure news and the community. The show is live streamed on [YouTube](https://www.youtube.com/itopstalk?ref=techielass.com), [Twitch](https://www.twitch.tv/itopstalk?ref=techielass.com) and also [Microsoft Learn TV](https://docs.microsoft.com/learn/tv/?WT.mc%5Fid=modinfra-13010-salean&ref=techielass.com) If you can't make the live stream, don't worry the show is available on demand so you can catch up whenever or hopefully wherever you are. So there's no excuse to miss out. 😉 I'm hoping to co-host move of the AzUpdate shows this year, so please be sure to [subscribe to our YouTube channel](https://www.youtube.com/itopstalk?sub%5Fconfirmation=1&ref=techielass.com) so you get notification of the show and our other videos. ### Unboxing Jabra Elite 85t URL: https://www.techielass.com/unboxing-jabra-elite-85t/ Last updated: 2024-10-23T15:01:49.000Z I always love unboxing things, from new trainers to new tech gadgets. I know there is a whole community that love unboxing things on YouTube and I do enjoy watching some of those videos myself. It really does give you an overview of what you'll get, although sometimes it does spoil the surprise. 😉 However, that being said I wanted to share my take on unboxing the [Jabra Elite 85t](https://www.jabra.co.uk/bluetooth-headsets/jabra-elite-85t?ref=techielass.com##100-99190000-60) headphones recently. ![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/12/jabra.jpg) #### Jabra Elite 85t [Buy from Amazon](https://www.stylink.it/7ojvRfzMVMp?ref=techielass.com) ### Weekly Update #75 URL: https://www.techielass.com/weekly-update-75/ Last updated: 2021-03-23T16:49:21.000Z After feedback from last week's video where I was outside in the snow, I thought I'd go for another walk today and share some of the snow that we have. Alongside the Azure news this week I've shared a bit more information about my video editing process, and share some of that journey I've been on. I also touch a little on what new content creators should think about when trying to start in terms of hardware and how much to invest. For information on the kit I use and the process I follow check out my [Vlogging Update](https://www.techielass.com/vlogging-update) blog post. During my update I mentioned some things I think you should check out: - [Backup for Azure Managed Disk is in limited preview](hhttps://azure.microsoft.com/en-gb/updates/azure-disk-backup/?WT.mc%5Fid=modinfra-13213-salean) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Speaking at Nordic Virtual Summit URL: https://www.techielass.com/speaking-at-nordic-virtual-summit/ Last updated: 2021-03-20T14:41:55.000Z A while back myself and my colleague [Thomas Maurer](https://www.twitter.com/ThomasMaurer?ref=techielass.com) submitted a session to the [Nordic Virtual Summit](https://nordicvirtualsummit.com/?ref=techielass.com) which is a 2 day online event aimed at the IT Pro community. We were massively pleased when the organisers accepted our session and although we are presenting remotely and not in person we are really looking forward to it. We are going to co-present a session called *Azure Migration & Hybrid Operations*. Our session hopes to cover off the journey that organisations are looking to take, migrating some workloads to Azure and running through workloads across both the on-premises and cloud environments. **In this session Sarah and Thomas will talk about the migration journey from on prem to Azure and the operations side of Azure once you have workloads within Azure and on prem.** **This will be an interactive session, with the Sarah & Thomas presenting some slides and demos but a large portion of the time will be dedicated to Q&A from the audience. Please come prepared to ask the presenters lots of questions on Azure, Hybrid Cloud, Windows Server, Azure Migrate, Azure Arc, and lots more!** [Register](https://nordicvirtualsummit.com/register/?ref=techielass.com) for the event and join us at 10am CET on the 11th February! ### Using StreamYard URL: https://www.techielass.com/using-streamyard/ Last updated: 2021-03-13T16:18:21.000Z Last year like everyone else I had to pivot how I created content, specifically video, I no longer had access to a recording studio with lots of fancy equipment or people who were great a producing video. All I had was what was in my home, or within my budget to buy. Like everyone else I got creative and tried to experiment, most people got right into using OBS and trying to produce awesome content with that. I even did attempt to [set it up on my Surface Book 2 laptop](https://www.techielass.com/setting-up-OBS-on-my-surface-book-2), however, after trying it a few times I wasn't having a great experience both because of the lack of power of my Surface Book 2 and also the complexity of the software. It's great if you have someone pushing the buttons for you and making it do the things it can do but for me it was overly complex for the content I was creating. Que me looking at alternatives and that's when I found [StreamYard](https://streamyard.com/?pal=5940677089689600&ref=techielass.com). For those not familiar with [StreamYard](https://streamyard.com/?pal=5940677089689600&ref=techielass.com) it is a web based bit of software that allows you to record, or stream video, audio and your screen. StreamYard has three different pricing tiers, Free, Basic and Professional. ### Advantages What I love about StreamYard is it already has a bunch of scenes/setups done for you, one person on screen, two on screen, more on screen, people and screenshare, screenshare only.... And they are all available at a click of a button. It's really easy to attach your streaming destinations as well, answer a couple of questions and your done. You can also use it to schedule your streams, which is really easy and simple to do. The big advantage is that if you are having guests on your recording or stream all you need to do is send them the unique URL for your session, they allow their browser to access their webcam, microphone and screen and that's it. There is no complicated setup their side, no software to download, nothing. ### Pricing With the three different tiers you should be able to find one that suits your needs and objectives. I first started using the software by using the Free version. I even did a live stream with it without any issues. As with any free bit of software there are some limitations, but again for trialing and learning on it's a great starting place. I was able to understand if it was exactly what I wanted and it was. With the Basic package, there are some limitations such as only being able to stream and record at 720p, only being able to record or stream for 4 hours a month and only being able to stream to 3 destinations. However, this is the package I pay for (myself). It suits my needs, I mostly do recordings that I then edit afterwards and occasionally do live streams. I've yet to hit a month where the 4 hours limits me. The last package is the Professional one and although that does have limitations they are slightly larger as you'd expect, you can stream to 8 destinations and record/stream for 8 hours a month. Your recordings and streams will be in 1080p (Full HD). ### Setting up a recording When you log into StreamYard you have a menu down the left hand side with two options, Broadcasts or Destinations. To set up a recording you want to select Broadcasts. Click on Create a Broadcast. You will be asked where you want to broadcast to, but the last option should say "Skip, Record Only", you want this one if you just want to record yourself, guest or screen and take the end file elsewhere. The next question will be the title for the recording, give it something meaningful and create the broadcast. You will be taken into the broadcast studio where you can start to tweak the settings of what the studio looks like, do your recording or grab the studio URL for sharing with others to join you, either now or at a later date. This studio will be there until you do a recording, once you do an recording you will no longer be able to use it to do recordings and will need another. Any recordings you do will be available in MP4 format and MP3 format and available for download up to 15days afterwards. ### Setting up streaming destinations When you log into StreamYard down the left hand side you have a small menu, one saying Broadcasts and another saying Destinations. Click on Destinations to setup your streaming destinations. Next you need to click on Add Destination and you'll be provided a list of potential destinations, lots of popular ones, YouTube, Facebook, LinkedIn, Twitch or a custom RTMP channel. Select the relevant one for you and answer the relevant questions or allow StreamYard access to the relevant platform. And then repeat for each destination you want to use. It's that simple. ### Setting up a live stream Setting up a live stream is very similar to creating a recording, you click on the Broadcasts menu and select Create a Broadcast. This time select the destination or destinations you want to stream to. You can either create a stream that happens straightaway or you can schedule one. The options you get when creating your stream will differ depending on where you are streaming to. But you should get basic questions around the stream title, description and thumbnail. As well as time and date for scheduling in the future. You can schedule your stream to go to multiple destinations and you will have the ability to customise the info for reach destination. So for example if you are streaming to YouTube and Facebook you can have different titles and descriptions if you wanted to. Once the broadcast is created you will be taken into the studio, but again you don't have to use it then and there, unless you want to. You can come back to it at a later date. You'll also get a URL you can share with guests if you are having people join you for your stream. And again this studio will be available to use and until you do a live stream and then it will be "used". You will get access to download the video and audio in MP4 format and just the audio in MP3 if you wanted to or needed it for future use. ### Setting up custom graphics One thing most people will want when recording or stream is custom graphics, either a custom background picture or the colour of used for people's name banners. You can setup a lot of custom stuff within StreamYard. You do this within your Broadcast studio. And it's under the Brands menu on the right hand side. You can customise the brand colour, what the theme will look like, what the overlay will be, what the background picture will be and you can upload short video clips for use as intro videos or even as part of your recording or streams. There isn't maybe as much flexibility as if you were using something like OBS but there is enough for most people and again, it's been great for me and my needs. The one thing I would recommend you do is create folders for each brand you create. I use StreamYard for several videos series or live stream shows. Having the folders with each brand means you can easily organise and apply settings without a lot of confusion. ### Overall Overall I love the functionality that StreamYard gives me and the simplicity. I can use it anywhere, I don't have to have a powerful laptop or desktop, it even works on my mobile phone if I wanted to use that as a source for video/audio. Please do reach out to me if you have any questions or if you have any tips that could help me with my [StreamYard](https://streamyard.com/?pal=5940677089689600&ref=techielass.com) use. ### Weekly Update #74 URL: https://www.techielass.com/weekly-update-74/ Last updated: 2021-03-23T16:50:20.000Z I had a fun time recording my weekly update video this week. Today I am marking three years as a Microsoft employee. It's been a crazy journey with lots of great people and opportunities and I hope it's a much longer journey. Also something that has been on my mind is content creation and how lots of people think it's okay to be negative or nasty to the person creating the content. I'm a firm believer if you don't have anything nice to say then don't say it. However, if you feel you have to say something then there is an adult way to give criticism without tearing someone down and denting their confidence. I am trying to stay positive though and look on the good side of things like the gorgeous snow that has fallen here in Scotland again this week and that my friends and family are safe. During my update I mentioned some things I think you should check out: - [Public IP SKU Upgrade](https://azure.microsoft.com/updates/public-ip-sku-upgrade-generally-available/?WT.mc%5Fid=modinfra-12867-salean&ref=techielass.com) - [ITOps Talks Event](https://techcommunity.microsoft.com/t5/itops-talk-blog/let-s-try-something-different-itops-talks-hybrid-event/ba-p/2040890?WT.mc%5Fid=modinfra-12867-salean&ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Three Years at Microsoft URL: https://www.techielass.com/three-years-at-microsoft/ Last updated: 2021-03-13T16:38:39.000Z I still pinch myself that I am a Microsoft employees, even after three years, it still doesn't seem real and doesn't seem real that I've fulfilled my childhood dream of working for Microsoft! The last year three years have afforded me so many opportunities and have enabled me to meet so many great people. I've grown so much as a person through those opportunities, challenges and people. I still remember the first day as a Microsoft employee and heading down to our offices in Reading England. It was still a nerve wracking experience but it was nice to be there as an employee and not there for an interview as I had previously been a few months earlier. lol When I joined Microsoft I was a Cloud Solution Architect, but as I write this blog today I am a Senior Cloud Advocate. I [changed role in September 2019](https://www.techielass.com/new-adventure) and although changing job was a bit of a scary experience, as it always is when you embark on a new role, I've really enjoyed the role as Cloud Advocate. The Cloud Advocate role has allowed me to spend a lot of time doing the thing I am passionate about, helping others. Sharing my knowledge. I've had the chance to do that through this familiar medium, blogging. But I've also had the opportunity to speak at a lot of conferences and events as well as look into the medium of video. The last year has been a challenge in the role I do, as we were all set up as a team to be engaged with people physically at events, at conferences, in meetings. Changing to an online format for my role, has been challenging and I've had to learn a lot of new skills, delve more into social media and figure out how to best interact with people. Now my role before this pandemic involved an online element, but it was never the full focus. So it wasn't a complete change, it was just a challenge. Although I really am looking forward to getting back to events and travelling again I have loved being able to try new things online. I've got my home office setup in a nice way that allows me to present virtually quite comfortably, last year I present at 39 events to over 24,000 people. I published over 100 [YouTube videos on my channel](https://youtube.com/techielass?ref=techielass.com) and a ton more on other channels. And I wrote over 170 blogs. I was productive. Not everything I did was a success but everything was a learning opportunity. Everything was a growth opportunity for me. The hard work that I put in has helped others and has helped me. I still see 2021 being a year of virtual, online interactions, which I am ready to tackle and put my heart and soul into. But you better believe when it's safe to meet up again that I'll be there with a ton of stickers and enthusiasm. 😁 Until then I'll continue to pinch myself everyday that I am a Microsoft employee, accept the challenges thrown at me and enjoy every minute of it! ### OneDrive Throttling URL: https://www.techielass.com/onedrive-throttling/ Last updated: 2024-05-07T05:56:17.000Z In my recent attempt to transfer a substantial amount of data from my local computer to my Microsoft OneDrive, I initially anticipated a reasonable upload time. However, as days turned into what felt like months, I realized something was amiss. After some investigation, I discovered that I had unintentionally enabled throttling in my OneDrive settings, severely limiting the upload speed. I started to have a dig around the OneDrive settings to see if there was something that I could change to make upload faster, or change the priority of how things were uploaded and I found the *Network* tab. ![OneDrive Throttling Settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/onedrivethrottling.png) OneDrive Throttling Settings At some point and for some unknown reason I had set a Limit to something ridiculously low, once I changed that setting the upload sped through and all my files are now protected in the cloud. Being able to adjust the upload or download rate of OneDrive is great for those times when you want to save some bandwidth for other things on your network, but in this case it really hampered me. So check your settings, tweak them, make them work for you and not against you! 😉 ### Weekly Update #73 URL: https://www.techielass.com/weekly-update-73/ Last updated: 2021-03-23T16:58:25.000Z We're well and truly inside 2021 now, I'm back at work after the Christmas break. I'm sure most of you will be getting back into your work routine as well. It's still very slow in terms of the new things happening in Azure, but there are some bits of news that have happened. - [What's new in Azure Security Centre](https://docs.microsoft.com/azure/security-center/release-notes?WT.mc%5Fid=modinfra-12520-salean&ref=techielass.com#azure-defender-for-sql-servers-on-machines-is-generally-available) - [Azure Automation is now available in UAE North](https://azure.microsoft.com/updates/azure-automation-in-uae-north-region/?WT.mc%5Fid=modinfra-12520-salean&ref=techielass.com) - [Enable screen capture protection in Windows Virtual Desktop](https://docs.microsoft.com/en-gb/azure/virtual-desktop/security-guide?WT.mc%5Fid=modinfra-12520-salean&ref=techielass.com#session-host-security-best-practices) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Weekly Update #72 URL: https://www.techielass.com/weekly-update-72/ Last updated: 2021-03-23T16:53:45.000Z This Friday lands on the first day of 2021, so I figured it was good to talk about what I got up to in 2020 and a look forward to what I want to achieve in 2021\. So grab your favourite drink, sit back and join me as I talk about my achievements in 2020 and what I have planned for 2021\. Here's to a new year and a positive year ahead! [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Looking back at 2020 URL: https://www.techielass.com/2020-in-review/ Last updated: 2023-12-07T11:45:48.000Z ## A review of 2020 This has definately been a strange year for all, everywhere in the world. We've all had to deal with changes in our lives in one way or an other. I've had to pivot how I carry out my job and I've had to look at how my office at home is setup and upgrade parts of it. ### Career I've been very lucky this year that my career and still be able to progress this year with everything that is going on and I know alot of people haven't been afforded that opportunity. I was very proud when I got a promotion to Senior this year. It really encouraged me to keep going and very much boosted my confidence. ### Travel Understandably this year has been a year were travel, hasn't been the focus of my job or my personal life. I did manage to get a few trips in at the start of the year before everything ground to a halt. It's strange looking at these stats compared to last year which saw me travel for 99 days. ![travelstats-1](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/travelstats-1.jpg) ### Blogging I know sometimes Google Analytics stats can be a bit skewed at times but I use them to get some kind of measure on how my blog is going and it's great to look back and see that from 2017 to 2018 my page views doubled, and from 2018 to 2019 they doubled again. So it's awesome to see that my blog is still gaining in popularity. With my new role at Microsoft, you will now start to see me blog over at [IT Ops Talk](http://itopstalk.com/?ref=techielass.com) as well. Last year on this blog I wrote 63 articles, this year it's around about the 135 mark. And 36 on [IT Ops Talk](http://itopstalk.com/?ref=techielass.com). I knew I had blogged more than I did last year, but counting up the stats is just crazy. It probably explains why I've seen an increase in traffic and popularity to my blog, more content equals more visitors. It's been a weird year but I'm taking the positives and focussing on them and what I enjoy. ### Video Back in 2019 I started doing a weekly video update, partially to help folk keep up to date with the Azure news that happens every week. There is so much to keep up with, I thought a short form video might be fun to share, plus I would learn how to speak to a camera, how to be comfortable in front of one and learn how to edit them etc. It's been a wild ride, we reached one year of doing those weekly updates in August, I never imagined doing them for so long. But to be honest, I really enjoy doing them each week, thinking of new ways to share the news and learning new video editing techniques to make the production higher. I've recently just bought a second hand Go Pro to help with adding different views/angles to the videos and see how that goes. I recently received some stats from YouTube about my video creation this year: - I uploaded 1190 minutes of content - I gained 452 subscribers - Viewers spent 109,426 minutes watching my videos I want to thank everyone who has supported the [channel](https://www.youtube.com/techielass?ref=techielass.com) and helped me. And if you haven't already please head over there and give me a [subscribe](https://www.youtube.com/techielass?ref=techielass.com), one of my targets in 2021 is to hit 1,000 subscribers, only 286 to go. 😉 #### Most visited blog posts in 2020 Looking back at the top 10 blog posts from 2020, it's been all change on the top 10 list this year, some older articles are still there but alot of new content has overtaken them and been very popular... 1. [Present PowerPoint in Microsoft Teams and Still see the Chat](https://www.techielass.com/present-powerpoint-in-teams-and-still-see-the-chat) 2. [DHCP and the PXE Boot Process Explained](https://www.techielass.com/dhcp-and-the-pxe-boot-process-explained) 3. [Microsoft Teams Meeting or Microsoft Teams Live](https://www.techielass.com/teams-meeting-or-teams-live) 4. [ConfigMgr Query for Name, Serial Number, BIOS Version, IP Address and MAC Address](https://www.techielass.com/configmgr-query-for-name-serial-number-bios-version-ip-address-and-mac-address) 5. [Exchange 2010 EMC "Kerberos" authentication failed](https://www.techielass.com/exchange-2010-emc-kerberos-authentication-failed) 6. [Deploying Windows Update (.msu) with SCCM](https://www.techielass.com/deploying-windows-update-msu-with-sccm) 7. [Jabra Evolve 65 Headset Review](https://www.techielass.com/jabra-evolve-65-headset-review) 8. [Setting up OBS on my Surface Book 2](https://www.techielass.com/setting-up-obs-on-my-surface-book-2) 9. [Retention Policy Powershell Commands](https://www.techielass.com/retention-policy-powershell-commands) 10. [Veeam - NFC storage connection is unavailable](https://www.techielass.com/veeam-nfc-storage-connection-is-unavailable) ### Speaking Speaking at events has been a journey I started in 2017 and I was disappointed when this year's global events meant that I wasn't going to get the chance to travel and speak at the events I wanted to and visit the countries and people I wanted to. However, I pivoted to help support online events and this year I have delivered *39* talks this year to over 30 events, which has seen me speak to over 24,000 people!! Again I got the chance to speak at Microsoft Ignite which was a very different experience from last year when I spoke in person at the event in Florida. I have to say though, that speaking virtually is just as nerve wracking! lol I'm not sure what 2021 will bring in terms of events and speaking opportunities but I am looking forward to seeing what it brings and hopefully I'll get back on a physical stage at some point soon when it's safe. ![2020speakingstats](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/2020speakingstats.PNG) ### Glasgow Azure User Group Founded back in 2017, the Glasgow Azure User Group is still going strong. We've had to pivot our events this year to virtual events, but the community has continued to engage and I'm super thankful to everyone who has spoken or attended a meetup. As we are all missing in person events I had fun along with our [sponsors](https://www.gaug.co.uk/sponsors?ref=techielass.com) putting together sticker packs that went out to some of our members. It brought joy to me to do that and I hope it brought some joy to those that received the stickers. > Loving seeing all the sticker packs arriving! Thank you to everyone for their support in making this an awesome community! 😀 [https://t.co/8Ikq4mYoCz](https://t.co/8Ikq4mYoCz?ref=techielass.com) > > Sponsored by [@Servent\_UK](https://twitter.com/Servent%5FUK?ref%5Fsrc=twsrc%5Etfw&ref=techielass.com), [@F5\_EMEA](https://twitter.com/F5%5FEMEA?ref%5Fsrc=twsrc%5Etfw&ref=techielass.com), [@HaysNews](https://twitter.com/HaysNews?ref%5Fsrc=twsrc%5Etfw&ref=techielass.com), [@nginx](https://twitter.com/nginx?ref%5Fsrc=twsrc%5Etfw&ref=techielass.com), [@ShapeSecurity](https://twitter.com/ShapeSecurity?ref%5Fsrc=twsrc%5Etfw&ref=techielass.com), [@inc\_group\_uk](https://twitter.com/inc%5Fgroup%5Fuk?ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [pic.twitter.com/EZdiJQC7ZR](https://t.co/EZdiJQC7ZR?ref=techielass.com) > > — Glasgow Azure UG (@GlasgowAzureUG) [July 21, 2020](https://twitter.com/GlasgowAzureUG/status/1285507062689157120?ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) If you'd like to attend one of our events in the new year please check out the group's [website](https://www.gaug.co.uk/?ref=techielass.com), would be great to see you there! ### Twitter Thank you to everyone who follows me and interacts with me, I really do appreciate your time and thoughts. I try not to focus too much on the exact number of followers that I have, but instead focus on ensuring that I provide awesome content that you like to engage with. However, saying that I am super grateful to those that follow me and interact act with me and share their thoughts with me and share my content with their networks. ### Here's to 2021! ### Inside Azure Datacentres URL: https://www.techielass.com/inside-azure-datacentres/ Last updated: 2021-03-14T07:55:26.000Z At this year's [Microsoft Ignite](https://ignite.microsoft.com/?ref=techielass.com) there was a series of videos released by [Mark Russinovich](https://twitter.com/markrussinovich?ref=techielass.com), the CTO of Azure. In the six part video series Mark took us on a tour of the various different parts of Azure. ### Inside Azure Datacentres In the first part of the series Mark takes us though what Azure is, explaining regions, the architecture of them, the energy strategy for running those datacenters and the different generations of the datacenters. It's a great overview of Azure. ### Azure Servers In the second part of this video series Mark starts to talk about Azure servers and looks at the various different iterations of servers. He also looks at the Xbox cloud strategy and the rack architecture within Azure datacentres versus the traditional ones we are all familiar with. ### Azure Networking With part three we are introduced to [Azure networking](https://docs.microsoft.com/azure/networking/networking-overview?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). Looking at regional networking, optical networking and the evolution of it from 2015 to 2020\. He also takes us through a demo of this working. ### Azure Applications Mark starts to look into Azure Resource Manager, [Project Bicep](https://devblogs.microsoft.com/devops/project-bicep-demo-at-ignite-2020-by-mark-russinovich/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) and [Service Meshes](https://docs.microsoft.com/azure/service-fabric-mesh/service-fabric-mesh-overview?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). ### Azure Compute Infrastructure In part five of the video series we start to dig a little deeper and see how different parts of the Azure infrastructure works. ### Azure Storage and data The last video looks at Azure Storage and data. Mark looks at the current offerings within Azure and also where we are heading in the future. ### Weekly Update #71 URL: https://www.techielass.com/weekly-update-71/ Last updated: 2021-03-23T16:56:31.000Z This Friday lands on the first day of 2021, so I figured it was good to talk about what I got up to in 2020 and a look forward to what I want to achieve in 2021\. So grab your favourite drink, sit back and join me as I talk about my achievements in 2020 and what I have planned for 2021\. Here's to a new year and a positive year ahead! [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Azure Unblogged - Azure Stack HCI URL: https://www.techielass.com/azure-unblogged-azure-stack-hci/ Last updated: 2021-03-12T16:29:54.000Z I had the chance to speak to Matt McSpirit for this new episode of [Azure Unblogged](https://www.youtube.com/playlist?list=PLjt5SKzX1iI-JC60PPx%5FC60pF%5F0oITmza&ref=techielass.com). Announced earlier this year Azure Stack HCI is now generally available and I'm pleased to say I had the chance to chat with Matt McSpirit about what Azure Stack HCI. Matt McSpirit is a Senior Program Manager with the Customer Programs & Partner Ecosystem team at Microsoft, and has been working with some customers on early implementations of Azure Stack HCI. In this episode of Azure Unblogged Matt and I talk about what Azure Stack HCI is, how you can use it within your environment and how it works with Windows, Linux, Kubernetes, Windows Admin Centre and Azure Arc. You can watch the full video here or on [Microsoft Channel 9](https://channel9.msdn.com/Shows/IT-Ops-Talk/Azure-Unblogged-Azure-Stack-HCI?WT.mc%5Fid=modinfra-11566-salean&ref=techielass.com). I hope you enjoyed the video if you have any questions feel free to leave a comment and if you want to check out some of the resources Matt mentioned please check out the links below: - [Azure Stack HCI Overview](https://docs.microsoft.com/en-gb/azure-stack/hci/overview?WT.mc%5Fid=modinfra-11437-salean&ref=techielass.com) - [Azure Stack Catalog](https://hcicatalog.azurewebsites.net/?ref=techielass.com#/) - [Azure Stack Evaluation Guide](https://github.com/Azure/AzureStackHCI-EvalGuide?ref=techielass.com) If you'd like to see me interview anyone for an episode of Azure Unblogged please do let me know! ### Weekly Update #70 URL: https://www.techielass.com/weekly-update-70/ Last updated: 2021-03-23T16:57:33.000Z In this week's weekly update I did something a little different, I live streamed it to [YouTube](https://www.youtube.com/techielass?ref=techielass.com) and [Facebook](https://www.facebook.com/techielass) and gave an update on this week's new and also shared some of what I have been up to this week. It was a nice way to do it and thankfully went okay. Thank you to those that tuned in live and asked some questions. Please to have a look at the recording if you weren't able to tune in live. 😁 During my update I mentioned the following things: - [New Microsoft Re-certification information](https://techcommunity.microsoft.com/t5/microsoft-learn-blog/stay-current-with-in-demand-skills-through-free-certification/ba-p/1489678?WT.mc%5Fid=modinfra-12088-salean&ref=techielass.com) - [51 new voices added to Text-To-Speech](https://techcommunity.microsoft.com/t5/azure-ai/azure-neural-text-to-speech-updates-51-new-voices-added-to-the/ba-p/1988418?WT.mc%5Fid=modinfra-12088-salean&ref=techielass.com) - [Azure Unblogged Video Series](https://www.youtube.com/playlist?list=PLjt5SKzX1iI-JC60PPx%5FC60pF%5F0oITmza&ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Weekly Update #69 URL: https://www.techielass.com/weekly-update-69/ Last updated: 2021-03-23T17:08:35.000Z In this weekly update I talk about the recording woes I have had to trying to get a session recorded for an online event next week, and also share some of the Azure news that has happened this week! During my update I mentioned the following things: - [Azure Stack HCI announcement](https://techcommunity.microsoft.com/t5/azure-stack-blog/starting-a-new-era-for-azure-stack-hci-and-a-sneak-peek-at-what/ba-p/1975029?WT.mc%5Fid=modinfra-11137-salean&ref=techielass.com) - [Denmark datacentre region](https://azure.microsoft.com/en-gb/updates/microsoft-to-establish-new-datacenter-region-in-denmark/?WT.mc%5Fid=modinfra-11316-salean&ref=techielass.com) - [Chile datacentre region](https://news.microsoft.com/es-xl/microsoft-announces-transforma-chile-to-accelerate-growth-and-business-transformation-including-a-new-datacenter-region-skilling-commitment-for-up-to-180000-citizens-and-advisory/?WT.mc%5Fid=modinfra-11316-salean&ref=techielass.com) - [Azure Unblogged Video Series](https://www.youtube.com/playlist?list=PLjt5SKzX1iI-JC60PPx%5FC60pF%5F0oITmza&ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Azure Unblogged - Security URL: https://www.techielass.com/azure-unblogged-security/ Last updated: 2021-03-12T16:32:28.000Z I had the chance to speak to Yuri Diogenes about Azure Security for this new episode of [Azure Unblogged](https://www.youtube.com/playlist?list=PLjt5SKzX1iI-JC60PPx%5FC60pF%5F0oITmza&ref=techielass.com). [Yuri Diogenes](https://wwww.twitter.com/yuridiogenes?ref=techielass.com), is a Principal Program Manager at Microsoft C+AI Security. Yuri and I discuss Azure Security Centre, get to the bottom of what Azure Defender is. Yuri also shares some information about his latest book and some tips for passing the AZ-500 exam.. You can watch the full video here or on [Microsoft Channel 9](https://channel9.msdn.com/Shows/IT-Ops-Talk/Azure-Unblogged-Security?WT.mc%5Fid=modinfra-11076-salean&ref=techielass.com). I hope you enjoyed the video if you have any questions feel free to leave a comment and if you want to check out some of the resources Yuri mentioned please check out the links below: - [Azure Security Centre in the Field](https://aka.ms/ascinthefield?ref=techielass.com) - [What's new in Azure Security Center?](https://docs.microsoft.com/en-us/azure/security-center/release-notes?WT.mc%5Fid=modinfra-11076-salean&ref=techielass.com) - [AZ-500 Exam](https://docs.microsoft.com/learn/certifications/exams/az-500?WT.mc%5Fid=modinfra-11076-salean&ref=techielass.com) - [Exam Ref AZ-500 Microsoft Azure Security Technologies book](https://www.microsoftpressstore.com/store/exam-ref-az-500-microsoft-azure-security-technologies-9780136788935?ref=techielass.com) If you'd like to see me interview anyone for an episode of Azure Unblogged please do let me know! ### Weekly Update #68 URL: https://www.techielass.com/weekly-update-68/ Last updated: 2021-03-23T17:02:50.000Z This week has went so fast, been busy with work meetings and pulling long days. Crazy to see meetings pop into my diary talking about 2021 events and activities! But we've had some snow here in Scotland this week and it's made me smile and given me a boost of energy, I love snow! ❄ During my update I mentioned the following things: - [Cloud Adoption Framework | Azure Enablement Show](https://www.youtube.com/watch?v=j2Vk-YNdSdQ&list=PLjt5SKzX1iI-CcjEzIVyymuPIKwI8cCYf&ref=techielass.com) - [Azure Blog Storage Inventory](https://docs.microsoft.com/en-gb/azure/storage/blobs/blob-inventory/?WT.mc%5Fid=modinfra-11479-salean&ref=techielass.com) - [Azure Security Centre Secure Score Continuous Export](https://docs.microsoft.com/en-us/azure/security-center/release-notes?ref=techielass.com#secure-score-is-now-available-in-continuous-export-preview/?WT.mc%5Fid=modinfra-11479-salean) - [Azure Security Centre System Updates recommendation enhancement](https://docs.microsoft.com/en-us/azure/security-center/release-notes?ref=techielass.com#system-updates-should-be-installed-on-your-machines-recommendation-now-includes-sub-recommendations/?WT.mc%5Fid=modinfra-11479-salean) - [Azure Site Recovery Rollup Update](https://azure.microsoft.com/en-us/updates/site-recovery-update-rollup-52-november-2020/?WT.mc%5Fid=modinfra-11479-salean&ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Azure Unblogged - GitHub URL: https://www.techielass.com/azure-unblogged-github/ Last updated: 2023-12-06T08:13:20.000Z I had the chance to speak to Martin Woodward for this new episode of [Azure Unblogged](https://www.youtube.com/playlist?list=PLjt5SKzX1iI-JC60PPx%5FC60pF%5F0oITmza&ref=techielass.com). [Martin Woodward](https://www.twitter.com/martinwoodward?ref=techielass.com), is Director of Developer Relations at GitHub. Martin and I discuss why GitHub is something that IT Pros and System Administrators should look at learning. We also discuss the new features [GitHub Actions](https://github.com/features/actions?ref=techielass.com) and [GitHub Codespaces](https://github.com/features/codespaces?ref=techielass.com) and how they integrate with Azure as well as the forthcoming [GitHub Universe](https://githubuniverse.com/?ref=techielass.com). You can watch the full video here or on [Microsoft Channel 9](https://channel9.msdn.com/Shows/IT-Ops-Talk/Azure-Unblogged-GitHub?WT.mc%5Fid=modinfra-11073-salean&ref=techielass.com). I hope you enjoyed the video if you have any questions feel free to leave a comment and if you want to check out some of the resources Martin mentioned please check out the links below: - [Microsoft Learn Introduction to version control with Git](https://docs.microsoft.com/learn/paths/intro-to-vc-git/?WT.mc%5Fid=modinfra-11073-salean&ref=techielass.com) - [Microsoft Learn Automate your workflow with GitHub Actions](https://docs.microsoft.com/learn/paths/automate-workflow-github-actions/?WT.mc%5Fid=modinfra-11073-salean&ref=techielass.com) If you'd like to see me interview anyone for an episode of Azure Unblogged please do let me know! ### GET-IT Azure and DevOps 1 Day Virtual Conference URL: https://www.techielass.com/get-it-azure-and-devops-1-day-virtual-conference/ Last updated: 2021-03-18T19:16:40.000Z I am pleased to announce that I am part of the speaking line up for the [GET-IT Azure and DevOps 1 day Virtual Conference](https://petri.com/conferences/get-it-azure-and-devops-1-day-virtual-conference?ref=techielass.com) being hosted by Petri on the 16th December. The event is a virtual event that is free to attend, you don't even have to sign up, the content will be streamed live on the website started at 9:30 AM EST/6:30 AM PST/2:30 PM GMT. The event is full of content for IT Pros and Developers who are looking to enhance their knowledge and skills. At the event there are sessions on Azure Networking, YAML Pipelines, Azure Arc, Kubernetes and my session datacentre transformations. My session is being streamed at 6:00 PM GMT/1:00 PM EST /10:00 AM PST on the 16th December [here](https://petri.com/conferences/get-it-azure-and-devops-1-day-virtual-conference?ref=techielass.com). This will be my second last session of the year so don't miss it! ### Azure Enablement | Cloud Adoption Framework URL: https://www.techielass.com/azure-enablement-cloud-adoption-framework/ Last updated: 2021-03-12T16:02:48.000Z Over the last few months I have been working with some of my colleagues and peers to create a new video series, called ["Azure Enablement"](https://channel9.msdn.com/Shows/Azure-Enablement?WT.mc%5Fid=modinfra-9602-salean&ref=techielass.com) focussing on the [Well-Architected Series](https://channel9.msdn.com/Tags/well-architected-series?WT.mc%5Fid=modinfra-9602-salean&ref=techielass.com) and the [Cloud Adoption Framework](https://channel9.msdn.com/Tags/cloud-adoption-framework-series?WT.mc%5Fid=modinfra-9602-salean&ref=techielass.com). Both series are aimed at tackling some of the questions or obstacles organisations might come across when tackling cloud adoption. There are 13 different videos in the [Cloud Adoption Framework](https://docs.microsoft.com/azure/cloud-adoption-framework/?WT.mc%5Fid=modinfra-9602-salean&ref=techielass.com) series, let's have a look at what videos are available: - [Overview of Cloud Adoption Framework for Azure](https://channel9.msdn.com/Shows/Azure-Enablement/Overview-of-Cloud-Adoption-Framework-for-Azure--Introduction-Ep1-Cloud-Adoption-Framework?WT.mc%5Fid=modinfra-9602-salean&ref=techielass.com) - [Assess cloud readiness using Microsoft Assessments](https://channel9.msdn.com/Shows/Azure-Enablement/Assess-cloud-readiness-using-Microsoft-Assessments--Introduction-Ep2--Cloud-Adoption-Framework?WT.mc%5Fid=modinfra-9602-salean&ref=techielass.com) - [Prepare cloud environments using Azure landing zones](https://channel9.msdn.com/Shows/Azure-Enablement/Prepare-cloud-environments-using-Azure-landing-zones--Landing-zones-Ep1--Cloud-Adoption-Framework?WT.mc%5Fid=modinfra-9602-salean&ref=techielass.com) - [Choose the best landing zone option](https://channel9.msdn.com/Shows/Azure-Enablement/Choose-the-best-Azure-landing-zone-option-Landing-zones-Ep2--Cloud-Adoption-Framework?WT.mc%5Fid=modinfra-9602-salean&ref=techielass.com) - [Start small and expand' Azure landing zone approach](https://channel9.msdn.com/Shows/Azure-Enablement/Start-small-and-expand-Azure-landing-zones-approach--Landing-zones-Ep3--Cloud-Adoption-Framework?WT.mc%5Fid=modinfra-9602-salean&ref=techielass.com) - [Create an enterprise scale architecture in Azure](https://channel9.msdn.com/Shows/Azure-Enablement/Create-an-enterprise-scale-architecture-in-Azure--Landing-zones-Ep4--Cloud-Adoption-Framework?WT.mc%5Fid=modinfra-9602-salean&ref=techielass.com) - [Dig into enterprise-scale architecture methodology](https://channel9.msdn.com/Shows/Azure-Enablement/Dig-into-enterprise-scale-architecture-methodology--Landing-zones-Ep5--Cloud-Adoption-Framework?WT.mc%5Fid=modinfra-9602-salean&ref=techielass.com) - [Establish cloud governance and compliance](https://channel9.msdn.com/Shows/Azure-Enablement/Establish-cloud-governance-and-compliance--Governance-Ep-1--Cloud-Adoption-Framework?ref=techielass.com) - [Implement cost control, budget, forecast and allocation](https://channel9.msdn.com/Shows/Azure-Enablement/Implement-cost-control-budget-forecast-and-allocation-Governance-Ep2--Cloud-Adoption-Framework?WT.mc%5Fid=modinfra-9602-salean&ref=techielass.com) - [Identity baseline with authentication & access control](https://channel9.msdn.com/Shows/Azure-Enablement/Identity-baseline-with-authentication--access-control--Governance-Ep3--Cloud-Adoption-Framework?WT.mc%5Fid=modinfra-9602-salean&ref=techielass.com) - [Implement security baseline through corporate policy](https://channel9.msdn.com/Shows/Azure-Enablement/Implement-security-baseline-through-corporate-policy--Governance-Ep4--Cloud-Adoption-Framework?WT.mc%5Fid=modinfra-9602-salean&ref=techielass.com) - [Cloud governance using IaC, Azure Policy & Blueprints](https://channel9.msdn.com/Shows/Azure-Enablement/Cloud-governance-using-IaC-Azure-Policy--Blueprints--Governance-Ep5--Cloud-Adoption-Framework?WT.mc%5Fid=modinfra-9602-salean&ref=techielass.com) - [Govern and manage Azure resources at scale](https://channel9.msdn.com/Shows/Azure-Enablement/Govern-and-manage-Azure-resources-at-scale--Governance-Ep6--Cloud-Adoption-Framework?WT.mc%5Fid=modinfra-9602-salean&ref=techielass.com) Be sure to check the videos out and let me know if you have any questions or feedback! 😀 ### Weekly Update #67 URL: https://www.techielass.com/weekly-update-67/ Last updated: 2021-03-23T17:04:12.000Z This week has a little bit busy, I had a melt down on Sunday when my laptop completely barfed on me and I need to rebuild it followed by a presentation at the [UK Cloud Infrastructure User Group](https://youtu.be/RLcdzWEZwKs?ref=techielass.com) and then I've been busy recording some videos for [Azure Unblogged](https://www.youtube.com/playlist?list=PLjt5SKzX1iI-JC60PPx%5FC60pF%5F0oITmza&ref=techielass.com). During my update I mentioned the following things: - [Cloud Adoption Framework | Azure Enablement Show](https://www.youtube.com/watch?v=j2Vk-YNdSdQ&list=PLjt5SKzX1iI-CcjEzIVyymuPIKwI8cCYf&ref=techielass.com) - [Azure Cloud Shell Update](https://azure.microsoft.com/en-gb/updates/the-azure-cloud-shell-image-has-been-updated/?WT.mc%5Fid=modinfra-11316-salean&ref=techielass.com) - [Swedish datacentre region](https://azure.microsoft.com/en-gb/updates/microsoft-to-establish-its-first-datacenter-region-in-sweden/?WT.mc%5Fid=modinfra-11316-salean&ref=techielass.com) - [Azure Resource Manager template support for Azure file share backup](https://azure.microsoft.com/en-gb/updates/azure-resource-manager-template-support-for-azure-file-share-backup/?WT.mc%5Fid=modinfra-11316-salean&ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Festive Tech Calendar - Cloud Advocate AMA URL: https://www.techielass.com/festive-tech-calendar-2020/ Last updated: 2021-03-18T18:52:45.000Z As part of this year's [Festive Tech Calendar event](https://festivetechcalendar.com/?ref=techielass.com) which is being run by [Gregor Suttie](https://www.twitter.com/gregor%5Fsuttie?ref=techielass.com) and [Richard Hooper](https://www.twitter.com/pixel%5Frobots?ref=techielass.com), myself and a couple of my colleagues will be doing a fun Q&A or Ask Me Anything session. On the 16th December at 3pm UK time, 4pm Switzerland time and 10am Ottawa time, myself, [Pierre Roman](https://twitter.com/wiredcanuck?ref=techielass.com) and [Thomas Maurer](https://www.twitter.com/thomas%5Fmaurer?ref=techielass.com) will be answering your questions on Azure, Hybrid cloud, Windows Server or even what our favourite Christmas movie is. The stage is open for you to ask us a question and we'll try and answer it. This session will be an hour long and we'd love to have you all join us LIVE. You can tune into the event on our [Youtube](https://youtube.com/itopstalk?ref=techielass.com) channel, be sure to hit that reminder button so you are reminded of the event, or **download the calendar [ICS file here](https://www.techielass.com/wp-content/uploads/2020/11/Festive%5FTech%5FCalendar%5FCloud%5FAdvocate%5FAMA.ics)** and add it to your diary and block out that time. 📅 Let's have some fun as part of the [Festive Tech Calendar event](https://festivetechcalendar.com/?ref=techielass.com)! ### Rebuilding my laptop URL: https://www.techielass.com/rebuilding-my-laptop/ Last updated: 2022-02-08T19:19:12.000Z My laptop is well overdue a rebuild, a reinstall from scratch, starting new. I've been putting it off for a while now, as if you've ever done it, it can be a daunting prospect and lengthy one. However it needs done, it's well over due. To help make the process go quicker and hopefully easier, I have started to compile a script I can run after the operating system is reinstalled that will help get all the applications that I use back on my laptop. ## Chocolatey To help speed up the process I am going to use [Chocolatey](https://chocolatey.org/?ref=techielass.com), for those that haven't encountered Chocolatey before it's a package management software that can be used on Windows to help manage your software installs. You can use it both individually or within your organisation. Chocolatey is open source and anyone can contribute to it's growth. ## Script Once the operating system is up and running I plan on running the following command within PowerShell which will install Chocolatey for me and then it will go off and install the necessary applications that I want on my laptop. The script is below or can be found [here](https://gist.githubusercontent.com/weeyin83/7262760aedab6437289300793e393b3c?ref=techielass.com). Putting the -y at the end of each line, confirms yes to any questions that the install has. Of course there is a bunch of other [packages](https://chocolatey.org/packages?ref=techielass.com) available that you can leverage as well. ## Rebuild tips Do you have any rebuild tips for me? Anything I should be thinking about before embarking on this journey? 😉 ### Weekly Update #66 URL: https://www.techielass.com/weekly-update-66/ Last updated: 2021-03-23T17:05:23.000Z Join me as I catch up on the news within the Azure world and talk about how school kids in Scotland used technology to find a new colony of emperor penguins! During my update I mentioned the following things: - [Bastion VNet Peering Support](https://docs.microsoft.com/azure/bastion/vnet-peering?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Public preview: Application Insight in UAE North](https://azure.microsoft.com/updates/public-preview-application-insight-in-uae-north/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Public preview: Azure Log Analytics in Germany West Central, UAE North, and Switzerland West](https://azure.microsoft.com/updates/public-preview-azure-log-analytics-in-germany-west-central-uae-north-and-switzerland-west/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [General availability: Application Insight in Australia Central, Brazil Southeast, and Norway East](https://azure.microsoft.com/updates/general-availability-application-insight-in-australia-central-brazil-southeast-and-norway-east/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### PowerToys URL: https://www.techielass.com/powertoys/ Last updated: 2021-03-13T13:56:30.000Z I'm late to the party in regards to [PowerToys](https://github.com/microsoft/PowerToys?ref=techielass.com), but I wanted to share some of the thoughts around the awesome free tool that is available. ### What is PowerToys? PowerToys is a project inspired by a project back in the Windows 95 era providing the end user with some utilities to help be more efficient and help create individual workflows. ### Fancy Zones Fancy Zones is the part of PowerToys that I love the best, it helps me divide my screens up into different usable sections. ![fancyzones2](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/fancyzones2.PNG) It's great for when I am presenting, I can have various different resources spread across my screen there for easy reference. It's also great for when I am working on creating a video or blog and need to reference a bunch of things at the same time. I can have them all up and viewable. ### Keyboard Manager The keyboard manager feature is also great if you want to create your own shortcuts or change the mapping of some of your keys. Again another create feature if that can assist you when you are presenting or have some workflows that you repeat constantly. ### Download If you head over to the Github [PowerToys](https://github.com/microsoft/PowerToys?ref=techielass.com) page you can download the application, find out more information about the tool and report any bugs or feedback that you have encountered. ### My Microsoft Ignite 2019 Trip Report URL: https://www.techielass.com/my-ignite-2019-trip-report/ Last updated: 2021-03-15T20:04:01.000Z This time last week I was finishing off last minute packing and waiting on my taxi to take me to Glasgow airport for the first of two flights that would get me to Orlando, Florida. I was on my way to the [Microsoft Ignite](https://aka.ms/msigniteondemand?ref=techielass.com) 2019 event. The last big external conference I had attended was TechEd Europe in 2014, which was held in Barcelona, so I had some kind of idea what I was in for when I got to Orlando, but I was still blown away by the sheer scale of the conference and also the amount of people that were there. > 29,000 peeps at [#MSIgnite](https://twitter.com/hashtag/MSIgnite?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) > > — Anna Chu 🙋🏻‍♀️ #MSIgnite (@\_achu) [November 11, 2019](https://twitter.com/%5Fachu/status/1193941305799262209?ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) In amongst the firsts, it was also my first engagement as a Cloud Advocate. So there was a lot going on for me personally. Attending the keynote in one of the massive viewing halls, was an experience, the screens were huge, the audience was large and the announcements were flying! [Azure Arc](https://www.thomasmaurer.ch/2019/11/cloud-native-azure-management-for-hybrid-environments-with-azure-arc/?ref=techielass.com) was one of the big announcements. Which is a an exciting product that helps customers extend and manage their cloud and on-prem environments together. Being able to extend cloud functionality down on-prem and truly bring hybrid environments alive is very exciting and I'm looking forward to seeing where that goes. [Microsoft Learn](https://docs.microsoft.com/teamblog/introducing-assessments-investment-learn?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) announced some great new functionality and features. It's key to remember that Microsoft Learn is a free platform for end users to use, so seeing it grow and offer more is super! [New Performance Monitor for Windows Server](https://www.thomasmaurer.ch/2019/11/new-performance-monitor-for-windows-server/?ref=techielass.com), also got an update! I've used Performance Monitor extensively over my career, so am familiar with it's strengths and weaknesses so it's really nice to see it getting some love and getting some love from the [Windows Admin center](https://docs.microsoft.com/windows-server/manage/windows-admin-center/understand/windows-admin-center?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) team as well. Azure Migrate, even after going through in evolution in July 2019 got some additional functionality and capabilities. And if you've ever spent any time with me, you'll know this is my favourite Azure product. So I'm super excited about the various features announced. #### Session Delivery On Wednesday, 6th November, I delivered my first ever session at Microsoft Ignite. [Sonia Cuff](https://www.twitter.com/SoniaCuff?ref=techielass.com) wrote the presentation deck for "[Keeping Costs down in Azure](https://myignite.techcommunity.microsoft.com/sessions/83215?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com)", but I delivered the session in Orlando and I did so in front of some 920+ people. The session was recorded and the slide deck is available for viewing/download if you would like to watch it. It is definitely the largest room I've ever presented in and largest audience I've ever spoken in front of. Every time I present I am always looking to do at least one thing better than the last time I presented. The experience of speaking at Microsoft Ignite is one I'm very much looking forward to building on. #### Microsoft Ignite Live Stage Interviews On the Thursday I got the chance to play host on the Microsoft Ignite Live Stage that was situated at the back of the Hub. This was another new experience for me. The cameras were on me and my guests, I had to watch the timer, I had to listen to the director who was speaking to me in an ear piece. But I think both went really well. I spoke to Haley Rowland and Jeff Woolsey about [Windows Admin center](https://docs.microsoft.com/en-us/windows-server/manage/windows-admin-center/understand/windows-admin-center?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) and some of the new features. The interview can be found [here](https://myignite.techcommunity.microsoft.com/sessions/89341?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com). I also spoke to Abhishek Hemrajani about the latest updates in [Azure Migrate](https://docs.microsoft.com/en-us/azure/migrate/migrate-services-overview?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com), and the interview can be found [here](https://myignite.techcommunity.microsoft.com/sessions/89353?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) #### Community It was also great bumping into people throughout the conference center. Putting faces to Twitter handles was lovely. I truly do love all interactions with the **#azurefamily** community and taking those interactions from social media to in person was fantastic. I look forward to being able to see everyone again in the new future. #### Overview I really enjoyed being able to attend and speak at Microsoft Ignite this year. I've come away with some great connections, great ideas for future content and some good sticker swag. ![teamphoto](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/teamphoto.jpeg) ### Weekly Update #65 URL: https://www.techielass.com/weekly-update-65/ Last updated: 2021-03-23T17:07:13.000Z I am officially on some annual leave from work, enjoying some much needed down time after a hectic few weeks. Am hoping for some good weather (which is a relative term in Scotland) so I can enjoy some walks and time outside. However, I don't like to break my cadence of weekly updates, so let's catch up with some Azure news. 😉 During my update I mentioned the following things: - [New recommendations from Azure Advisor are now available](https://azure.microsoft.com/updates/new-recommendations-from-azure-advisor/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [New constrained vCPUs capable VMs now available](https://azure.microsoft.com/en-us/updates/new-constrained-vcpus-capable-vms-now-available/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [.NET 5 now available in App Service](https://azure.microsoft.com/updates/net-5-now-available-in-app-service/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### My Presentation Setup URL: https://www.techielass.com/my-presentation-setup/ Last updated: 2025-02-14T11:42:15.000Z This year I have done over 30 presentations to user groups, conferences and recorded even more videos all from my home office. Last week I released a video sharing some of my tips for presenting remotely, which you can find below: However, I want to share what I see, what my setup looks like and how it works for me. ### Physical Layout ![desk](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/desk.png) The above pictures shows what my desk looks like when I am presenting. I've recently added the second external screen to my setup, as I found I was needing another monitoring for everyday work and it works well for presentations as well. So my webcam is mounted on top of the middle monitor, and that's where I make eye contact, gives me a good place to stand and still have access to my keyboard and mouse. The monitor the webcam sits on is the monitor I use for presenter notes or viewing the things I need while presenting. I use my laptop monitor as the monitor which I share when presenting, it has my slides that everyone sees. It's off to the side and doesn't distract me but still easily accessible if I need to do something on that screen. As the monitor of the Surface Book 2 is touch screen I can draw on slides if I needed to easily. The second external monitor off to the left is either left empty when presenting or has something like Twitter up if I want to interact with the audience that way or see what is being said. It's great just to have it as another screen incase I need extra notes. I have my Surface Pen as my presentation clicker, which helps to advance the slides along and it's handy to have in my hand if I did want to draw something. My microphone is on a boom arm so I can move it around and "float" it where I need to, sometimes you'll see it in the camera view other things it's just out of sight. ### Screen If I am just presenting PowerPoint then it's a simple solution, presenter notes on my middle monitor and slides on the laptop monitor. However, If I am doing say an interview and I need notes for the questions I need to ask of the points I have to remember to make at the start or end I need to get a bit creative and set up my screen so everything is where it is easily accessible. This is where Fancy Zones in [PowerToys](https://github.com/microsoft/PowerToys?ref=techielass.com) comes into play. It allows you to split up your monitor in an way that makes sense to you. In the screenshot below you can see if sliced my screen in two, one half has [StreamYard](https://streamyard.com/?pal=5940677089689600&ref=techielass.com) open and the other has a Word document with my notes. That way I can keep track of what's happening in our recording and also have my notes easily readable. ![fancyzones-1](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/fancyzones-1.PNG) And this is all on the monitor below my webcam, so if I need to reference them it's just a quick glance down and I'm not looking away too long from the camera or moving off to the side. ## Equipment List 1. [Surface Book 2 - 13.5"/ 512GB / Intel Core i7](https://amzn.to/2xq2xy8?ref=techielass.com) 2. [Lenovo ThinkVision P27 u](https://amzn.to/2Xzwsik?ref=techielass.com) 3. [Dell UltraSharp U2419H](https://amzn.to/35cl7I9?ref=techielass.com) 4. [Surface Ergonomic Keyboard](https://www.microsoft.com/en-gb/p/surface-ergonomic-keyboard/90pnc9ljwpx9?cid=msft%5Fweb%5Fcollection&activetab=pivot%3aoverviewtab&ref=techielass.com), 5. [Surface Arc Mouse](https://amzn.to/2Vq7Yp1?ref=techielass.com) 6. [Stream Deck](https://amzn.to/3ch6EeW?ref=techielass.com) 7. [Surface Dock](https://amzn.to/2ygTek4?ref=techielass.com) 8. [Rode NT-USB Microphone](https://amzn.to/3cedDoO?ref=techielass.com) 9. [RODE PSA1 Boom Arm](https://amzn.to/2XFcG53?ref=techielass.com) 10. [Neewer 480 LED Video Light](https://amzn.to/2XzvG4U?ref=techielass.com) 11. [Ikea Idasen](https://www.ikea.com/gb/en/p/idasen-desk-sit-stand-brown-dark-grey-s19280958/?ref=techielass.com) 12. [Logitech C920](https://amzn.to/2XXHPAG?ref=techielass.com) ### What does your setup look like? The above all work for me but I'd love to hear any tips or suggestions that work for you when presenting remotely, always looking to learn and improve my setup! 💡 Celebrate International Women's Day by [learning more about me](https://www.techielass.com/hello-its-me/)! ### Weekly Update #64 URL: https://www.techielass.com/weekly-update-64/ Last updated: 2021-03-23T17:09:46.000Z This week I have been focussing on prioritising my workload and making sure I hit the deadlines I need to as I have some time off work booked for next week. Which has been refreshing, as for the last few weeks I have just been context switching and do a lot of things and not really achieving anything (or at least feeling that way), so I feel like this week I have accomplished quite a bit. It's good now and again to prioritise and focus on a few things only and get them done and sorted before starting new things. During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [Azure Automation is now available in Switzerland North region](https://azure.microsoft.com/updates/azure-automation-in-switzerland-north-region/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Security Center—News and updates for October 2020](https://azure.microsoft.com/updates/asc-october2020/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [PowerShell support for Server Migration with Azure Migrate is now generally available](https://azure.microsoft.com/updates/powershell-support-for-server-migration-with-azure-migrate/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### How to present remotely URL: https://www.techielass.com/how-to-present-remotely/ Last updated: 2021-03-14T08:13:45.000Z I started my public speaking journey back in 2017 and have had the pleasure of speaking at many great events in person in the UK and abroad, I never imagined I'd enjoy public speaking the way I do. With the world as it is in 2020 everything changed and moved from in person events to virtual. I admit to being a bit naive in thinking that presenting virtually or remotely would be a similar experience to presenting in person. From my experience this year, I can tell you that it is very much a different thing presenting remotely than in person. In person as a speaker you can feed off the audience and pull that into your presentation delivery, a friendly face in the crowd can make all the difference to your confidence and delivery. When presenting remotely it's much harder if at all possible to see your audience and draw on their energy. It's also harder to interact with them, either as a crowd asking for a show of hands to a question you are asking or on a one to one basis to discuss something. It definately take a lot more effort as a presenter and audience member to keep that connection open. I've been asked by several people to share my experience of presenting virtually and share any tips I've got, so what better way to do that than via a video? 😉 In my video I cover off a fair few subjects. I touch on [nerves and routine](https://www.youtube.com/watch?v=TJs2cWT-AV0&t=114s&ref=techielass.com), [environment](https://www.youtube.com/watch?v=TJs2cWT-AV0&t=175s&ref=techielass.com), [lighting](https://www.youtube.com/watch?v=TJs2cWT-AV0&t=640s&ref=techielass.com), [knowing your presentation platform](https://www.youtube.com/watch?v=TJs2cWT-AV0&t=890s&ref=techielass.com), [running demos](https://www.youtube.com/watch?v=TJs2cWT-AV0&t=1030s&ref=techielass.com), [questions and chat](https://www.youtube.com/watch?v=TJs2cWT-AV0&t=1351s&ref=techielass.com) and also [when it all goes wrong](https://www.youtube.com/watch?v=TJs2cWT-AV0&t=1534s&ref=techielass.com). I hope that you find the video and tips of value and please do reach out to me, either here, or on [YouTube](https://www.youtube.com/techielass?ref=techielass.com) with any questions or tips you've got for presenting remotely, I am always willing to learn and improve my technique! 😀 ### YouTube Time Sections URL: https://www.techielass.com/youtube-time-sections/ Last updated: 2021-03-13T13:20:46.000Z Over the last year or so I've been building up my [YouTube channel](https://www.youtube.com/techielass?ref=techielass.com), learning new things and experimenting trying to figure out the best way to do things that are useful to my audience. A new feature that YouTube have launched this year is the time sections which is a great feature for longer videos, I kind of stumbled across it by accident and wanted to share some info on it as I'm finding it really useful. 😀 You might have spotted that on some videos within YouTube have these kind of broken up play lines that show sections, and allow you to skip to different sections. ![youtube-timesections](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/youtube-timesections.PNG) Well this is something the creator of the video has total control over and can set up for the viewers! Within the description of your video, you need to include some time stamps along with a description of what that section is about. What you need to remember is to include 0:00 as the first time stamp entry otherwise YouTube won't know to start setting up the time sections. So something along the lines of: 0:00 - Introduction 0:20 - What does an IT department look like? 4:08 - Terminology: On Prem and Cloud 9:50 - My career 16:16 - My role as a Cloud Advocate 17:44 - Working at Microsoft 20:50 - Do you need a degree? ![youtube-timesections-description](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/youtube-timesections-description.PNG) It's a simple thing that could make a big difference to your audience, especially on those larger videos which have natural sections within them. Give it a go and let me know what you think! 😀 ### Weekly Update #63 URL: https://www.techielass.com/weekly-update-63/ Last updated: 2021-03-23T17:10:51.000Z This week I've been having fun with video, either recording it for future videos my my [YouTube channel](https://www.youtube.com/techielass?ref=techielass.com) or as an interviewer for a video series that will launch on [Channel9](https://channel9.msdn.com/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) later this year or playing with the intro to my weekly video. 😉 During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [Public Preview: Azure Log Analytics in Brazil Southeast and Norway East](https://azure.microsoft.com/updates/public-preview-azure-log-analytics-in-brazil-south-east-and-norway-east/?WT.mc%5Fid=modinfra-10523-salean&ref=techielass.com) - [App Service Discount for Premium Plans](https://azure.microsoft.com/updates/app-service-discount-for-premium-plans/?WT.mc%5Fid=modinfra-10523-salean&ref=techielass.com) - [Azure Region announced in Taiwan](https://news.microsoft.com/apac/2020/10/27/microsoft-to-establish-its-first-datacenter-region-in-taiwan-as-a-part-of-its-reimagine-taiwan-initiative/?WT.mc%5Fid=modinfra-10523-salean&ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Azure at a Glance URL: https://www.techielass.com/azure-at-a-glance/ Last updated: 2022-12-22T20:04:05.000Z I have started to curate some videos on my YouTube channel where I share short videos showing off some of the features within Microsoft Azure. The hope is that not only will it keep me up to date with features but also help showcase some features that will help within your work environments. 😊 Please do check out my playlist of videos and if you haven't already, please do subscribe to my channel to be notified of new videos when I release them. ### Microsoft Teams Meeting Recordings URL: https://www.techielass.com/teams-meeting-recordings/ Last updated: 2024-06-06T10:16:53.000Z We’ve all become use to having meetings virtually these days and if your calendar is anything like mine you often have days where meetings overlap and you can’t attend them all. [Microsoft Teams](https://www.microsoft.com/microsoft-365/microsoft-teams/group-chat-software?WT.mc%5Fid=modinfra-10176-salean&ref=techielass.com) can [record meetings](https://support.microsoft.com/office/record-a-meeting-in-teams-34dfbe7f-b07d-4a27-b4c6-de62f1348c24?WT.mc%5Fid=modinfra-10176-salean&ref=techielass.com) so you can catch up on those meetings you’ve missed when you have a chance. I’ve heard a few people say that viewing the recordings or sharing them can be a bit tricky to negotiate. I wanted to share of the tips and learnings that I have gathered having used Teams for several years now. ## Finding a meeting recording If you missed attending the meeting or even if you attended the meeting and wanted to review the content again, you can find the meeting recording by going into the meeting chat within Teams. You’ll be able to view it directly within Teams or open it up within a browser and view it within [Microsoft Stream](https://www.microsoft.com/microsoft-365/microsoft-stream?WT.mc%5Fid=modinfra-10176-salean&ref=techielass.com). My personal preference is to view it within Stream as it gives me more control over the video player and allows me to still use Teams at the same time as viewing the recording. ![recording](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/recording.gif) ## Share a meeting recording with someone else internally If you want to share a meeting recording with someone else who wasn’t originally invited to the meeting and is internal to your organisation you, you are able to do that. Microsoft Stream is the default location for meeting recordings and transcriptions of the meetings. Stream will default the permissions of the recordings to the attendees or invited attendees to the meeting, but those can be amended by the meeting organiser. You can either navigate to the meeting recording from within the [meeting chat](https://techcommunity.microsoft.com/t5/itops-talk-blog/microsoft-teams-chat-history-and-controlling-presenters/ba-p/1749840?WT.mc%5Fid=modinfra-10176-salean&ref=techielass.com) or open up Stream itself and look under My Content > Meetings and then selecting Update Video Details. You will have the option to give additional people view access to the meeting recording or owner rights. ![permissions](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/permissions.gif) ## Share a meeting recording with someone else externally Sharing a Teams meeting recording that is stored within Stream isn’t unfortunately a straightforward process. The best way to do it is to download the meeting recording as an MP4 file and then upload to an external video hosting solution or another solution. ## OneDrive A new feature is now available that would make external sharing of Teams recordings a little easier. You are now able to use [OneDrive for Business](https://www.microsoft.com/microsoft-365/onedrive/onedrive-for-business?WT.mc%5Fid=modinfra-10176-salean&ref=techielass.com) as the storage location for meeting recordings. The administrator of your Teams environment will need to amend Teams meeting policies in order to make this change happen, this change needs to be applied using PowerShell commands. You should make use of the latest PowerShell module for Teams to issue command. The following PowerShell command would change the meeting recording storage policy for the “Scottish Team” [meeting policy](https://docs.microsoft.com/microsoftteams/meeting-policies-in-teams?WT.mc%5Fid=modinfra-10176-salean&ref=techielass.com): Once the policy change takes effect when people recording meetings they will see that it is now stored within OneDrive. ![onedriverecordings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/onedriverecordings.PNG) You can share this meeting recording just like any other file that is stored within your OneDrive or download it. If your Office 365 tenant allows external sharing you can share to external users directly from this location and there is no need to download and share elsewhere. Storing the recordings within OneDrive means we lose the automatic transcript and captions that Stream created as well as the video trimming facilities we had with Stream. However, Microsoft is working on closing those functionality gaps and we should see more changes and switchovers happening in Q1 2021. Another great tip within Microsoft Teams, is if you need to look back at the chat from meetings, you can - check it out [here](https://www.techielass.com/look-back-at-microsoft-teams-meeting-chat) ### Weekly Update #62 URL: https://www.techielass.com/weekly-update-62/ Last updated: 2021-03-23T17:12:03.000Z This week has been a tough one for me, lots of things going wrong and needing redone, or last minute changes. Been tough for me, and I'm definately going to be logging off at the end of today and taking the weekend to look after myself and not focus on work or social media. During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [Azure Site Recovery update rollup 51 - October 2020](https://azure.microsoft.com/updates/site-recovery-update-rollup-51-october-2020/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Log Analytics Linux Agent for Fall 2020 now available](https://azure.microsoft.com/updates/log-analytics-agent-for-linux-fall-2020-now-available/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Cloud Terminology Explained URL: https://www.techielass.com/cloud-terminology-explained/ Last updated: 2021-03-13T11:11:04.000Z I was helping out at an [Azure Fundamentals training day](https://www.microsoft.com/events/training-days?ref=techielass.com) event and one question that came up a lot was could you provide some examples of IaaS, PaaS, SaaS, so I thought I'd share my take on the answer to that questions. ## Infrastructure as a Service Infrastructure as a Service (IaaS) refers to components such as compute, networking and storage. On prem IaaS would be your virtual machine infrastructure, so something hosted on Hyper-V or VMware for example. On prem you have to take care of every aspect of it though from networking to the applications. IaaS in the cloud you manage from the operating system level up to the application level. The cloud vendor looks after the networking to virtulisation layer. Creating a virtual machine (or server) within [Azure](https://azure.microsoft.com/free/search/?OCID=AID2100128%5FSEM%5F1be3390cf5fa16b49506668192ef0841:G:s&ef%5Fid=1be3390cf5fa16b49506668192ef0841:G:s&msclkid=1be3390cf5fa16b49506668192ef0841&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) is an example of IaaS. ## Platform as a Service Platform as a Service (PaaS) allows you to take advantage of technology but not have to worry about the complexity of building or maintaining the necessary infrastructure. One of my favourite examples of PaaS within Azure is the [Web App](https://azure.microsoft.com/services/app-service/web/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) offering, you can host your website on Azure without having to maintain the infrastructure, just point the Web App towards your ebsite code and Azure will make it available for visitors. ## Software as a Service Software as a Service (SaaS) is when a third party provider hows the software you wish to use and you can access it via the Internet. Often SaaS offerings are usually only valid with a relevant subscription and they are easily scalable with your needs. One great example of SaaS is [Microsoft 365](https://www.microsoft.com/microsoft-365?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com), you can host your email online and not need to have any of that infrastructure in place on prem, which in the past I've seen be about 3 or 4, if not more servers. And you don't have to care about the operating system updates, hardware failures, all of that is taken care of within your subscription fee. ### Weekly Update #61 URL: https://www.techielass.com/weekly-update-61/ Last updated: 2021-03-23T17:13:01.000Z This week I have been working away on blog posts and planning for the upcoming video series I am working on as well. I've also doubled down on plans for the [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com), hoping to go out with a bang in terms of meetups this year. So please do sign up to join us on the [28th October](https://www.eventbrite.co.uk/e/glasgow-azure-user-group-21-tickets-118257026951?aff=techielassblog&ref=techielass.com) and the [16th December](https://www.eventbrite.co.uk/e/glasgow-azure-user-group-22-tickets-124974326575?aff=techielassblog&ref=techielass.com). I am also having some issues with my back, which I think is a touch of sciatica, so if anyone has any tips please do let me know! During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [Azure Blob storage point-in-time restore now generally available](https://azure.microsoft.com/updates/azure-blob-storage-pointintime-restore-now-generally-available/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Monitor Log Analytics data export is in public preview](https://azure.microsoft.com/updates/azure-monitor-log-analytics-data-export-is-in-public-preview/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### STEM Career Videos URL: https://www.techielass.com/stem-career-videos/ Last updated: 2025-02-14T11:43:05.000Z Back in 2018 I became a [STEM Ambassador](https://www.stem.org.uk/?ref=techielass.com) which is a large network of volunteers from a wide variety of science, technology, engineering and mathematics (STEM) related jobs who offer up their time to try and inspire the next generation. Over the last two years I've loved going out to schools and talking to the young people and also judging competitions etc, however with the world in the situation that it's currently in I haven't been able to physical do that so I've turned my hand at creating some videos to share some information and hopefully help inspire people into following in my footsteps in a career in IT. ## Getting started in IT In this video I share some of my [career journey](https://www.techielass.com/it-questions-answered-getting-started-in-it/) and also answer questions that some young people sent me. ## Why I love working in IT This video is a quick and simple video explaining why I love working in IT and why I have remained in the industry all these years. ## My career and working for Microsoft In this video I cover off a bunch of things, what an IT department looks like, the differences between IT Operations and Developers, working for Microsoft, my current role at Microsoft and do you need a degree to start working in IT. ## Reach Out If you are a teacher and can't show these videos within your school because you can't access YouTube, please reach out to me and I can make the raw video file available. Also if you'd like to talk to me your class or anything please reach out to me via - [https://aka.ms/sarahlean/stem](https://aka.ms/sarahlean/stem?ref=techielass.com) ### Speaking at TechUG Glasgow, October 2020 URL: https://www.techielass.com/speaking-at-techug-glasgow-october/ Last updated: 2021-03-20T14:39:41.000Z [Technology User Group (TechUG)](http://www.technologyug.co.uk/?ref=techielass.com) was the first event I ever spoke at and I'm pleased to say I've been invited to speak at the next event that is being hosted virtually later this week. I spoke at an earlier TechUG event that was hosted online and have to say the team did a great job of getting the community together and interacting. The event this month should have been in Glasgow, so it's my "home" event. The session I am delivering this time around is a recap of [Microsoft Ignite 2020](https://myignite.microsoft.com/home?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com), join me at 10am (UK time) on the 15th when I'll pick through some of the big news announcements! Sign up for the FREE event via the [event website](https://techug.org.uk/events/techug-glasgow-it-ops-it-infrastructure-devops-cloud-community-event/?ref=techielass.com) and join the community online! ### Weekly Update #60 URL: https://www.techielass.com/weekly-update-60/ Last updated: 2021-03-23T17:14:00.000Z This has been a busy week for me, I've been drafted in on a new project, or at least it's new to me, it's been running for a few weeks and deadlines are fast approaching as release of what we are working on is November, so I've been working hard to meet the deadlines that have been set so not to drag the project back. I'm also working on things for the last remaining meetups for the [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com) this year, so be sure to check out what we have planned! 😀 During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [Monitor Azure Arc enabled Kubernetes with Metric Alerts](https://azure.microsoft.com/updates/arck8smetricalerts/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure portal September 2020 update](https://azure.microsoft.com/updates/azure-portal-september-2020-update/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Learn how to manage and optimize your Azure costs with our guided learning modules](https://azure.microsoft.com/updates/learn-how-to-manage-and-optimize-your-azure-costs-with-our-guided-learning-modules/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) [![Listen on Spotify](https://www.techielass.com/wp-content/uploads/2020/04/spotify-podcast-badge-blk-wht-330x80.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![Download via RSS](https://www.techielass.com/wp-content/uploads/2020/04/rss-feed.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### My Microsoft Ignite 2020 Sessions URL: https://www.techielass.com/my-ignite-2020-sessions/ Last updated: 2022-12-22T07:40:31.000Z Last year I had the honor of speaking at Microsoft Ignite for the first time, it was also my first Ignite conference. 😀 This year with the world in the state that it is, Microsoft turned the Ignite conference into a virtual event, which was disappointing in terms of missing out on meeting up with old friends and making new friends in person, however with the event turning into a virtual one it meant that more people could enjoy the event. 😀 This year I had the honor of interviewing four guests during interview slots during the event and also co presenting a session with [Thomas Maurer](https://www.thomasmaurer.ch/?ref=techielass.com). I had a really good mix of sessions in terms of topics. # Interviews ## [Reinventing the electricity grid](https://myignite.microsoft.com/sessions/34e265d8-588a-460e-bb95-68ec2bc2cfea?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) I got the chance to interview Brian Janous, the General Manager of Energy & Sustainability at Microsoft and we had the chance to speak about the projects we are undertaking for our Azure datacentres and we also touched on [Project Natick](https://natick.azurewebsites.net/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). ## [Microsoft Defender for Identity Mythbusting](https://myignite.microsoft.com/sessions/73ab15ca-c2cf-4130-adb4-e0c26f1617df?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) This was a great opportunity for me to interview Ricky Simpson, who is part of the product team for Microsoft Defender for Identity, as he is based in Scotland, so we had a good representation of our little office here in Scotland on show at Ignite. We also cleared up some of common misconceptions of [Microsoft Defender for Identity](https://www.microsoft.com/en-us/microsoft-365/security/identity-defender?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). 😉 ## [Cloud Migration and how Azure Migrate can assist](https://myignite.microsoft.com/sessions/7bb48d75-b608-4a6c-88a3-c7a1a4769166?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) This interview saw me speak to someone from the Azure Migrate product team about Azure Migrate and how it can assist datacentre migrations. This is a subject and a product close to my heart, so it was a great opportunity and I really enjoyed it. ## [Kristian Nese](https://myignite.microsoft.com/sessions/48801aab-774f-4ddc-8c37-c793e8ef395b?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) I've long followed Kristian on social media and it was nice to get the chance to meet him (albeit virtually) and also get a chance to chat about how [enterprise scale landing zones](https://docs.microsoft.com/en-us/azure/cloud-adoption-framework/ready/enterprise-scale/architecture?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) can really help organisations drive their Azure adoption. ## My Session Thomas and I got the chance to deliver a session called [IT Operations in a Cloud World](https://myignite.microsoft.com/sessions/1be492fd-cd8c-4bc8-8920-c7b24a2b929c?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) live during the event, our colleagues in different time zones also got the same opportunity. This was a session we all designed and was designed to help share the journey that we have all been on in our careers which has seen us transition from on prem engineers to Cloud engineers or Hybrid Cloud engineers. 😀 ### Weekly Update #59 URL: https://www.techielass.com/weekly-update-59/ Last updated: 2021-03-24T10:30:29.000Z This week has been another quick week, I've been busy trying to catch up on admin that I missed last week when I was focussing on Ignite and also I've been trying to catch up on creating some content. I had fun recording an [Ignite recap podcast](https://techstringy.wordpress.com/2020/10/01/microsoft-ignite-round-up-kirk-ryan-and-sarah-lean-ep140/?ref=techielass.com) did an Ignite roundup meetup with the [WinOps team](https://www.meetup.com/WinOps/events/273267757/?utm%5Fcontent=140982721&utm%5Fmedium=social&utm%5Fsource=twitter&hss%5Fchannel=tw-3295815223) and I'm also prepping for a talk at [TechUG Glasgow](https://techug.org.uk/events/techug-glasgow-it-ops-it-infrastructure-devops-cloud-community-event/?ref=techielass.com) later this month on Ignite news. 😀 So ever though Ignite is over for this year it's still consuming my work at the moment. lol During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [New Azure Advisor operational recommendations](https://azure.microsoft.com/updates/new-recommendations-for-operational-excellence-are-now-available-in-azure-advisor/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [New Azure Advisor performance recommendations](https://azure.microsoft.com/updates/new-performance-recommendations-now-available-in-azure-advisor/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Security Center AWS and GCP connectors](https://docs.microsoft.com/azure/security-center/release-notes?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com#aws-and-gcp-connectors-in-security-center-bring-a-multi-cloud-experience) - [Application Insights now available in UK West](https://azure.microsoft.com/updates/general-availability-application-insight-in-uk-west/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) [![spotify-podcast-badge-blk-wht-330x80-1](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-1.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-1](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-1.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### 500 Subscribers! URL: https://www.techielass.com/500-subscribers/ Last updated: 2023-12-06T08:20:22.000Z Back in September 2019 I really started to create content on my [YouTube channel](https://www.youtube.com/techielass?ref=techielass.com) both as a method of sharing knowledge as well as a way for me to get use to speaking to the camera. It's been great fun creating content, learning how to handle Camtasia, Premiere Pro (check out my review of both products [here](https://www.techielass.com/camtasia-vs-premiere-pro/)), learning how to make thumbnails as well as all the video and audio fun that goes with creating videos. I've really enjoyed creating my [Weekly Update](https://www.youtube.com/playlist?list=PLbjernQTVXitYGv7gWIRNqeWBFyVZJOBk&ref=techielass.com), where I share what's been happening in the Azure world and also what I've been up to. COVID19 kind of curtailed me travelling around the world speaking at events and meeting new people, unfortunately, but I've still managed to find interesting (at least I think so! lol) stuff to talk about each week, which I think people are enjoying. 😉 Which brings me to the reason for this blog post, I've hit the milestone of over 500 subscribers, which is amazing! I never imagined I'd get to 100 never mind tick over the 500 mark about a year after I started the channel. A HUGE thank you to everyone that has watched a video, hit that like button and subscribed, I really appreciate the support and don't take it for granted! 😊 I look forward to creating more content over the days and years to come. I hope you all continue to enjoy it! ### Look back at the chat from a Microsoft Teams Meeting URL: https://www.techielass.com/look-back-at-microsoft-teams-meeting-chat/ Last updated: 2021-03-14T07:47:06.000Z How often have you been in a Microsoft Teams meeting and seen a really useful link to somewhere shared in the chat, or some great piece of advice and then tried to find it later and had trouble? Yip, I've been there. Let me into a little secret, you can find the chat history from previous Microsoft Teams meetings really easily! If you open up teams and click on the Calendar button, it will load your current schedule with all your meetings. Find the meeting you want to view the chat of, and you can either view the chat in two ways. ## Option 1 - Right Click Right click on the meeting and a menu will open up, click on "chat with participants" and the chat will appear for you. ![chatwithparticipants](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/chatwithparticipants.PNG) ## Option 2 - Open the meeting event The other way is to click into the meeting event, this will open up a lot of different options, you'll have access to the list of participants, access to the chat, files shared during the meeting, meeting notes and whiteboards if they were used. If you were the meeting organiser you'll have access to the scheduling assistant as well. ![teamschat](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/teamschat.gif) Hope that helps you in the future, locate information your team mates and colleagues have shared during meetings! 😉 ### Weekly Update #58 URL: https://www.techielass.com/weekly-update-58/ Last updated: 2021-03-24T10:31:30.000Z So this week has been absolutely crazy with everything that has happened with Microsoft Ignite. In my weekly update I give a round of some of the news that has stuck out to me this week and also give some insight into what it was like "backstage" at Ignite and what it looked like when I was interviewing my guests for the main livestream. During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [Azure Automanage](https://techcommunity.microsoft.com/t5/azure-governance-and-management/azure-automanage-for-virtual-machines-public-preview/ba-p/1671094?WT.mc%5Fid=modinfra-9414-salean&ref=techielass.com) - [Windows Admin Centre in the Azure Portal](https://techcommunity.microsoft.com/t5/windows-admin-center-blog/announcing-windows-admin-center-in-the-azure-portal/ba-p/1696729?WT.mc%5Fid=modinfra-9414-salean&ref=techielass.com) - [Azure Arc](https://azure.microsoft.com/en-us/services/azure-arc/?WT.mc%5Fid=modinfra-9414-salean&ref=techielass.com) - [Azure VMware Solution](https://azure.microsoft.com/en-gb/services/azure-vmware/?WT.mc%5Fid=modinfra-9414-salean&ref=techielass.com) - [Microsoft 365 Lighthouse](https://techcommunity.microsoft.com/t5/small-and-medium-business-blog/announcing-microsoft-365-lighthouse-for-managed-service/ba-p/1698181?WT.mc%5Fid=modinfra-9414-salean&ref=techielass.com) - [Azure Migrate PowerBI Dashboards](https://aka.ms/AzureMigrate%5FPowerBI?ref=techielass.com) - [Azure Resource Mover](https://techcommunity.microsoft.com/t5/azure-governance-and-management/introducing-azure-resource-mover-a-seamless-way-to-move-between/ba-p/1703848?WT.mc%5Fid=modinfra-9414-salean&ref=techielass.com) [![spotify-podcast-badge-blk-wht-330x80-2](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-2.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-2](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-2.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Migration Journey from on-premises to Azure URL: https://www.techielass.com/back-to-school-migration-journey/ Last updated: 2023-12-06T08:18:46.000Z Migrating to Azure is something that a lot of companies are exploring and embarking on. And we are seeing a lot of things trigger those conversations. However, I always maintain that regardless of what is triggering your migration, or what industry you are in, or what size your organisation is the process for your migration project will be the same. Let’s talk about the different stages and where you can find more resources and tools to help you work through the stages. ## Discovery This is a stage I fully believe has a big impact on any migration project. During the discovery phase organisations should be looking to find out more information about their environment, document things from where the servers are physically located to the ports the workloads use and on what network. To collect this information there are many different ways you can approach it, you can use existing documentation within your org, or you can use various different tools to collect the information, CMDBs, PowerShell scripts, manual investigate, or something like [Azure Migrate: Server Assessment](https://docs.microsoft.com/azure/migrate/migrate-services-overview?WT.mc%5Fid=modinfra-8553-salean&ref=techielass.com#azure-migrate-server-assessment-tool). And it’s not just all about the technology, there should be conversations with the people in the organisation as well. Discussions with the people who use the workloads day to day, discussions with the business owners who own the workload. Maybe there is an opportunity to replace the workload with something different, something new, maybe that process is already in the offing, but IT just haven’t been looped in. 😉 It’s also a great time to look at training for your IT department, make sure your staff are trained to use Azure and are confident at using it and supporting your workloads going forward. There are [training events](https://azure.microsoft.com/en-us/community/events/?WT.mc%5Fid=modinfra-8553-salean&ref=techielass.com) by Microsoft running all over the world, for free, there is also [Microsoft Learn](https://docs.microsoft.com/learn/?WT.mc%5Fid=modinfra-8553-salean&ref=techielass.com) and [certification](https://docs.microsoft.com/learn/certifications/?WT.mc%5Fid=modinfra-8553-salean&ref=techielass.com) tracks. ## Assessment Once you have all that data from your discovery what do you do with it?? Well it’s time to sit down and figure things out. Figure out what workloads can move to the cloud, how they can move to the cloud and potentially what workloads aren’t going to be moved to the cloud. It’s also a chance to look at any consolidation, or upgrades that you might want to carry out as part of this project. Yes this will maybe increase the project timeline and mean a bit of extra work, but in the long run if you are running older operating systems that are [end of life](https://docs.microsoft.com/lifecycle/products/?WT.mc%5Fid=modinfra-8553-salean&ref=techielass.com) running them on prem or Azure isn’t ideal as it could leave your organisation vulnerable. This is also the time to look at the cost of the migration, the cost of hosting your resources on Azure versus on prem and having those conversations with your senior leadership team and finance team. [Capital expenses and operating expenses](https://docs.microsoft.com/azure/cloud-adoption-framework/strategy/business-outcomes/fiscal-outcomes?WT.mc%5Fid=modinfra-8553-salean&ref=techielass.com#capital-expenses-and-operating-expenses) (capex and opex) are phrases you’ll start to hear questions around, so be prepared! 😉 ## Migration This is when the project starts to get a bit real, this is when your starting to do something new and fun and excited in Azure. You’ll be starting to think about design of your Azure environment, [naming conventions](https://docs.microsoft.com/azure/cloud-adoption-framework/decision-guides/resource-tagging/?WT.mc%5Fid=modinfra-8553-salean&ref=techielass.com), networking, the whole thing. This can be a daunting prospect, however there are some resources which can help you start to build up the basics, the [Azure Landing Zone](https://docs.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/?WT.mc%5Fid=modinfra-8553-salean&ref=techielass.com) documentation can take you through the process, decision making and deploying of all the things you need to start hosting your first workload in Azure. One thing I always say to people at this stage is not to get caught up in whether you are using IaaS, PaaS, or SaaS. Choose the best solution for your organisation and workload. You might choose to go with IaaS initially because it suits your time scales or knowledge level, or you might go for a mix as you have the skills and workloads that suit that model. Whatever you choose ultimately is fine. There is always the chance to change it again. 😉 ## Secure & Manage This is the final stage of your migration, however, when I say final, what I really mean is the stage that will be part of your project but also become part of your normal day to day activities. Operating in the cloud is different than on prem so you need to be aware of what your [security responsibilities](https://docs.microsoft.com/azure/security/fundamentals/shared-responsibility?WT.mc%5Fid=modinfra-8553-salean&ref=techielass.com) are and what your providers are, you also need to think about things like backup, disaster recovery, cost management, who within your team looks after what, etc. There are lots of things to think about and understand. There is a possibility that you’ll be able to use existing monitoring, backup, disaster recovery solutions in the cloud as well, but you might have to look at new solutions and set up new procedures for reporting, update documentation etc. Now things are in place and working okay, do you start to want to restrict thing? Stop people deploying or delete certain resources? We don’t want people to not be able to use the cloud but we want to be able to have some control and safe guard people from accidently deploying a massively expensive resource and blowing the IT budget for the year. So start to look at implementing some governance with [Azure Policy](https://docs.microsoft.com/azure/governance/policy/overview?WT.mc%5Fid=modinfra-8553-salean&ref=techielass.com). Keeping an eye on your costs is also something you want to start thinking about, it might take a while to get everything settled in but setting [Azure budgets](https://docs.microsoft.com/azure/cost-management-billing/costs/tutorial-acm-create-budgets?WT.mc%5Fid=modinfra-8553-salean&ref=techielass.com) in order to keep an eye on overspends would be a good idea. Having a look at [Azure Advisor](https://azure.microsoft.com/services/advisor/?WT.mc%5Fid=modinfra-8553-salean&ref=techielass.com) as well is something that should become part of your routine, reviewing recommendations for thinks like design best practices, or costs, or security is something that will definitely need reviewed every month or every quarter. ## Overview Hopefully that’s given you some things to think about and places to find resources if your org is embarking on a migration project. If you are looking to learn more about Azure please do check out the [#AzureBacktoSchool](https://azurebacktoschool.github.io/?ref=techielass.com) initiative. ### What is an Azure Landing Zone? URL: https://www.techielass.com/what-is-an-azure-landing-zone/ Last updated: 2022-03-04T08:17:46.000Z You've heard the term, but what does it mean? ## Azure Landing Zone If you've been working in the Microsoft Azure eco-system at all you'll probably have stumbled across the phrase "Azure Landing Zone", or even "Minimum Viable Product". But what do either of them mean? The Azure Landing Zone is basically, in it's simplest form a bunch of services within Azure that give you a place to somewhere to deploy other Azure services. 😉 So within your landing zone you'd need things like an Azure subscription to start with, whether you have one or multiple you need one to start you Azure journey. Then you'll need things like resource groups to logically store your services together. And for some services you'll need things like Azure virtual networks to exist. This is no different than if you were building an on prem datacentre for your company, you'd need an area inside a building for the servers (i.e. an Azure subscription) and you'd need to install switches and routers (i.e. Azure virtual network) amongst other things before you started to install your servers, you need that landing zone or minimum viable product in place. Azure is no different. 😀 ## Implementation methods Once you've designed your landing zone, it is time to implement it. Now of course you could deploy it via the Azure Portal, however looking at automating it, in a repeatable way is best practice. Using tools such as [ARM Templates](https://docs.microsoft.com/azure/azure-resource-manager/templates/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com), or [Azure Blueprints](https://azure.microsoft.com/services/blueprints/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) or [Terraform](https://www.terraform.io/?ref=techielass.com). The [Microsoft Cloud Adoption Framework](https://docs.microsoft.com/azure/cloud-adoption-framework/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) has some great resources that can help get you started. If you check out the [landing zone implementation options](https://docs.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/implementation-options/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) there are templates you can deploy or use as a baseline to get you started on your implementation. ## Conclusion Hopefully this short blog post has helped to clear up what an Azure Landing zone is. 😉 ***Sponsor*** ### Azure Migrate sessions at Microsoft Ignite 2020 URL: https://www.techielass.com/azure-migrate-sessions-msignite-2020/ Last updated: 2021-03-12T16:17:42.000Z As I'm sure you are all aware I am a massive fan of Azure Migrate and I enjoy talking about the migration journey that is possible due to it. Let's take a look at what sessions are covering it and migrations during Microsoft Ignite 2020! I've listed the session below in either Pacific Daylight Time (PDT) or British Summer Time (BST). ## Digital Breakout: Be prepared for what's next: kick start your cloud migration This session will talk about the migration triggers that we are seeing with our customers, common migration scenarios, best practices to move your apps and data and infrastructure to Azure as well as key programs that can help you get start and move forward successfully. Click on a session time below to add it to your Ignite backpack: - [23rd September 12:15pm PDT | 23rd September 8:15pm BST](https://myignite.microsoft.com/sessions/721ae5d8-0270-4c8e-945a-3454066d7788?WT.mc%5Fid=modinfra-9321-salean&ref=techielass.com) - [23rd September 8:15pm PDT | 24th September 04:15am BST](https://myignite.microsoft.com/sessions/cbe18600-2627-4565-9aea-8d61ddf29e2a?WT.mc%5Fid=modinfra-9321-salean&ref=techielass.com) - [24th September 4:15am PDT | 24th September 12:15pm BST](https://myignite.microsoft.com/sessions/69e4e487-2672-42d8-8636-e94e98c0a017?WT.mc%5Fid=modinfra-9321-salean&ref=techielass.com) ## Migrate your datacentre with Azure Tools This is a pre recorded session you can watch at any time. It will help you understand how Azure Migrate can help you move your workloads to Azure. To add this demo based session to your Ignite backpack, click [here](https://myignite.microsoft.com/sessions/a777ae7f-861e-43b5-86d4-b5d97581a61c?WT.mc%5Fid=modinfra-9321-salean&ref=techielass.com) ## Ask the Experts: Be prepared for what's next: kick start your cloud migration This is a live ask the experts session where you get to submit your questions and hear the answers! 😉 Click on a session time below to add it to your Ignite backpack: - [24th September 5:00am PDT | 24th September 1:00pm BST](https://myignite.microsoft.com/sessions/b77c146d-1d50-46ef-a945-bed65520e749?WT.mc%5Fid=modinfra-9321-salean&ref=techielass.com) ## Live Interview: Cloud Migration and how Azure Migrate can assist This is a live interview, where I will be putting your questions to [Bharath Sivaraman Sivaraman](https://myignite.microsoft.com/speaker/0fb29a54-4f5a-42c8-bf67-600365af13a5?WT.mc%5Fid=modinfra-9321-salean&ref=techielass.com) from the Azure Migrate product team! Click on a session time below to add it to your Ignite backpack: - [24th September 5:30am PDT | 24th September 1:30pm BST](https://myignite.microsoft.com/sessions/7bb48d75-b608-4a6c-88a3-c7a1a4769166?WT.mc%5Fid=modinfra-9321-salean&ref=techielass.com) ## Workshop: Migrating to Azure This is a Microsoft Learn workshop that is designed to be interactive and hands on, join the team to get hands on with Azure migration best practices. Click on a session time below to add it to your Ignite backpack: - [22nd September 1:00pm PDT | 22nd September 9:00pm BST](https://myignite.microsoft.com/sessions/0ee2bc22-cbf8-42db-ba14-49981df86dc8?WT.mc%5Fid=modinfra-9321-salean&ref=techielass.com) - [22nd September 9:00pm PDT | 23rd September 5:00am BST](https://myignite.microsoft.com/sessions/574475c0-6281-486a-9972-d02f0ffc8adb?WT.mc%5Fid=modinfra-9321-salean&ref=techielass.com) - [23rd September 5:00am PDT | 23rd September 1:00pm BST](https://myignite.microsoft.com/sessions/cee54401-6bc6-4faf-a617-60681517635d?WT.mc%5Fid=modinfra-9321-salean&ref=techielass.com) ### Microsoft Teams Configure Meeting Presenters URL: https://www.techielass.com/microsoft-teams-configure-presenters/ Last updated: 2021-03-15T19:51:47.000Z When you set up a Microsoft Teams meeting by default everyone invited to that meeting will be able to present. Which is find for a lot of meetings, however, when you are in larger meetings or even maybe in an education setting you would like to limit that to certain people. There are three ways to do this, when you set up the meeting, after you've set up the meeting or during the meeting. ## Setting up the meeting When you set up a Teams meeting from within Outlook you can configure the meeting settings. You can control things like who can bypass the lobby of your meeting room and start the meeting and who can present. Within Outlook, click on the New Teams Meeting button. A new window will open allowing you to set the meeting team, invite the people, etc. Along the top banner you will see a button called "Meeting Options". This is the button you need. (If you don't see this button, within the body of the email, there will be a URL link to the meeting options instead.) ![meetingoptions1](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/meetingoptions1.PNG) ![meetingoptions2](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/meetingoptions2.PNG) You have a few options for the the Presenter rights, as I said the default is Everyone. But you can change this to suit your needs. ![teamsoptions](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/teamsoptions.gif) ## After the meeting has been setup If you've set the meeting up and have to change who is presenting you can still do that, you can still tweak the settings to suit what is going to happen during your meeting. Just find the meeting either in your Outlook calendar or within your Teams calendar and open it up. Within there you will see the Meeting Options URL link and you can tweak the settings there. ![meetingoption2](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/meetingoption2.gif) ## During the meeting Now if during the meeting you decide that others need to be able to present or you've set up the meeting with everyone being able to present and you don't want that, all is not lost, you can change this during the meeting. Click on the participants list and when it comes up you will see a list of everyone that is in the meeting. Depending on how you've set your meeting up and who has accepted or not turned up to the meeting you will may have several sections, displaying presenters, attendees and invited attendees. Find the person that you want to give presenter rights to and click on the ellipsis (three dots) beside their name, click on "Make Presenter", you will get a dialog box popping up confirming this is the action you want to take and when you confirm that the attendee will have the rights to present to the meeting. ![presenterrights](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/presenterrights.gif) If someone is a presenter and you want to take those rights away from them the process is the same, instead you will see the option to "Make an attendee", allowing them to stay in the meeting but only as an attendee. ## Conclusion Hopefully the above helps you to configure your meetings the way you want with the right people being allowed to present or not present based on your needs. If you have any questions or comments please do reach out to me via social media or the comments section below. 😀 ### Weekly Update #57 URL: https://www.techielass.com/weekly-update-57/ Last updated: 2021-03-24T10:32:33.000Z This week has again been all consumed with prep for [Microsoft Ignite](https://myignite.microsoft.com/home?WT.mc%5Fid=modinfra-9209-salean&ref=techielass.com), it's been awesome meeting and catching up with the people that I will be interviewing during the event and also preparing for the session that I will be delivering. If you want to catch the sessions I am involved in here are the details: - [Real world Azure Architecture with Kristian Nese](https://myignite.microsoft.com/sessions/48801aab-774f-4ddc-8c37-c793e8ef395b?WT.mc%5Fid=modinfra-9209-salean&ref=techielass.com) - [Azure Advanced Threat Protection Mythbusting with Ricky Simpson](https://myignite.microsoft.com/sessions/73ab15ca-c2cf-4130-adb4-e0c26f1617df?WT.mc%5Fid=modinfra-9209-salean&ref=techielass.com) - [Reinventing the electricity grid with Brian Janous](https://myignite.microsoft.com/sessions/34e265d8-588a-460e-bb95-68ec2bc2cfea?WT.mc%5Fid=modinfra-9209-salean&ref=techielass.com) - [Cloud Migration and how Azure Migrate can assist with Bharath Sivaraman](https://myignite.microsoft.com/sessions/7bb48d75-b608-4a6c-88a3-c7a1a4769166?WT.mc%5Fid=modinfra-9209-salean&ref=techielass.com) My team and I have set up a [Discord Server](https://discord.gg/Vdwcc59?ref=techielass.com) where we as a community can have some chats and also during Ignite try and set up some of those hall way conversations that we all love at in person events, sign up to the [Discord Server](https://discord.gg/Vdwcc59?ref=techielass.com) and get involved with the community. During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [Update rollup 50 for Azure Site Recovery](https://support.microsoft.com/en-us/help/4582666/update-rollup-50-for-azure-site-recovery?WT.mc%5Fid=modinfra-9209-salean&ref=techielass.com) - [Azure Retail Prices API](https://docs.microsoft.com/rest/api/cost-management/retail-prices/azure-retail-prices?WT.mc%5Fid=modinfra-9209-salean&ref=techielass.com) - [Application Insights in preview in new regions](https://azure.microsoft.com/updates/public-preview-application-insight-in-uk-west-germany-west-central-switzerland-west-and-australia-central-2/?WT.mc%5Fid=modinfra-9209-salean&ref=techielass.com) [![spotify-podcast-badge-blk-wht-330x80-3](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-3.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-3](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-3.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Azure Migrate and Availability Zones URL: https://www.techielass.com/azure-migrate-and-availability-zones/ Last updated: 2022-03-04T08:22:41.000Z Migrating workloads from on prem to Azure is something a lot of businesses are looking at and [Azure Migrate](https://azure.microsoft.com/services/azure-migrate/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) is a great tool for helping to discover, assess and migrate those workloads. One thing to consider with all workloads is the resiliency of the workloads that you are moving, chances are you will have some kind of resilience and redundancy built into the workload on prem, and it's something you should think about when migrating to Azure as well. Now built into the Azure Migrate tool is the option to deploy your virtual machines into an [Availability Zone](https://azure.microsoft.com/global-infrastructure/availability-zones/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) or [Availability Set](https://docs.microsoft.com/azure/virtual-machines/windows/manage-availability?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com#configure-multiple-virtual-machines-in-an-availability-set-for-redundancy) when migrating. Check out this video on how you can utilise this new setting within Azure Migrate. ### Jabra Evolve2 85 Headset Review URL: https://www.techielass.com/jabra-evolve2-85/ Last updated: 2021-12-17T17:04:29.000Z I'm a long term fan of the Jabra headset range, and was given the [Jabra Evolve2 85](https://amzn.to/2ErAfa8?ref=techielass.com) by the Jabra team to review and I can say I've had a ball trying it out. So let's get into the review of the headset. 😊 ## What is the headset? The Jabra Evolve2 85 is a headset designed for those that need a good a good headphone and microphone while working either at home or in the office for all the virtual meetings that are now part of our daily routine. The headset is said to be designed to give the user a good quiet space to head their meeting attendees regardless of how busy the area they are sitting in is and also give the meeting attendees a good experience as well by cancelling out any background noise and only letting the voice of the person using the headset coming through. The headset is available in biege and black and comes in a different combination of options, with USB-A or USB-C connectivity, with or without a charging stand and also optimised specifically Microsoft Teams or Unified Communication tools in general. My headset is the Unified Communication with USB-A connectivity and it came with a charging stand. ## What's in the box Inside the box you get the headset, 3.5mm jack cable for using the headset with a wired connection, 3.5mm Airplane Flight Headphone Plug Jack Converter, the USB connection dongle, a charging cable and to keep all this safe when travelling there is a carry case, which isn't quite a hard case but gives great protection if storing the headset inside your backpack etc. I also had the charging stand within my box, but there is an option to buy this headset without the charging stand. I filmed an unboxing video which can be found [here](https://youtu.be/y96Pv9b1IdQ?ref=techielass.com), if you'd like to see what that looks like. ## Setup Setup on my laptop was pretty easy, I plugged in the dongle that was provided and everything started to kick in the headset gave me a little message saying it was connected and I could select it within Microsoft Teams or within my laptop volume controls as an output device. I have Jabra Direct installed on my laptop to help me customise settings and also apply updates to the headsets. Inside Jabra Direct I can configure some settings for this headset, I can configure it so the headset answers an incoming call when I rotate the boom arm, whether I get a reminder if I speak but am still on mute or not and when the device should power off if it goes idle. ## Comfort This is an over the ear headset and it isn't a heavy headset at all, I have had days where have I have had meetings all day and wore the headset for the full day and not noticed any issue in terms of comfort. They are easy to wear and don't get heavy after a long time of wearing them. I've even had earrings on while wearing them and it hasn't hurt or dug in. There is a lot of padding both on the headset band and ear cups, so I am not surprised they are comfortable to wear. ## Sound Quality So when I talk about sound quality in terms of this headset I am referring to music playback, cause let's face it, we all like a bit of music now and again. And I love to have music playing in the background when I am working on a blog or documentation, so having a headset that can give me a good quality sound is important. I have to admit I was massively disappointed the first time I plugged these in and tried music. The sound just didn't feel right, it felt empty. Then I discovered that within Jabra Direct there was a Music Equalizer for the headset and I could configure and personalise how I wanted to hear Bass, Mid-Range and Treble sounds. Which has made all the difference to how the headset performs in terms of music playback. ## Call Quality I'll be honest, I've been blown away with the call quality and noise cancellation from this headset. The sound quality has been ace, I've been able to hear my colleagues clearly and they've been able to hear me clearly. The headset has 10 microphones built into it, which is designed to pick up the dominant sound (i.e your voice) and not all the background noise, which as been phenomenal. With all my other headsets when I've been in a meeting and one of my neighbours has been cutting their grass or if a noisy lorry has been outside my fellow meeting attendees have always been able to hear it, but when I use the Jabra Evolve2 85 none of that is picked up. I've had one or two issues with the headsets and calls when my mobile phone is close by. I notice when I am actively using my mobile phone and in a meeting (ssh, we all do it 😉) I get a fuzzy static noise inside my headset. Only I can hear it, no one else can. ## Noise Cancellation And the noise cancellation is just as good for me, I can't hear any noise in my background through the headset. Now the headset does have active noise cancellation that you can turn off if you do want to hear your surrounds while having the headset on. So that's customisable depending on your situation and need. ## Battery I am totally in love with have the charging stand with this headset, it sits on my desk, plugged into my docking station and I just put my headset on it after a call or at the end of the day to charge. I don't have to go routing round for the right cable or finding a spare USB port to plug into, it's setup and read to go whenever I need it. And it helps to keep my headset in a place that's easy to grab if I call comes through. The battery life has been very impressive on this headset, I am forever leaving headsets turned on and coming back to them the next day to find dead batteries but as this headset has the sleep mode built in and I have configured that it's helped save the battery and make it last much longer. I can pretty much go a full week without having to charge this headset, which is great. I've even left it sitting for over a week while I took some time off and came back to a "medium" charge left in it so it didn't drain from sitting doing nothing for the week either. The real test of any battery will be how it performs as the device gets older though. 😉 ![jabraevolve28hstand](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/jabraevolve28hstand.jpg) ## Overall I didn't get to test this headset in busy places like coffee shops or airport lounges like I would have liked to, but with the currently COVID situation you can understand why those tests couldn't be done. I still am really pleased with this headset and the functionality it's given me. It's my go to headset now for meetings with team mate. I've had great range with the reception and have been able to put myself on mute and run down to answer the front door for a delivery and still hear what the team are saying. 😉 The price point for this headset, in the UK instead cheap and it certainly is an investment but I think if like me you are on calls all the time and need something with create noise cancellation and comfort this definately something you should be considering. ### Weekly Update #56 URL: https://www.techielass.com/weekly-update-56/ Last updated: 2021-03-24T10:38:24.000Z This week has been a hectic one with lots of prep for the upcoming [Microsoft Ignite](https://myignite.microsoft.com/home?WT.mc%5Fid=modinfra-8952-salean&ref=techielass.com) digital event, there are a lot of cool things being planned and although I am disappointed we aren't all heading to New Orleans for the event in person I am excited that we are still able to run the conference and share knowledge together and interact with each other still. My team and I have set up a [Discord Server](https://discord.gg/Vdwcc59?ref=techielass.com) where we as a community can have some chats and also during Ignite try and set up some of those hall way conversations that we all love at in person events, sign up to the [Discord Server](https://discord.gg/Vdwcc59?ref=techielass.com) and get involved with the community. During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [Automatic VM Guest patching for Windows VMs in Azure](https://docs.microsoft.com/azure/virtual-machines/windows/automatic-vm-guest-patching?WT.mc%5Fid=modinfra-8952-salean&ref=techielass.com) - [Migrate to Azure Availability Zones when using Azure Migrate](https://azure.microsoft.com/en-us/updates/migrate-to-azure-availability-zones/?WT.mc%5Fid=modinfra-8952-salean&ref=techielass.com) [![spotify-podcast-badge-blk-wht-330x80-4](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-4.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-4](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-4.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### What is PowerShell Direct? URL: https://www.techielass.com/what-is-powershell-direct/ Last updated: 2021-03-21T16:04:56.000Z [PowerShell Direct](https://docs.microsoft.com/virtualization/hyper-v-on-windows/user-guide/powershell-direct?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) is a feature that was rolled out with Windows 2016 and Windows 10 that enables you to interact with a virtual machine (VM) that you have running inside Hyper-V even if that VM isn't connected to the network. It's a great time saver as you can issue commands and carry out tasks without having to log into the VM. As I mentioned you don't have to have the virtual machine connected to a network in order to interact with it, ask log as you have guest credentials for the VM you can run the commands against it. So this is not a mechanism you can use to bypass the VM's security, only those that have the credentials can log in. Think of this as a great way of trying to troubleshoot a VM if there is a network connection error or misconfiguration. Some of the PowerShell Direct commands are slightly different than the ones you might be familiar with if you are using to PowerShell remoting. My colleague [Thomas](https://www.twitter.com/ThomasMaurer?ref=techielass.com) has written a blog post that gives some great examples of some of the commands that you can use to manage your VMs, which can be found [here](https://techcommunity.microsoft.com/t5/itops-talk-blog/manage-hyper-v-vms-using-powershell-direct/ba-p/1522877?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). ### Use Azure Cloud Shell on your local machine URL: https://www.techielass.com/use-azure-cloud-shell-on-your-local-machine/ Last updated: 2022-12-12T15:45:32.000Z During a talk when I was talking about how I transitioned from an on prem engineer to a Cloud engineer I was asked if you could run [Azure Cloud Shell](https://docs.microsoft.com/cli/azure/?view=azure-cli-latest&WT.mc%5Fid=modinfra-8877-salean&ref=techielass.com) on your local machine, and the answer is yes. 😊 The way I do this is by using the new [Windows Terminal Client](https://docs.microsoft.com/windows/terminal/?WT.mc%5Fid=modinfra-8877-salean&ref=techielass.com). You first of all need Windows Terminal installed on your machine, I installed my [client via Chocolatey](https://www.techielass.com/installing-windows-terminal-with-chocolatey/). When it opens click on the down arrow on the top taskbar and then select Azure Cloud Shell. This will open a new tab for you. ![newconnection](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/newconnection.PNG) In order to use the Azure Cloud Shell on your local machine, you need to authenticate against the account you use for your Azure subscription. In order to authenticate within the Windows Terminal Client the new tab that has opened will display a message asking you to go to [https://microsoft.com/devicelogin](https://microsoft.com/devicelogin?ref=techielass.com) and ask you to input a code. You might be asked for your Azure username and password, or it might already log you in depending on if your credentials are already cached. Once you've went through the process of authenticating, the Azure Cloud Shell will ask you which Azure tenant you want to run commands against. If this is your first time using Azure Cloud Shell on your machine it will ask if you want to keep these settings for future logins, obviously this is your personal choice. 😉 The next thing that will happen is that the Windows Terminal will request a terminal/connection to your Azure subscription. After a few sections you should see the familiar "Welcome to Azure Cloud Shell" welcome appear and you will have a prompt that will allow you to run Azure Cloud Shell commands against your Azure subscription from your local machine. ![terminalconnected](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/terminalconnected.PNG) ### Weekly Update #55 URL: https://www.techielass.com/weekly-update-55/ Last updated: 2021-03-24T10:39:43.000Z This week I have been working on content creation in the form of blogs and also some presentations that I am looking forward to delivering. It's also time to dig out the hoodies as autumn has kicked in. 😉 During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [Azure Blob versioning is now general available](https://azure.microsoft.com/updates/azure-blob-versioning-is-now-general-available/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Visualize and Manage your AWS costs in Azure Cost Management](https://azure.microsoft.com/updates/visualize-and-manage-your-aws-costs-in-azure-cost-management/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Security Center—News and updates for August 2020](https://azure.microsoft.com/updates/asc-august2020/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) [![spotify-podcast-badge-blk-wht-330x80-5](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-5.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-5](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-5.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Install Windows Terminal with Chocolatey URL: https://www.techielass.com/installing-windows-terminal-with-chocolatey/ Last updated: 2023-03-08T21:00:44.000Z At Build 2019, the team announced a new [Windows Terminal](https://docs.microsoft.com/windows/terminal/?WT.mc%5Fid=modinfra-8814-salean&ref=techielass.com) and that it would be open-source. I remember hearing the announcement and being excited about what it could offer. In May 2020, Microsoft announced the new Windows Terminal went generally available. I've seen many people adopt it and share information about it. I'm a big fan of installing software on Windows machines with [Chocolatey](https://chocolatey.org/?ref=techielass.com); it's a great tool for helping you install software easily and keep it updated easily. I have a file of software I want to have installed on machines that I use; whenever I rebuild my laptops or PCs, I install Chocolatey and instruct it to install all the software that I want, and I can leave it to do its then and get on with something else. 😊 I was recently rebuilding a machine and realised that I didn't have Windows Terminal installed, so rather than go into the Windows Store to install it, I looked to see if Chocolatey had a package, and they did! Installing software with Chocolatey is straightforward and is just a single-line command. At the time of writing, this version 1.1.2233.0 is the current generally available version of Windows Terminal that is available. The command to install it via Chocolatey is: ![chocoinstallterminal](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/chocoinstallterminal.PNG) I usually tag on a *\-y* at the end of my choco commands as that's the switch confirming all prompts, accepting licensing, etc. Once you run that command on your machine, you will have Windows Terminal installed and can start using it. 😊 ![windowsterminalinstalled](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/windowsterminalinstalled.PNG) ### Find Your Local Azure User Group URL: https://www.techielass.com/find-your-local-azure-user-group/ Last updated: 2021-03-18T18:58:36.000Z When I started the [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com) back in 2017, I wasn't aware of a lot of Azure focussed user groups, I think there was one other user group in the UK. Over the last few years a good number of user groups have formed in the UK and further afield as well, which is great to see. However, it can often be hard to find your local user group, or a user group in a area you might be visiting due to the sheer amount of information out there on Azure. So a while back I created a map people could search for a user group in local area. It was a labour of love as I had to update it manually myself. ![oldmap](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/oldmap.PNG) So I've taken the plunge and dabbled in a little [Hugo](https://gohugo.io/?ref=techielass.com), [Azure Static Web Apps](https://azure.microsoft.com/services/app-service/static/?WT.mc%5Fid=modinfra-1994-salean&ref=techielass.com) and GitHub and created a new site that hopefully everyone can enjoy, use and also CONTRIBUTE to as it is open source. ![newsite](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/newsite.PNG) It's a work in progress and there are a few things I'd like to add to it in the future but hopefully we can work on it as a community. Head on over to [https://aka.ms/azurefamily](https://aka.ms/azurefamily?ref=techielass.com) to find a user group near you or contribute to the site. 😊 ### Azure Update Management with AWS Virtual Machines URL: https://www.techielass.com/azure-update-management-with-aws-virtual-machines/ Last updated: 2022-12-12T15:46:33.000Z [Azure Update Management](https://docs.microsoft.com/azure/automation/update-management/update-mgmt-overview?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) is something I've been using and advocating for a long time. Back in 2018, I wrote about how I was using Azure Update Management to [patch my home lab](https://www.techielass.com/patching-with-azure) and a month later I was writing about an [issue I had hit patching Server 2008 R2 servers](https://www.techielass.com/azure-update-with-server-2008r2/) with it. And I've been pretty much extolling it's capabilities to everyone that will listen since. 😉 Recently when I was delivering my ['Hybrid Azure Management'](https://youtu.be/x6IeAcC0MVg?t=4776&ref=techielass.com) talk someone asked if Azure Update Management can be used with non Azure machines and it CAN. It doesn't just take care of Azure virtual machines, it can manage and patch your non Azure virtual machines, or servers as well. Azure Update Management can integrate with your existing [WSUS](https://docs.microsoft.com/azure/automation/update-management/update-mgmt-configure-wuagent?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) installation, or [Microsoft Endpoint Configuration Manager](https://docs.microsoft.com/azure/automation/update-management/update-mgmt-mecmintegration?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) environment as well as being used as a standalone product. It is pretty versatile. I've been doing some demos with Azure and AWS lately and I thought it would be an ideal time to record how you actually setup Azure Update Management working with virtual machines outside the Azure ecosystem. So check out the video below to find out what the process. 😊 ### Weekly Update #54 URL: https://www.techielass.com/weekly-update-54/ Last updated: 2021-03-24T10:40:33.000Z I am back at work this week, and getting back into the swing of things after a week off last week. Thankfully I was off last week, as the weather in Scotland has been weather for ducks only! lol During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [Support to assess physical, AWS, GCP servers now generally available within Azure Migrate](https://azure.microsoft.com/updates/support-to-assess-physical-aws-gcp-servers-now-generally-available/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [AzCopy v10.6 with new features has been released](https://azure.microsoft.com/updates/azcopy-v106-released-with-updated-sync-features-and-larger-blob-size-support/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) Something else I noticed that was released in preview this week is the the ability to query audit logs within Azure Monitor: - [Audit queries in Azure Monitor Logs (preview)](https://docs.microsoft.com/azure/azure-monitor/log-query/query-audit?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) [![spotify-podcast-badge-blk-wht-330x80-6](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-6.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-6](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-6.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Summer of Talks URL: https://www.techielass.com/summer-of-talks/ Last updated: 2021-03-20T14:07:45.000Z So back in June I sent a tweet out looking to see who was running a virtual event and needed a speaker as I wanted to I speak at events... > Hello meetup organisers, who is holding a virtual event in July and needs a speaker? I'd love to chat about being that speakers. 😀 I can talk about a few topics, you can find more info here - [https://t.co/j6V6sYbx8r](https://t.co/j6V6sYbx8r?ref=techielass.com) [#AzOps](https://twitter.com/hashtag/AzOps?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [#ITOps](https://twitter.com/hashtag/ITOps?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [#Azure](https://twitter.com/hashtag/Azure?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [#AzureFamily](https://twitter.com/hashtag/AzureFamily?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [#womenintech](https://twitter.com/hashtag/womenintech?src=hash&ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) [pic.twitter.com/pLYQC7fcrG](https://t.co/pLYQC7fcrG?ref=techielass.com) > > — Sarah Lean 🏴󠁧󠁢󠁳󠁣󠁴󠁿 - enjoying time off work (@TechieLass) [June 15, 2020](https://twitter.com/TechieLass/status/1272415549474197505?ref%5Fsrc=twsrc%5Etfw&ref=techielass.com) And it kinda blew up much more than I expected if I'm honest! I had a ton of people reach out and ask me to speak at their event, which I am extremely grateful for. I think I managed to reply to everyone, although if I didn't please do reach out to me again and we can have a chat about scheduling a talk at your event. 😀 In total I ended up scheduling 17 events to speak at, those events ranged from user groups, pre-recorded interviews and live shows. All were massively enjoyable, and I learnt a lot from each session. - 12 x user group talks delivered - 5 x interviews (podcasts, live streams etc) delivered - 7 x countries spoken in It was great to be able to speak at events I've been meaning to for a while or events I would never usually have been able to speak at. It was great to meet up with old acquaintances and also new ones. I learn a lot from both speaking at attending community events, it's one of my favourite ways to learn new things and question the things that I know as well. 😀 Advocating for user group communities has been something I have been doing for the last three years, incase you think I've just started to take an interest since COVID. 😉 ## Lessons Learned I have learned a lot from delivering these 17 sessions, which were hosted on a variety of platforms, like Microsoft Teams, Microsoft Teams Live and Zoom, let me share some of the key points: - For the majority of user groups events I was speaking at I created a ICS calendar file entry that people could download and put into their diaries so the details of the event would pop up and remind them to attend, which is an idea I borrowed from [Thomas](https://www.thomasmaurer.ch/?ref=techielass.com). Which I think really helped, especially for the events I was advertising well in advance. - Make sure you log in early to the event, whether that be on Teams, Teams Live or Zoom. I had a couple of sessions where it took a while for the meeting session to load, which was really nerve-racking. I also had one time where Zoom wouldn't load and I had to restart my computer before joining in. Thankfully I was still early despite that delay. - Put your mobile phone on mute, so no sound or vibrations. Which might seems like a common sense thing to do, but my phone while sitting on my desk, still manages to create a noise when on silent and vibrate only. Very distracting for you and the audience. - Stand up while presenting. I am lucky that I have a [sit/stand desk](https://www.techielass.com/home-office-setup-2020), so can adjust the height to suit whether I want to sit or stand. I tend to stand when I am presenting a session, I just find that it helps get me in the right frame of mind and also helps with my breathing etc while speaking. - Turn your camera on, I know in some meeting software clients, your video is reduced to a small square when you are presenting slides but looking at the camera on your end gives you a point to focus on when talking and also gives those watching something to look at, no everyone enjoys just staring at a slide. 😉 - Be prepared if things to go wrong. Things go wrong when we present in person, and we have to be prepared for that, and presenting remotely is no different. Be prepared for PowerPoint to crash, your microphone to stop working, even what you would do if your WiFi or Internet goes down. Some of the things that can go wrong aren't fixable but be prepared for the worst happening as much as possible. I had PowerPoint crash mid way through a session and I had to improvise the rest of my talking points, and I could do that because I had practiced my session and knew the order I wanted to talk about things in. So although the audience didn't get to see the slide deck that I had prepared they heard the messages I wanted to deliver, and because my camera was turned on they still had something visually to look at. - Make sure you have a drink easily available, it's thirsty work talking! - Close down anything you aren't using on your computer. Unwanted browser tabs, music software, document syncing software, anything that could steal Internet bandwidth or computing power, or create a distracting popup. ## Take aways Presenting in person or remotely can be a nerve-racking experience, I still get nerves and have been speaking publicly for 3 years now. And my nerves presenting from my home office were no different to those that I get when presenting in person, but I really enjoyed being able to still share my knowledge and connect with the community in these sessions. If you are haven't presented before or if you haven't ever presented remotely, please do reach out, I'd be happy to help in anyway I can. 👍 ### Azure Security Centre Recommendation Refresh URL: https://www.techielass.com/azure-security-centre-recommendation-refresh/ Last updated: 2022-03-04T08:19:42.000Z [Azure Security Centre](https://azure.microsoft.com/services/security-center/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) can help give you visibility of your secure posture across your Azure workloads and also on your non Azure workloads. It's a great product within the Azure range, that has both a [free](https://azure.microsoft.com/pricing/details/security-center/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) and a [paid](https://azure.microsoft.com/pricing/details/security-center/?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com) tier available. One really great feature of Azure Security Centre is that it gives you recommendations on things you can do to improve the security posture of your workloads. It will help you understand things like the patches that your servers are missing, to things like ensure that your network is protected against [Distributed Denial of Service (DDoS) attacks](https://docs.microsoft.com/azure/ddos-protection/ddos-protection-overview?WT.mc%5Fid=AZ-MVP-5004737&ref=techielass.com). Along side the recommendations is often a remediation button, that can quickly activate/turn on/fix the issue that Azure Security Centre has detected, meaning it can be a quick win for you and your organisation. However, one question often asked by customers is I've remediated the issue detected but the Azure Security Centre is still telling me the issue exists, when does the Security Centre refresh? Well the product team have listened and they've added that feature in to the product! 😀 When you no dig into the recommendations each one has a "Freshness interval" which will show you when it will update and clear the alert if you have remediated it! ![freshness](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/freshness.PNG) ### Weekly Update #53 URL: https://www.techielass.com/weekly-update-53/ Last updated: 2021-03-24T10:41:31.000Z This week I have been off work, and although I haven't went away anywhere on vacation I've been taking the time to explore a bit of Scotland and disconnect from social media and work. So it feels very wierd to be checking in on what has been happening with Azure news this week, but here goes. 😉 During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [Cost optimization enhancements now available in Azure Advisor](https://azure.microsoft.com/en-gb/updates/cost-optimization-enhancements-now-available-in-azure-advisor/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Site Recovery update rollup 49](https://azure.microsoft.com/en-gb/updates/site-recovery-update-rollup-49-august-2020/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Policy Compliance Scan Action for GitHub Workflows is in public preview](https://azure.microsoft.com/en-gb/updates/azure-policy-compliance-scan-action-for-github-workflows-is-in-public-preview/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) Although I have been enjoying down time I took the chance to catch up with my good friend [Lisa's](https://twitter.com/lisaattheedge?ref=techielass.com) latest podcast episode, where she speaks to a bunch of people about [Azure Stack HCI](https://azure.microsoft.com/en-gb/products/azure-stack/hci/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). If you haven't had a listen to [episode 20](https://anchor.fm/lisaattheedge/episodes/EP20---Azure-Stack-HCI-Announcements-from-Microsoft-Inspire-ei38et/a-a2ueojp?ref=techielass.com), it's a must listen this year! 👍 [![spotify-podcast-badge-blk-wht-330x80-7](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-7.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-7](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-7.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Studying for the DP-900 exam URL: https://www.techielass.com/studying-for-dp-900/ Last updated: 2023-12-08T08:28:32.000Z Recently released within the Microsoft Certification family was the [DP-900: Azure Data Fundamentals](https://docs.microsoft.com/en-us/learn/certifications/exams/dp-900?WT.mc%5Fid=modinfra-8057-salean&ref=techielass.com) exam. I sat the exam as a Beta exam, so I didn't get the results instantly when I sat the exam, but I recently received the good news that I had passed the exam, I thought I'd share some of the material that I used to study with to help others. If you've never sat a Beta exam before or looking for some advice around it there is a great post [here](https://techcommunity.microsoft.com/t5/microsoft-learn-blog/just-how-does-one-prepare-for-beta-exams/ba-p/1469421?WT.mc%5Fid=modinfra-8057-salean&ref=techielass.com) that covers off more information. Now Data Platform technology isn't something that I am an expert in, I've dabbled over the years, mainly with SQL Server but not much beyond on that. However, I love to learn new things and stretch myself every now and again, hence the reason for trying this exam. I've based what I am studying off the official skills measured section on the [DP-900: Azure Data Fundamentals](https://docs.microsoft.com/en-us/learn/certifications/exams/dp-900?WT.mc%5Fid=modinfra-8057-salean&ref=techielass.com) site. ## Core Data Concepts This section (according to the exam objectives) is all around focusing on knowing what certain types of data is, the differences and key characteristics. I have a rough understanding of the various data concepts that are out there, purely from working in IT for a good number of years. However to ensure what I knew was correct and update myself I dived into the ["Explore core data concepts"](https://docs.microsoft.com/learn/paths/azure-data-fundamentals-explore-core-data-concepts/?WT.mc%5Fid=modinfra-8057-salean&ref=techielass.com) Microsoft Learn module. ## Relational Data on Azure This section covers off things like being able to compare the various different data services offered in Azure, and having a basic understanding of how to configure these services. Again, having worked with Azure for a number of years I have some base knowledge of the services and the differentiators between them. Again though, I turned to Microsoft Learn for some learning material and found the ["Explore relational data in Azure" module](https://docs.microsoft.com/en-us/learn/paths/azure-data-fundamentals-explore-relational-data/?WT.mc%5Fid=modinfra-8057-salean&ref=techielass.com). I also spent some time within Azure itself spinning up some resources and just looking at the options that you get an also the different pricing tiers to see what differences in features (if any) there were across these tiers. ## Non-Relational Data on Azure The third section of the exam this time is all around the non-relational data services within Azure. Understanding the key basics of what non-relational data, how Azure Storage can be used in non-relational data scenarios and again how to manage these services within Azure. Parts of this section are definitely outside my comfort zone, so again I utilised a Microsoft Learn module - ["Explore non-relational data in Azure"](https://docs.microsoft.com/en-us/learn/paths/azure-data-fundamentals-explore-non-relational-data/?WT.mc%5Fid=modinfra-8057-salean/&ref=techielass.com). I'd also recommend having a look at these services within Azure and also reading more documentation on this section, if like me it's not an area you are familiar with. ## Analytics Workload on Azure Although this section is weighted as two other sections it does seem to cover off a wider variety of topics. If you look at the [exam objectives](https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4wsKZ/?WT.mc%5Fid=modinfra-8057-salean/&ref=techielass.com) there are four sub sections covering things like data loading best practices to visualising data within Power BI. The ["Explore modern data warehouse analytics in Azure"](https://docs.microsoft.com/en-us/learn/paths/azure-data-fundamentals-explore-data-warehouse-analytics/?WT.mc%5Fid=modinfra-8057-salean/&ref=techielass.com) covers off a lot of this, if not all of it. But again, if you aren't familiar or some of the sections you cover are completely new to you I'd say spend some time either using the services or go into the [Microsoft Docs](https://docs.microsoft.com/en-us/?WT.mc%5Fid=modinfra-8057-salean/&ref=techielass.com) and reading a bit more about it. 👍 ## Overview Now this is just a start for the study material and I would say have a look at the exam objectives, the material I've suggested and do your own research. I am sure there is other great reference material out there that could help you study for the exam. If you have any suggestions please do reach out and let me know. 😀 ### Session Recordings URL: https://www.techielass.com/session-recordings/ Last updated: 2021-03-20T13:15:54.000Z I've been doing a lot of presenting online recently, and as such a lot of the sessions have been recorded. Which means if you didn't catch it live then you can catch the recording. It's not quite the same as watching a session live but it does give you the chance to watch it or even share with your colleagues if you saw the session live and wanted to share with them. 😊 ### Weekly Update #52 URL: https://www.techielass.com/weekly-update-52/ Last updated: 2021-03-24T10:42:30.000Z Well this weekly update is the 52nd, which means I've managed to do this weekly vlog thing for a year now! Which is just mind blowing, I can't believe I've managed to maintain that streak for a whole year. I've been on so many adventures and celebrating so many milestones during that time as well. Thank you to everyone that has ever tuned into an update, commented, liked or subscribed to my channels, I really do appreciate all the support and well wishes people have given me. I've dug through some old footage and at the end of this week's video I've included some bloopers and funny moments, so I hope you enjoy that. 😀 During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [New GPU NCas T4 v3 VMs are in public preview](https://azure.microsoft.com/en-us/updates/new-gpu-ncas-t4-v3-vms-are-in-public-preview/?WT.mc%5Fid=modinfra-8239-salean&ref=techielass.com) - [Azure Backup new features](https://azure.microsoft.com/updates/improvements-to-azure-vm-backups-are-now-available-2/?WT.mc%5Fid=modinfra-8239-salean&ref=techielass.com) [![spotify-podcast-badge-blk-wht-330x80-8](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-8.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-8](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-8.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Cloud Computing and Elasticity vs Scalability URL: https://www.techielass.com/elasticity-vs-scalability/ Last updated: 2022-09-14T13:07:28.000Z I was recently helping at a [Azure Fundamentals exam](https://docs.microsoft.com/learn/certifications/exams/az-900?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) training day and the concepts of elasticity and scalability came up. Both of which are benefits of the cloud and also things you need to understand for the AZ-900 exam. 😉 So I thought I'd throw my hat into the ring and try my best to explain those two terms and the differences between them. ## Elasticity Elasticity in the cloud allows you to adapt to your workload needs quickly. For example, say you are running the monthly payroll job for your organisation and you need more processing power on the server for that job to run a lot quicker (and let's face it everyone wants their pay check to be processed quickly!) you can add additional resources to that server to complete the task then remove the resources once the task has completed. Of course on prem you could potentially do that if you had the spare resources, and certainly with the virtual machines I used to manage on VMware or Hyper-V I used to do that, but it always involved a little maths calculating and weighing up if we had the spare capacity, even for a short time. In terms of the cloud, you don't have to worry about that. Cloud providers have LOTS of resources available and generally (sometimes there are resources shortages) you can increase what you need without worrying you are going to bring down the rest of your systems. 😉 ## Scalability Scalability is very similar to elasticity but it's on a more permanent, less makeshift type scale. With scalability in the cloud you can move in lots of directions, so you can scale up or scale out. A good example of scalability is helping a call centre run their operations (which is one of the roles I previously held), often call centres process lots of data, whether that be customer information or how many calls the staff are taking, how longs calls are etc, and on top of that data they do lots of analysis to try and make their services more efficient. As the call centre gets more data, more clients, more contracts the amount of data and data crunching they have to do increases and so does the demand on the infrastructure and services that help to make that happen so scaling out (adding new servers/components to the service) or scaling up (increasing resources to the servers etc) needs to happen on a more permanent basis. ## Overview Being able to add resources on an ad hoc basis or on a permanent basis very quickly and knowing if you aren't using them any more you can reduce them and therefore reduce your costs is what I really enjoy about the cloud. 😀 I hope the above helps to clarify what elasticity vs scalability is, but if you have any questions or comments please don't hesitate to reach out or leave a comment below. ### Skyline Summer Sessions URL: https://www.techielass.com/skyline-summer-sessions/ Last updated: 2021-03-20T13:21:58.000Z I have had the pleasure of being invited to take part on the Skylines Summer Sessions series. 😀 If you haven't heard of the [Skylines Summer Sessions series](https://skylinessummersessions2020.azurewebsites.net/?ref=techielass.com), it is a series of interactive sessions that the team at [Skylines](https://www.skylinesacademy.com/?ref=techielass.com) have put together featuring a bunch of Azure experts on various different topics. They've had [Thomas Maurer](https://www.youtube.com/watch?v=n164SSoC388&ref=techielass.com) talking about [Azure Arc](https://docs.microsoft.com/azure/azure-arc/servers/overview?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com), [Joe Carlyle](https://www.youtube.com/watch?v=gth3ngnTSvU&ref=techielass.com) spoke about [Azure Firewall](https://docs.microsoft.com/azure/firewall/overview?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) and a ton more. [Richard](https://mvp.microsoft.com/en-us/PublicProfile/5003450?ref=techielass.com), [Gregor](https://mvp.microsoft.com/en-us/PublicProfile/5003451?fullName=Gregor%20Suttie&ref=techielass.com) and I talked about [Azure Migrate](https://azure.microsoft.com/services/azure-migrate/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com), and Datacentre Migrations. The session will be premiering on YouTube on the 11th August at 6pm UK time, if you aren't based in the UK click on this [link](https://everytimezone.com/s/5ac3df38?ref=techielass.com) to find out when it goes live within your time zone. Now the session will be going live on YouTube and Richard, Gregor and I will be avaiable within the chat to answer questions so please do join us and ask us any questions. 😀 ### Weekly Update #51 URL: https://www.techielass.com/weekly-update-51/ Last updated: 2021-03-24T10:43:27.000Z This week marks 51 episodes of my weekly update! Which is just crazy. I cover off the Azure news that has happened this week and also talk about the events I am speaking at next week. I also touch on something that's personally happened to me to recently. Unfortunately some people have decided to make me a target and abused the fact I had my Twitter DM's open and available to everyone to interact with me. So as I say in the video, please be kind to each other and don't attack, abuse, bully, falsely accuse others out there. 👍 During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [Azure AD Sign In information](https://techcommunity.microsoft.com/t5/azure-active-directory-identity/end-users-can-now-report-this-wasn-t-me-for-unusual-sign-in/ba-p/1257369/?WT.mc%5Fid=modinfra-8007-salean&ref=techielass.com) - [Azure Advisor Quick Fix](https://azure.microsoft.com/en-us/updates/azure-advisor-quick-fix-is-now-available/?WT.mc%5Fid=modinfra-8007-salean&ref=techielass.com) - [Azure Security Centre July 2020 Blog](https://azure.microsoft.com/en-us/updates/asc-july2020/?WT.mc%5Fid=modinfra-8007-salean&ref=techielass.com) - [My speaking engagements in the future](https://www.techielass.com/speaking) [![spotify-podcast-badge-blk-wht-330x80-9](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-9.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-9](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-9.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Starting and Running a User Group URL: https://www.techielass.com/starting-and-running-a-user-group/ Last updated: 2022-04-28T08:46:40.000Z On the 29th May 2020, the [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com) celebrated it's third year of running. I have to say when I first had the idea about setting up a user group, I never thought it would take me on the personal and professional journey that it has. I can't thank certain people and organisations enough for backing my idea and growing the community the way it has evolved. When I started the group, there was only one other Azure focussed user group in the UK and it's great to see there are now about [12 or 13 groups](https://aka.ms/azurefamily?ref=techielass.com) that I know of now in the UK. A lot of people both in the UK and throughout Europe have asked me to help them start a user group and share my learnings and insights. And to mark the three year anniversary I wanted to share some of my thoughts. So for anyone looking to start a community, Azure focussed or not, here are my thoughts on what it takes to start and run a successful user group. ## Setting Up When I had the idea of the user group and had spoke to some people to confirm it was a good idea and something the thought was a good idea. I set about starting to come up with a name, I went with Glasgow Azure User Group, which has given us a funny acronym, GAUG, but I notice a lot of other user groups have followed this naming convention. 😉 Registering a domain name and coming up with the logo were next. I tried my hand at logo design and pulled something together, we've since changed that logo design but it is key to have something you can build the group's brand around and also something that works well on stickers, or banners or t-shirts. I'm not suggesting that you start with all of that but certainly it is something to think about in the long term, being mindful of where you want to the group to go and what you want it to achieve and become. I also set up a Microsoft 365 tenant for email and file storage, keeping the user groups communication and files separate from my own or my work. There is a cost associated with this and that can be a barrier for a lot of new groups, but it has been key to helping us to organise the admin side of the user group. ![Loudspeaker -Illustration by Icons8 from Ouch!](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/04/bonbon-yellow-loudspeaker-for-news-blog.png) Loudspeaker -Illustration by Icons8 from Ouch! ## Spreading the News This is probably the part that takes the most time and requires the most work of running a user group. Spreading the word about the group, the events, getting interaction, takes time and effort. It definitely doesn't happen overnight, so don't be discouraged if you don't see any traction immediately. I use a bunch of platforms to help spread the word about the group and the events that we run. ### Twitter [Twitter](https://www.twitter.com/glasgowazureug?ref=techielass.com) is where I get a lot of engagement, so I'd highly recommend that you set one up, find the hashtags and influencers within your community and leverage those to spread the word. True investment in the social media platform can see great growth, I've kept a loose note of our interaction. At the end of 2017, we had 139 Twitter followers, by the end of 2018 we had 329 and at the end of 2019 we had over 500. Although we don't see everyone from our Twitter follower list attend our groups, we have a great community that share and like our posts which helps to grow the awareness of the group. We also leverage our speakers profiles and connections, we tag them in posts about their upcoming sessions, which again increases the awareness of the group to new people. ### Facebook The group also has a [Facebook](https://www.facebook.com/glasgowazureug), which again helps us spread the word. However, we've had limited success here. But it's still a platform I keep alive and post on about events etc. It helps with the "search engine juice" and means our group gets more visibility overall. ### LinkedIn Making use of [LinkedIn](https://www.linkedin.com/?ref=techielass.com) is something that I have tried to do, but get mixed results. We have a [group](https://www.linkedin.com/groups/13540886/?ref=techielass.com) and also a "[company page](https://www.linkedin.com/company/glasgowazureug/?ref=techielass.com)". We do get a few new members via these methods, but neither get a lot of interaction. Again I have them there to increase the "search engine juice" and also to ensure we access a consistent social media tag across all the platforms. ### Website Setting up a website for the group was a no brainer when I started. Our [website](https://www.gaug.co.uk/?ref=techielass.com) is not the most glamourous and is a basic website, but it serves a platform where we can share the group's mission, [code of conduct](https://www.gaug.co.uk/conduct?ref=techielass.com), event schedule and sponsor information. Again it helps to grease the "search engine juices" to increase our audience and make sure people know about us if they are searching for a user group. We've had many redesigns of the website since it's first iteration, but we keep costs down low by hosting the source code within GitHub and use a free [Azure Static Web](https://www.techielass.com/azure-static-web-apps-are-awesome/) plan for the delivery platform. ##### Newsletter When I started the user group up as well, I also created a newsletter via [Mailchimp](https://www.mailchimp.com/?ref=techielass.com). I'll be honest here, I didn't have a clear idea of why I wanted to have a newsletter, but I thought it would be another great way of talking and communicating with the community. The newsletter has grown. We've got over 160 subscribers there, and I do see a lot of engagement from people via it. Not everyone interacts within social media platforms, so although running the newsletter can take a lot of time, I still do it. ## Speakers Finding speakers, is something, *touch wood* is something that I have never really had an issue finding. There has always been a line of great volunteers or people I know I can reach out to ask to present. Lining up speakers and the topics is something I that do from two angles. I take feedback from the community around what they want to hear about, and I also look for topics that I see are popular through the customer interactions I have through my day job. It's a balancing act getting the right content at the meetups and I probably haven't always got it right, but I certainly try my best. I've always tried to encourage new speakers as well, user groups are great friendly encouraging communities and I started my public speaking career at a user group and would recommend it to anyone. ![Meeting - Illustration by Julia Gnedin from Ouch!](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2022/04/urban-854.png) Meeting - Illustration by Julia Gnedin from Ouch! ## Venue I know that some user groups operate completely remotely and don't host in person events, but we went with the option of hosting in person events. So I had to find a venue, I found a local recruitment company [Hays](https://www.hays.co.uk/?ref=techielass.com) that were interested in supporting the group and providing the venue, as well as food and drink. Having a venue that was easy to access out of hours as well as close to transport links has been important to us to help enable attendees reach the venue and also get home quickly and safely after the event. ## Financial Support The things that you need help with when running a user group are things like venue cost and food and drink costs. There are other things, such as email, website hosting, stickers, etc that could also need support however, they are optional and are not something you necessary need when you start. Organisations aren't necessarily going to support you without something back in return, a user group gives organisations additional marketing, our website and newsletters advertise our sponsors. And we highlight them at our events before and after the event. We also encourage our sponsors to send representatives to our events so they can interact with attendees in person as well. So they have opportunity to increase their network of contacts, but we always ask that they don't spam our attendees and we never give out attendees information directly to our sponsors. ## Tickets Most, if not all user groups run free of charge for attendees, but that's certainly how we run the Glasgow Azure Group. We have found that we still need to make tickets available for attendees, for several reasons: - To make sure you don't overfill your venue (fire hazards etc) - Make sure you know how much food/drink to get in - Keep attendees up to date with any changes, or access information to the venue etc When I first setup the user group, I opened to go with [Eventbrite](https://www.eventbrite.co.uk/?ref=techielass.com) as our ticketing platform, because of it's zero cost. Lots of meetup groups choose [Meetup](https://www.meetup.com/?ref=techielass.com) as their platform, but it can be expensive. Through support from Microsoft, we know have our group advertised across Meetup and Eventbrite. This does add some complexity to the ticketing, but we've found that being on both platforms allows us to expand our reach. When we create tickets we try to collect as little personal information as possible but we also try to capture information such as allergies for food/drink etc. ## Running a user group Running a user group is a lot of work, a lot of people assume it's just a couple hours of your time but it isn't. A lot of effort and time goes in behind the scenes to keep the user group running and make it successful. It's the one thing I tell everyone, this is a big commitment and people need to be aware of that. Planning a head can be a big time saver, in December I start to plan the year ahead, I get the dates for the next year's meetups in the diaries. So our venue host can plan ahead and I can know when meetups are happening so I can ensure I am in Glasgow for that evening. We have a fairly consistent schedule, the last Wednesday of every second month is the date we always try to aim for. I think December is the only one we vary that with. I put time in my diary to do some of the administrative tasks, and I try to automate things where I can. A lot of my social media interactions are scheduled using a scheduling tool. This means I am leveraging those platforms to the best of my abilities. And I am avoiding trying to do things at the last minute and miss an opportunity to grow the group. There is never enough time for what I would like to do and achieve, having a co-organiser can help but everyone needs to be bought into helping and committing time otherwise it doesn't work. ## Working with Others Within Glasgow there are a lot of other user groups that operate, both technical and non technical. So when I was starting the user group I was mindful of those groups and tried to some research on their schedule and meeting cadence. Over the years we've collaborated with the other "Microsoft centric" groups, such as the [Glasgow Data User Group](https://twitter.com/GlasgowDataUG?ref=techielass.com) and [Scottish SharePoint & O365 User Group](https://twitter.com/ScotSPO365UG?ref=techielass.com). We've ran joint events and brought the communities together, which always sees each group gaining new members. ## Final Thoughts Despite being a large time commitment and at times a stressful experience, I wouldn't change starting the group and running it. I've had a lot of great experiences and met some fantastic people and have loved it all. I'd certainly encourage people to get involved with a user group, either as an attendee, speaking, helping to co organise or organising an event, all of those things will stretch you and give you new skills and experiences. ### Remembering to disconnect URL: https://www.techielass.com/remembering-to-disconnect/ Last updated: 2021-03-18T19:42:58.000Z I've always been an advocate of making sure you take time away from your work to either spend time with your family or just not being at your work. 😉 And during current times with the pandemic is no different, in fact I think it might even be that much more important. Our homes are now not just our homes, they are also our work place. I've been working from home for the past few years, although I've never been 100% a home worker, there's always been trips to customer offices or to team meetings or conferences. And I've never had my husband work at home before, so this whole experience over the last 4 or 5 months has been a challenge. Going on holiday, abroad or within the UK hasn't quite been an option for us as it's just not a risk we're comfortable taking at the moment. So taking time off work to just spend it at home has felt a little pointless if truth be told. However, I took the decision at the start of July to take a long weekend at the end of the month, in the hopes of nice weather (at least in Scottish terms) and being able to enjoy some Scottish scenary and time in my garden without a computer. I have two mobile phones, it helps to keep that work life balance however there are some things on my personal phone that straddle that boundary, [Twitter](https://www.twitter.com/techielass?ref=techielass.com), [LinkedIn](https://www.linkedin.com/in/sazlean/?ref=techielass.com) and [YouTube](https://www.youtube.com/techielass?ref=techielass.com). So on the Wednesday night before signing off from work I turned off the notifications on my phone for Twitter (I turned off LinkedIn notifications back in December 2019). I didn't turn off YouTube as I didn't want to miss notifications to the channels I enjoy that are on farming and don't focus on tech. 😉 It was so liberating not having the notifications on my phone, if I am really honest. I checked in on Twitter every now and again but I didn't really interact to much. And I never even checked LinkedIn if I am honest. Instead I spent the time in my garden, enjoying what actually turned out to be a few good days. Lots of chores got done (and lots of shopping - online) and I did a lot of sitting about enjoying not having to go to meetings etc. 😉 I love my job, but every now and again a break is needed. Whatever that may consist of and I don't think I'll ever turn those social media notifications back on.... 😊 ### Streaming URL: https://www.techielass.com/streaming/ Last updated: 2023-12-07T14:42:56.000Z With in person events no longer being a thing and a lot of people have turned to creating content in video form, or streaming sessions, interviews etc. And I'm no different, I've been working on building up video content on my [YouTube channel](https://www.youtube.com/techielass?ref=techielass.com). I've tried streaming a few of my [Weekly Update videos](https://www.youtube.com/playlist?list=PLbjernQTVXitYGv7gWIRNqeWBFyVZJOBk&ref=techielass.com), with mixed success! 😉 I've tried various different methods of streaming, with a bit of mixed success, and I wanted to share some of my experiences. ## Open Broadcaster Software When I started looking at streaming everyone was talking about using Open Broadcaster Software or OBS and I set it up on my Surface Book 2, but had a few issues as I mentioned in this [blog](https://www.techielass.com/setting-up-obs-on-my-surface-book-2). I'm kind of torn about what I think regarding OBS. It's not the easiest piece of software to get configured and there are lots of addons and plugins that you can utilise, so there's lots of flexibility. I know a lot of streamers love the software and it's flexibility but I've found it quite the resource hog and I've only ever used it stream my own video and audio, I've not done anything complicated and added in a second guest via a Teams or Skype call, which I suspect would need a lot more hardware in order to support it. One of the things I like about OBS is that you can stream and record it locally, meaning you have the video and audio stored if the streaming platform you use doesn't store the video after the stream has finished. You can also use OBS to record locally without streaming. ## StreamYard [StreamYard](https://streamyard.com/?pal=5940677089689600&ref=techielass.com) is a browser based piece of software that can help facilite your streaming needs. Create an account, log in via the browser, link in your YouTube, Twitch, Periscope, accounts etc and then start streaming. It's fairly straight forward, it doesn't seem to be hardware intensive. You can invite guests in and have them share their screens etc. There is no burden on the host's hardware making it a much smoother process and their interface is really easy to switch between screens and guests being spotlighted. It also shows you the live chat from your streaming platforms in their browser interface, so you don't have to have those open in other windows to see what is happening and interact with your audience. There is a free tier available to use, it does have some limitations and using the free tier you have the [StreamYard](https://streamyard.com/?pal=5940677089689600&ref=techielass.com) branding overlaid on your stream window, but there are paid tiers that allow you to remove that and add your own. As an occasional streamer I've not found the need to upgrade. I maybe wrong but I haven't found a way of streaming and recording at the same time on [StreamYard](https://streamyard.com/?pal=5940677089689600&ref=techielass.com) but it might be a premium feature that I don't have access to yet. ## Restream I've not actually used [Restream](https://restream.io/?ref=techielass.com) on a live stream yet but it is very similar to what StreamYard offers, in that it's browser based and takes the hardware burden away from your own machine. When I signed up and started to use the software I actually found it a little too complex, I prefer the simplicity of [StreamYard](https://www.techielass.com/using-streamyard/) but I will try Restream at one point and give it a go. I've also not found a way of streaming and recording within Restream at the same time. ## Overview If you have any questions or have thoughts on streaming software please let me know, I'd love to hear what others are doing and how I can improve my live streaming! 😊 ### Weekly Update #50 URL: https://www.techielass.com/weekly-update-50/ Last updated: 2021-03-24T10:45:54.000Z I've had a short working week this week, as I am enjoying Thursday and Friday off. Taking some time to disconnect and recharge the batteries. And thankfully it looks like I've forecasted it right as today is due to be a scorcher in Scotland. So suncream and sunglasses at the right! During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [Azure Site Recovery Rollup Update 48 released](https://azure.microsoft.com/en-gb/updates/azure-site-recovery-update-rollup-48-july-2020/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Blog Storage preview support for NFS 3.0](https://azure.microsoft.com/en-gb/updates/nfs-30-support-for-azure-blob-storage-is-now-in-preview/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Windows Virtual Desktop Android Client](https://azure.microsoft.com/en-gb/updates/windows-virtual-desktop-client-for-android/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Cost Management July 2020 Blog](https://azure.microsoft.com/en-gb/blog/azure-cost-management-billing-updates-july-2020/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [My speaking engagements in the future](https://www.techielass.com/speaking) [![spotify-podcast-badge-blk-wht-330x80-11](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-11.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-11](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-11.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Create a meeting request that doesn't require a response URL: https://www.techielass.com/meeting-request-with-no-response/ Last updated: 2023-06-02T08:14:35.000Z Have you ever had to send out a meeting request to a large group of people that is maybe optional or informational for them? I know I have and then my mailbox gets flooded with acceptance emails or decline emails or those tentative emails as well. Sometimes a response to your meeting request isn't required. Did you know that within Microsoft Outlook you can set it to not require the recipient to respond? Well you can! 😀 It's a simple option to set but a powerful one. Let's walk through the set up of it. Open your Outlook client Create a new Meeting Request ![newmeeting](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/newmeeting.PNG) Fill in your meeting details Along your toolbar you should have a box, called "Response Options" ![outlooktoolbar](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/outlooktoolbar.PNG) If you click on it a drop down menu will appear ![responsedropdown](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/responsedropdown.PNG) If you click on the "Request Responses" option, this will remove the tick and stop the recipients having to respond to your meeting request. When the email lands in your recipients mail box the options to accept etc will still be available to them but it displays a message that says they are not required to respond. 👍 ![email](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/email.PNG) Another great tip is when [Configure who can present in your Microsoft Teams meeting on creation](https://www.techielass.com/microsoft-teams-configure-presenters/)! Do you have any other handy Outlook tips? What's your favourite? [![](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/12/blogcoffee-1.png)](https://www.buymeacoffee.com/techielass?ref=techielass.com) Support my blog ### An Hour with April and Sarah URL: https://www.techielass.com/an-hour-with-april-and-sarah/ Last updated: 2021-03-11T14:05:06.000Z Ever wanted the chance to ask two kick ass women questions around Azure? 😉 Well you will have the chance on the 29th July! [April Edwards](https://www.twitter.com/TheAprilEdwards?ref=techielass.com) and myself will be doing "An Hour with April and Sarah" live stream on [YouTube](https://youtu.be/hKmWZ4SlwKY?ref=techielass.com). April is a Senior Software Engineer at Microsoft where she specialises in datacentre modernization and application transformation. She's helped many customers move away from legacy methods and into the brave new world of serverless and containers, where code comes first. She's previously worked in the UK for various companies, including managed service providers and brings a wealth of experience to every project she tackles. She isn't just kick ass at tech, she also kicks ass by competing in Ironman and Half Ironman triathlons in her spare time! 👍 For those not familiar with myself, I am a Cloud Advocate at Microsoft where I focus on helping customers with their journey to Azure, especially those with datacentre migration projects. I speak at user group events, conferences and help to evangelise Azure and how it can help organisations as well as sharing my real world experience. That is only part of my job though, take product feedback and working with our engineering teams to implement it is also something that I focus on. Before joining Microsoft I worked with various different organisations in support IT departments or architecting solutions. In my spare time I enjoy exploring Scotland and spending time making memories with my family. So as you can see from our bios, April and I have a wealth of experience, so [join](https://youtu.be/hKmWZ4SlwKY?ref=techielass.com) us on the **29th July 2020** at 5pm (UK time) for an interactive chat and feel free to ask us anything! 😀 I've also created a calendar event, that you can download and put in your diary so you can remember to tune in. 😉 **Download the calendar [ICS file here](https://www.techielass.com/wp-content/uploads/2020/07/an-hour-with-april-and-sarah.ics).** 📅 ### Weekly Update #49 URL: https://www.techielass.com/weekly-update-49/ Last updated: 2021-03-24T15:32:26.000Z This week there has been a lot happening between MSInspire, Microsoft's partner conference, and MSReady, the internal conference. We've also had some great news and update news. As we're fast approaching the end of July I've started to look at what I want to complete and achieve before the end of the month, and try and prioritise the many things I have on the go. Which has been really good at helping me focus and also say yes or no to other things that are happening. During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [Secure Azure Kubernetes Service (AKS) pods with Azure Policy](https://azure.microsoft.com/en-gb/updates/secure-azure-kubernetes-service-aks-pods-with-azure-policy-in-preview/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Monitor Logs connector is now generally available](https://azure.microsoft.com/en-gb/updates/azure-monitor-logs-connector-is-now-generally-available/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Windows Admin Centre Update](https://techcommunity.microsoft.com/t5/windows-admin-center-blog/windows-admin-center-version-2007-is-now-generally-available/ba-p/1536215/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Stack HCI Announcement](https://azure.microsoft.com/en-us/blog/deliver-hybrid-cloud-capabilities-with-the-next-generation-of-azure-stack-hci/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [My speaking engagements in the future](https://www.techielass.com/speaking) [![spotify-podcast-badge-blk-wht-330x80-20](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-20.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-20](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-20.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Setting up AWS Billing Alerts URL: https://www.techielass.com/setting-up-aws-billing-alerts/ Last updated: 2021-03-20T13:17:50.000Z I recently spun up an Amazon Web Services (AWS) subscription in order to create some demos of using Azure products outside of the Azure ecosystem. One of the first things I did when I got into the AWS subscription was set up a billing alert so I would be sure not to overspend, as I was paying for the resources myself. I wanted to take you through the process, and also document it for myself in case I need to do it again. 😉 ## Log into AWS Head over to [https://aws.amazon.com](https://aws.amazon.com/?ref=techielass.com) and log in In the right hand corner, click on your name and Select **My Account** ## Create a Budget ![aws-menu](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/aws-menu.PNG) Down the left hand side you will have a menu with lots of options, what you are after is the Budgets one. On the right you'll now have a big button saying **Create a Budget** click on that. You'll be given the option of budget types, I am interested in keeping my costs low so I am going to select Cost Budget, but depending on your needs you might want to set up something different. Give your budget a name, something sensible you'll understand later on. 😉 You can set the Budget period, Monthly, Quarterly, or Annually. I'm going for monthly, so I can keep a tight eye on the spend. I want a budget that resets every new billing cycle, so I'll select Recurring Budget. I enter my budget amount. You'll filled in all the mandatory fields, so select **Configure Alerts**. ## Configure Alerts I want to know if I am going to hit my budget ahead of time so I can be proactive and either stop or delete resources. So I want an alert to trigger at 75% of the actual budgeted amount. And I want to make sure that alert goes to an email address I am checking all the time, so I put that information in as well. ![aws-alert](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/aws-alert.PNG) ## Final Setup The next stage takes you to a stage that shows you what your overall choices and configuration looks like, if this looks correct, hit that **Create** button, if not, time to go back and edit. 😉 Once create you'll be taken to the budget overview screen where you can see the budget(s) you have in place and get a quick glance of what is currently happening. ![aws-budget-overview](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/aws-budget-overview.PNG) ## Good Habits Getting into good habits with your budget and cost management is really a fundamental skill when dealing with the Cloud. I've unfortunately seen to many people get caught out with large bills because they've left something running in their test environment or seen customers eat through their budgets all to quickly because they were too focussed on the technology strategy and not keeping an eye on the budget as well. ### Speaking at DevOps Notts URL: https://www.techielass.com/speaking-at-devops-notts/ Last updated: 2021-03-20T14:19:24.000Z Last month I put out a Tweet asking if any event organisers needed a speaker at their event and I got a really great response from all around the world from all different types of users groups. One of the groups to reach out to me were the DevOps Notts Meetup. And I'm pleased to say I will be speaking at their event later this month on the 27th July. The session I am delivering is a new one for me: **Hybrid Azure Management** *Ensure your environments which could be spread across on prem infrastructure and Azure is managed in an efficient and effective manor. Join me in this session on how you can use things like Azure Policy, Azure Update Management, Azure Arc, Windows Admin Centre and many more tools to manage your hybrid environment.* The event will be online and you can sign up to attend at the [Meetup site](https://www.meetup.com/DevOps-Notts/events/271336785/?ref=techielass.com) I look forward to seeing you there! ### Weekly Update #48 URL: https://www.techielass.com/weekly-update-48/ Last updated: 2021-03-24T15:31:28.000Z This week I return to recording my weekly update video, and don't have any technical issues (thankfully!). I talk about the latest Azure news, what I've been up to in terms of attending user groups and speaking at events. I show off a new tshirt I am ridiculously excited about and also talk a little about the [Jabra Evolve2 85](https://amzn.to/3fDip1j?ref=techielass.com) headset. During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [Data Box now available in China](https://azure.microsoft.com/en-gb/updates/azure-data-box-disk-is-now-available-in-china/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com), I wrote an [article](https://techcommunity.microsoft.com/t5/itops-talk-blog/how-to-use-azure-data-box-for-migrations/ba-p/1177156/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) talking more about Data Box and how it can be used in Migrations. - [Azure Site Recovery now supports replication with private links](https://azure.microsoft.com/en-gb/updates/site-recovery-now-supports-replication-with-private-links/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [My speaking engagements in the future](https://www.techielass.com/speaking) [![Listen on Spotify](https://www.techielass.com/wp-content/uploads/2020/04/spotify-podcast-badge-blk-wht-330x80.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-19](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-19.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Studying for the AI-900 exam URL: https://www.techielass.com/studying-for-ai-900/ Last updated: 2023-12-08T08:28:16.000Z Recently released within the Microsoft Certification family was the [AI-900: Azure AI Fundamentals](https://docs.microsoft.com/learn/certifications/azure-ai-fundamentals?WT.mc%5Fid=modinfra-8056-salean&ref=techielass.com) exam. At time of writing this blog post, the exam is still in Beta format, meaning if you sit the exam you won't get your results back instantly. If you've never sat a Beta exam before or looking for some advice around it there is a great post [here](https://techcommunity.microsoft.com/t5/microsoft-learn-blog/just-how-does-one-prepare-for-beta-exams/ba-p/1469421?WT.mc%5Fid=modinfra-8056-salean&ref=techielass.com) that covers off more information. Now Artificial Intelligence, Machine Learning, is absolutely not my area of expertise, I am very much a infrastructure gal. However, I love to learn new things and stretch myself every now and again, and sitting the AI-900 exam and passing it is firmly in my sights, and I thought I'd share some of the resources I have bookmarked and am using for my study. I've based what I am studying off the official skills measured section on the [AI-900: Azure AI Fundamentals](https://docs.microsoft.com/learn/certifications/azure-ai-fundamentals?WT.mc%5Fid=modinfra-8056-salean&ref=techielass.com) site. ## Microsoft's AI Principles Microsoft has a set or principles that it follows when developing AI, you can find those principles [here](https://www.microsoft.com/ai/responsible-ai?activetab=pivot1%3aprimaryr6&WT.mc%5Fid=modinfra-8056-salean&ref=techielass.com). I don't see this called out in the exam objectives specifically but I want to make you aware of what Microsoft's AI principles are as I think they are important when looking to what Microsoft is doing with AI and guide you as well if you are just starting your AI journey. ## Getting Start with AI on Azure Now I've dabbled a little with the AI products on Azure over the years, but never got in depth with any of the products and it has been awhile since I looked at them so [this Microsoft Learn module](https://docs.microsoft.com/learn/paths/get-started-with-artificial-intelligence-on-azure/?WT.mc%5Fid=modinfra-8056-salean&ref=techielass.com) is a great starting point for either learning about the AI products or refreshing yourself on what is available. ## Natural Language Processing on Azure A section of the exam 15-20% of it is around the national language processing or NLP workload being processed on Azure, and thankfully there is a [Microsoft Learn module](https://docs.microsoft.com/learn/paths/explore-natural-language-processing/?WT.mc%5Fid=modinfra-8056-salean&ref=techielass.com) that helps you skill up on that particular portion. ## Machine Learning on Azure Now the machine part of the exam is quite a large portion, it accounts for 30-35% of the exam content. So this an area of importance, you definately don't want to skimp on knowing this area. My starting point is another Microsoft Learn module (can you tell I like Microsoft Learn 😉), the [Create no code predictive models with Azure Machine Learning](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc%5Fid=modinfra-8056-salean&ref=techielass.com) is a great place to start as it's a beginner module. I've also turned to some of the Microsoft Docs pages for this area as well, this [page](https://azure.microsoft.com/overview/machine-learning-algorithms/?WT.mc%5Fid=modinfra-8056-salean&ref=techielass.com#popular-algorithms) has a great overview to an introduction of machine learning algorithms and there are some great visuals as well to break up the learning. ## Conversational AI workloads on Azure Conversational AI helps dialog between an AI agent and a human. The short [Explore Conversational AI](https://docs.microsoft.com/learn/paths/explore-conversational-ai/?WT.mc%5Fid=modinfra-8056-salean&ref=techielass.com) Learn Module can help you understand and get to grips with the basics of those workloads in Azure. ## Computer Vision workloads on Azure Computer Vision is all about trying to interpret the world visually using data sources such as camera, images, videos etc. Computer Vision pluse cognitive services can add an extra dimension. I'm currently working my way through the Microsoft Learn learning path [Explore computer vision in Microsoft Azure](https://docs.microsoft.com/learn/paths/explore-computer-vision-microsoft-azure/?WT.mc%5Fid=modinfra-8056-salean&ref=techielass.com), which is quite in depth in terms of what it covers, as it covers off computer vision, custom vision, face service and form recongizer. ## Overview Now this is just a start for the study material and I would say have a look at the exam objectives, the material I've suggested and do your own research. I am sure there is other great reference material out there that could help you study for the exam. If you have any suggestions please do reach out and let me know. 😀 ### Speaking at msHOWTO URL: https://www.techielass.com/speaking-at-mshowto-live/ Last updated: 2021-03-20T14:33:37.000Z [Mert Yeter](https://twitter.com/m3rtyeter?ref=techielass.com) reached out to me recently and asked if I would be a guest on his [msHOWTO show](https://twitter.com/mshowto?ref=techielass.com) and I jumped at the chance as the show is something I've seen happening and wanted to be a part of. 😀 So on the **21st July** Mert and I will be talking about Datacentre Migrations, which is one of my favourite topics. We will also be covering off Azure Migrate as well. My chat with Mert is going to be hosted live, so you can all join in with and us ask questions etc. You can join on the day via this [link](https://teams.microsoft.com/dl/launcher/launcher.html?url=%2f%5F%23%2fl%2fmeetup-join%2f19%3ameeting%5FMmUxNzI0ZjYtMDlkMS00M2NjLTk2MDItYzRjZWNiZWVhNzMx%40thread.v2%2f0%3fcontext%3d%257B%2522Tid%2522%3a%252287b2d259-09aa-4d6c-a2a7-1034020238ba%2522%2c%2522Oid%2522%3a%2522ff6eaa36-1314-44c1-aa2d-2a6d29bce821%2522%2c%2522IsBroadcastMeeting%2522%3atrue%257D%26anon%3dtrue&type=meetup-join&deeplinkId=61476e5d-adf7-4ae6-8af0-52303fa3f7bd&directDl=true&msLaunch=true&enableMobilePage=true&suppressPrompt=true&ref=techielass.com) which will launch a Microsoft Teams Live event. 😀 I've created a calendar event, that you can download and put in your diary so you can remember to tune in. 😉 **Download the calendar [ICS file here](https://www.techielass.com/wp-content/uploads/2020/07/msHOWTOwithMertandSarah.ics).** 📅 ### Weekly Update #47 URL: https://www.techielass.com/weekly-update-47/ Last updated: 2021-03-24T15:30:24.000Z I've been promising for a while to do a live stream of my weekly update and for this 47th edition I went for it. 😀 Thank you to everyone that tuned in and participated, sorry for the technical issues at the start, thank you for baring with me! 😀 During my update I talked about a couple of things, if you want to check them out in more detail here are some links: - [Azure Load Balancer Insights using Azure Monitor for Networks](https://azure.microsoft.com/updates/introducing-azure-load-balancer-insights-using-azure-monitor-for-networks/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Form Recognizer is now generally available](https://azure.microsoft.com/updates/form-recognizer-is-generally-available/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [An Hour with April and Sarah](https://youtu.be/hKmWZ4SlwKY?ref=techielass.com) - [My speaking engagements in the future](https://www.techielass.com/speaking) [![spotify-podcast-badge-blk-wht-330x80-18](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-18.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-18](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-18.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Speaking at Geeks on Screens with Coffee URL: https://www.techielass.com/speaking-at-geeks-on-screens-with-coffee/ Last updated: 2021-03-20T14:24:14.000Z [Mark Pryce-Maher](https://twitter.com/MarkPM%5FMSFT?ref=techielass.com) reached out to me recently and asked if I would be a guest on his [](https://www.youtube.com/user/SQLBITSBEANBAG/featured?ref=techielass.com) and I jumped at the chance as the show is something I've seen happening and wanted to be a part of. 😀 So on the **16th July** Mark and I will be having a chat. It's a non technical chat, just a couple of geeks having a bit of a blether together, and hopefully interacting with all of you. The show is live on YouTube so you can come join in, pose a question, and join in the banter with us as well. You can set a [reminder](https://www.youtube.com/watch?v=hmw30FXHXlk&ref=techielass.com), so you don't miss out on the fun session. I've also created a calendar event, that you can download and put in your diary so you can remember to tune in. 😉 **Download the calendar [ICS file here](https://www.techielass.com/wp-content/uploads/2020/07/Geeksonscreen.ics).** 📅 ### Printing at Home - HP Instant Ink URL: https://www.techielass.com/printing-at-home-hp-instant-ink/ Last updated: 2021-03-13T14:02:33.000Z Printers were always my arch nemesis when I was in IT Support, toners would always explode on the days when I wrote white shirts or I'd have to spend hours trying to find that tiny bit of paper that was still triggering the paper jam sensors. I loved to hate printers. As much as we all talk about going paperless, and keeping all our important notes in cloud storage such as OneDrive or OneNote, there are still occasions when we need to print, or scan something to send electronically. I've been working at home for several years now and buying a printer for the home office was something I had to do, as there was still odd occasions I needed to print out something to sign, then scan back and it was so much easier to have something that home than have to get my husband to do it at his work or making that trip through to the Edinburgh Microsoft office to do it. I didn't purchase anything fancy, just a small home all in one device from the local electronics/home appliance store, relatively cheap. It was an HP printer, this was back in 2018, unfortunately it didn't survive the house move in 2019\. It must have got dropped or had a knock. So in May 2019 I replaced it, with another all in one device, the HP OfficeJet 3830. When setting it up I noticed there was an offer for HP's Ink service running, the [HP Instant Ink Service](http://try.hpinstantink.com/Fcqcs?ref=techielass.com). The HP Instant Ink Service is a program where you say how many pages you are going to print every month and either pay a monthly charge, or receive the service free and HP will automatically send out the ink cartridges you need before you run out of ink. I was initially using the Free plan, which allows you to print 15 pages a month and HP will send you ink accordingly. I only ever printed random pages, the odd ticket I'd purchased online that I need to present in person or boarding passes for airlines that didn't have mobile phone apps. Totally handy service, meaning all I really needed to do was remember to buy paper for the printer and the ink would automatically come to me. You do have to have your printer on and connected to the Internet for the service to work best, the printer sends telemetry to HP about your page count and ink status. However, the amount that my home printer got used all changes when my husband started to work from home in March due to COVID19\. He often has to print out things for work, just to help manage the tasks that he does. So our little printer went from only printing a handful of pages every couple of months to printing over 300 pages a month. Meaning we had to upgrade our plan HP Instant Ink plan. We are now using the "Frequent Printing plan" which costs £7.99 a month and gives us 300 pages. On occasion he has printed more than 300 pages, which is allowed, we just have to pay for those pages in 20 page blocks. And any unused pages from previous months can be rolled over. So it's fairly flexible and doesn't necessarily punish you if you have a heavy printing month. And there is no long term commitment either, we can cancel the plan at anytime, upgrade or downgrade. I've seen a lot of people on social media having issues trying to get ink for their home printers but we've not had that issue as they are coming direct from HP and they take care of sending them out. We've always received the ink cartridge before we need them. The ink cartridges are also that bit bigger than the ones we can get in the stores as wel, so they last much longer. So more value for your money. ![instantink](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/instantink.png) The cartridges are also recyclable, you get a pre paid envelope from HP and you can post the empty/used cartridges back to them to recycle. So great for the environment as well. If you have an HP printer at home, check out whether or not you can make use of [HP Instant Ink Service](http://try.hpinstantink.com/Fcqcs?ref=techielass.com), and if you click on that link and sign up, you'll get a free month and so will I. 😉 ### Microsoft Surface Ergonomic Keyboard Review URL: https://www.techielass.com/surface-ergonomic-keyboard/ Last updated: 2021-03-20T14:13:22.000Z In December (or maybe early January) I got a [Microsoft Surface Ergonomic Keyboard](https://www.microsoft.com/p/surface-ergonomic-keyboard/90pnc9ljwpx9?cid=msft%5Fweb%5Fcollection&activetab=pivot%3aoverviewtab&WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) for the home office. I was excited and apprehensive about it, if I'll be honest. I am a massive fan of the keyboards the Microsoft Surface team have been creating on their devices and just love the feeling and response from them. So I was excited to try out this keyboard, but I had never owned or really used an ergonomic keyboard before so was nervous about the learning curve and whether it would be comfortable for all day use. It take me awhile to get used to the new key placement and actually break some bad typing habits I have but as it's my main keyboard and I write a lot on my computer (blog writing 😉) it only took me about a month or so to get used to it and start to try and get rid of some of those bad typing habits. There are still some times when I have to look down and figure out where some keys are or the key combinations but overall I've gotten used to the layout and love it. My favourite keyboard of all time is the keyboard that is built in to my Surface Book, but this is definately a close second. The keys are response and feel really nice. It doesn't a lot of effort to push the keys to get a response. 😀 You do get a clickity clack noise from the keyboard but it's not loud or disruptive. I'm definately not a fan of loud or noisy keyboards. This just has the right amount of noise for me. The one thing I am not a fan of to be honest, is that the wrist rest is covered in a suede type material. It has a great feeling and works great as a wrist rest but it's start to get stained a little and look grubby. It's not detachable so I will need to figure out a way of cleaning it without ruining the keyboard or getting too much liquid everywhere. 😉 I'm happy with it as the home office keyboard. What keyboard are you using? ### Weekly Update #46 URL: https://www.techielass.com/weekly-update-46/ Last updated: 2021-03-24T15:29:09.000Z I've recorded my 46th weekly update video! Where I talk about some Azure news and also the community engagements that I've been involved in this week. You can tune in either in video format or audio format, the links are below, enjoy! 👍 During my update this week I talked about a couple of pieces of news: - [Azure Firewall Manager is now generally available](https://azure.microsoft.com/updates/azure-firewall-manager-is-now-generally-available/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Security Centre enhancements](https://azure.microsoft.com/updates/asc-june2020/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Migrate can access your environment for hosting on the Azure VMware Solution](https://azure.microsoft.com/en-us/updates/azure-migrate-azure-vmware-solution-assessment-preview/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Microsoft User Group Singapore User Group recording](https://youtu.be/hoxD0cwYixE?ref=techielass.com) [![spotify-podcast-badge-blk-wht-330x80-17](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-17.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-17](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-17.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Speaking at Azure, Office and Data Community (Singapore) URL: https://www.techielass.com/speaking-at-singapore-usergroup/ Last updated: 2021-03-20T14:36:21.000Z One benefit of the current pandemic lock down that we all find ourselves in is that the amount of user group, conferences and meetups going online is allowing people the change to either attend or speak at events that they normally wouldn't be able to due to travel/budget constraints. I will be speaking at the Azure, Office and Data Community (Singapore) community on the 1st July. The session is one I have presented before, although with all the changes to Azure Migrate lately there is definitely something new in it if you've seen me deliver the talk before. The session I am delivering is: **Start your datacentre transformation journey with Azure Migrate** *Have you ever wondered what your environment would look like in the Cloud? How much would it cost? What would be the migration path? With Azure Migrate you and start to answer those questions. The tool can be run in your environment to help understand the tight interdependencies between applications and workloads that exist, then give you an analysis of what your Azure costs would look like.* *From this session you will walk away with a good idea of how to start utilising Azure Migrate in your organisation.* You can sign up via the [meetup page](https://www.meetup.com/mssgug/events/271306877/?ref=techielass.com), I look forward to seeing you there! ### Weekly Update #45 URL: https://www.techielass.com/weekly-update-45/ Last updated: 2021-03-24T15:27:54.000Z I've recorded another weekly update video/podcast, I am off work today (again), so I've went with a recorded video rather than a live stream. Hopefully get back to the live stream event when I am back working a Friday again. 😉 You can tune into my update either in video format or in audio format, the links are below, enjoy! 👍 During my update this week I talked about a couple of pieces of news: - [Azure Migrate now supports multiple credentials for discovery of physical servers](https://azure.microsoft.com/en-gb/updates/azure-migrate-supports-multiple-credentials-for-physical-servers-discovery-and-a-scale-of-1000-servers-per-appliance/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Monitor for Key Vault is now in preview](https://azure.microsoft.com/en-gb/updates/kvi/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Glasgow Azure User Group Meetup #19 Recording](https://youtu.be/v-RdI87OURggit?ref=techielass.com) [![spotify-podcast-badge-blk-wht-330x80-16](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-16.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-16](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-16.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### GitHub for the IT Pro URL: https://www.techielass.com/github-for-the-it-pro/ Last updated: 2021-03-18T19:26:28.000Z GitHub is one of those tools that I always considered to be a developer tool and never thought about learning, until about three years ago. I then realised that I was so wrong to class it as developer only tool! I've come to use GitHub on a regularly basis and in this video I talk about how I use and how you can make use of it and why you should learn to use it. 😉 If you are just starting your journey to using GitHub, I've written an article that helps you [getting started with Git](https://techcommunity.microsoft.com/t5/itops-talk-blog/getting-started-with-git/ba-p/905676?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) and I've also written an article helping you [keep your local GitHub repo copies in sync](https://techcommunity.microsoft.com/t5/itops-talk-blog/keeping-your-local-github-repo-in-sync/ba-p/1419990?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com). I'd love to hear how you are using GitHub as an IT Pro and if your work are using it also. Or if you have any questions I'd be happy to answer them. ### Speaking at East Sweden Microsoft User Group URL: https://www.techielass.com/speaking-at-east-sweden-microsoft-user-group/ Last updated: 2021-03-20T14:20:21.000Z Earlier this month I put out a tweet saying I was available to speak at user groups, if anyone was in need of a speaker. My good friend [Simon Binder](https://www.bindertech.com/?ref=techielass.com) reached out and asked if I'd like to speak at the very first East Sweden Microsoft User Group that he and [Alexander Arvidsson](https://twitter.com/arcticdba?ref=techielass.com) are launching. And I jumped at the chance, the first meetup will be online and will be held of the 30th June. The session I am delivering is: **Deliver your datacentre migration project successfully!** *Moving your workloads to Azure can seem like a large project to undertake, there are key milestones and points through the project that are key to success. In this session I share tips on how to make sure you address those milestones and share practical experience of a datacentre migration.* The event will be online and you can sign up to attend at the [meetup page](https://www.meetup.com/East-Sweden-Microsoft-User-Group/events/271317639/?ref=techielass.com) I look forward to seeing you there! ### Business Continuity with Azure URL: https://www.techielass.com/business-continuity-with-azure/ Last updated: 2021-03-12T17:18:58.000Z Regardless of what size your business is or what industry your business works within business continuity planning is important. Whether that just be what you do if the electricity goes out in your office building, who do you call, who can help, etc right up to the biggie, where your IT equipment completely fails. I've worked with customers in the past to work through what they would do in the event of a failure to their IT systems, and that failure takes many guises. Whether it be a natural disaster such as a flood. Or it could be a man made issue, like someone cutting through power or Internet cables or a cyber attack on the systems themselves. All of these scenarios and how they could play out need thought about unfortunately. When I was designing disaster recovery plans, it would often involve a secondary datacentre either that the customer owned or leased space within datacentre providers space. Things have changed since then though and with the invention of the cloud we are now able to utilise it as the disaster recovery secondary site and try to make things a little more cost efficient and similar, well that is the hope at least. 😉 In a short video series, I talk about utilising Azure as your backup location and your disaster recovery location as well as how to provide connectivity to that secondary site in Azure should you need to invoke it. ### Weekly Update #44 URL: https://www.techielass.com/weekly-update-44/ Last updated: 2021-03-24T15:26:47.000Z I've recorded another weekly update video/podcast, I am off work today but I am hoping that next week I can do another live stream of this and everyone can join in so look out for details on that. You can tune into my update either in video format or in audio format, the links are below, enjoy! 👍 During my update this week I talked about a couple of pieces of news: - [Import server details to assess within Azure Migrate](https://azure.microsoft.com/updates/azure-migrate-assessment-of-imported-servers-is-now-ga/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com), I covered this off in a [blog post](https://www.techielass.com/azure-migrate-import-servers) in more detail - [New functionality has been added to Azure Arc](https://www.thomasmaurer.ch/2020/06/azure-arc-enabled-servers-extension-management/?utm%5Fsource=techielass&utm%5Fmedium=social&utm%5Fcampaign=help-teammates) - [Budgets in Cost Management now accounts threshold edits and alert limits above 100%](https://azure.microsoft.com/en-us/updates/budgets-in-cost-management-now-accounts-threshold-edits-and-alert-limits-above-100/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) [![spotify-podcast-badge-blk-wht-330x80-15](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-15.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-15](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-15.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### What is Azure Bastion? URL: https://www.techielass.com/what-is-azure-bastion/ Last updated: 2021-03-21T16:06:09.000Z We have probably all remoted into a desktop or a server at some point in our careers, it's something I've done a million times in order to carry out a task or check on something. The remote desktop (RDP) port, 3389, was something that was always available within on prem networks, you could connect into a server through RDP without an issue (most of the time) on an internal network. That option was very rarely, if ever open if you weren't sitting in the internal network. It's a way we are all familiar working within. There are other ways of managing your servers, [Windows Admin Centre](https://docs.microsoft.com/windows-server/manage/windows-admin-center/overview?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) being one way but sometimes you just need (or want) that RDP access to be open so how do you manage that when your servers are hosted in the Cloud? Do you open port 3389 up? Do you have a public IP address available? Both are options but not secure options as it does open you up to hackers and nefarious actors. This is where [Azure Bastion](https://azure.microsoft.com/services/azure-bastion/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) comes into play. 😀 ## What is Azure Bastion Azure Bastion was announced in June 2019 and going fully [Generally Available](https://www.techielass.com/service-lifecycle) in November 2019 is a service within Azure that is designed to help provide that secure RDP (and SSH) access you need/want to your Azure based virtual machines. It's a fully managed Platform as a Service (PaaS) offering. The Bastion service allows you to securely connect to your virtual machines without having a public IP address assigned to it. You interact with the Bastion service through a browser session, the following browsers are supported, Microsoft Edge browser or Google Chrome on Windows. For Apple Mac, use Google Chrome browser. Microsoft Edge Chromium is also supported on both Windows and Mac. Azure Bastion acts like that jump box many of us have probably had set up in our environment over the years. It isn't quite the same as those on prem jump boxes though, you don't get a server where you can store your files or install tools on to help. It just acts like a jump box. 😉 But that's one of the reasons I really like the service, it gives you the jump box functionality You don't need to install software or an agent on the servers you want to access via the Bastion service, and it does not require an [RDS CAL](https://www.microsoft.com/p/windows-server-remote-desktop-services-cal/dg7gmgf0dvsv?activetab=pivot:overviewtab&WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) when used solely for administrative purposes. To deploy Azure Bastion successfully within your environment you need to deploy it to a subnet that is called *AzureBastionSubnet* with a CIDR of at least /27. ![subnets](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/subnets.JPG) You can use Azure Bastion to connect to single virtual machines, [virtual machines within scale sets](https://docs.microsoft.com/azure/bastion/bastion-connect-vm-scale-set?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com), or virtual machines within [DevTest Labs](https://azure.microsoft.com/services/devtest-lab/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). The service isn't available in all [Azure regions](https://azure.microsoft.com/global-infrastructure/regions/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com), but you can check to see which ones it is available in [here](https://azure.microsoft.com/global-infrastructure/services/?products=azure-bastion&WT.mc%5Fid=techielass-blog-salean&ref=techielass.com). So if you are using virtual machines within Azure and looking for a secure method of connecting to them, consider [Azure Bastion](https://azure.microsoft.com/services/azure-bastion/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). ### Speaking at Virtual Microsoft Azure Night URL: https://www.techielass.com/speaking-at-virtual-microsoft-azure-night/ Last updated: 2021-03-20T14:41:28.000Z I have been invited to speak at a user group, which is normally hosted in person in Wales, but will be running virtually due to the current pandemic situation. I am looking forward to speaking to the attendees and interacting with them. The event is being held on the 2nd July 2020, at around 6pm which is British Summer Time, or 1pm Eastern Daylight Time or 10am Pacific Daylight Time. The event is free to attend and I'd love to see all of you there. 😀 My session is entitled *Monitoring in Azure*. During the session I am hoping to cover off: *Monitoring - it's one of those things regardless of where your workloads are hosted you need to implement, it can help you be proactive within your organisation and avoid issues. In this session we will go through an overview of monitoring in Azure and what it can do. And walk through some of the things you need to think about when designing your monitoring.* You can sign up to attend the event via the [Meetup page](https://www.meetup.com/MSFT-Stack/events/270933199/?ref=techielass.com). I look forward to seeing you there! ### Weekly Update #43 URL: https://www.techielass.com/weekly-update-43/ Last updated: 2021-03-24T15:25:42.000Z I did something a little different for my weekly update. I had my office all set up to present as I delivered a session this morning at the [Azure Day Rome](https://www.techielass.com/speaking-at-azure-day-rome-2020), I decided to a live stream my weekly update on [YouTube](https://www.youtube.com/techielass?ref=techielass.com). 😀 Thank you to everyone that tuned in live and said hello to me during the live stream, I might do more live streams when my work schedule allows. It would be good to interact with people, but let me know what you think, do you prefer my pre-recorded videos or would you like more live streams from me? You can tune into my update either in video format or in audio only format, the links are below, enjoy! 👍 During my update this week I talked about a couple of pieces of news: - [Bring your own key for Azure Database for MySQL](https://azure.microsoft.com/en-us/updates/data-encryption-with-customermanaged-keys-for-azure-database-for-mysql-in-preview/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Site Recovery update rollup 46](https://azure.microsoft.com/en-us/updates/azure-site-recovery-update-rollup-46-june-2020/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Policy support for CosmosDB](https://azure.microsoft.com/en-us/updates/azure-policy-support-for-azure-cosmos-db-is-now-available/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) - [Azure Files with Active Directory Domain Services Authentication](https://azure.microsoft.com/en-us/blog/general-availability-of-azure-files-onpremises-active-directory-domain-services-authentication/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) [![spotify-podcast-badge-blk-wht-330x80-14](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-14.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-14](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-14.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Speaking at Azure Day Rome 2020 URL: https://www.techielass.com/speaking-at-azure-day-rome-2020/ Last updated: 2021-03-20T14:16:38.000Z I recently received the confirmation email that I will be speaking at the Azure Day Rome 2020, which was supposed to be an in person event but has changed to a virtual event. The session is one I have presented before, although with all the changes to Azure Migrate lately there is definitely something new in it if you've seen me deliver the talk before. The session I am delivering is: **Start your datacentre transformation journey with Azure Migrate** *Have you ever wondered what your environment would look like in the Cloud? How much would it cost? What would be the migration path? With Azure Migrate you and start to answer those questions. The tool can be run in your environment to help understand the tight interdependencies between applications and workloads that exist, then give you an analysis of what your Azure costs would look like.* *From this session you will walk away with a good idea of how to start utilising Azure Migrate in your organisation.* You can sign up via the [conference website](https://azureday.it/?ref=techielass.com) and if you can get along to the event I highly recommend you do so. I look forward to seeing you there! ### Weekly Update #42 URL: https://www.techielass.com/weekly-update-42/ Last updated: 2021-03-24T15:24:30.000Z I've released another weekly update video and hope you can all join me and tune in. This week in terms of news I want talk about [Proximity Placement Group](https://azure.microsoft.com/en-gb/updates/azure-site-recovery-now-supports-proximity-placement-groups/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) support within Azure Site Recovery and [media optimisation for Microsoft Teams](https://azure.microsoft.com/en-gb/updates/windows-virtual-desktop-media-optimization-for-microsoft-teams-is-now-available-in-public-preview/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) within Windows Virtual Desktop. It's been tough with the COVID19 situation and the racism happening in America, and trying to educate myself on both has been a focus this week. I have signed up to speak at a couple of events later this month and one next month, which I wasn't expecting to do but I love interacting with the community so am looking forward to them. You can tune into my update either in video format or in audio only format, the links are below, enjoy! 👍 [![spotify-podcast-badge-blk-wht-330x80-13](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-13.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed-13](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed-13.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) [![Buy me a coffee](https://cdn.buymeacoffee.com/buttons/bmc-new-btn-logo.svg)Buy me a coffee](https://www.buymeacoffee.com/techielass?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Sync files from on prem to Azure Storage URL: https://www.techielass.com/sync-files-from-on-prem-to-azure-stroage/ Last updated: 2021-03-20T14:12:30.000Z For those that have been following me of late you'll know I am in the process of [changing my PC](https://www.techielass.com/new-pc-build). As part of that project I need to make sure all my files, the important stuff is stored somewhere safe. And let's be honest it's also an exercise in tidying things up and making sure I know where everything is. For me, and I'm sure everyone reading this the most important files they have is pictures. Family memories, trip memories, daft memories from your phone cameras etc. And let's all be honest, we probably don't put enough effort into sorting, cataloging or backing up those precious memories out. Which is ultimately where I am. I want to make sure my photo memories are stored somewhere secure and safe. Now there are tons of choices for this. You could go down the NAS device route and store everything in your house, you could use [Microsoft OneDrive](https://www.microsoft.com/microsoft-365/onedrive/online-cloud-storage?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com), you could use [Azure File Share](https://docs.microsoft.com/azure/storage/files/storage-how-to-create-file-share?tabs=azure-portal&WT.mc%5Fid=techielass-blog-salean&ref=techielass.com), you could use another cloud providers storage options. There are any number out there. My choosen option is to use [Azure Storage](https://azure.microsoft.com/services/storage/?WT.mc%5Fid=modinfra-0000-salean/&ref=techielass.com). I'm using plain old blob storage, with the [Archive tier](https://docs.microsoft.com/azure/storage/blobs/storage-blob-storage-tiers?tabs=azure-portal&WT.mc%5Fid=techielass-blog-salean&ref=techielass.com#archive-access-tier) turned on and with [geo redundancy](https://docs.microsoft.com/azure/storage/common/storage-redundancy?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com#geo-redundant-storage) turned on. For me and my purposes, of just storing my photos somewhere safe and secure it's the best option. I don't have to care about the hardware running, the security is taken care of etc. What I want to take you through is the process of getting the data from my PC up into Azure. 😀 ## Creating the Azure storage ## Sync the Files Now you've created your destination you need to start to transfer the files from on prem into Azure. I am going to do that using \[PowerShell\] and [AzCopy](https://docs.microsoft.com/azure/storage/common/storage-use-azcopy-v10?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). These are utilities that can be easily installed on your computer if you don't already have them installed. Before you can transfer the files up you need to gather a couple of pieces of information from your Azure account. ### Azure Storage File Path You need to get the file path of your storage account. The file path is made up of the name you gave it in the step above and a default path. **[https://NAMEYOUGAVEIT.blob.core.windows.net](https://nameyougaveit.blob.core.windows.net/?ref=techielass.com)** This is the main location of your storage account. If like me you want to split your files into separate folders, or containers you need to include the container name. **[https://NAMEYOUGAVEIT.blob.core.windows.net/CONTAINERNAME](https://nameyougaveit.blob.core.windows.net/CONTAINERNAME?ref=techielass.com)** So my storage file path will be [https://sarahsphotos.blob.core.windows.net/2020-photos](https://sarahsphotos.blob.core.windows.net/2020-photos?ref=techielass.com) ### Shared Access Signature We've created this storage account as a private one, that only those authorised to can access it. So in order to copy files we need to create a [Shared Access Signature (SAS)](https://docs.microsoft.com/azure/storage/common/storage-sas-overview?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com), so we can transfer the files across in a programmatic way. To do this go into the Azure Portal, click on your storage account and then down the left hand navigation bar you will see Shared Access Signature. When you enter this blade you will be given a lot of options, I configure the options as below, modifying the time to suit when I plan to do the work. ![azcopy](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/azcopy.JPG) Once you've configured the options, click on Generate SAS and connection string. This will generate a lot of options, you want to copy the **SAS Token** string. ### Time to Sync Now you have the information you want to piece it together and copy the files. The command looks like this: azcopy sync "Location on prem" "Azure Storage File Path + SAS Token" So I would use the command: *Don't worry this is a dummy SAS token and storage account.* 😉 You can take this command and run it within a PowerShell console on your local PC and you should get results similar to this when the job completes. ![azcopysas](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/azcopysas.JPG) ## I've found more photos for that storage area! So you now have the files copy up to Azure from on prem, but you start to add more files into that location on prem and want to get them up to Azure as well. Now this is the beauty of the [AzCopy Sync](https://docs.microsoft.com/azure/storage/common/storage-ref-azcopy-sync?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) command, it helps to compare modified times so should only ever add in those new files or files that have changed, meaning you don't have to sync everything each time you add something new to that on prem folder. 😉 So you can run the same command as above and it will run through the files that have changed and only add them to the Azure storage. ![azcopyrun2](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/azcopyrun2.JPG) ### Weekly Update #41 URL: https://www.techielass.com/weekly-update-41/ Last updated: 2021-03-24T15:23:27.000Z I've released another weekly update video and hope you can all join me and tune in. This week in terms of news I want to focus on monitoring in Azure, as I've been digging into that in order to prepare a presentation for a customer. 😊 This week we've saw the team release over [250 example queries](https://azure.microsoft.com/en-gb/updates/log-analytics-new-query-experience-example-queries/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) within [Log Analytics](https://docs.microsoft.com/en-us/azure/azure-monitor/log-query/get-started-portal/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). We also saw the team launch functionality within Azure Monitor that nows allows the use of [Private Link](https://azure.microsoft.com/en-gb/updates/private-link-azure-monitor-is-now-available/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). It was great to be able to dig into a subject I've never really digged into before and then deliver that session to a customer, it was really a great experience and I'm going to turn the presentation into something that everyone can have a look at so watch out for that in the new future. I also really enjoyed the chance to present at the [NEBytes](http://www.nebytes.net/?ref=techielass.com) user group this month, I should have been in Newcastle in person but unfortunately that couldn't happen so the event was pivoted into something remote and it was great to be able to deliver a new presentation to the group and answer their questions, so thank you to all that attended. You can tune into my update either in video format or in audio only format, the links are below, enjoy! 👍 ![spotify-podcast-badge-blk-wht-330x80-12](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80-12.png) [![Download via RSS](https://www.techielass.com/wp-content/uploads/2020/04/rss-feed.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Day Two Cloud Podcast Appearance URL: https://www.techielass.com/day-two-cloud-podcast-appearance/ Last updated: 2021-03-13T11:55:10.000Z I had the pleasure of chatting with [Ethan Banks](https://twitter.com/ecbanks?ref=techielass.com) and [Ned Bellavance](https://twitter.com/ned1313?ref=techielass.com) who are hosts on the podcast [Day Two Cloud Podcast](https://daytwocloud.io/?ref=techielass.com). The show has been running for quite a while and there is over 40 episodes to tune into. In [Episode 48](https://daytwocloud.io/podcast/day-two-cloud-048-migrating-your-data-center-to-the-cloud/?ref=techielass.com) I make an appearance. 😀 I chat with the guys around migrating to the Cloud, how engineers who are used to working with on prem servers can make that transition to managing servers and infrastructure in the Cloud. It was really good chatting to the guys about how you can minimize issues during your migration project, thinking about what you can move and what you can't move and how auditing your environment is a really key part of your migration project. You can listen into the episode on [Spotify](https://open.spotify.com/show/128t02PLJvr1U9GrruVAp8?si=pdUpWk%5FFRwmbcsWL4FkTTw&ref=techielass.com), [Apple Podcasts](https://podcasts.apple.com/us/podcast/day-2-cloud/id1460004936?ref=techielass.com), [Google Podcasts](https://play.google.com/music/listen?ref=techielass.com#/ps/Il3lhn3wynynwon3zf2gqggwpke), or on the [Day Two Cloud Podcast website](https://daytwocloud.io/podcast/day-two-cloud-048-migrating-your-data-center-to-the-cloud/?ref=techielass.com). If you have a podcast show, I'd love to be a guest, just reach out to me on [Twitter](https://www.twitter.com/techielass?ref=techielass.com) and we can get it arranged. 😀 ### Camtasia vs Premiere Pro URL: https://www.techielass.com/camtasia-vs-premiere-pro/ Last updated: 2023-07-06T07:25:03.000Z I've been tinking with video creation and editing of those videos since January 2018, but really got into it back in August 2019 when I started a [weekly vlog](https://www.youtube.com/playlist?list=PLbjernQTVXitYGv7gWIRNqeWBFyVZJOBk&ref=techielass.com) on [YouTube](https://www.youtube.com/c/techielass?ref=techielass.com). When I started my weekly vlog I was using [Camtasia](https://www.techsmith.com/video-editor.html?ref=techielass.com) to edit my video footage. Looking back at that first few episodes I didn't do much with the footage at all, I might have added a logo (or tried to) and maybe cut off the beginning and ending of me setting up the camera but there was no fancy intro graphics, or outro, or even any lower thirds. As I gradually grew familiar with Camtasia I did start to add stuff and make things zoom out and in of the screen to help highlight points I was talking about. And I did put together a bit of an outro but nothing that would have any professional video editor worried about me taking over the job. However, as I started to get into creating the video and editing it, I found over time I wanted to try something I'd seen someone else do in their editing and struggled to get Camtasia to do it. Everything I seemed to want to do or try to do required [Adobe Premiere Pro](https://www.adobe.com/uk/products/premiere.html?ref=techielass.com). The turning point came when I came back from Seattle in February 2020 and had some video filmed from one of the professional video booths that we have within the Microsoft Campus. The footage I had created had two video angles of me talking. And trying to edit and join that together within Camtasia, just seemed beyond the footage. So I downloaded a trial of Adobe Premiere Pro after seeing a tutorial of how easy it was to edit multi camera videos in there. I was sold! I edited the footage with ease and was able to try out some techniques that I had wanted to try and struggled in Camtasia with. Let's have a look at some of the things I like to do in Adobe Premiere Pro I struggled with in Camtasia. ## Multi Cam footage I often film multiple angles of me, even if I am just sitting at my desk talking to the camera. Or sometimes I'll have my camera on me and also be recording my screen for demos etc. So having those multi camera feeds and being able to pull them into Adobe Premiere Pro, have the software sink them and then edit with great ease saves me a lot of time. The tutorial that I really found helpful in figuring out the basics for this was [Barnacules Nerdgasm's video talking about it](https://youtu.be/BOa9A3NzRt8?ref=techielass.com). ## Ease of use Now this point could be debated, but for me I found Adobe Premiere Pro easier to use and figure out compared to Camtasia. This is maybe because I've used a ton of Adobe software in the past from Dreamweaver back in the day to Photoshop. I just found the interface so much easier to navigate and much more intuitive but I totally get that this is a subjective one and everyone will be a bit different on this point. ## Online Knowledge There is a host of tutorial, blog posts, YouTube videos both from Adobe and the community on how to do things. I always struggled to find material on Camtasia and how to do things and used to give up. ## Audio Editing A lot of people spend time making the audio just right before recording and can probably just go with whatever they have recorded, for me, I like to tweak things just a little after recording. For a home office studio I think my audio sounds good, but I still have some things I want to tweak. For a while I did that in Audacity, which was a bit of a process when I was using Camtasia, taking the audio separately, editing it then pulling it back into Camtasia and editing it and then trying to sync it up with the original and bringing it all together. Adobe has a great bit of software for audio editing, \[Adobe Audition\] and I often use that as a separate program but there is some powerful audio editing features built into Adobe Premiere Pro you can leverage without leaving it, so it helps to quicken up my workflow. ## Batch Rendering I often save up filming of videos for one day of the week, it's sometimes easier to block out a whole day in advance within my diary to it, rather than try and fit it in between meetings on other days. I also find it helps to do it in one day when I am in the right frame of mind and dressed right.😀😀 However, when I was using Camtasia this would mean I would have a back log of footage to edit and then render and that took a long time as I would edit something, render it and then have to wait before I could edit the next footage. Or I would edit it all, then render the first one, go away, come back render the next one. It just took a long time. But in Adobe Premiere Pro there is a batch rendering feature. So I edit all the footage I want and save them, then I queue them up within the [Adobe Media Encoder](https://www.adobe.com/uk/products/media-encoder.html?ref=techielass.com) and let it render away. I've got into the process of setting this up at the end of the day and letting my machine render the videos while I go and have my dinner and watch TV and check on it before I go to bed. I'm finding it a much easier process to manage. ## Overview Those are just some of the reasons I prefer Adobe Premiere Pro over Camtasia, however saying that there is one feature the Adobe suite lacks, I haven't found a good way to do screen recordings, so I use Camtasia for that and import the footage into Adobe Premiere Pro to edit. 😉 Nothing is perfect is it? 😀 ### Weekly Update #40 URL: https://www.techielass.com/weekly-update-40/ Last updated: 2021-03-24T15:17:30.000Z I've released another weekly update video and hope you can all join me and tune in. This week saw a ton of announcements thanks to [Microsoft Build](https://mybuild.microsoft.com/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com), I've picked out three that I wanted to just mention. We now have a preview service were [Azure Backup](https://azure.microsoft.com/services/backup/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) supports backing up virtual machines that have [32 disks attached](https://azure.microsoft.com/updates/azure-virtual-machines-support-for-backup-is-now-in-preview/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). Also in preview is support for Azure Kubernetes Service(AKS) within [Azure Policy](https://azure.microsoft.com/updates/azure-policy-for-azure-kubernetes-service-aks-in-preview/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com), which will allow you to audit and enforce settings within your clusters. And lastly there have been a number of [improvements](https://azure.microsoft.com/updates/azure-key-vault-service-enhancements-now-available/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) around [Azure Key Vault](https://azure.microsoft.com/services/key-vault/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) In terms of my news this week, it was really cool to be involved with Microsoft Build and get the opportunity to be included in the Expert Q&A regarding Hybrid management and also moderate a few sessions in the background. As I said in my video if you have any feedback, good or bad about Build please do let us know. I've got a number of customer and community engagements to work on for next week so it's been a pretty busy time for me. I am aiming to "take it easier" in June and focus on writing blogs and studying for the [AZ-500](https://docs.microsoft.com/learn/certifications/exams/az-500?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) exam and get some personal development done this year. 😀 To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Datacentre Migration Discovery Checklist URL: https://www.techielass.com/datacentre-migration-discovery-checklist/ Last updated: 2021-03-13T11:54:18.000Z For organisations looking to migrate workloads or their datacentres from on prem into Azure the first phase of the project is to do a discovery of the environment. And regardless of the size of the organisation or the amount of workloads being moved the discovery phase is really important. I advocate that every organisation looking to do a workload or datacentre migration should invest real time and staff resources into the discovery part of the project. Understanding your environment, truely finding out how things are connected within your environment, speaking to end users and application owners, and getting your documentation up to date can really help you later in the project and make informed decisions. Often a question I get asked by customer is, "do you have a checklist of the information we need to collect?" Up until recently the answer was no, however I've now pulled together a checklist to help organisations. The checklist can be found [here](https://bit.ly/2Z0Fo0H?ref=techielass.com) and as it is hosted in GitHub, if you want to contribute to it you can! I want the checklist to be collaborative, please feel free to make a pull request and add your thoughts as well. 😀 ### Lisa at the Edge Podcast Interview URL: https://www.techielass.com/lisa-at-the-edge-podcast/ Last updated: 2021-03-14T07:45:24.000Z I've had the pleasure of knowing [Lisa](https://www.twitter.com/lisaattheedge?ref=techielass.com) for a while now. We've never worked together but we've connected through various different tech communities and mutual friends. She's been talking about blogging and starting a podcast for a while now and earlier this year we did have a chat where I encouraged her to give it a go and thankfully she's found time during this current COVID 19 lockdown to dig into the blogging and podcasting world. ## Lisa at the Edge She's entitled her podcast show "Lisa at the Edge" as she is a big enthusiast of the hybrid cloud strategy and the Azure Stack products. 😀 She reached out to me early April and asked if I would be a guest on the show and I jumped at the chance to have a chat with her and support her new venture. I appeared on episode four and Lisa and I chatted about the [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com), my [STEM](https://www.stem.org.uk/stem-ambassadors?ref=techielass.com) activities, the current lockdown and our feelings on Women in Tech events. It was a great wee chat and I really enjoyed it. You can have a listen on [Breaker](https://www.breaker.audio/lisa-at-the-edge/e/61938212?ref=techielass.com), [Google Podcasts](https://podcasts.google.com/feed/aHR0cHM6Ly9hbmNob3IuZm0vcy8xOGJhYjkzYy9wb2RjYXN0L3Jzcw/episode/MzYwYWVjNzQtZDk5ZC00MDE2LWE0MWItYTMxZDYzM2U4NjAx?ved=0CAkQzsICahcKEwjI2e6wmKLpAhUAAAAAHQAAAAAQAQ&ref=techielass.com), [Overcast](https://overcast.fm/+Zf39j2W7A?ref=techielass.com), [Pocket Casts](https://pca.st/da58pm92?ref=techielass.com), [Radio Public](https://radiopublic.com/lisa-at-the-edge-GONK2O/s1!0cd92?ref=techielass.com) or [Spotify](https://open.spotify.com/episode/72wHDzoP5rvM9F8xQBHto9?ref=techielass.com). Her show is also available as an [RSS feed](https://anchor.fm/s/18bab93c/podcast/rss?ref=techielass.com) if you want to subscribe and grab the new episodes as they are released. ## Podcast Guest If you have a podcast show, I'd love to be a guest, just reach out to me on [Twitter](https://www.twitter.com/techielass?ref=techielass.com) and we can get it arranged. 😀 ### Weekly Update #39 URL: https://www.techielass.com/weekly-update-39/ Last updated: 2021-03-24T15:16:38.000Z I've released another weekly update video and hope you can all join me and tune in. In this week's new I talk about the new feature where you can [burst the speed of your virtual machine disk](https://azure.microsoft.com/updates/babanisamicrosoftcom/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) for a short period of time without charge! Also generally available this week is the new feature where you can store your [Azure SQL auditing](https://azure.microsoft.com/updates/azure-sql-auditing-to-storage-account-behind-virtual-network-and-firewall-now-generally-available/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) behind a virtual network and firewall. And the bit of preview news I touch on is the new [rules engine](https://azure.microsoft.com/updates/rules-engine-for-azure-front-door-service-is-now-in-preview/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) withiN [Azure Front Door](https://docs.microsoft.com/azure/frontdoor/front-door-overview?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) . In terms of this week's new for me, I touch on how I've been concentrating on some self care to help me out of the funk I was in last week. I've been making time every Monday and Wednesday to do the [Joe Wicks](https://www.youtube.com/user/thebodycoach1?ref=techielass.com) workouts online which has helped me improve my move over the week. This week a lot of my time has been getting video content setup, edited, writing the show notes, creating the artwork, ensuring the captions are correct and also scheduling everything to launch when it needs to be released. And it's required a bit of juggling to make sure everything is ready for release and in place. I am still working on my [new PC](https://www.techielass.com/new-pc-build) but will hopefully have it up and running next week. Next week I am helping out with some activities within [Microsoft Build](https://mybuild.microsoft.com/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com), are you registered? To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### A Day In the Life URL: https://www.techielass.com/a-day-in-the-life/ Last updated: 2021-03-11T13:57:02.000Z I often get asked what a Cloud Advocate at Microsoft does, so I thought it might be interesting to do a "Day in the Life" blog post where I show you what my diary looks like. ## 6:00 - 7:00am I wake up at 6am, grab a shower, and grab breakfast. I'm generally ready to start work at 7:30am or 8am depending on whether there are any house hold chores to be taken care of, putting the laundry on or taking the bins out etc. ## 8:00 - 10:00am This my time to do admin, check out social media, check how blogs or videos have performed the previous day. Some days I have a lot of mail, messages or admin to catch up so the time can often pass really quickly. This is also a great time to sit down and plan out what my day looks like, what my objectives look like, do I need to stick with what is planned in my diary or do I need to juggle something around and do something different as priorities have changed? At the moment I have 12 ideas on the to do list for content creation, either blog or video or in some case a combination of both. Some require prep or research before I can start creating them so I have time booked in my diary where I can focus on that and move each idea ahead a little. ## 10:00 - 10:30am Today at 10am I have a catch up meeting with my colleague [Thomas Maurer](https://www.thomasmaurer.ch/?ref=techielass.com). We've got this slot scheduled in each week, we often share ideas for work and give each other feedback on work we've done but this week we pass the time talking about the new [Surface range](https://blogs.windows.com/devices/2020/05/06/introducing-surface-go-2-surface-book-3-surface-headphones-2-and-surface-earbuds/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com), we're both excited by the prospect of the refreshed hardware and new devices. ## 10:30am - 12 noon I don't have any more meetings this morning so I turn notifications and alerts off on my PC and get started on editing some video footage that I created yesterday. I need to piece together, video of me, video of my screen and the audio. As well as adding in the fancy graphics to make the video look professional. 😀 Video editing is something I've really started to enjoy since I started [vlogging](https://www.techielass.com/vlogging-update) back in August 2019, and I love learning about new techniques and testing things out. ## 12 noon - 13:00 The video footage is now editing and it needs to render, although my [Surface Book 2](https://www.microsoft.com/p/surface-book-2/8mcpzjjcc98c?activetab=pivot%3aoverviewtab&WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) is pretty powerful it will take a while so I set that aside and fire up my second device, a [Surface Pro 7](https://www.microsoft.com/p/surface-pro-7/8n17j0m5zzqs?activetab=overview&WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) and start work on a blog post that is on my to do list. ## 13:00 - 14:00 Lunch time. It's important to always remember to take a break and get away from your desk, this is true when working in an office as well as working from home. The sun is out and I want to make the most of it as the forecast for next week isn't good so I grab something quick and sit outside and eat. I sometimes stick on a film, or TV series or YouTube video while on lunch, at the moment I am enjoying [The Last Dance](https://en.wikipedia.org/wiki/The%5FLast%5FDance%5F%28TV%5Fseries%29?ref=techielass.com). It reminds me of when I used to play Total NBA 97 on the Playstation, I used to always pick Chicago Bulls as my team. ## 14:00 - 14:30 I now have a weekly catch up meeting with the other UK Cloud Advocate team. Again this is an informal catch up where we will either chat about work, or we'll chat about our weeks etc. Working in a global team means it can be hard to catch up with my team colleagues because of time zones, so being able to chat to others within the same time zone is great. ## 14:30 - 15:00 The next meeting I have in my diary is a catch up with a lot of others in the UK, so we have Cloud Advocates, Marketing, , the team behind the [Microsoft Reactor](https://developer.microsoft.com/en-us/reactor/WT.mc%5Fid=techielass-blog-salean?ref=techielass.com), the startup team, the team that lead the MVP program, etc. This is a bit more formal and we use this time to chat about upcoming events, brain storm ideas, talk over what went right or wrong with previous events/campaigns and often there is some asks for help from people to get projects etc off the ground. ## 15:00 - 15:45 This is now time to catch up with my leader and the rest of the team. The team I am in spans seven different time zones, so it's hard for us to all catch up at once without one or two of us having to attend the meeting in our PJs or crawl out of bed really early. So we have two team meetings, same agenda, but it means we can meet at a time friendly to each of us. Each meeting is recorded and those that can't attend are encouraged to watch the recording to catch up with what others are doing and also comment on anything that was said. It sounds a little complicated but we're actually making it work quite well. ## 15:45 - 17:00 The team meeting runs a little over, but I don't have another meeting now in my diary so it's not an issue for me. I take the time to go grab a drink and snack. The video footage I edited and rendered earlier is finished so I kick off the upload of that to my [YouTube channel](http://www.youtube.com/c/techielass?ref=techielass.com). This takes a little time as I need to get the artwork and show notes written up. The video is scheduled for release in a few weeks time, but that's something ticked off my to do list. Next on the to do list is finish off that blog post I started earlier today before signing off for the day. ## 17:00 - 19:00 My husband is working from home, at the kitchen table due to COVID 19 and doesn't finish until 17:30 so I take the time to finish off some house hold chores. Once he's finished and packed his work setup away we make a start on dinner. ## 19:00 - 22:00 This time of the evening varies a little, I either try and go for a walk or have scheduled time to catch up with friends/family over video call. My Mum and I have been regularly watching TV over video call together. ## 22:00 - 23:00 I usually try to get to bed between 10pm and 11pm. ## Summary So that's a day in the life of a Cloud Advocate at Microsoft in these current COVID 19 times. What does your day look like? ### Weekly Update #38 URL: https://www.techielass.com/weekly-update-38/ Last updated: 2021-03-24T15:15:03.000Z I've released another weekly update video and hope you can all join me and tune in. In this week's Azure news I touch on the New [Azure VMware Solution](https://azure.microsoft.com/updates/new-azure-vmware-solution-is-now-in-preview/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) is now in preview and also the new feature that allows you to create [customer RBAC roles](https://azure.microsoft.com/updates/azure-custom-roles-portal/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) within the Azure Portal. I also touch on how it's been tough for me this week dealing with lock down and that I could do with a true break, some time away with the family enjoying daft selfies, good food and just turning off from the outside world. Usually that's my mechanism for dealing with stress but with the current lock down situation that's obviously not possible so I've been focussing on trying to implement self care in the form of relaxing bubble baths, cooking good meals and enjoying my morning coffee out in the garden while the sun shines. It really is okay not to be okay sometimes. Thankfully I've had a bit of a distraction this week with parts for my [new PC](https://youtu.be/jfyvRoGCIio?ref=techielass.com) have started to arrive, so I filmed a little video about that. To find out more about my vlogging equipment and technique, check out my [article](https://www.techielass.com/vlogging-update). ### Vlogging Update URL: https://www.techielass.com/vlogging-update/ Last updated: 2021-03-13T13:28:47.000Z Back in August 2019 I jumped into the vlogging arena. I tentative enter the arena, not knowing if the content I had in mind would be well received, not knowing if I had interesting content or the right story to tell. Right now, as I approach close to year of creating content, I'm taking time to reflect and understand what's been successful, what hasn't worked and looking at the kit that I use and how I've adapted and progressed. ## Kit When I started in August 2019, I didn't want to go all out and spend a fortune to realise I didn't enjoy creating video content or that it wasn't well received so I looked around to see what I at home that could work. I started off with the [Samsung Galaxy S9](https://amzn.to/2TX7tkQ?ref=techielass.com) as my camera, I bought a [Boya BY-M1 lavalier microphone](https://amzn.to/2KTrjtj?ref=techielass.com) wired lavalier microphone to give me better quality audio. And picked up a small tripod cheaply from eBay to help me. If you look back at the stuff I created back then, the quality is viewable, and the audio is actually not to bad. I hadn't learnt how to focus on the camera on my phone instead of staring at the screen, which is something I have learnt how to do and is one of the biggest tips I can give anyone starting out with video content. Look at the camera lens, not the screen. 😀 ## Technique Last year there were a few things that I did to create my videos. For my weekly vlog, the process was fairly straight forward, I filmed using my phone and recorded that audio at the same time with the lavalier microphone. So I just took that footage and audio,and uploaded it to my [YouTube account](https://www.youtube/c/techielass?ref=techielass.com) and released the footage. I did very little if any post editing if any at all to it. I also started to create some screencast videos, and that took a bit more work to create and edit after the fact. What I did was the following: 1. Film a intro and ending using my phone and microphone 2. Record the screen work using something like Camtasia 3. Play the screencast back and then record the commentary on my phone as a video with my lavalier microphone 4. Sync the screencast and audio together 5. Put all the footage and audio together then upload to YouTube It took a lot of work, a lot of time afterwards and I didn't always get it right, so I have some screencasts which are half finished or scrapped. ## Present Day Kit The kit that I have has slightly changed, I still make use of my [Samsung Galaxy S9](https://amzn.to/2TX7tkQ?ref=techielass.com) and [Boya BY-M1 lavalier microphone](https://amzn.to/2KTrjtj?ref=techielass.com). But I've upgraded my phone to a [Samsung S20 5G](https://amzn.to/2A0pYPP?ref=techielass.com) which I now use and I also make use of my [Logitech C920](https://amzn.to/2Wqu7nt?ref=techielass.com) desktop webcam, a [Rode NT USB](https://amzn.to/3dc7SbG?ref=techielass.com) microphone and some Neewer 480 LED Video Lights. I mix and match depending on where I am and what I am filming, there are times when I run two cameras at once and switch up angles to make it more interesting for the viewer. I've also got some [accoustic panels](https://www.techielass.com/reducing-the-echo) that I made in my home office, which I hope improves the audio quality in the room. ## Present Day Technique For my weekly vlogs, I've taken to recording the video on my [Logitech C920](https://amzn.to/2Wqu7nt?ref=techielass.com) using the Camera app built into Windows 10 and Audacity records the audio from my [Rode NT USB](https://amzn.to/3dc7SbG?ref=techielass.com) microphone, and then using Adobe Premiere Pro I edit the two together and add in my opening scene, end sceens and lower thirds that [Ratworks](http://www.ratworks.net/?ref=techielass.com) made for me. When I'm doing screencasts, I do everything on my PC. Again using the Camera app to record video from my web cam, audio via Audacity and then Camtasia for recording the screen. Then I piece it all together within Adobe Premiere Pro again. ## Thoughts Overall my workflow might take a while but I've got into a rhythm now and I think it produces some good content. 😉 ### Running the Glasgow Azure User Group Virtually URL: https://www.techielass.com/running-the-glasgow-azure-user-group-virtually-2/ Last updated: 2023-12-06T08:17:22.000Z Since founding the [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com) back in 2017 we've held 17 meetups in person, however with the current COVID-19 lockdown situation hosting the April 2020 event in person wasn't feasible. So rather than cancel the event altogether I went with the plan of hosting the event online via [Microsoft Teams](https://www.microsoft.com/microsoft-365/microsoft-teams/group-chat-software?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com). I've been using Microsoft Teams for 2 years now for nearly 99% of my work meetings, so it's a platform that I am very familiar with and very comfortable with. So picking a platform to use to host the virtual meeting. Back when I set up the Glasgow Azure User Group, I made the conscious decision to set up a Office 365 tenant for the group, I wanted a place that was separate from my work or personal environments. At the time Microsoft were offering free licenses, so we made use of that. However, as the programme expired at the start of 2020 we had to look at alternatives. I chosen to stick with Office 365 and go for E1 licenses to keep running the group. I'm glad to have went with the E1 licenses as it allows us, if we want to look at running [Microsoft Teams Live Events](https://www.techielass.com/teams-meeting-or-teams-live). *You don't need to go for the E1 license if you want to run a Office 365 tenant for your user group though, you can choice to go for something like Business Basic or Business Premium.* ## Setting up Teams After deciding I wanted to hosted the meetup via a Microsoft Teams meeting one of the things I wanted to make sure of was that it was easy for people to join and that the tenant was set up to allow easy access for those that weren't part of the tenant. I think I achieved that to be honest, one person had an issue initially but after a quick email exchange we were able to get them logged in. There were a few settings that tweaked within the Microsoft Teams Admin Centre. *Now I am not a Teams expert, so I might have missed things or done things wrong but this is what I've set up, so please feel free to comment and make suggestions/improvements.* I ensured that [annoymous users could join Teams Meetings](https://docs.microsoft.com/microsoftteams/meeting-settings-in-teams?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com#allow-anonymous-users-to-join-meetings). ![Microsoft Teams Annoymous join](https://www.techielass.com/wp-content/uploads/2020/05/teams-annoymous.PNG) I [turned off the lobby](https://docs.microsoft.com/microsoftteams/meeting-policies-in-teams?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com#automatically-admit-people) and set it so that everyone could join the meeting without being approved. ![Microsoft Teams Lobby Off](https://www.techielass.com/wp-content/uploads/2020/05/teams-lobbyoff.PNG) ## Creating the meeting We had over 100 people sign up to attend our event and I didn't want to have to invite each of those people to a meeting, it would have been a bit of a nightmare to manage and also would potentially be a risk with everyone seeing each others email addresses. So I set up the meeting, invited Gregor and our speaker to ensure they both had presenting rights and any control rights to manage anything within the meeting. And then I just took the meeting invite URL that teams had created and shared that with others. Again this method seemed to work without an issue, people were able to join from their end and choose whether they wanted to use the client, a web browser, and even choose which account they could join under, work, personal or annoymous. ## Quiz time For as long as I can remember we've ran a quiz at the end of our in person meetings and I wanted to ensure we still did that with our virtual event. We even had a sponsor that was willing to pay for the prize, so I wanted to make sure I executed the quiz just right. I use an app/platform called \[Kahoot\]\[[https://www.kahoot.com](https://www.kahoot.com/?ref=techielass.com)\] to run the quizzes normally and know it's popular with a lot of groups. I wanted to make sure I could operate the quiz without any issue, so I did extensive testing and even recorded it, so others could do the same for their events. From the feedback and response the quiz went down well. 👍 ## Room for improvement One thing I need to look into further is ensuring attendees join as participants and not as presenters. At the meeting everyone joined as a presenter, which gives them control to mute everyone, present, or remove others from the meeting. Now you can manually change this within the meeting, by right click on the user, and saying change to participant, but with large meetings that's a large job. I'll need to dig into this more, as ideally I'd only want me, Gregor and the speakers to be listed a participants. At the meetup I *didn't* record the session, rightly or wrongly I thought it wasn't wise to record without everyone's permission and unfortunately I hadn't collected that properly. Which I know some people are disappointed by. Our next meetup is scheduled for June and I'm not sure if we will be in person or virtual then, it will all depend on the advice from the Scottish Government, but when people sign up for tickets I am asking for their consent to record the session. Our tenant has yet to receive the "Raise your hand" feature the Teams PG are working on or the [3x3 video view](https://www.microsoft.com/microsoft-365/roadmap?filters=&searchterms=63341&WT.mc%5Fid=techielass-blog-salean&ref=techielass.com), but I know both are in the pipeline, again hopefully if we are to run a virtual event both will be available to us. ## Final Thoughts It was nice being able to include people who aren't based in Glasgow and also bring together the "usual" attendees that we see at our meetups. The virtual meetup is a nice alternative to in person events at the moment but I am looking forward to the time when we can all meet in person again, swap stories, share pizza and stickers. As I said earlier our next meetup is scheduled for the 24th June, I'm working on confirming the speakers. If you would like to join us you can [sign up for a ticket](https://www.eventbrite.co.uk/e/glasgow-azure-user-group-19-tickets-104009814154?aff=techielassblog&ref=techielass.com). ### Azure Terminology URL: https://www.techielass.com/azure-terminology/ Last updated: 2022-09-14T13:03:31.000Z When I first started learning Azure there was a lot of terminology to learn and understand, new names for things, new technology, and lots of acronyms that went with those new things! Understanding some of these new terms and how they all fit together took me some time to figure out. So let's walk through some of them, as they are vital to understand these terms and technology both for when you are designing architecture in Azure and also sitting some of the [Azure certifications](https://www.microsoft.com/learning/azure-exams.aspx?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). ### Azure Region An Azure region is a set of datacentres within a defined perimeter. Now lots of people want to know what the perimeter is but Microsoft doesn't share that information externally and to be honest even as an employee, I don't have access to that information. There is generally speaking two regions close together as well, so think here in the UK we have the UK West Region and the UK South Region. The two regions are at least 300 miles apart when it is possible. Within each region the products/services that are available can vary, some regions get new features sooner than others. We have a great tool which helps to show you which [products are available by region](https://azure.microsoft.com/global-infrastructure/services/?regions=all&products=all&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). ### Availability Set As with any datacentre there are times when hardware fails unexpectedly, there is unplanned downtime or there is planned downtime, and your infrastructure needs to be able to handle that. Not all of your workloads will require to be highly available and resilient, but you should planned for any unexpected or expected events and ensure those workloads that require to be available all the time are available. Utilising [Availability Sets](https://docs.microsoft.com/azure/virtual-machines/windows/tutorial-availability-sets?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json&WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com#availability-set-overview) can help with this. Utilising availability sets within Azure is a way of ensuring that not all your virtual machine (VM) resources are hosted across multiple servers, racks, storage units and network switches, which will help to ensure that if something unexpected happens on a subset of your VMs are affected and your workload is still operational. Utilising availability sets provide you with a [99.95% SLA](https://azure.microsoft.com/support/legal/sla/virtual-machines/v1%5F9/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) and help protect you against a hardware failure within datacentres. You can find a tutorial on how to deploy your VMs using PowerShell [here](https://docs.microsoft.com/azure/virtual-machines/windows/tutorial-availability-sets?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). ### Availability Zone Another option to help provide reliability and protect from failures within your VM workloads is something called availability zones. Your virtual machines within an availability zone are hosted within different physical locations within an Azure region. Helping to protect you against an entire data centre failure and utilising them provides you with a [99.99% SLA](https://azure.microsoft.com/support/legal/sla/virtual-machines/v1%5F9/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). There are tutorials available to help utilise availability zones available [here](https://docs.microsoft.com/azure/virtual-machines/windows/create-portal-availability-zone?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). ### Proximity Placement Groups We've all had an workload that needs has multiple components to it and they need to have the fastest connection between those parts or the whole thing just falls apart and is a miserable experience for the end users (and the IT department). If you have to implement that kind of workload within Azure you don't have a say as to where those workloads go in the datacentre, you don't get to pick the rack or shelf our workloads sit it and that can lead to issues. However, making use of [proximity placement groups](https://docs.microsoft.com/azure/virtual-machines/linux/co-location?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) helps resolve that as it helps to keep Azure compute resources located physically together. If you want to look into implementing proximity placements groups check out our [Azure CLI implementation guide](https://docs.microsoft.com/azure/virtual-machines/linux/proximity-placement-groups?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). ### Remember Some of your workloads will need high availability, some will need a specific level of high availability while others will not need any high availability at all. Deploy the solutions as necessary. Make sure you understand the terminology, benefits and costs of each, it could save you late nights and mean the difference between a pass and fail in an exam. ### Building a new PC URL: https://www.techielass.com/new-pc-build/ Last updated: 2025-06-06T09:53:48.000Z Four or five years ago I built myself a new desktop PC, it was built for my photo editing and my husband's gaming needs. At the time I remember spending a lot of money on it, and back then it ran fine. It was a beast in terms of spec but it had enough grunt that did what I wanted it to do and has served me well over the years. However, over the last year I've noticed it's gotten slow, it's gotten a bit temperamental. Below is the spec I am currently running and I found some of the prices I paid for this! | Type | Item | Price | | ---------------- | ------------------------------------------------------- | ------ | | **CPU** | Intel i5-4590 CPU @ 3.30GHz | | | **CPU Cooler** | Raijintek Aidos Direct Contact CPU Cooler - Black | £12.49 | | **Motherboard** | Asus Z97-K | £76.09 | | **Memory** | Kingston 8192 MB (DDR3-1600) | £43.06 | | **WiFi Adapter** | Asus PCE-N15 adapter | £0.00 | | **Storage (OS)** | KINGSTON SH103S3120G | | | **Storage** | Western Digital | | | **Storage** | Samsung | | | **Storage** | Seagate | | | **DVD Drive** | Unknown brand | | | **Video Card** | NVIDIA GeForce GTX 970 (GM204) @ 1113 MHz | | | **Case** | Antec VSP000 Silenced Tower Case - Black | £33.29 | | **Power Supply** | Antec VP-Series 550W Fully Wired Efficient Power Supply | £41.37 | I've put off spending the money on a replacement as I don't use it that often anymore and this time last year we moved into a new house so we've been concentrating on housey, grown up stuff. However, with the current lockdown situation due to COVID-10 my husband has been gaming again and I've been doing more and more video/graphic editing and sometimes have to put my work laptop (Surface Book 2) to the side while it renders videos and use my home PC to do some work stuff and the lack of grunt in it is starting to frustrate me. Spending a lot of money on a new PC isn't something I want to do, however I want to ensure I value for the money I do spend and that I am not going to have to replace it all again in a year or two by going to cheap. | Type | Item | Price | | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | | **CPU** | [AMD Ryzen 7 3700X 3.6 GHz 8-Core Processor](https://uk.pcpartpicker.com/product/QKJtt6/amd-ryzen-7-3700x-36-ghz-8-core-processor-100-100000071box?ref=techielass.com) | £269.99 @ Amazon UK | | **Motherboard** | [MSI B450 GAMING PRO CARBON AC ATX AM4 Motherboard](https://uk.pcpartpicker.com/product/t797YJ/msi-b450-gaming-pro-carbon-ac-atx-am4-motherboard-b450-gaming-pro-carbon-ac?ref=techielass.com) | £124.80 @ AWD-IT | | **Memory** | [Team NIGHT HAWK RGB 32GB (2X16GB) DDR4 PC4-25600C16 3200MHZ](https://www.overclockers.co.uk/team-group-night-hawk-rgb-32gb-2x16gb-ddr4-pc4-25600c16-3200mhz-dual-channel-kit-rgb-black-tf1d-my-0a4-tg.html?ref=techielass.com) | £167.69 @ Overclockers.co.uk | | **Storage** | Toshibia Kioxia RD5000 500GB M.2 2280 PCI-E | £85.69 @ Overclockers | | **Storage** | [Western Digital Blue 1 TB 2.5" Solid State Drive](https://uk.pcpartpicker.com/product/GTCD4D/western-digital-blue-1tb-25-solid-state-drive-wds100t2b0a?ref=techielass.com) | £109.36 @ More Computers | | **Storage** | Toshiba P300 3 TB 3.5" 7200RPM Internal Hard Drive | £63.99 @ AWD-IT | | **Video Card** | NVIDIA GeForce GTX 970 (GM204) @ 1113 MHz | Reusing current graphics card | | **Case** | [Corsair 110R ATX Mid Tower Case](https://uk.pcpartpicker.com/product/dC6qqs/corsair-110r-atx-mid-tower-case-cc-9011183-ww?ref=techielass.com) | £54.97 @ Laptops Direct | | **Case Fan** | [ARCTIC P12 PWM PST 56.3 CFM 120 mm Fan](https://uk.pcpartpicker.com/product/68WfrH/arctic-p12-pwm-pst-563-cfm-120-mm-fan-acfan00120a?ref=techielass.com) | £4.99 @ Amazon UK | | **Case Fan** | [ARCTIC P12 PWM PST 56.3 CFM 120 mm Fan](https://uk.pcpartpicker.com/product/68WfrH/arctic-p12-pwm-pst-563-cfm-120-mm-fan-acfan00120a?ref=techielass.com) | £4.99 @ Amazon UK | | **Power Supply** | [SeaSonic CORE GM 650 W 80+ Gold Certified Semi-modular ATX Power Supply](https://uk.pcpartpicker.com/product/sMrYcf/seasonic-core-gm-650-w-80-gold-certified-semi-modular-atx-power-supply-core-gm-650?ref=techielass.com) | £80.47 @ Scan.co.uk | | *Prices include shipping, taxes, rebates, and discounts* | | | | **Total** | **£966.94** | | I ran through my thinking and the list of parts on a YouTube live stream earlier today, which you can view here: However I've also listed out my thinking below: **CPU** I'm a Intel fangirl, I've always built my machines around that but this time I am going AMD, I think the performance and price that they offer now is a winner. I originally looked at the AMD 2700 which is the previous generation processor but after looking at it the 3700, the current generation offers good value for money. As well as giving me 8 cores and 16 threads. My current CPU is 4 cores and 4 threads, so definately an improvement. Video rendering uses the CPU quite a bit so this should be beefy enough without breaking the bank. **CPU Cooler** You'll notice I don't have a 3rd party cooler in my list. I've toyed with the idea of getting one and might do in the future, but the stock AMD coolers are pretty good and will certainly run find for me right now. Over time I might have to upgrade and it might be sensible to do so, but I shall run stock for the time being. Which is a chance as I haven't ran stock coolers for a long time, but then again Intel don't seem to supply good coolers, AMD seem to. **Motherboard** When you look at systems others are building they revolve around the MSI B450 range. It seems a solid board that offers good performance and works with the AMD 3000 CPU series. I've went for the Gaming Pro Carbon version as it has Wi-Fi connectivity built directly in, so I don't have to go and add an another component to give me that functionality. **Memory** I've went for 32GB of RAM here, because when you look at some of the system requirements for Adobe Creative programs such as the Premiere Pro they say the recommended is 16GB or more. So these are beefy programs, and if you want to have a browser open or play music in the background you can suddenly start to hit a dead end. I've chosen Team memory as again, you see a lot of people building systems with this brand and it seems to offer a good level of speed, capacity and some lights for a good price point. **Storage** I've got a mash of storage going on here. I've chosen a Toshiba M2 drive as the one for my Operating System (Windows 10) install, most people will go with the Samsung 970 EVO M2 drive, and I did have that on my list initially but after reading the specs and viewing the price point I thought it was a little expensive. The Toshiba is only a little slower in terms of read speeds and although much slower on write speeds, it's still a very reasonably price drive and I doubt I'd really notice the speed difference. I've also got a SSD in here for a working drive, where I can get some fast storage. And I've also got an old HDD there for storage needs. Just to keep things, cause we all hoard right. 😂 **Video Card** In my current setup I have a NVIDIA GeForce GTX 970 card, now it's not the most powerful and I actually bought it second hand when the hubby complained Football Manager needed something better to play some of the 3D match views he was using. And to be honest the card has done a good job for our needs. I probably do need to upgrade it and get something that is a bit more powerful, but graphics card are a bit of a minefield. What I know is that I have a good system around it and when I have a bit more £££ and understand my needs a bit better I can go and hunt for something else. **Case** My case isn't the most exciting but cases have never really excited me and I'm not one of these people who love to have lights showing in the case, albeit this case has a clear side and some of my components have RGB lights built in. This case ticks my boxes, it has 5.25 drives, 2.5 drive space, cable management features, and a place for the PSU to sit comfortably. The case only has 1 fan that is included with it, but there is space for more fans. I'm going to order 2 other fans to build into the case and if I need more I have a bunch in the current case I can remove and use then maybe purchase something new/better later once I understand what I need. **DVD Drive** One of the games I play, Farming Simulator was purchased as a traditional box and DVD, so I need a DVD drive for that. I've got one in my current set up, so I will take that and use that. ## Conclusion Overall with some bargain hunting and reusing parts, I'll come under £1000 with this build. Which is where I wanted to be. Hopefully I can get all the parts and get it up and running. ### Sharing tips when presenting URL: https://www.techielass.com/presenter-tips/ Last updated: 2023-12-08T08:29:29.000Z A while back I started a small video series on my [YouTube](https://www.youtube.com/c/Techielass?ref=techielass.com) channel around Presenting Tip and PowerPoint tips. So far I have seven different videos available on that [playlist](https://www.youtube.com/playlist?list=PLbjernQTVXisMi7dG%5FvRyGFm5Jw0bquC5&ref=techielass.com), from things like [Using your Surface Pen as a slide changer](https://youtu.be/2gD9WtqhiXY?ref=techielass.com) to [Reusing slides within PowerPoint](https://youtu.be/X-dGD7BHOOo?ref=techielass.com). Please do check the playlist and videos out and let me know what you think. If you have any questions you'd like me to address please let me know. ### Home Office Setup URL: https://www.techielass.com/home-office-setup-2020/ Last updated: 2023-12-06T08:24:04.000Z My home office setup has changed quite a bit over the last few years so I thought I'd share what it looks like now. My home office setup has taken me a few years to build up, I didn't just buy or get the kit that I used in one go. I'm not sure it's a complete setup, there are still some things that I'd love to add and do in the office but right now it suits the majority of my needs and I can do what I need to work wise. Above is a picture of my setup now, so let's walk through it. ![desksetup-withnumbers](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/desksetup-withnumbers.jpg) 1. The [Surface Book 2 - 13.5"/ 512GB / Intel Core i7](https://amzn.to/2xq2xy8?ref=techielass.com) is my work device 2. [Lenovo ThinkVision P27 u](https://amzn.to/2Xzwsik?ref=techielass.com) 3. [Surface Ergonomic Keyboard](https://www.microsoft.com/en-gb/p/surface-ergonomic-keyboard/90pnc9ljwpx9?cid=msft%5Fweb%5Fcollection&activetab=pivot%3aoverviewtab&ref=techielass.com), this is the first time I've ever had an Ergonomic keyboard and I never thought I would enjoy using it and I am actually enjoying it 4. [Surface Arc Mouse](https://amzn.to/2Vq7Yp1?ref=techielass.com), I really love this mouse, it's really comfortable to use all day everyday 5. [Stream Deck](https://amzn.to/3ch6EeW?ref=techielass.com) \- this is a recent addition to my home office setup and I am hoping to use it for presenting remotely and helping with some workflows that I have in terms of editing content 6. [Surface Dock](https://amzn.to/2ygTek4?ref=techielass.com) \- I use the Surface Dock to plug my work laptop into and the connect to the peripheral that I have on my desk 7. [Rode NT-USB Microphone](https://amzn.to/3cedDoO?ref=techielass.com), I am loving this microphone and the audio quality that it is now giving me when I am on conference calls or recording content. It's attached to the [RODE PSA1 Boom Arm](https://amzn.to/2XFcG53?ref=techielass.com) to help position the microphone I need it and when I don't 8. [Neewer 480 LED Video Light](https://amzn.to/2XzvG4U?ref=techielass.com), I have two Neewer 480 LED video lights in my room, one in front of my and there is another just off to the right off the photo. These lights help when I am creating content and keep my picture clear and well lit 9. [Amplifi Instant Home Mesh Wifi](https://amzn.to/3ehbwSV?ref=techielass.com), I have the Amplifi Instant WiFi kit in my house and have been very impressed with it, I have put the extender node in my home office to help with the WiFi signal in the upstairs of my house, if you are interested in reading more I wrote a [review](https://www.techielass.com/amplifi-instant-review) last year 10. My desk is the [Ikea Idasen](https://www.ikea.com/gb/en/p/idasen-desk-sit-stand-brown-dark-grey-s19280958/?ref=techielass.com), which I really love. It can be moved up and down to allow me to adjust my seating or stand when I want to stretch my legs during the day. 11. My webcam is the [Logitech C920](https://amzn.to/2XXHPAG?ref=techielass.com), which I've had for a while. I've found the video quality really has improved since I've added some lighting to the room. I use the webcam for a lot of meetings and recording videos. Also scattered around my desk are some office friends, I have [Channel 9](https://channel9.msdn.com/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) buddies, a little Linux Penguin, a Unicorn my Mum got me, Bit (the [Azure Advocate](https://developer.microsoft.com/advocates/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) mascot) and some Watchover Voodoo dolls. ### Create a Microsoft Teams Live Event URL: https://www.techielass.com/create-teams-live-event/ Last updated: 2021-03-13T11:48:27.000Z In a previous article I talked about a [Microsoft Teams Meeting vs a Microsoft Teams Live event](https://www.techielass.com/teams-meeting-or-teams-live). Today I want to talk about how to set up a Microsoft Teams Live event and what the different options you are presented with mean. Microsoft Teams Live events allow you to present to a large scale audience internally or externally to your organisation, it is in effect Microsoft Teams' streaming platform. The Live events feature is available to anyone that has an [Office 365 E1](https://www.microsoft.com/microsoft-365/business/office-365-enterprise-e1-business-software?activetab=pivot%3aoverviewtab&WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) or above license. There are a lot of different settings to think about when setting up your Teams Live event and in this video I walk you through those settings. ### Remove Typing Noises from your Recordings URL: https://www.techielass.com/remove-typing-noises-from-your-recordings/ Last updated: 2021-03-18T19:43:58.000Z How many times have you recorded a demo or delivered a presentation remotely and and you can hear the keyboard typing or mouse clicks in the background? It can be quite distracting can't it? Now there are different techniques that you can use to remove these noises during post production, however that is often time consuming and has varied results. My colleague, [Dean Bryen](https://developer.microsoft.com/advocates/dean-bryen?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) recommended a tool that can be installed and remove the noise during your recording or presentation! That tool is called [Krisp](https://ref.krisp.ai/u/u9acade493?utm%5Fsource=refprogram&utm%5Fcampaign=141614&locale=en-US). When you download and install the tool it creates a new microphone that overlays the noise cancellation technique over the input from your actual microphone. The microphone can be selected inside software such as Microsoft Teams, Zoom, Skype, Audacity, etc. ![krisp-mic](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/krisp-mic.gif) The software had various different price points, from Free to Enterprise. The free version allows you to use the software for a limited amount of time per week. However, if you get referred by an existing user you can get a free trial for the Pro version which doesn't have any limits on the desktop version. There is a version of the [Krisp](https://ref.krisp.ai/u/u9acade493?utm%5Fsource=refprogram&utm%5Fcampaign=141614&locale=en-US) software for iOS. If you wish to trial the Krisp Pro version you can utilise my \[referral code\]([Krisp](https://ref.krisp.ai/u/u9acade493?utm%5Fsource=refprogram&utm%5Fcampaign=141614&locale=en-US) and make use of it for 1 month. Give it a go and let me know how you get on and if you have any other tips please share them as well! 😀 ### Technology and Friends URL: https://www.techielass.com/technology-and-friends/ Last updated: 2022-12-22T07:59:05.000Z Last year I was looking to guest appear on podcasts and put a call out to my connections. [Gary Short](https://duncodin.it/?ref=techielass.com) introduced me to David Griad and his show - [Technology and Friends](https://www.youtube.com/channel/UCASAzlGrkWThoShPg6IMNeg?ref=techielass.com). David and I tried to meet up in person last year but never managed to make our schedules worked. With the recent pandemic, David reached out to me recently to arrange an interview and guest appearance on his show remotely. I jumped at the chance to have a chat with David. We had a great chat about the current situation and how it's changed my role slightly. Go and grab your favourite drink and tune in to hear our chat. ### Getting started in IT - Your IT Career Questions Answered URL: https://www.techielass.com/it-questions-answered-getting-started-in-it/ Last updated: 2021-03-14T08:03:14.000Z Back in November 2018 I became a [STEM Ambassador](https://www.techielass.com/stem-ambassador) and ever since then I've always looked forward to interacting with the young people and finding out about their interest in the IT industry. I enjoy being able to provide advice where I can as well. However, with the current pandemic and stay at home orders 🏡 my opportunity to interact with the young people in person isn't possible. I wanted to still interact and pass on my knowledge at this time and with the help of [Toni Scullion](https://www.linkedin.com/in/toni-scullion/?ref=techielass.com) and some of my teacher friends I gathered questions that young people had about a career in IT. In this video I talk a bit about my career journey and then answer the questions sent into me. I really enjoyed putting this video together and I hope it is beneficial to people looking to embark on a career in IT. If you have any feedback or further questions please let me know either by heading over to the [question submission form](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR5zk72Cy%5FZ1HvTYmD0cy9RpUMkVVVFQ0OE1KVDhWU0ZVNTVCUlNGVVhXWi4u&ref=techielass.com) or drop me an [email](mailto:techielass@microsoft.com). If you are looking to embark on a career at Microsoft check out our [career website](https://careers.microsoft.com/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com), it has information related to students, graduates or people who are already in the IT industry and looking for their next role. ### Using a Jabra dongle with another headset URL: https://www.techielass.com/jabra-headset-and-dongle-for-stronger-connection/ Last updated: 2021-03-30T08:29:13.000Z The other night I was tagged into a Twitter thread about headsets and the new range of [Jabra Evolve 2](https://www.jabra.co.uk/business/office-headsets/jabra-evolve/jabra-evolve2-85?ref=techielass.com##28599-989-999) that is now out and I got talking to [Andreas Villumsen](https://www.linkedin.com/in/andreasvillumsen/?ref=techielass.com), who is the EMEA Marketing Manager for Jabra. He mentioned that you could pair a Jabra headest with a Jabra dongle to get a stronger Bluetooth connection and I was intrigued. If you follow me you'll know I am a huge fan of the Jabra range and have used several of the headsets over the years, my usual go to headset is the [Jabra Evolve 65](https://www.techielass.com/jabra-evolve-65-headset-review) when working from home, the connection dongle sits permanently plugged into my Surface Dock and my headset is stored on a hook under my desk. Being [Microsoft Teams Certified](https://products.office.com/en-us/microsoft-teams/across-devices/devices?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com), it's a great go to device for meetings. However lately, I've been using the [Jabra Elite 85H](https://www.techielass.com/jabra-85h) more, to listen to music while working and then using it as speakers on a call and using my [Rode NT USB microphone](https://amzn.to/3e4HSQS?ref=techielass.com) for audio. The Jabra Elite 85H is paired to my phone ([Samsung S9](https://amzn.to/2XlFoaD?ref=techielass.com)) and my [Surface Book 2](https://amzn.to/34kmBhz?ref=techielass.com). The [Jabra Elite 85H](https://amzn.to/2y19gOY?ref=techielass.com) isn't [Microsoft Teams Certified](https://products.office.com/en-us/microsoft-teams/across-devices/devices?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) but it works fine connected. I have noticed that sometimes the Bluetooth connection can be a bit temperamental, occasionally the sound comes out sounding like a robot. The tip that [Andreas](https://www.linkedin.com/in/andreasvillumsen/?ref=techielass.com) gave me suggested I could use any Jabra dongle and connect the Jabra Elite 85h headset to to make a stronger Bluetooth connection. And I can say it seems to have worked. I'm listening to music on the headset connected via my Jabra Elite 65 dongle and the connection is really good. In order to do that I had to pair my headset to the dongle. The steps I took were: 1. Opened up my [Jabra Direct](https://www.jabra.com/software-and-services/jabra-direct?ref=techielass.com) software 2. Click on the Bluetooth menu 3. Turned on my Jabra Elite 85h headphones 4. Held the multifunction button on the right earcup for 3 seconds 5. Click Start in the Jabra Direct software, so it would start to search for Bluetooth devices in the area 6. The devices paired together So if you have a dongle around and are looking to make a strong connection to your headset, give this a try! ![jabra-direct](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/jabra-direct.JPG) ### Weekly Update #34 URL: https://www.techielass.com/weekly-update-34/ Last updated: 2021-03-24T15:14:24.000Z I've released another weekly update video and hope you can all join me and tune in. For those that have watched before you will notice that I have new video graphics, those are from my long term friend and creative genius [Krist McKenna](https://www.linkedin.com/in/krist-mckenna-77a36723/?ref=techielass.com). Krist and I met years ago when he was my boss and we've stayed friends ever since. As I mentioned he is a creative genius and thrives on creating motion graphics and designs. If you'd like to have similar for your videos then you can reach him via [Ratworks](http://www.ratworks.net/?ref=techielass.com). There hasn't been a lot of [Azure](https://azure.microsoft.com/free/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) news this week, but you can keep up to date with any new happens [here](https://azure.microsoft.com/updates/?&WT.mc%5Fid=techielass-blog-salean&ref=techielass.com). I've noticed this week that alot of people are saying you should be using this pandemic and time at home to concentrate on learning a new skill and bettering yourself, in this week's video I share my opinion on that! ### Audio Only I'm going to start releasing my weekly update in audio only format along side the video, this way people who want to listen to podcasts can listen in on what I say each week easily as well. [![Listen on Spotify](https://www.techielass.com/wp-content/uploads/2020/04/spotify-podcast-badge-blk-wht-330x80.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![Download via RSS](https://www.techielass.com/wp-content/uploads/2020/04/rss-feed.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) To find out more about my vlogging equipment, check out my [article](https://www.techielass.com/vlogging). ### Weekly Update Audio URL: https://www.techielass.com/weekly-update-audio/ Last updated: 2021-03-21T16:14:21.000Z As many of you maybe aware I started doing a weekly update video in August 2019, where I share some news around [Azure](https://azure.microsoft.com/free/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) and talk about my week, my work, and the community interactions I've had. The format of these have always been video only. However, I am now going to be releasing the same weekly update as an audio option, so for those that want to enjoy my updates but in a audio podcast format they can. ### Where can I find the audio version? The Audio version is available on a couple of platforms that will grow as others recognise my new podcast: [![spotify-podcast-badge-blk-wht-330x80](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/spotify-podcast-badge-blk-wht-330x80.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) [![rss-feed](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/rss-feed.png)](https://anchor.fm/s/1b36d81c/podcast/rss?ref=techielass.com) ### Microsoft Teams Meeting or Microsoft Teams Live Event URL: https://www.techielass.com/teams-meeting-or-teams-live/ Last updated: 2021-03-29T07:42:17.000Z A few weeks ago I was in the situation where an in person meetup had to be changed to a remote one and the organiser wasn't sure what platform to use to host the meetup. I offered help in trying to facilitate the meeting by spinning up a Teams Live event. And I wanted to share some feedback in regards to this versus a Teams Meeting. ### Teams Meeting A lot of people might be familiar with a Microsoft Teams Meeting, I've got 12 scheduled in my diary this week either to catch up with internal team members or to catch up with external parties. A Microsoft Teams Meeting, allows everyone to join, present their video and audio, chat with each other over the instant messaging (IM) or [present their PowerPoint](https://www.techielass.com/present-powerpoint-in-teams-and-still-see-the-chat), or screens. I've always found this format to be really collaborative, it's very much supposed to represent an in person meeting. And I have to say the majority of my meetings for the past two days have been virtually over Microsoft Teams and they've all been a great experience, especially when we share our webcam view and can see each other. ### Teams Live Events Teams Live Events take a meeting to another level. They can be used by a single person presenting their content to a wide audience or can be used by full production teams presenting content. It is a really powerful medium especially if you are presenting to an audience that are geographically spread out or if you are pulling together complex large scale meetings. Internally at Microsoft we have large Microsoft Teams Live Events broadcast from the headquarters in Seattle from our leadership team, which combines multiple cameras, presentations and presenters. The Live events feature is available to anyone that has an [Office 365 E1](https://www.microsoft.com/microsoft-365/business/office-365-enterprise-e1-business-software?activetab=pivot%3aoverviewtab&WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) or above license. ![teams-live](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/teams-live.JPG) With Live Events there are some things to bare in mind, both good and bad. Let's cover off the good points: #### Good - Provide a professional looking meeting/presentation to your audience through Microsoft Teams - The Live Event leverages [Azure Media Services](https://docs.microsoft.com/azure/media-services/previous/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) and [Azure Content Delivery Network](https://docs.microsoft.com/azure/cdn/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) to help distribute and scale the delivery of your event to your audience - Attendees can join from any device, browser, [Teams desktop app](https://docs.microsoft.com/microsoftteams/get-clients?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com), mobile (iOS and Android) - Live captions available for the audience if they wish, which has the ability to translate from the spoken language in to six others - A recording of the meeting can be created so that it can be shared afterwards #### Bad - You really need a multiple screen setup, running it from one screen probably isn't possible - From my experience, I think you need a moderator to help monitor questions from the audience and feed them to the speaker - The audience can't share their video or audio, the only interaction with the presenter is via the instant messaging section and only the presenter/production team can see those questions initially - Switching between different windows/content can be a bit tricky on one device and with one presenter ### Things to watch Within Microsoft Teams you can allow it so that anonymous users can join your meetings, however this setting can be turn off at an organisational level so if it doesn't work for you, you might have to speak to your IT team about the [Meeting Settings](https://docs.microsoft.com/microsoftteams/meeting-settings-in-teams?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) they have configured. As with all streaming media if the presenter doesn't have good bandwidth the quality of the content being presented can be quite poor, the video and general PowerPoint slides are very readable but when demo-ing say the [Azure Portal](https://azure.microsoft.com/free/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) it can become a bit blurry. ### Community Events I am hoping to run future [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com) events virtually on Teams Meetings until we can all meet in person again and I'm going with that format because I want to be able to have everyone interact, everyone can turn on their cameras and audio and talk. But for larger events, for large global events, I might prefer to go down the route of Live Events, to aid delivery of the content globally with the backend services that it uses. ### Call to Action I'd love to hear everyone's thoughts on Microsoft Teams for meetings and what has been successful and not successful for you. If you are still running Skype for Business in your organisation and would like to learn how to migrate to Microsoft Teams we have a great learning path on [Microsoft Learn](https://docs.microsoft.com/learn/paths/m365-teams-upgrade/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) that can help get you started. We also have a [learning path](https://docs.microsoft.com/learn/paths/m365-manage-team-collaboration/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) that can help you understand in more detail the power of Microsoft Teams. ***Sponsor*** ### Weekly Update #33 URL: https://www.techielass.com/weekly-update-33/ Last updated: 2021-03-24T15:13:41.000Z In this weekly update video I touch on Azure News, transforming the [Glasgow Azure User Group](https://www.gaug.co.uk/?ref=techielass.com) event this month and how I cam creating a video for STEM students. If you'd like to attend our virtual Glasgow Azure User Group this month, please sign up and we'll send you details - [https://www.eventbrite.co.uk/e/86103177923](https://www.eventbrite.co.uk/e/86103177923?ref=techielass.com). To send me questions to answer in my STEM video aimed at helping young people looking to have a career in IT send them into [https://aka.ms/questions](https://aka.ms/questions?ref=techielass.com). And if you'd like to grab a chat with me pick some time in my diary - [https://aka.ms/TechieLassOfficeHours](https://aka.ms/TechieLassOfficeHours?ref=techielass.com) In Azure news this week we've seen the [Azure Archive Storage Network expand](https://azure.microsoft.com/updates/morearchivepartners/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) and [Azure Backup now support SAP HANA backups](https://azure.microsoft.com/updates/azure-backup-solution-for-sap-hana-databases-is-now-available/?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com). ### References [Azure Backup now supports SAP HANA](https://youtu.be/THZir3NcAhw?t=17&ref=techielass.com) [Azure Archive Storage partner network expansion](https://youtu.be/THZir3NcAhw?t=34&ref=techielass.com) [Pluralsight free for the month of April](https://youtu.be/THZir3NcAhw?t=85&ref=techielass.com) [Glasgow Azure User Group plans](https://youtu.be/THZir3NcAhw?t=127&ref=techielass.com) [My STEM Project](https://youtu.be/THZir3NcAhw?t=204&ref=techielass.com) [My future plans](https://youtu.be/THZir3NcAhw?t=273&ref=techielass.com) [Join me for a chat](https://youtu.be/THZir3NcAhw?t=322&ref=techielass.com) ### Audio Only I'm going to start releasing my weekly update in audio only format along side the video, this way people who want to listen to podcasts can listen in on what I say each week easily as well. At the moment it is only available on Spotify but I hope to have it on a few more platforms soon. [![Listen on Spotify](https://www.techielass.com/wp-content/uploads/2020/04/spotify-podcast-badge-blk-wht-330x80.png)](https://open.spotify.com/show/34QAAvMLSYN09eOAu3j2b0?ref=techielass.com) To find out more about my vlogging equipment, check out my [article](https://www.techielass.com/vlogging). ### Azure Migrate - Assess Physical Servers URL: https://www.techielass.com/azure-migrate-physical-assessment/ Last updated: 2021-03-12T16:15:39.000Z [Azure Migrate](https://docs.microsoft.com/azure/migrate/migrate-services-overview?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) is a product that's been in the Azure portfolio since 2017, when it was first launched it was capable of helping customers assess their VMware estates and understanding how to move those on prem workloads to the Cloud. As the product has matured it has added new features and grown into the hub for organisations looking to move to the Cloud. At Ignite 2019 the team announced that Azure Migrate was adding the [new capability](https://docs.microsoft.com/azure/migrate/whats-new?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com#update-november-2019) of being able to assess and migrate physical server workloads that exist on prem to the Azure! I know from conversations that a lot of customers want and need this feature from an assessment and migration perspective. ### Assessment Assessing your servers and understanding what is in your environment and making sure you know how it all pieces together is important regardless of what migration strategy you are using to move to the Cloud with. I always encourage anyone thinking of adopting the Cloud to do an assessment of their environment. And an assessment is more than running a tool on your environment and getting a pretty spreadsheet of results out, it's speaking to stakeholders, it's speaking to suppliers, it's plotting out the next five or ten years for that application and understanding if you still want it, it's understanding what data you hold and what laws or standards you need to adhere to in storing that data, it's a million different things. However, the starting point is always running a tool through your environment to catalogue your servers and understand how they all interconnect. ### Using Azure Migrate on your physical servers To [assess your physical servers](https://docs.microsoft.com/azure/migrate/tutorial-assess-physical?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) and get data back into Azure Migrate for analysis the process is slightly different from how you assess virtual machines. In this short video I take you through that process: The Azure Migrate: Server Assessment tool can be installed on any server within your environment, physical or virtual as long as it's running Windows Server 2016\. The tool itself doesn't need to run on the servers you are assessing just be able to see them on your network. More information on the prerequisites you need to ensure are in place before assessing your physical servers check out the [official documentation](https://docs.microsoft.com/azure/migrate/tutorial-assess-physical?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com#prerequisites). ### Can I view my physical and virtual assessments together? If you set up one [Azure Migrate project](https://docs.microsoft.com/azure/migrate/tutorial-assess-physical?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com#set-up-an-azure-migrate-project) within your Azure subscription and then point your physical assessment tool towards that project *and* your virtual assessment tool to that project when you go to analyse the data it will all be together. So the data around your physical and virtual workloads will be in one view and you can assess them as they are on prem, as one big datacentre. There is no need to spin up seperate projects for the different types of servers unless of course that is how you want to set them up for cost or migration purposes. ### Call to Action The feature is currently in preview at the moment, and generally while Azure services or products are within that part of the [service lifecycle](https://www.techielass.com/service-lifecycle) I wouldn't recommend utilising them within a production environment, however I personally think this is a service you can use now. So don't delay, give it a go and evaluate your physical servers for a move to Azure! ### Women IT Pros EMEA Meetup April 2020 URL: https://www.techielass.com/womensitpros-emea-meetup/ Last updated: 2021-03-21T15:59:14.000Z [Tania Lima Pereira](https://techcommunity.microsoft.com/t5/user/viewprofilepage/user-id/268517?WT.mc%5Fid=tehielass-blog-salean&ref=techielass.com) has been hosting and running a Women IT Pro EMEA meetup for several months now and I've always enjoyed attending and this month I get to share my story with the audience! On the 8th April, at 11am GMT, I will be presenting to the group and sharing my story. The session is called **A female IT Pro story!** > My name is Sarah and I've been in IT for over 14 years. I've worked through various roles from being a 1st line helpdesk operator in a local council to becoming a Cloud Solution Advocate with Microsoft. I identify as an IT Pro, I love infrastructures, working with servers, working in governance and all these areas are my passion. I've made the transition from being a on prem engineer to a cloud engineer and I now help others on that journey. > > In my spare time I also run the Glasgow Azure User Group to help build a community local to me. Over the last 2 years we've gone from a handful of attendees to over 60 regular attendees. > > Come join me on this session where I share my story and you can share yours! 😊 Come and join us on Wednesday to hear my story and share yours. In order to join the session grab the meetup invite [here](https://techcommunity.microsoft.com/gxcuf89792/attachments/gxcuf89792/Connect-HoIT/355/1/%23WomenITPros%20EMEA%20April%202020%20-%20A%20female%20IT%20Pro%20story!.ics?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) which contains the [Microsoft Teams](https://products.office.com/en-US/microsoft-teams/group-chat-software?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) joining details and also will help place a reminder in your diary when to join. Alternatively you can join the meetup on the 8th April at 11am GMT by click on this [link](https://teams.microsoft.com/l/meetup-join/19%3ameeting%5FZmRjYjQ3M2ItNDMxYi00MDY5LWE1YjAtMWI2NTFiOTExMjRi%40thread.v2/0?context=%7b%22Tid%22%3a%2272f988bf-86f1-41af-91ab-2d7cd011db47%22%2c%22Oid%22%3a%22d789c8cb-e796-4b98-994e-615f5d33374a%22%7d&ref=techielass.com) And don't worry if you don't have the [Microsoft Teams](https://products.office.com/en-US/microsoft-teams/group-chat-software?WT.mc%5Fid=modinfra-0000-salean&ref=techielass.com) app installed on your device, you can join from your browser. ## Update If you missed the session but would like to view it you can, as it was recorded: ### Setting up OBS on my Surface Book 2 URL: https://www.techielass.com/setting-up-obs-on-my-surface-book-2/ Last updated: 2022-09-14T12:53:12.000Z I've been recently looking at doing more video recordings and I've seen tons of people in the past talk about a piece of software called [Open Broadcaster Software(OBS)](https://obsproject.com/?ref=techielass.com). Which is an open source piece of software that allows for video recording and streaming, it can do some fairly basic things out the box or let me do some cool stuff. I know my friend [Veronique Lengelle](https://www.twitter.com/veronicageek?ref=techielass.com) does some cool streaming with OBS on [Twitch](https://www.twitch.tv/veronicageek?ref=techielass.com). I've been looking at how I can do some "cooler", "better" things with videos I want to record and have been looking at using OBS for this. When setting it up on my Windows 10 Surface Book 2 device, I hit a few snags and wanted to share the workarounds I had to do in order to get things working. ### Setting up OBS #### Black Screen when setting is Display Capture After downloading the OBS software, I fired it up and tried to get it to capture the things on my monitor, but I was only able to get the Windows Capture to work. Whenever I set up a Scene to capture my display (monitor as a whole) I got a black screen. After a bit of searching, I found it was a common issue with [Windows 10 version 1909](https://docs.microsoft.com/windows-insider/at-home/whats-new-wip-at-home-1909?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) which is the version I am currently running on my Surface Book 2. A slight setting change seems to be effective in resolving it: 1. Open Windows Settings 2. Go to System > Display 3. Scroll to the bottom 4. open the "Graphics Settings" 5. Click on Browse 6. Select the OBS executable file (Default location: C:\\Program Files\\obs-studio\\bin\\64bit\\obs64.exe) 7. Once added, Click on its name then click on Options ![graphics-settings](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/graphics-settings.JPG) 8. Select Power Saving which is where your integrated card should be 9. Save it and Restart OBS #### Starting the output failed Now that I had the Display Capture issue sorted I started a test recording and hit another issue. > Starting the output failed. Please check the log for details. > Note: If you are using the NVENC or AMD encoders, make sure your video drivers are up to date. On launching the Device Manager on my device, I discovered that the driver on my NVIDIA GeForce GTX 1050 was from 2018! ![driver-details](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/driver-details.JPG) A quick trip over to the [NVIDIA driver download site](https://www.nvidia.com/Download/index.aspx?ref=techielass.com) pointed me in the direction of the latest driver. ![driver-download](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/driver-download.JPG) Once I installed the driver and restarted my laptop I launched OBS again and was able to start and stop a recording! ### Call to Action If anyone has any great tips or things I should set up within OBS please let me know! ### Present PowerPoint in Microsoft Teams and still see the chat URL: https://www.techielass.com/present-powerpoint-in-teams-and-still-see-the-chat/ Last updated: 2022-09-14T12:51:53.000Z [Microsoft Teams](https://products.office.com/en-US/microsoft-teams/group-chat-software?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) is the meeting and collaboration tool that is available within Office 365\. It is something I use daily, either to chat to colleagues, attend meetings, present at meetings, or make phone calls. And I speak to a lot of people who are transitioning from Skype or another platform to Microsoft Teams as their organisation moves to adopting more and more services within Office 365\. One complaint I hear quite a bit is that when presenting [Microsoft PowerPoint](https://office.live.com/start/PowerPoint.aspx?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) slides within Teams you loose the ability to see the chat window. I'm going to show you a way of still presenting your slide deck, and have access to the chat window to see what attendees are saying/asking. ### Sharing content in a meeting There are multiple ways of sharing content to your fellow meeting attendees. You can share your **Desktop** which shares your entire screen which includes all your notifications and other activities. You can share your **Window** which just so one window and no notifications. You can share a **Whiteboard** which allows you to collaborate with other users in real time. And the last option to share content with your fellow meeting attendees is share **PowerPoint**. When presenting a PowerPoint slide deck with fellow meeting attendees, most people, and I include myself in this bracket, open up PowerPoint, start the slide show and either share their desktop or window to allow others to see the slide deck. And this is when it presents a problem, the slide deck takes up all your screen and if you are on a laptop or only have one screen you can't easily see the Microsoft Teams chat window. Meaning your interaction with comments about your slide deck or even the odd "Thanks, but I need to drop off" message gets lost until you break out of full screen mode. To negate this I have started to get into the habit of sharing my PowerPoint slide natively in Microsoft Teams instead. ### Share PowerPoint slides in a meeting As I said there are multiple ways of sharing content with your fellow meeting attendees, one of them is to share your PowerPoint slide deck with them. The **pros** of doing this are: - Your meeting attendees can move around to different slides without interrupting the main presentation - You can still see the chat window, or fellow attendees video feed, so you can get feedback as you present The **cons** of doing this are: - You don't get the PowerPoint presenter notes view with this method so if you rely on your notes it maybe an issue So to use this feature, join the meeting as normal. Click on the sharing button as you would normally do. ![teams-sharing](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/teams-sharing.png) You'll be presenting with a selection of options, near the right hand side you will see PowerPoint and a list of recently opened PowerPoint presentations. There will also be a Browse button if you don't see the one you are looking for. This feature works best if your PowerPoint files are either in your team SharePoint site or your OneDrive. If it isn't in one of those locations you can upload it. ![teams-sharing-1](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/teams-sharing-1.png) Once you pick the PowerPoint you want to present you'll see the slide deck display within the Microsoft Teams window. ![teams-sharing-2](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/teams-sharing-2.png) You can move slides on either with the arrow keys on your keyboard, or space bar like you would within PowerPoint itself. There are also some arrows on the screen in Teams you can use. As I mentioned earlier using this option allows your fellow attendees to move through the presentation at their own pace without interrupting the main presentation, however if you don't want this to happen you can control that also. In the left hand side of your screen you will see a control bar that allows you to move slides, see what slide you are on versus what is left, stop the presentation and the small eye button can stop others from moving on at their own pace through the PowerPoint presentation. ![teams-sharing-3](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/teams-sharing-3.png) With this method you have access to the chat, as well as being able to see your presenter notes. Plus you have access to annotate or draw on your slides if you are trying to highlight something to your audience. ![teams-sharing-5](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/teams-sharing-5.png) ### Set Who can Present Another great tip that I have come across is being able to configure who has presentation rights within your meeting when you first configure your meeting - check it out here [Microsoft Teams Configure Meeting Presenters](https://www.techielass.com/microsoft-teams-configure-presenters) What's the best presenting tip that you've come across? Please share! ### Focus Assist within Windows URL: https://www.techielass.com/focus-assist/ Last updated: 2023-12-07T11:44:44.000Z Built into Windows 10 is something called Focus Assist, it's a Do Not Disturb mode that hides notifications. It's automatically activated on Windows 10 when you are playing a game or mirroring your screen however you can also turn it on or schedule it to turn on at certain times to suit your working routine. ### How to Enable Focus Assist As I said you can manually toggle Focus Assist on and off as you need during the day. I regularly turn it on to be free from distractions when I work one some things (in fact I have it turned on at the moment while I write this blog). To turn it on (or off.) Click on the notification icon on the taskbar in the right hand corner. ![focus-assist](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/focus-assist.png) When you click on that icon, you will load the Notifications and Quick Actions Side bar, here you will see a button for Focus Assist, you can click on that and turn it on or off. You have three options, Off, Priority Only, or Alarms Only. ![quick-actions](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/quick-actions.png) Now you can just use these modes as they are and they will stop your notifications and give you some peace and quiet to continue on your task, or you can look to customise them to suit your needs even more. ### Focus Assist and Priority List There are times when you need to quieten down your notifications but there are some people that you always want to be able to reach you regardless of what you are doing. Those people could be your boss or even your family and this is where the priority list can come into play. You can configure it so that your notifications are just restricted to those people. To configure your Priority List, click on the notification icon on the task bar in the right hand corner and then right click on the Focus Assist button in the Quick Actions panel. You'll get a mini menu open, click on Go To Settings ![priority-list](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/priority-list.png) You'll now have the Focus Assist Settings open on your screen. Under the Priority only section you will see a link "Customize your priority list" ![priority-list-1](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/priority-list-1.png) Clicking on that will allow you to customise what notifications you consider a priority, if you have [Your Phone](https://www.microsoft.com/p/your-phone/9nmpj99vjbwv?WT.mc%5Fid=techielass-blog-salean&activetab=pivot:overviewtab&ref=techielass.com) enabled between your phone and PC you can tweak the notifications you receive. You can choose the people you want to receive notifications for, and you can choose Apps you still want to get notifications from. ### Schedule Focus Assist You can also schedule Focus Assist to come on and off during certain hours. ![priority-list-2](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/priority-list-2.png) This is a great way of making sure you have focus time each day without any disruptions. You are able to configure these times to suit your needs and schedule. ### Call to Action Start using Focus Assist today and see how it helps your productivity! ### Jabra Elite 75t Headset Review URL: https://www.techielass.com/jabra-elite-75t/ Last updated: 2024-10-23T15:01:53.000Z I recently got my hands on a set of [Jabra Elite 75t](https://amzn.to/3p3dU77?ref=techielass.com) headphones. These are wireless headphones designed to be compact, and great for calls and music. ![jabra-75t-1](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/jabra-75t-1.jpg) ## Sound Quality I've been really impressed with the sound quality that these wireless headphone give off. I listen to music all the time, in the car, at home when I'm working, when I go to the gym, when I go for a walk. And I have quite a lot of meetings that I use a headset for in terms of work purposes. And really enjoy the sound that these headphones offer either from a music point of view or call quality perspective. I have a varied music taste so play music from Barbra Streisand and Ozzy Osbourne and the [Jabra Elite 75t](https://www.amazon.co.uk/Jabra-75t-Wireless-Bluetooth-Charging-Black/dp/B082931JKP/ref=as%5Fli%5Fss%5Ftl?keywords=jabra+elite+75t&qid=1584093711&sr=8-3&linkCode=ll1&tag=sarahshomepag-21&linkId=1abf3bf30c490a44523a2ba7d218f74f&language=en%5FGB&ref=techielass.com) make both sound really good. I have no concerns or complaints. ## Comfort The headphones are completely wireless, they aren't connected together, they fit into your ears independently of each other. Now Jabra say the headphones have been engineered to fit into your ear with no issue and stay there. I'll be honest, I've had some issues with the headphones coming loose. I don't have big ears and have found the headphones occasionally come loose, I've only had them fall out a few times and thankfully never lost them. The headphones come with three different sizes rubber buds and I've tried each of them and not found one that really fits my ears. It's a bit of a concern that I am going to lose them but it's not effect the comfort or sound quality overall. ![jabra-75t-2](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/jabra-75t-2.jpg) ## Setup Setting up the headphones to connect to my mobile phone (Samsung S9) was really easy and straight forward. I was also able to use the [Jabra Sound+ App](https://www.jabra.com/software-and-services/apps/jabra-sound-plus?ref=techielass.com) as well on my phone to personalise how I want the headphones to sound, check on the battery level and perform firmware updates on the headphones. I was also able to get the headphones to pair to my [Microsoft Surface Book 2](https://www.microsoft.com/p/surface-book-2/8mcpzjjcc98c?activetab=pivot%3aoverviewtab&WT.mc%5Fid=techielass-blog-salean&ref=techielass.com), and was able to listen to music while using my laptop and actually use them when I made [Microsoft Teams](https://products.office.com/en-US/microsoft-teams/group-chat-software?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) calls. The one thing I did notice though, when I had my Bluetooth turned on on my phone and headset was connected to my laptop AND my phone, when I tried to make a teams call I couldn't hear the other person speak but they could hear me speak. It was like the audio was attached to the phone while the mic was attached to the laptop. In the end I've gotten into the habit of turning off the Bluetooth on my phone before using Teams and everything works fine. ## Noise Cancellation I've always been impressed with what Jabra does in the noise cancellation category with their headphones. These headphones are no exception, they are great at cancelling out noise in open offices, airport lounges, or even outside. There is also the feature to turn the noise cancelling off so you can hear the noise around you while still hearing whatever is playing in your headphones. I've used this feature when I've been out and about walking and need to hear traffic and it's worked great. ![jabra-75t-3](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/jabra-75t-3.jpg) ## Battery Life These headphones are charged inside the case that comes with them. You plug in your USB-C cable into the case and the case and headphones are charged together. When your headphones are in the case and not plugged into a charging cable the case will still charge the headphones up. I have to say the battery life is really impressive, the case and headphones really hold their charge if you don't use them for a while. And the life of the battery when using this is impressive as well. Jabra claim you can get 7.5 hours of usage out of the headphones and an additional 28 hours out of the case. I haven't timed the life but I do know I've went for over a week without charging it while I've been travelling which is always a plus for me as I'm a nightmare at remembering to charge devices. ## Overview ![jabra-75t-4-1](https://storage.ghost.io/c/08/96/08960c71-63a2-449b-91b1-8d4628166dd2/content/images/2021/03/jabra-75t-4-1.jpg) I've been really impressed with these headphones. The music and call quality is top quality, which is a key feature of any headphones. As I suspected before I received the headphones keeping them in my ear has been a bit of an issue, but as it is hat season that has helped keep them in place. The headphones I have are black and so is the case. I'm not overly concerned with the headphone colour to be honest, but I wish the case had been a different colour. I've often "lost" it inside my backpack because it blends in with the darkness of the inside of my backpack. Having a reflective design or a different colour would be a welcome edition. The Jabra Elite 75t headphones are designed for office use or light outside use, Jabra have announced the [Jabra Elite Active 75t](https://www.jabra.co.uk/bluetooth-headsets/jabra-elite-active-75t?ref=techielass.com#/#100-99091000-60) which are designed to stay in while exercising and protect against sweat etc. So be aware of this if you are in the hunt for some wireless headphones and make sure you pick the ones you need. At the moment in the UK the [Jabra Elite 75t](https://www.amazon.co.uk/Jabra-75t-Wireless-Bluetooth-Charging-Black/dp/B082931JKP/ref=as%5Fli%5Fss%5Ftl?keywords=jabra+elite+75t&qid=1584093711&sr=8-3&linkCode=ll1&tag=sarahshomepag-21&linkId=1abf3bf30c490a44523a2ba7d218f74f&language=en%5FGB&ref=techielass.com) headphones are going for £169.00, which is quite steep but I think in line with other wireless headphones. ### A Walk Through Azure URL: https://www.techielass.com/a-walk-through-azure/ Last updated: 2021-03-11T14:01:44.000Z Earlier this year I was asked to visit Aberdeen, Scotland to do a presentation around the Azure basics or fundamentals to the [British Computer Society](https://www.bcs.org/?ref=techielass.com) group based there. I was looking forward to visiting Aberdeen and the group in person but unfortunately things have happened around the world that has meant we've had to adjust that. For those that tuned into my remote session here are bunch of resources to follow up on. ### Session Recording ### Slide Deck The slide deck from my presentation can be found on [SlideShare](https://www.slideshare.net/secret/F8HyogoiCAt3vM?ref=techielass.com). ### Further Reading The blog posts that my team and I write can be found at [ITOpstalk.com](https://techcommunity.microsoft.com/t5/itops-talk/ct-p/ITOpsTalk?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com), if there is ever anything you'd like to ask us or see us cover please do reach out, we'd be happy to help. [Cloud Computing Concepts](https://docs.microsoft.com/learn/modules/principles-cloud-computing/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) [Azure Regions](https://azure.microsoft.com/global-infrastructure/regions/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) \- find out which regions have an Azure datacentre and where the new ones are being built [Project Natick](https://natick.research.microsoft.com/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) \- a research project with a subsea datacentre in Orkney! [Azure Hybrid Benefit](https://azure.microsoft.com/pricing/hybrid-benefit/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) \- bring Windows Server and SQL server on-premises licenses with Software Assurance to Azure [Azure Arc](https://azure.microsoft.com/services/azure-arc/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) \- bring Azure services and management to any infrastructure [Azure Trust Centre](https://azure.microsoft.com/overview/trusted-cloud/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) \- look at how Azure deals with security, compliance and privacy [Create your Azure free account today](https://aka.ms/BCSfree?ref=techielass.com) \- have a go with Azure today and explore the free services we offer to help get you on that journey [Microsoft Learn](https://docs.microsoft.com/learn/browse/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) \- a free platform that will help you learn Azure as well as other Microsoft services [Azure on Pluralsight](https://www.pluralsight.com/partners/microsoft/azure?ref=techielass.com) \- free Azure learning [Microsoft Certifications](https://www.microsoft.com/learning/certification-overview.aspx?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) \- back up your knowledge with a certification! [Azure Total Cost of Ownership Calculator](https://azure.microsoft.com/pricing/tco/calculator/?WT.mc%5Fid=techielass-blog-salean&ref=techielass.com) \- price up your on prem workloads and what they would look like in Azure and see if there are any cost savings that could be made _Includes the latest 500 public posts. Use `/sitemap.xml` for the complete archive of public content._