Category: Azure

Using the latest version of the Azure CLI

In this blog post, I wanted to quickly cover how you can keep the Azure CLI up to date on your local system and within Azure. I use the Azure CLI as my go-to choice for writing deployment scripts in Azure. The reason you want to keep this up to date is for new additions as we all bug fixes for previous versions.

The Azure command-line interface (Azure CLI) is a set of commands used to create and manage Azure resources. The Azure CLI is available across Azure services and is designed to get you working quickly with Azure, with an emphasis on automation.

Its super simple to keep this up to date and you can do this by opening a PowerShell or Bash script window and typing:-

az upgrade

But instead of doing this maybe you want to keep it up to date without having to keep checking, you can also do this by using the following command:-

az config set auto-upgrade.enable=yes

But even better yet you can keep the Azure CLI up to date without ever being prompted by using the following command:-

az config set auto-upgrade.prompt=no

And that’s it, no you no longer need to worry about am I using the latest version of the Azure CLI.

You can read more on this at the following URL: –

Don’t forget to subscribe to my YouTube Channel.

Immutable storage for Azure Storage Blobs

If you have storage blobs containing things like backups or files then Azure now has Immutable storage available for Azure Storage Blobs generally available in all public regions.

Immutable means that it is unable to change or be changed and this means that if a customer has let’s say a backup then they can store this unchanged which for some companies is very nice to have.

To take advantage or to test out immutable storage lets go through what we need to do to test it out.

  • First of all, create a storage account.
  • Click on Containers and create a new container, give it a name and choose Private (no anonymous access).
  • Once created click on the name of your new container and then upload some files.
  • Once you have uploaded some files click on Access Policy on the left-hand side, notice we have 2 sections, Stored access policies and Immutable blob storage, under Immutable blob storage, select Add policy.
  • We now have 2 options to choose from
    • Time-based retention
    • Legal hold

Time-based retention allows us to add a number of days value between 1 day and 400 years, this also makes the files immutable.

Note:- You cannot change this value to 0 at any time. Once the interval you add expires – Upon the expiration of the retention interval, the data will continue to be in a non-modifiable state but can be deleted. Retention policy changes may require some time to take effect. 5 edits are permitted to the policy.

Legal hold retention means you add a tag to the blob container – each legal hold policy needs to be associated with 1 or more tags. Tags are used as a name identifier, such as a case ID, to categorize and view records.

You cannot delete or modify any files with the container whilst there is either a Time-based retention policy or a Legal hold policy, however if you delete the legal hold policy you can then delete or modify files with the container.
With Time-based retention, you can allow additionally protected appends and change the retention interval.
Time-based retentions need to be locked in order to be active and to add a lock click on the 3 dots and choose Lock policy.

Note:- Once you apply the lock you cannot delete the lock and just before you click save on applying the lock you will see the following reminder:-

I can see some people having the need to keep backups and have them immutable for a number of legal reasons and this new feature will be very handy for them.

Don’t forget to subscribe to my YouTube Channel.

GitHub Actions 101

In this blog post series I am going to cover my journey to learning about GitHub Actions.

To get started with learning about GitHub Actions lets start by describing what they are.

So what exactly are GitHub Actions?

“GitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub. Make code reviews, branch management, and issue triaging work the way you want.

GitHub Actions help you automate your software development workflows in the same place you store code and collaborate on pull requests and issues. You can write individual tasks, called actions, and combine them to create a custom workflow.

You can write your own actions to use in your workflow or share the actions you build with the GitHub community

Workflows are custom automated processes that you can set up in your repository to build, test, package, release, or deploy any code project on GitHub.

To get started with learning about GitHub Actions lets start off by listing some of the best resources I have come across for getting started.

Don’t forget to checkout my YouTube Channel.

A New Adventure

I’m very excited to share with you the news that I have accepted a position as an Azure Architect at a company in the Netherlands called Intercept.

Intercept has very recently been awarded Microsoft Partner of the Year 2020 in the Netherlands beating off strong competition from 18 other companies.

Intercept are Microsoft Azure Management Elite Partners and Gold Partners in 7 areas at present which is pretty impressive.

I start my new role on September 1st, I will be working in and around Azure daily and that is what I want to be doing, so to say I am excited is an understatement.

