Category Archives: azure

Preparing for 70-534: Architecting Microsoft Azure Solutions

I recently passed the exam 70-534: Architecting Microsoft Azure Solutions so thought I would share a few preparation materials here. From reading the exam blueprint you will notice a certain amount of crossover with 70-533 (and to a slightly lesser extent 70-532), so a fair amount of the resources I used for those exams are also relevant. See my pages here for info on those: https://www.jonathanmedd.net/2017/03/preparing-for-70-533-implementing-microsoft-azure-infrastructure-solutions.html and https://www.jonathanmedd.net/2017/10/preparing-for-70-532-developing-microsoft-azure-solutions.html

In addition for this exam I used the excellent 70-534 preparation course from Scott Duffy on Udemy: https://www.udemy.com/70532-azure/learn/v4/overview  Not only does it have excellent content, but it appears that Scott updates it on a regular basis. Even during the 3 – 4 weeks I was using the course there were updates and new information coming through from Scott which was really helpful. It’s also often available for an excellent price on Udemy, I managed to pick it up for £10.

Scott also has a set of practice questions available on the same site. Split into 3 tests, there are currently 150 questions. I managed to also pick these up for £10 and found them useful as part of the preparation.

———————————————————————–

Update 21/11/2017: Since I posted this blog I was made aware of the following about Udemy. I would suggest you read it, then make up your own mind about whether you still wish to take one of their courses.

———————————————————————–

There is a useful exam preparation session from Ignite 2017 which is well worth watching.

After completing the above I still had a week or so left to prepare for the exam so I picked up some practice questions from Measureup. These were a bit more pricey at £70 for 30 days access and while useful in terms of making me go read documentation on subjects I was not so good at, they felt a little out of date.

One additional thing to be aware of is that the 70-534 exam is due to expire 31st December 2017, to be replaced by 70-535. Depending on where you are at in your study preparation, you have a decision to make  on which exam to take. Scott Duffy has some useful info on what is the difference between the two exams which may be helpful in making a decision – his initial looks suggests there is a significant amount of new content added to the blueprint for 70-535 and only a few items removed.

Having now passed 70-532, 70-533 and 70-534 I’m done with these Azure certifications for some time. Having been through this process my recommendation if you are following the same path would be to take all three as close together as possible as you can given the overlap in content. I wasn’t able to for various reasons, but if I had to do it again, I would make more of an effort to make that happen.

Preparing for 70-532: Developing Microsoft Azure Solutions

I recently passed the exam 70-532: Developing Microsoft Azure Solutions so thought I would share a few preparation materials here. From reading the exam blueprint you will notice a certain amount of crossover with 70-533, so a fair amount of the resources I used for that exam are also relevant. See my page here for info on that one: https://www.jonathanmedd.net/2017/03/preparing-for-70-533-implementing-microsoft-azure-infrastructure-solutions.html

In addition for this exam I used the excellent 70-532 preparation course from Scott Duffy on Udemy: https://www.udemy.com/70532-azure/learn/v4/overview  Not only does it have excellent content, but it appears that Scott updates it on a regular basis. Even during the 3 – 4 weeks I was using the course there were updates and new information coming through from Scott which was really helpful. It’s also often available for an excellent price on Udemy, I managed to pick it up for £10.

Scott also has a set of practice questions available on the same site. Split into 3 tests, there are currently 150 questions. I managed to also pick these up for £10 and found them useful as part of the preparation.

———————————————————————–

Update 21/11/2017: Since I posted this blog I was made aware of the following about Udemy. I would suggest you read it, then make up your own mind about whether you still wish to take one of their courses.

———————————————————————–

BTW watch out since as of 12th October 2017 there are some changes to the 70-532 exam, Scott has some info on that here. By chance I happened to have mine scheduled for 10th October so I’m unable to comment on whether those changes have filtered through yet.

After completing the above I still had a week or so left to prepare for the exam so I picked up some practice questions from Measureup. These were a bit more pricey at £70 for 30 days access and while useful, they felt a little out of date. The biggest thing I got out of them was the realisation that there might be a fair bit of C# tested in this exam and that turned out to be the case.

While C# is not specifically called out in  the objectives, it turns out that kind of like being comfortable with PowerShell is really required for the 70-533, being the same with C# is needed for the 70-532. At a minimum I would say being familiar with how it’s laid out, having a reasonable idea of what a code section might do and picking out what might be missing from a list of choices would be a good idea.

Finally I watched a session recorded at Ignite 2016: Cert Exam Prep: Exam 70-532: Developing Azure Solutions which had a few good tips for this exam.

Good luck if you are taking it yourself!

Preparing for 70-533: Implementing Microsoft Azure Infrastructure Solutions

I’m not a massive fan of certifications, but I understand why people do them and the benefits which can arise from the whole process of achieving them.  I did a lot of them in the past when my career was more geared around infrastructure work rather than coding. However, I wanted to learn about Microsoft Azure and since it is such a large topic to get to grips with, decided that pursuing the 70-533: Implementing Microsoft Azure Infrastructure Solutions exam would be a good way to focus on learning an initial subset of what is available to work with in Azure.

