Co-hosting a Learn Live “Linux on Azure” session in the Azure Core IaaS Study Hall

I am excited to be a part of another Learn Live series. This study hall is all about Azure core IaaS. In this series, we will walk through how to build infrastructure solutions with Azure IaaS services and products. This twenty two-part weekly series will answer your questions live and walk through how to build infrastructure solutions with Azure IaaS services and products.

In the study hall sessions, together with you live, we will work through Microsoft Learn modules focused on various IaaS scenarios in Azure. You can see all of the sessions in this study hall series here:

Learn Live: Azure Core IaaS Study Hall – Events | Microsoft Learn

The series has a solid lineup of speakers from Microsoft and the community! And I will be co-delivering a session focused on Linux on Azure and the 2nd topic will be on open-source database migration on Azure.

Here is a complete description of my session:

Discover the unique benefits of running Linux on Azure, and how to run Linux-based applications and workloads in the cloud with Azure. Then you’ll learn about the issues and considerations for migrating on-premises open-source databases to Azure, the services Azure provides to help you migrate your databases, and how to plan a migration. In this episode, you will:

  • Differentiate between Linux on Azure infrastructure as a service (IaaS) and platform as a service (PaaS) computing, and the value of each
  • Describe Azure tools and services that bring additional value to Linux workloads
  • Explain the components of Linux virtual infrastructure in Azure, and the role of Microsoft in supporting different Linux distributions
  • Describe the features and services available in Azure for hosting an open-source database
  • Explain the key considerations for implementing a migration project
  • Describe different approaches that you can take for migrating databases

This event will be on March 30, 2023, at 10:00AM – 11:30AM (Pacific).

Register here:

https://developer.microsoft.com/en-us/reactor/events/18744/

***Update***

If you missed the live session don’t worry. The recording of it posted already. Here is the link to the recording:

Read more

17th Pluralsight Course Published – “Python for Linux System Administration”

I am excited to announce that I published a Python course on Pluralsight! This course is titled “Python for Linux System Administration“. This is my 17th course with Pluralsight overall and 6th for 2022. It will teach you how to utilize Python to administer Linux servers. This course is suitable for system administrators, DevOps engineers, and anyone working with servers running on cloud.

In this course, Python for Linux System Administration, you’ll learn the core of the Python language, various Python admin modules, & how to combine python scripts with other Linux tools for administration.

Here are some of the major topics that are covered in this course:

  1. Gaining an understanding of the many benefits of using Python for systems administration.
  2. What goes into setting up a Python environment and what IDE’s are the best options to assist you with your Python scripting.
  3. How to install and use Python to Interact with the Linux System.
  4. How to utilize Python modules such as the OS module & psutil to perform various administrative functions.

When you’re finished with this course, you’ll have the skills and knowledge about the core of Python, how it can be used for administration, why you would use it for administration, how to get setup for Python scripting, insight into Python administrative modules & scripts, as well as some real-world examples of administering Linux servers with Python.

Check out the “Python“ course here: https://app.pluralsight.com/library/courses/python-linux-system-administration

I hope you find value in this new Python for Linux System Administration course. Be sure to follow my profile on Pluralsight so you will be notified as I release new courses

Here is the link to my Pluralsight profile to follow mehttps://app.pluralsight.com/profile/author/steve-buchanan

Read more

Azure Arc Book Published

I am excited to kick off the new year announcing that my 8th book has been published! This book is “Azure Arc-Enabled Kubernetes and Servers“.

I had the honor to co-author this book with a long-time friend and fellow Microsoft MVP John Joyner. This is John’s latest book since his last 8 years ago!

The forward was written by Thomas Maurer a former MVP and now Microsoft Azure Evangelist. This book was reviewed by fellow Microsoft MVP Adnan Hendricks and a chapter contributed by a buddy of mine Fred Limmer.

This book covers an exciting technology from Microsoft exploring Azure Arc-Enabled Kubernetes and Servers. This book is for DevOps professionals, system administrators, security professionals, cloud admins, and IT professionals that are responsible for servers or Kubernetes clusters both on-premises and in the cloud.

Author copies!

