Passed Linux Foundation Certified System Administrator

Howdy,

It’s been a long time since the last blog’s post – weeks and months. I was and am extremely busy working on some projects and .. preparation to my first ever Linux exam – Linux Foundation Certified System Administrator or just LFCS.

If you have ever looked at About section, you may already know that my main experience has always been associated to Microsoft products/hardware, however, I have been working with Linux for 2+ years so far since I had started as a DevOps engineer. Being a DevOps engineer is always about dealing with different environments, 3rd party tools, clouds and automation. So, after years of experience in Linux and it’s terminal, I had decided to prove and even broaden my knowledge by taking one of the highly valued and respected exam from the Linux Foundation.

About the exam

  1. Duration of Exam 2 hours . In fact, you won’t be able to read man pages, which is available during the exam, because of the lack of time. Really. I could read and complete all 24 questions, and I had nearly no time left. My advice – use grep , man search to save some time. If you spend more than 1-2 mins reading the man, you will probably fail 🙂
  2. 100% performance-based. The LFCS exam requires all work to be done on the command-line. I chose the Ubuntu 18.04, however, it will be updated to Ubuntu 20.04 and CentOS Stream 8 soon (at the end of April, as I know).
    I really enjoyed this format and would like to have the same provided by Microsoft. Reasons? Checks your real experience and skills, completely protects against the “dumpers” (LF exams don’t have any dumps available as far as I know – my respect to LF!), proctored exams and strict requirements (voice/video and screen sharing, I was asked to turn off even my speakers and then take them away of the table..), duration is also an additional challenge. Overall, I’d rate the exam 10/10.
Exam’s interface. You just have a terminal window, a few servers already prepared and 24 performance-based tasks (all should be done using CLI)

Requirements and preparation

  1. At least 1 year of a real experience with Ubuntu Server or CentOS
  2. Initially, I purchased a bundle (exam and the official companion course that costs about 500$). However, I’d recommend not wasting time on the official course ’cause it’s almost have much text and a bit of practice in fact (boring and not efficient). Instead, buy this course , read man/official docs and do A LOT of practice, learn CLI tips and tricks (key bindings and etc..)
  3. Read carefully each of questions, spend not more about 5-7 mins on one questions, note the weight of the question ( it can be 2, 3% or even 8%, so if you can’t do a question with 2% weight quickly, go ahead and try to do questions that have more weight). I did all 24 questions (partly or completely), so wasn’t worry about the grade result.
  4. Sleep well, don’t drink the day before the exam 🙂

I wish you good luck and don’t ever give up.

LFCS: Linux Foundation Certified Systems Administrator

How to capture Linux VM in Azure

Images are used in Azure to provide a new virtual machine with an operating system. An image might also have one or more data disks. Images are available from several sources:

  • Azure offers images in the Marketplace. There are recent versions of Windows Server and distributions of the Linux operating system. Some images also contain applications, such as SQL Server. MSDN Benefit and MSDN Pay-as-You-Go subscribers have access to additional images.
  • The open source community offers images through VM Depot.
  • You also can store and use your own VM or OS images in Azure, by either capturing an existing Azure virtual machine for use as an image or uploading an image

There is a little difference between VM image (newer type) and OS image. VM image can include disk with generalized OS (sysprep in the Windows Server’s world) and data disks attached to the VM. OS image includes only OS disk.

I’ll show you how to make a new VM image from Linux VM created in Azure Resource Manager. You can use this image to create VMs across any resource group within your subscription (thanks to azure managed disks).

Before we start download and install the latest Python

Launch CMD , verify Python’s version and install Azure CLI 2.0

python --version
pip install --user azure-cli

azurecli_01

Open SSH to your VM (use azure public ip, root creds) and start VM’s deprovision (read WARNINGS!)

sudo waagent -deprovision+user -force

azurecli_02

Now VM is ready for generalizing

Switch back to CMD and change directory to C:\Users\yourusername\AppData\Roaming\Python\Python35\Scripts
Login to the Azure Account using Azure CLI (use received code to authenticate)

az login

azurecli_03

Select subscription in which source VM is running

#To list all subscriptions and get IDs
az account list

#To select target subcription
az account set --subscription subid

azurecli_04

Stop and deallocate the source VM

az vm deallocate --resource-group "groupname" --name "vmname"

azurecli_05

Time to generalize VM and create VM image

az vm generalize --resource-group "groupname" --name "vmname"
az image create --resource-group "groupname" --name "ImageName" --source "SourceVMName"

Get image list from CLI (copy Image ID):

azurecli_07

Azure side (Images):

azurecli_06

Now we are ready to create VM or bunch of VMs from this image

az vm create --resource-group "groupname" --name "VMname" --image "imageid" --admin-username username --authentication-type password --admin-password "cleartexthere"

azurecli_08

Note: VM Size , Storage type will be selected automatically by Azure. You need to manually define them if it’s required (see examples below)

Simple script that creates bunch of VMs with naming test-VM-0x , predefined VM size and storage type

for /L %%n in (1,1,9) do (
az vm create --resource-group "groupname" --name test-VM-%%n --storage-sku "StorageTypeHere (example: Standard_LRS)" --size "VMsize (example: Basic_A4)" --image "image id here" --admin-username adminname --authentication-type password --admin-password "password here"
)

Result:vms