Currently, as of 20/03/2017, there are a couple of Azure exam bundle deals available which are worth checking out. Basically, for roughly just under the cost of taking the exam on its own, you get a free resit voucher and a MeasureUp practise test thrown in as part of the bundle. I found the MeasureUp test a pretty good barometer for where I was with my learning and ended up going over all of the topics again to gain a better understanding that the practise test was highlighting was needed. These practise tests can be a bit hit and miss in my past experience, but I thought this one was a pretty good indicator of what the actual exam turned out to be like.

 

Objectives

I used a lot of different resources to prepare for the exam, the homepage is the obvious first place to start so you are aware of which areas of Azure are being tested.

https://buildazure.com has some info about how the exam changed towards the end of 2016 to be more focused on ARM rather than ASM:

Azure Infrastructure Exam (70-533) Gets ARM Refresh

Being comfortable with PowerShell and JSON is a pre-requisite before attempting any of the training I would suggest.

Resources

Once familiar with the objectives I used some online training as the largest part of my learning experience:

Implementing Microsoft Azure Infrastructure Solutions (70-533) from Pluralsight; some of it is a little out of date given the above exam changes, but still a very useful starting point

Azure Resource Manager Deep Dive from Pluralsight

I also watched a few chapters from Architecting Microsoft Azure Solutions (70-534) on Pluralsight. Even though it was for a different exam, there is still a lot of crossover and it was useful for a review of topics I had already covered.

Having then started on the MeasureUp practice test and realised more work was required I tried out the free Microsoft Azure training mentioned as part of their bundle offering above, which is free to anyone even if not signing up to one of the bundles. If you don’t have access to Pluralsight then this would be a good place to start. In my case I found it useful to revisit topics I had already learnt. This site was also good for the extra practice questions it contains.

Craig Kilborn has some useful info on his site:

70-533: Implementing Microsoft Azure Infrastructure Solutions – Prep & Exam Experience

The Microsoft site Channel 9 has a large Azure section of videos to choose from. In particular finding relevant videos in the Azure Fridays series was good as a refresher as the exam date approached, for example Azure ScaleSets  or Azure CDN.

Finally, I found it really useful to team up with a colleague who is going for the same exam and regularly review things learnt and compare notes – I learnt a lot from doing this and would suggest trying the same if you can.

Last Minute Preparation

As some last minute preparation for the exam I committed to memory as much as possible from the key facts around Azure Web Apps, Azure SQL and Azure VMs, such as in the below screenshots from the Azure portal for Web Apps. Then at the beginning of the exam, I wrote down as much as possible that I could remember on the materials provided before tackling the questions.

This is part of the reason why I don’t like certs since to me it is fairly pointless to memorise something that could easily be looked up if necessary. However, it was worth it for having a good awareness of, for instance which Web App tier would be suitable for a described application type.

 

You can obtain similar information from the portal for Azure SQL and Azure VMs.

and then Happy Days 🙂

Create an Azure Storage Blob Container with PowerShell

My observations so far with the Azure PowerShell experience have been somewhat mixed and the example in this post will give you a flavour of that. I wanted to create a new Storage Blob Container via PowerShell, rather than through the below process in the web portal:

I looked for cmdlets which could potentially be used:

However, it returned nothing from the AzureRM module, only the Azure module. (There are currently two modules you need to use when working with Azure, some more info here and here) To say this can get confusing when you are new to the topic is an understatement, hopefully this situation is going to improve significantly ASAP.

So it looks like I need to use New-AzureStorageContainer from the original Azure module, however there do not appear to be any examples which show you how to add it into the desired place, i.e. Resource Group and Storage Account:

So far I have found two different ways to get this done:

1)Set the current Storage Account

I found a StackOverflow post with an example. You need to first of all call a cmdlet from the AzureRM module to set the current Storage Account (note line 2 is the weird response you get from running the command in line 1, i.e. just a string with the name of the current Storage Account, not an object representing it):

Now I can use New-AzureStorageContainer and it will get created in the correct place:

2) Use Storage Account Keys

Within a Storage Account are two Access keys which can be used for automation:

We only need one of the keys, but the following will retrieve both and then we pick out the first key value:

Now using one of the key values we can set the Storage Context:

Note: the above doesn’t actually seem to perform any validation on whether a Storage Account with that name exists. I initially had a typo in  the name and when using the next command generated the error: New-AzureStorageContainer : The remote name could not be resolved: ‘jmtest01.blob.core.windows.net’

Now if we have used the correct name for an existing Storage Account we can create the Storage Container using the generated Storage Context:

Please leave a comment if I have missed an easier way to do it, I’d love to know 🙂

New-AzureRmResourceGroupDeployment : A parameter cannot be found that matches parameter name

New-AzureRmResourceGroupDeployment generates the following error:

