This post contains my slides of my talk ‘ARM and Cloud Infra – The Secret Life of a Developer in a Infra World’ at devNetNoord.
In my current project I’ve stumbled upon a problem. We have many ARM templates and need to add tags to all resources. Doing this within templates can be cumbersome, so I’ve created a small VSTS extension that adds tags to all resources within a specific resource group.
The extension can be installed from https://marketplace.visualstudio.com/items?itemName=PeterRombouts.autotagging-extension
The working is pretty simple; enter the values for your subscription, and resourcegroup, and then add the tags.
The tag pairs should be entered, one pair per line, comma separated. The extension will add these tags to all resources in the given resource group, and will not do anything to the existing tags.
Remarks? Please do give feedback! The project is available on Github if you want to contribute!
In my work as Cloud Solution Architect I often find teams struggling with the exact same problem. In this blogpost I will highlight one of those problems; passing on ARM output variables within a VSTS pipeline.
Many developers have Powershell or other scripts in place, that fix this problem, but I want to highlight an extension, which is freely available and does this for you, for free!
This extension enables you to use the ARM Deployment outputs in your VSTS environment.
This step will use the last successful deployment within the selected resource group. If this deployment has outputs, all of them are copied to VSTS variables by the ARM Output key.
These outputs can then be used by default VSTS ways:
Usually this task is ran directly after the ‘Azure Resource Group Deployment’ task.
So my pro-tip; Stop using your own scripts and implement this handy extension!
PS: On a sidenote, Kees is also a great guy, give him a tweet after you install this in your project 😉
Link to Marketplace: https://marketplace.visualstudio.com/items?itemName=keesschollaart.arm-outputs
Kees on Twitter: https://twitter.com/keesschollaart
Azure Cosmos DB is a globally distributed, multimodel database service designed to help you achieve fast, predictable performance. It scales seamlessly along with your application as it grows.
This blog explains exactly how it works and what to do in some scenarios. But in my work as Cloud Architect I sometimes need to dig deeper and figure out if my solution scales for a particular case.
For example, a ‘partition’ has a maximum size of 10GB, so it is really, really important to understand how this works, and how you can figure out your partition size over the time.
This blog will explain, using a recent real-world scenario, how you can determine your partition key and scaling.
Please note that your scenario can differ hugely, but there are some takeways in this blog that could help you when designing your solution.
When trying to put your LogicApp code in a CICD pipeline, it is always problematic getting your code into a proper template.
Obviously switching to ‘LogicApp Code View’ is an option, but there is a better solution to this problem.
LogicAppTemplate is a PowerShell commandlet that makes is very easy to get the content (even automatically) of the app and save it to disk.
The usage is very simple, open up a PowerShell window and execute the next command:
Check out this gist
Big thanks to Jeff Hollan who authored this!
Recently my team and I were building and debugging LogicApps. At one point we seemed to have disappearing code within our code of these apps.
Obviously something is wrong when we were editing these apps.
Please note that we’ve got many LogicApps with custom code and mappings that we code using the code view, because not all properties can be set using the designer.
The problem arises when you are in ‘Logic App Code View’, and switch to ‘Logic App Designer’.
When switching back, the following popup arises:
In this case, we did not change anything, just switched to designer and back.
But, this is actually what triggers this problem.
Thanks to ‘Versions’ you can quickly see and use WinMerge (or any other tool) to compare the files:
In this sample, the ‘queueType’ magically disappeared, but in other cases other mappings of JSON object were deleted.
Always check, when the designer asks you to ‘Save changes’, if you actually made any changes.
I hope this helps someone out, it gave me and my team a real headache finding this out.
Azure Functions are a great example of how serverless is conquering the cloud world we live in today. There are also many blogs in how-to-write-functions out there, of which the latest use the precompiled functions, in Visual Studio 2017.
Think of a scenario, where you want to test a LogicApp against your function, but that app obviously cannot connect to localhost. You have two options; You can deploy the Functions app to Azure and use remote debugging or you can use your own localhost, with the use of ngrok.
This blog will explain how to debug locally, when using other services in the cloud.
Continue reading “Debugging Azure Functions with LogicApps locally”
Slides of my presentation; Emotion and Face recognition using Cognitive Services.
In this session I will show how to train and use the Face API for recognition of people. Secondly I will show an example of how to determine emotions using the APIs. After this session attendees will have a basic understanding of setting up the APIs, and know how to use and implement the Face and Emotion APIs on the Cognitive Services Stack.
But, when you add more and more LogicApps your JSON file will grow and you might be better off putting each LogicApp within its own JSON. Not to speak of the parameters running wild within your files…
This post will explain how to set this up, and what is needed in your VSTS builds to enable the deployment of all the linked apps.
Hosting static HTML and CSS in Azure Blob storage is pretty simple. Using the Storage Explorer it is as simple as drag-and-drop. But when you want to integrate this in your VSTS pipeline, content type issues arise. This tiny blog will explain how to identify and fix this problem.