This book covers:

  • Introduces the basics of hybrid, multi-cloud, and edge computing and how Azure Arc fits into that IT strategy
  • Teaches the fundamentals of Azure Resource Manager, setting the reader up with the knowledge needed on the technology that underpins Azure Arc
  • Offers insights into Azure native management tooling for managing on-premises servers and extending to other clouds
  • Details an end-to-end hybrid server monitoring scenario leveraging Azure Monitor and/or Azure Sentinel that is seamlessly delivered by Azure Arc
  • Defines a blueprint to achieve regulatory compliance with industry standards using Azure Arc, delivering Azure Policy from Azure Defender for Servers
  • Explores how Git and GitHub integrate with Azure Arc; delves into how GitOps is used with Azure Arc
  • Empowers your DevOps teams to perform tasks that typically fall under IT operations
  • Dives into how to best use Azure CLI with Azure Arc

You can order the book and watch for its official release here:

https://www.amazon.com/gp/product/1484277678

Read more

“Azure Arc enabled Servers” Course on Pluralsight

Today my 11th course on Pluralsight was published! This course is “Azure Arc Enabled Servers: Getting Started“. In this course, Azure Arc-enabled Servers: Getting Started, you’ll learn how to manage external servers with Azure Arc.

Managing Windows and Linux servers across on-premises and multiple clouds can be disjointed and overly complicated. Many organizations today are choosing to adopt a multi-cloud strategy driving the boom in having servers across many clouds. After viewing this course, you’ll have knowledge of Azure Arc enabled Servers and how to use it to manage Windows and Linux servers across on-premises and multiple clouds.

Check out the course here: https://app.pluralsight.com/library/courses/azure-arc-enabled-servers-getted-started

This is my 2nd course in the Azure Arc path titled “Managing Environments with Azure Arc” on Pluralsight. There are other courses in the path already such as Azure Arc: The Big Picture, Azure Arc enabled Kubernetes: Getting Started (by me), Azure Arc-enabled Data Services: The Big Picture, and Azure Arc & Azure Lighthouse: First Look, and many more Azure Arc courses on the way.

Here is a link to check out the new Azure Arc path: https://app.pluralsight.com/paths/skills/managing-environments-with-azure-arc

I hope you find value in this new Azure Arc enabled Kubernetes: Getting Started course. Be sure to follow my profile on Pluralsight so you will be notified as I release new courses including my second Azure Arc related course! 

Here is the link to my Pluralsight profile to follow mehttps://app.pluralsight.com/profile/author/steve-buchanan

Read more

Guest on The Women in Linux Youtube Channel

Recently I was a guest on The Women in Linux Youtube channel. It was great to reconnect with Tameika Reed, Dionne Parler, and their team! Here is their website: www.womeninlinux.org. It has been many years since I was on their podcast. They have a weekly show named “How we Linux”. I highly recommend you check it out. I was on episode #14. We talked about many things from authoring tech books, the job market in tech, being a Microsoft MVP, the future of tech and even stocks! Check it out here:

Read more

Guest on New Relic Observy McObservface Podcast – GitOps, Kubernetes, Linux on Azure, AI, Blockchain, and more

I was recently a guest on New Relic‘s Developer Relations team podcast “Observy McObservface” with Jonan Scheffler.

Jonan Scheffler and I talk about Microsoft’s Azure Kubernetes Service (AKS), Linux on Azure, how Microsoft’s been successful at working in enterprise and open source, where I believe GitOps & Kubernetes is eventually going to go, and my excitement in regards to AI and blockchain as well as how they’re going to impact the world. You can listen to the podcast and read the article links below.

Listen to the Podcast:
https://www.buzzsprout.com/1225223/8618776-open-is-not-optional-shifting-sands-and-faxing-on-blockchains-with-steve-buchanan

Read the Article:
https://www.therelicans.com/mandymoore/open-is-not-optional-shifting-sands-and-faxing-on-blockchains-with-steve-buchanan-495p

Read more

Build & release a Container Image from Azure DevOps to Azure Web App for Containers

I recently published a blog post on 4sysops.com about Web App for Containers on Azure here: https://4sysops.com/archives/web-app-for-containers-on-azure. That blog post is about the often-overlooked service in Azure that can be used to host a container/s on a web app in Azure App service.