New-AzureRmResourceGroupDeployment `
-Name $resourceDeploymentName `
-ResourceGroupName $resourceGroupName `
-TemplateFile $template `
@additionalParameters `
-Verbose -Force
New-AzureRmResourceGroupDeployment : A parameter cannot be found that matches parameter name ‘xxxxxxxxxxx’.
At line:5 char:5
+ @additionalParameters `
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [New-AzureRmResourceGroupDeployment], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.NewAzureResourceGroupDeploymentCmdlet

This kind of error seems fairly in tune with the experience I have had so far with the AzureRM PowerShell module, i.e. the error has seemingly nothing to do with the actual problem. While I spent a fair amount of time checking the parameter ‘xxxxxx’ in the ARM JSON file and found nothing wrong, it turned out that a syntax error elsewhere in the file was causing the problem. An error message pointing to that kind of problem would have been a lot more helpful!

Solve the syntax issue and this error goes away.

Setting up a Minecraft Spigot Server in Windows Azure

I needed to setup a Minecraft server so that one of my kids could play online against a friend who had moved to another continent and they wanted a few different ways to stay in touch. Since one half of the friendship doesn’t have Xbox Live, but both have the PC / Mac version I figured I could sort out a hosted server for them to play on. There are plenty of places around that will host one for you for a small fee, but since I had some monthly Windows Azure credits via my MSDN subscription I figured I’d have a go setting up my own one and see how that went.

Initially I looked at deploying a pre-packaged Minecraft server from the Azure Marketplace, but the first two attempts failed to deploy so I looked at other possible options.

Minecraft01It seemed a popular choice when people were setting up their own was a Spigot version, partly because it looks like there are loads of different plugins which can be added at a later date. So I went down that route.

Deploying an Ubuntu VM

From the Azure portal I selected to deploy a new VM from the Gallery:

Minecraft02

Then picked the latest version of Ubuntu available in there:

Minecraft03

Fill out the Virtual Machine configuration dialogue. Note: to use SSH key authentication you need to supply an X.509 certificate.

Minecraft04

Enter some more configuration details on the next page, including which datacenter region to host the VM in. Also be sure to add an additional port as an endpoint to include that which the Minecraft game needs, 25565.

Minecraft05

On the last page, check you are happy with the selections and then tick to go!

Minecraft06

Sit back in comfort and wait for the VM to deploy:

Minecraft07

 

Once complete, you’ll have a nice VM ready for you:

Minecraft08

 

I hadn’t used Azure before and found it to be quite a nice experience overall.

Install Java

Connect with SSH to the VM and check whether Java is installed:

Minecraft09

Install Java:

sudo apt-get install openjdk-7-jre-headless

then confirm it is installed:

java -version

Minecraft10

Install Minecraft Spigot

*Full details can be found here*

Make a directory for downloading the Spigot build tools to and download the file:

sudo mkdir -p /opt/Minecraft/build

cd /opt/Minecraft/build/

sudo wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar

Run BuildTools.jar from the terminal – this took about 10+ mins for me:

sudo git config --global --unset core.autocrlf

sudo java -jar BuildTools.jar

Minecraft11

 

Eventually you should get something like this for a successful completion:

Minecraft12

Create a new directory to host the compiled jar file and copy it there:

sudo mkdir /opt/Minecraft/play

sudo cp /opt/Minecraft/build/spigot-1.8.7.jar /opt/Minecraft/play/spigot.jar

Create a new startup script (start.sh) in the directory to launch the the JAR:

sudo vi /opt/Minecraft/play/start.sh

paste the following code into the start.sh file:

#!/bin/sh

java -Xms512M -Xmx1024M -XX:MaxPermSize=128M -jar spigot.jar

Add run capabilities to the start.sh script. Run the start.sh script to start the initial run of the server, you’ll be prompted that the EULA needs agreeing to:

sudo chmod +x start.sh

sudo ./start.sh

Minecraft13

Edit eula.txt and set eula=true

sudo vi eula.txt

Minecraft14

 

Run the startup script again and this time the server will start fully:

sudo ./start.sh

Minecraft15

Typing help at this point will give a list of commands that can be used interactively. You can also set the configuration of the game by issuing a stop then editing the server.properties file.

Minecraft16

Now would be a good time to test you have set things up correctly. Fire up the Minecraft game and head into Multiplayer. Add a server and enter the details:

Minecraft18

Once complete, the server should appear as available to connect to:

Minecraft19

Oh no, it’s night time already!

Minecraft20

Run Spigot as a service

Now all we need to do is run the Spigot server as a service, rather than interactively, otherwise the game dies when we drop the SSH session.

(Note: I expect there is a better way to do this than what I came up with, but I’m by no means a Linux expert, so feel free to leave a comment if you have a better way)

Create a minecraft.service file

sudo vi /etc/systemd/system/minecraft.service

Paste the following into that file:

[Unit]
Description=Minecraft Server
[Service]
WorkingDirectory=/opt/Minecraft/play
ExecStart=/opt/Minecraft/play/start.sh
[Install]
WantedBy=multi-user.target

Start the service and check the status:

sudo systemctl start minecraft.service

sudo systemctl status minecraft.service

All being well you should see the service begin to start up:

Minecraft21