During Covid-19 I was furloughed due to a customer not being able to support remote workers and during this time a great number of people from Twitter and LinkedIn reached out to me asking if I would be interested in working with them. I thank each and every one of you as being furloughed was not much fun but to be asked if I would like to work with you and your companies, that was neat, to say the least.

I interviewed at a number of companies and had numerous fantastic offers given to me but ultimately my new role ticked more boxes than the rest and I couldn’t say no.

The job role as well as the people I had spoken to at Intercept were the deciding factors for me.

Again thank you to everyone who reached out to me, you have no idea how much I appreciated it, beers are on me if we manage to meet in person, going forward.

So I look forward to rolling my sleeves up again and changing career direction ever so slightly. I am a renewed Azure MVP and that’s where I want to be working and learning day to day. I cannot wait to get started and helping people even more in the future.

November 2017 I set myself a goal of becoming an Azure Architect and gaining as much knowledge as I could with Azure – the exams have helped and I look forward to using Azure daily.

I remind myself that I am less than 3 years into my journey, I have a blog, YouTube channel, 11 Azure certification badges as below and I all whilst being a development manager of 10+ people and not using Azure daily.

All it takes is hard work, goals, determination and you can do anything.

Don’t forget to subscribe to my YouTube Channel and you can find me on twitter @gregor_suttie.


DP-900 Azure Data Fundamentals

Happy to share that I sat the Beta for this exam and passed – here is a link to my study guide

Another exam done, and the data side of Azure is something I would love to explore further if I ever get the chance.

Don’t forget to subscribe to my YouTube Channel.

Think of the next person

I have been lucky enough to work with one manager who was very good at being disciplined and I wanted to share with you some of my learnings and talk about some stuff I have seen of late which really isn’t helpful and how easy they are to remediate.

So what is IT industry discipline, well it’s not something you read much about or will find in books, for example, it’s just something you pick up as you progress in your career and is much easier to pick examples of what not to do and then have a way to make things better.

Making things better should always be at the back of your mind in the IT industry, how can we make things better. I have a developer background so most of what I will talk about will cover some basic stuff yet I still see it on almost every project that I come across.

If you think about the above paragraph of making things better here is a good rule of thumb, imagine the next person who comes along has even less knowledge about whatever the thing is your doing, how can you help make their lives a little bit easier?

Here is a list of some examples

  • Don’t leave server folders lying around like New Folder, New Folder(1) – instead, have a proper naming convention and stick to it (think of the next person coming along).
  • Don’t leave crap lying around with xxx appended to the start or have DELETEME items lying around anywhere – instead source code everything and delete the rest (think of the next person coming along).
  • Don’t leave old deployments lying around instead archive them off, or have a process to delete the last x number of deployments (think of the next person coming along).
  • Don’t have one person having vital knowledge about a system in their head, document it, and share with as many people deemed reasonable – instead document everything, yes everything, there I said it, we all have things we should have documented yet we don’t (think of the next person coming along).
  • Don’t let people leave your company without doing a proper handover – companies have on-boarding processes, where is your off-boarding process? (think of the next person coming along).
  • Don’t move to the Cloud and suddenly we don’t have any diagrams – instead diagram your architecture and keep it up to date, have a process in place to check this diagram is still valid (think of the next person coming along).

The above is much more than technical debt, everyone has technical debt but this is about thinking about the next person.

We can improve, we should improve processes today not tomorrow or next week. Small improvements over time make a big difference.

I am going to be adding to this blog post over time as more things come to me but for now, think of the next person each time you do something on a project or when its related to work – go that little bit extra and before you know it you’ll enjoy working on the project when the processes in place are right.

Don’t forget to subscribe to my YouTube Channel.

Changing Azure VM’s Default Locale

I had a task at work where I was asked if I could ensure that all new Azure Virtual Machines created had the default of being set up for English (United Kingdom) rather than English (United States), not an unreasonable request by any stretch, so last week I had a look into doing just that.

The customer project I am working on uses Virtual Machines for people to do their work and the new Virtual Machines are deployed using Octopus Deploy with some ARM templates and PowerShell – all good so far.

My initial thought was I wonder why you can’t have this as an option to choose when installing a new Virtual Machine from the portal, turns out its unlikely because in fact there are a number of settings you need to change in order for the new Virtual Machine to truly be set up for English (United Kingdom) rather than English (United States).