This is a great service if you just need to run a single container or even a couple of containers that you have in Docker Compose. This service is PaaS and abstracts away an orchestration system like Kubernetes. If you need insight into the Azure App Service Web App for Containers service check out the blog post on 4sysops.

In this long blog post I am going to take things a step further and walk-through the build & release of a Container from Azure DevOps to Azure Web App for Containers. The overall goal of this post is to help someone else out if they want to setup a build and release pipeline for building and deploying a container to Azure App Service. We will use a very simple PHP web app I built that will run in the container.

Here are the components that are involved in this scenario:

  • Azure Container Registry (ACR): We will use this to store our container image. We will be pushing up the container image and pull it back down from the registry as a part of the build and release process.
  • Azure DevOps (ADO): This is the DevOps tooling we will use to build our container, push it up to ACR, pull it down into our release pipeline and then deploy to our Azure App Service.
  • App Service Web App for Containers: This is the web server service on Azure that will be used to host our container. Under the hood this will be a container that is running Linux and Apache to host the PHP web app.

Here is the data Flow for our containerized web app:

  1. Deploy the Azure App Service Web App for Containers instance
  2. Deploy the Azure Container Registry
  3. Deploy the Azure DevOps organization and project, create repository to host the code, clone repository in VS Code (Not shown in this blog post. Assume you know how to this up.)
  4. Update the application code (PHP code and Docker image) in Visual Studio code
  5. Commit application code from Visual Studio code to the Azure DevOps repo (Not shown in this blog post. Assume you know how to this up.)
  6. Setup build and then run container build and push the container image to ACR
  7.  Setup release pipeline and then kick off the release pipeline pulling down the container image from ACR and deploys the container to the App Service Web App for Containers instance.

Here is a diagram detailing out the build and release process we will be using:

Click to enlarge

Note that all code used in this blog post is hosted on my GitHub here: https://github.com/Buchatech/EOTD-PHP-APP-DOCKER-CONTAINER

Ok. Let’s get into the setup of core components of the solution and the various parts of the build and release pipeline.

For starters this solution will need a project in Azure DevOps with a repo. Create a project in Azure DevOps and a repo based on Git. Name the repo exerciseoftheday. Next up let’s create the core framework we need in Azure.

Deploy Azure App Service Web App for Containers

Let’s create the Azure App Service Web App for Containers that will be needed. We will need a resource group, an app service plan and then we can setup the app service. The PHP app we will be running is named Exercise Of The Day (EOTD) for short so our resources will use EOTD. Use the following steps to set all of this up.

We will do everything via Azure Cloud Shell. Go to https://shell.azure.com/ or launch Cloud Shell within VS Code.

Run the following Syntax:

# Create a resource group

az group create –name EOTDWebAppRG –location centralus

# Create an Azure App Service plan

az appservice plan create –name EOTDAppServicePlan –resource-group EOTDWebAppRG –sku S1 –is-linux

# Create an Azure App Service Web App for Containers

az webapp create –resource-group EOTDWebAppRG –plan EOTDAppServicePlan –name EOTD –deployment-container-image-name alpine

# Create a deployment slot for the Azure App Service Web App for Containers

az webapp deployment slot create –name EOTD –resource-group EOTDWebAppRG –slot dev –configuration-source EOTD

Deploy Azure Container Registry

Now let’s create the Azure Container Registry. Again, this is where we will store the container image. Run the following Syntax:

# Create Azure Container Registry

az acr create –resource-group EOTDWebAppRG –name eotdacr –sku Basic –admin-enabled false –location centralus

Note the loginServer from the output. This is the FQDN of the registry. Normally we would need this, admin enabled, and the password to log into the registry. In this scenario we won’t need admin enabled or the password because we will be adding a connection to Azure DevOps and the pipelines will handle pushing to and pulling the image from the registry.

When it’s all done you should see the following resources in the new resource group:

Next, we will need to build an application and a container image.

Read more

Deploy Rancher on Azure for Kubernetes Management

Lately I have been hearing a lot about a solution named Rancher in the Kubernetes space. Rancher is an open source Kubernetes Multi-Cluster Operations and Workload Management solution. You can learn more about Rancher here: https://www.rancher.com.

In short you can use Rancher to deploy and manage Kubernetes clusters deployed to Azure, AWS, GCP their managed Kubernetes offerings like GCE, EKS, AKS or even if you rolled your own. Rancher also integrates with a bunch of 3rd party solutions for things like authentication such as Active Directory, Azure Active Directory, Github, and Ping and logging solutions such as Splunk, Elasticsearch, or a Syslog endpoint.

Recently training opened up for some Rancher/Kubernetes/Docker training so I decided to go. The primary focus was on Rancher while also covering some good info on Docker and Kubernetes. This was really good training with a lot of hands on time, however there was one problem with the labs. The labs had instructions and setup scripts ready to go to run Rancher local on your laptop or on AWS via Terraform. There was nothing for Azure.

I ended up getting my Rancher environment running on Azure but it would have been nice to have some scripts or templates ready to go to spin up Rancher on Azure. I did find some ARM templates to spin up Rancher but they deployed an old version and it was not clear in the templates on where they could be updated to deploy the new version of Rancher. I decided to spend some time building out a couple of ARM templates that can be used to quickly deploy Rancher on Azure and add a Kubernetes host to Rancher. In the ARM template I pulled together it pulls the Rancher container from Docker Hub so it will always deploy the latest version. In this blog post I will spell out the steps to get your Rancher up and running in under 15 minutes.

First off you can find the ARM Templates here on my Github here: https://github.com/Buchatech/DeployRanchertoAzure.

The repository consists of ARM templates for deploying Rancher and a host VM for Kubernetes. NOTE: These templates are intended for labs to learn Rancher. They are not intended for use in production.

In the repo ARM Template #1 named RancherNode.JSON will deploy an Ubuntu VM with Docker and the latest version of Rancher (https://hub.docker.com/r/rancher/rancher) from Docker Hub. ARM Template #2 named RancherHost.JSON will deploy an Ubuntu VM with Docker to be used as a Kubernetes host in Rancher.

Node Deployment

Deploy the RancherNode.JSON ARM template to your Azure subscription through “Template Deployment” or other deployment method. You will be prompted for the following info shown in the screenshot:

Host Deployment

Deploy the RancherHost.JSON ARM template to your Azure subscription through “Template Deployment” or other deployment method. Note that that should deploy this into the same Resource Group that you deployed the Rancher Node ARM template into. You will be prompted for the following info shown in the screenshot:

After the Rancher Node and Rancher Host ARM templates are deployed you should see the following resources in the new Resource Group:

NameType
RancherVNet Virtual network
RancherHost Virtual machine
RancherNode Virtual machine
RancherHostPublicIP Public IP address
RancherNodePublicIP Public IP address
RancherHostNic Network interface
RancherNodeNic Network interface
RancherHost_OSDisk Disk
RancherNode_OSDisk Disk

Next navigate the Rancher portal in the web browser. The URL is the DNS name of the Rancher Node VM. You can find the DNS name by clicking on the Rancher Node VM in the Azure portal on the overview page. Here is an example of the URL:

https://ranchernode.centralus.cloudapp.azure.com

The Rancher portal will prompt you to set a password. This is shown in the following screenshot.

After setting the password the Rancher portal will prompt you for the correct Rancher Server URL. This will automatically be the Rancher Node VM DNS name. Click Save URL.

You will then be logged into the Rancher portal. You will see the cluster page. From here you will want to add a cluster. Doing this is how you add a new Kubernetes cluster to Rancher. In this post I will show you how to add a cluster to the Rancher Host VM. When it’s all said and done Rancher will have successfully deployed Kubernetes to the Rancher Host VM. Note that you could add a managed Kubernetes such as AKS but we won’t do that in this blog. I will save that for a future blog post!

Click on Add Cluster

Under “From my own existing nodes” Click on custom, give the cluster a name and click Next.

Next check all the boxes for the Node Options since all the roles will be on a single Kubernetes cluster. Copy the code shown at the bottom of the page, click done and run the code on the Rancher Host.