I started off by looking at running some PowerShell into a custom extension and running that when the Virtual Machine starts, after a lot of fiddling around and trying things it does work.

The PowerShell I was using looked something like this:-

Set-WinSystemLocale en-GB
Set-WinUserLanguageList -LanguageList en-GB -Force
Set-Culture -CultureInfo en-GB
Set-WinHomeLocation -GeoId 242
Set-TimeZone "GMT Standard Time"

# restart virtual machine to apply regional settings to current user. You could also do a logoff and login.
Start-sleep -Seconds 40

Note that the above PowerShell works, the only caveat to this is that once the Virtual Machine is available to connect to you can check the system local from

Control Panel > Clock and Region > Region > Administrative Tab >

Above, we can see that the Virtual Machine still defaults to English (United States) but with a reboot that will change to English (United Kingdom).

We want this to be the case for all users who might log onto the Virtual Machine, we could use PowerShell DSC (desired state config) to do this or a number of other ways.

When I reached out to twitter for some help and guidance on this I had a number of replies but this one was the solution I went for

Stuart was very kind to even create a GitHub repo to tackle this issue and you can find his solution to the problem there, he adds a custom script variable, passes in the commands to run and a timezone variable and “it’s basically using a combination of stuffing your script into customdata and having additionalUnattendContent run that script in a first logon.

To wrap this up it works: –

  • using PowerShell
  • using a custom extension with a PowerShell script
  • or by adding content to an Arm Template that runs a script upon user logon

QuickStart: How to get started with Azure Maps

A while back I took part in a really cool hackathon at the Microsoft offices in Edinburgh and part of it was displaying data on an Azure Map. Now we found the docs a little less than straightforward so I put together a quick blog post and a GitHub repo

Log into Azure and create an Azure Maps Account, once you have done this gran the authentication key from the Authentication area and then grab the primary key, and then I pasted this into the html file.

I used this in the Azure Advent Calendar Maps page just zoom in to see more people.

Anyways Azure Maps has a tonne of functionality which you can read about a bit more.

Don’t forget to checkout my YouTube channel.


DP-900 Microsoft Azure Data Fundamentals exam Study Guide

Describe core data concepts (15-20%)

Describe types of core data workloads

Azure CLI – Interactive Mode

If you are using the Azure Portal to do some tasks it may be time to take a look at using the Azure CLI (Command Line Interface) as this can be a good way to learn to start automating some tasks. Handily the Azure CLI has an interactive mode.

You can use Azure CLI in interactive mode by running the az interactive command. This mode places you in an interactive shell with auto-completion, command descriptions, and examples

Read the blog post and then checkout my video tutorial at the bottom of the article.

You can read more on the Azure CLI interactive mode docs.

Screen shot of the AZ CLI

If like me you like to automate tasks (for numerous reasons) then the Azure CLI can be harassed to script out repetitive tasks into lets say a deployment script.

Imagine the scenario where I need to work with Virtual Machines and I want to learn the Azure CLI commands for listing the VM’s I have and then go ahead and create a brand new VM. Lets take a look at how to do that below: –

Create a Resource Group using the Azure CLI
az group create –name myDemoRG –location westeurope

Create a Resource Group using AZ CLI interactive mode
az >> group create –name myDemoRG –location westeurope

The difference here is something called scoping and you can learn about scoping. It’s the same command we type but we don’t need the az at the start as we are currently scoped at the top level.

If you have read about scoping in the above link lets now take a look at working with virtual machines.

Create a Virtual Machine using the Azure CLI
az vm create –resource-group myDemoRG –name myDemoVM –image win2019datacenter –admin-username gsuttie

Create a Virtual Machine using AZ CLI interactive mode
az vm>> create –name myDemoVM –resource-group myDemoRG –image win2019datacenter –admin-username gsuttie

The difference here is something called scoping and you can learn about scoping. It’s the same command but this time in the Azure CLI interactive mode we are scoped to working with Virtual Machines, this is accomplished by typing %%vm and means we can create, list, delete VM’s whilst scoped to using Virtual Machines.

If your not familiar with using the Azure CLI then take a look at trying out the Interactive mode which will give you defaults and examples.

Lear more :-