In order to run the code on the Rancher Host you need to SSH in and run it from there. To do this follow these steps:

  1. In the Azure Portal, from within the resource group click on the Rancher Host VM.
  2. On the Overview page click on Connect.
  3. Copy “ssh ranchuser@rancherhost.centralus.cloudapp.azure.com” from the Connect to virtual machine pop up screen.
  4. Open a terminal in either Azure cloud shell or with something like a terminal via VS Code and past the “ssh ranchuser@rancherhost.centralus.cloudapp.azure.com” in.

Running the code will look like this:

When done you can run Docker PS to see that the Rancher agent containers are running.

In the Rancher portal under clusters you will see the Rancher host being provisioned

The status will change as Kubernetes is deployed.

Once it’s done provisioning you will see your Kubernetes cluster as Active.

From here you can see a bunch of info about your new Kubernetes cluster. Also notice that you could even launch Kubectl right from hereand start running commands! Take some time to click around to see all the familiar stuff you are used to working with in Kubernetes. This is pretty cool and simplifies the management experience for Kubernetes. 

If you want to add more nodes or need the configuration code again just click the ellipsis button and edit.

In Edit Cluster you can change the cluster name, get and change settings and copy the code to add more VMs to the cluster.

That’s the end of this post. Thanks for reading. Check back for more Azure, Kubernetes, and Rancher blog posts.

Read more

Multiple Linux VM Deployment ARM Template

I looked for an existing ARM template that would create multiple Linux VM’s. I found only one that creates some in a scale set. The use case I was working with did not call for a scale set so I needed a different template.

I found a simple ARM template for creating multiple Windows VM’s on Azure here. It had exactly what I needed for my use case but did not cover Linux.

I modified the template and uploaded to Github in case this is helpful to anyone else. The repo has two templates. There is one for Ubuntu and one for SUSE. When you deploy the template it will need the following parameters:

The ARM template will create an availability set (AS) with N number of VM’s put in that AS, network interfaces, and public IP’s for each VM along with a VNet and Subnet as shown in the following screenshot:

Here is the link to download the ARM Template:

https://github.com/Buchatech/Multiple-Linux-VM-Deployment-ARM-Template

Read more

Surviving the Future of IT as an IT Pro

At MMS 2015 we had some interesting discussions in the Ask the Data center experts session. One of the discussions was centered around how IT is changing and how to adapt. For a while there has been a paradigm shift happening in IT. It is hard hitting for those on the front line especially IT Pro’s.

With the advent of many technologies moving to XaaS (x as a Service) based and the challenges for IT pro’s to move from strictly the ops side of IT to more of a DevOps model as well as becoming an internal technology consultant to the business IT Pros can feel lost in the paradigm shift.

The goal of this blog post is twofold. 1. I want to expand on this discussion with my opinion of how an IT Pro can remain relevant in the future of IT. 2. My friends over at Savision asked me to write a blog post and I thought this would be a great topic for it because they have some tools that can help with this transition.

Here are key points and additionally skills/mindset needed as an IT Pro moving into the future of IT:

  • Accepting Shadow IT….. Ability to manage anyway.

Shadow IT is the practice of business units spinning up their own IT solutions without organizational approval. With the expansion of cloud Shadow IT is becoming easier for business units to undertake.

  • Technology Budgets are no longer 100% controlled within IT anymore. Many departments own their own technology budget.
  • For so long IT has had the reputation of being “No People” and a dinosaur that takes forever to get things done. Embracing Shadow IT is about enabling the business, moving faster from conception to solution. Embracing Shadow IT will also change the reputation IT to “Yes People”.
  • This will cause the business to come back to IT first as internal SME’s to help them select the right outside solutions bringing internal IT Pros back into the loop.
  • Instead of focusing on how to stop business units for spinning up the technology solutions they need, help them. At the same time look for solutions that can help put governance and management around Shadow IT. A good example of this are three solutions from Microsoft such as Cloud App discovery (Discovery of cloud applications used in an organization), Azure Active Directory (Single Sign On, Centralized log on to cloud based applications and much more), and OMS (Management of cross platform clouds i.e. Amazon, Azure, Rackspace etc.).

Read more