Everything we Should Know About the new Azure Usage And Billing (AUBI) Portal

(Ce billet en aussi disponible en français.)

If one image is worth a thousand words, then it's incredible the amount of information you have in Azure Usage And Billing (AUBI). This portal is a open-source project that has been announced a few weeks ago. In this post, I will share my first impressions about it.

Portal

The project is still young, but every alive. When I installed it, I had one or two minor issues, but by the time I wrote this post all of them were already fixed.

Where it is?

The Azure Usage And Billing site is not a website like portal.azure.com; it consists of a solution you need to deploy in an Azure subscription. It doesn't require to be the subscription you wish to monitor, just a subscription you have access. The solution contains: two web sides with both Application Insights and one also with webjobs, an SQL Database, a storage account and you will also need to deploy a Power BI report.

resourcesgroup

All of it can be easily deployed using the PowerShell script and Azure Resource Manager (ARM) template included. Only a few manual steps will be required. Hopefully, a very clear and completed documentation is available in video or written. Both present on the Github project page.

What can I do with it?

Once fully deployed, you will need to navigate to your instance of the Registration portal (ex: http://frankregistrationv12.azurewebsites.net) and register all the subscriptions you want. After the webjobs are finished bringing all the data, they will all be available in the Power BI Reports.
Power BI does an incredible work by showing all the information about your subscription(s). A very useful point here is that all information present in the dashboard is interactive! Whatever you select simply one or many subscriptions or only a specific category of Azure service, all the other tiles will be automatically adjusted.

Aubi_800

What's Next?

If it's not already done, I highly recommend installing the AUBI portal and start enjoying the detail of all that information available to you without any effort, and presented in such a beautiful way. For all the details about the prerequisites or the install procedure got to the Github project page.



Reference:



Reading Notes #243

valutoBusinessSuggestion of the week


Cloud


Programming


Miscellaneous



Reading Notes #242

mapCloud


Programming

  • Exploring dotnet new with .NET Core (Scott Hanselman) - I discover the different types in dotnet new command during Julie Lerman's talk at DevTeach and now this post shows a list of incredible opportunities.

Miscellaneous


Reading Notes #241

IMG_20160711_083348Cloud


Programming


Miscellaneous


Create and Deploy .NET Core WebApp to Azure from Linux

(Ce billet en aussi disponible en français.)

The other day, I was glued to my PC, and I had spare time (yah, I know very unusual). Since .Net Core 1.0 was just released few days before, I decide to give it a try. To add an extra layer of fun in the mix, I decided to do it from my Ubuntu VM. In less than 15 minutes, everything was done! I was so impressed I knew I needed to talk about it. That's exactly what this post is about.

The preparation

Before we get started, it's important to know which version of Ubuntu you are using, because some commands will be slightly different. To know the version you are running you simply need to click the gear in the top right of the desktop screen and select About this Computer. In my case, since I'm using Ubuntu 14.04 LTS, I will be using command related to this version. If you are using a different version, please refer to .NET Core documentation.

ubuntu_version

Now we need to install .Net Core. Nothing more easy. Open a Terminal (Ctrl+Alt+T) and type those three commands:

# Setup the apt-get feed adding dotnet as repo
sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'
apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893

# Get the latest packages
apt-get update

# Install .NET Core SDK
sudo apt-get install dotnet-dev-1.0.0-preview2-003121
Once it's all done you can type dotnet --info and you should see something like that.

dotnet_info


Create the Local WebApp

From the same Terminal we will create an empty folder for our solution and move into it. Execute these commands.
mkdir demodotnetweb
cd demodotnetweb
We now want to create our new web project. This is done by the command dotnet new, but we need to specify the type otherwise it will create a console application.
dotnet new -t web
Now to download all the references (nuget packages) of our project required, execute the following command:
dotnet restore
Base on the speed of your Internet connection and how many dependencies are required, this can take from few seconds to more than one minute.
To test if our solution works locally type the command:
dotnet run
That will compile our solution and start an AspNetCore Internal hosting. Launch a web browser and go to http://localhost:5000 to see the App in action.

dotnetcore_localhost

Deploy to Azure

To deploy our new project to the cloud, we will use the continuous deployment capability of Azure. First, navigate to portal.azure.com and create a Web App.

create_webApp

Once the the application is created, you should see the This web app as been created message when you navigate to the [nameofWebApp].azurewebsites.net

successfully_created

It's now time to add a local Git repository. In the WebApp Settings select Deployment source. Click on the Configure Required Settings, then select the Local Git Repository option.

add_source_control

After setting the user credential for the repository, we can get the URL from the Essential section.

repourl

Back to our Ubuntu Terminal, we will have to execute these commands:

# create a git repository
git init
# commit all files
git commit -m "Init"

# Add the remote repository
git remote add azure https://username@demowebcore.scm.azurewebsites.net:443/demowebcore.git

# Push the code to the remote
git push azure master
After a minute or so you should have your WebApp online!

dotnetcore_azure


Voila! That was fun!.

Reading Notes #240

Cloud


Programming


Data


Miscellaneous


Reading Notes #239

2016-07-04_05-54-55Cloud


Programming


Miscellaneous



Reading Notes #238

docker_ascii_artCloud


Programming


Miscellaneous

  • Back to my core - In this post, Darrel shares the beginning of a new adventure... Congradulation to you and looking forward to reading again from you. Microsoft gained a really good developer.


Reading Notes #237

2016-06-20_06-39-16Cloud


Programming


Miscellaneous



Reading Notes #236


WhyAzureCLISuggestion of the week


Cloud


Programming


Miscellaneous

  • Happiness is DevOps’ Cornerstone (Alexandre Brisebois) - Interesting post that asks a lot of questions... I would like to see some graph or pie chart about our answers.
  • 5 Habits that Help Code Quality (View all posts by Erik Dietrich) - Yet another post about how to code better, but this one is refreshing. It explains why the opposite would be harmful and also give us a training plan for better chance of success.
  • What’s in your highlights folder? (Marc Gagne) - Because life is not only mistakes and bad luck.Here good tips to help you giving some sunshine into your life when needed.

Automating Docker Deployment with Azure Resource Manager

Recently, I had to build a solution where Docker container were appropriate. The idea behind the container is that once there are built you just have to run it. While it's true, my journey was not exactly that, nothing dramatic, only few gotchas that I will explain while sharing my journey.

The Goal

The solution is classic, and this post will focus on a single Virtual Machine (VM). The Linux VM needs a container that automatically runs when the VM starts. Some files first download from a secure location (Azure blob storage) then passed to the container. The solution is deployed using Azure resources manager (ARM). For the simplicity, I will use Nginx container but the same principle applies to any container. Here is the diagram of the solution.

Docker-in-Azure2

The Solution

I decided to use Azure CLI to deploy since this will be also the command-line used inside the Linux VM, but Azure PowerShell could do the same. We will be deploying an ARM template containing a Linux VM, and two VM-Extension: DockerExtension and CustomScriptForLinux. Once the VM is provisioned, a bash script will be downloaded by CustomScriptForLinux extension from the secure Azure blob storage myprojectsafe, then executed.

Reading Notes #235

ImaginationSuggestion of the week


Cloud


What's your plan B when the Azure Portal is not responding

(Ce billet en aussi disponible en français.)

You are about to test the last version of your solution. You just need to change some configuration in the Micosoft Azure Portal, and you are good to go. To do it, you log in the portal at http://portal.azure.com and navigate to your component and... Error! What you see is a little sad cloud.

OneSadCloud

The Problem

This just happened to the team I'm working with. They needed to change the traffic manager's endpoint to do a traffic test. Unfortunately, the grid that contains the Endpoint was in a bad status and was not available. It looked like a deadened!

ManySadClouds

But it is really? Of course not. Here what you can do.

The Solution

Remember Microsoft is sharing the same API the Azure portal is using. That the beauty of the Azure Portal, you can use it has a convivial way to do your what you need, or you can access it via many different SDKs that are available today: .Net, Java, Node.js, Php, Python, Ruby and more! You also have command line tools that could help to manage your Azure services and apps using scripts.
To know more about all the SDK available or the command-line refer to the Azure SDKs documentation pages online.

Remember

This time we were in a Windows environment, and we needed to modify one Endpoint of a Taffic Manager. Here what we did using Azure PowerShell Cmdlets:

# Login to our account
Login-AzureRmAccount

# Set the context we will work in. Use Get-AzureRmSubscription to list all your subscriptions. 
Set-AzureRmContext -SubscriptionName "MySubscriptionName"

# List All Traffic Manager Profile 
Azure Get-AzureTrafficManagerProfile 

# Load our endpoint in a variable, change the value we need and put it back.
$endpoint = Get-AzureRmTrafficManagerEndpoint -Name myendpoint -ProfileName myprofile -ResourceGroupName "MyResourceGroupName" -Type ExternalEndpoints
$endpoint.Weight = 50
Set-AzureRmTrafficManagerEndpoint -TrafficManagerEndpoint $endpoint


In this case, we used the Azure Resource Manager (ARM) commands, but all the commands are also available in the service mode. To know more about how to deploy with ARM you can read my previous post. To see all the command available supported with ARM to configure your solution, go see the documentation online.
Happy testing!


References:


Reading Notes #234

tree in a blue skySuggestion of the week


Cloud


Programming


Miscellaneous



Reading Notes #233

mprofileCloud


Programming


Miscellaneous



Azure Resource Manager (ARM) for beginners

(Ce billet en aussi disponible en français: Azure Resource Manager (ARM) pour débutants)

You know that image where you see people pulling a cart with square wheels, a man on the side wants to show them a circle wheel but the group reply they are too busy to care... Well, that was me with Azure Resource Manager (ARM). I knew it was good, but it looks too complicated, so I was waiting. Last weekend, I decided it was enough I needed to learn it! Right after few minutes, you cannot imagine my disappointment! It's so simple, so powerful and also so fast. This post explains how to deploy an ARM template, and how it works.

squarewheels

5 easy steps to deploy our first ARM template


To get started the easiest way possible I decided to use Visual Studio. For this sample let's create simple Windows Virtual Machine (VM). Only five steps are required to do it:

Step #1 - Create an Azure Resource Project

From Visual Studio create a new project of type Azure Resource Group. Be sure to have already installed on your machine the latest version of Azure SDK and Visual Studio updates.

step-1-Create_arm_project.1

Step #2 - Select the Arm template

This is where we select what we want in our template. Many options are available in VisualStudio and a lot more can be found on Github at: Azure Arm Git Template. In our case, let's select the sample Windows Virtual Machine, and click the Ok button.

step-2-Select_Tempplate

Step #3 - Deploy the new template

Visual Studio will now generate multiple files, we will come back to it later, right now we will only deploy our solution. Right-click on the project et select Deploy.

step-3-Start_deploy

Step #4 - Configure the deployment

Our first deployment is mostly ready, we just need to specify few details like the subscription and the resource group. Once you click Deploy, one last thing will be asked: the adminPassword.

step-4-Config_deploy

Step #5 (the easiest one) - Enjoy

Voila! After few minutes, the virtual machine will be created, and we should be able to connect remotely to it.

Let's explain the magic


When the project was created, three folders were populated: Script, Template, and Tools. The last one is a bit obvious, it contains AzCopy, a tool to copy files. If you don't know AzCopy, you can learn more in a post I wrote recently.

Open the Deploy-AzureResourceGroup.ps1 contained in the Scripts folder. It's this script that will do all the hard lifting to deploy our rescourceGroup. If we look a bit closer, you will notice some parameters are declared, at the beginning of the file. Two of then should catch our attention.
    [string] $TemplateFile = '..\Templates\WindowsVirtualMachine.json',
    [string] $TemplateParametersFile = '..\Templates\WindowsVirtualMachine.parameters.json',

TemplateFile is the path of our template (the one we selected previously), and the second TemplateParametersFile will contained all the parameters values to fill the blank of our template. This will be especially useful to deploy the same template in a different environment. In fact, this is a really big advantage. You can deploy the exact same schema to your development and production environment just by having two parameters.json file.

Let's have a peek at the template, in this case WindowsVirtualMachine.json. It's a 'json' file, so it's human-friendly, but it can be a bit scary at first. In the image just below, I collapse the collections to be able to emphases the visibility of the three prime elements: parameters, variables, and resources.

jsonTemplate

We already know parameters, so let's jump the variables. This section contains a list of key pair value like: imagePublisher, vmSize, virtualNetworkName, diagnosticsStorageAccountName, etc. Those can be fixed value or dynamics by using other variables or parameters. Here some example:
    "vmSize": "Standard_A2"
    "vhdStorageName": "[concat('vhdstorage', uniqueString(resourceGroup().id))]"
    "virtualNetworkName": "[parameters('virtualNetworkName')]"

Last section but not least: the resources. This is where everything is put together to build the solution you will deploy. The resources are defined by specifying their type, name, and properties. You can assign any value from a static string, parameter value or a variable value.

Now that we know it works, why should we use it


Explain all the advantages to use ARM template could be a post by itself, and go further of the scope of that post. However, here few reasons:
  • A template file is light and easy to keep in a repository.
  • It's very simple to have the exact same template deployed in multiple environments.
  • ARM templates are really fast to deploy.
  • Easy to edit/ customize/ expand.
  • Easy to delete.

In Video Please


If you prefer, I also have a video version of this post.



What's Next


This post was voluntary very simple to be easy to understand. Now it's your turn deploy a modest schema or something more complex. Many different templates can be found at various places: Visual Studio, Azure Arm Git Template, and Azure Quickstart Templates. Great tools exist also to help you to visualize or edit these templates: Azure Resource Explorer and Download Azure Resource Manager Tools for VS Code

Resources:

~ Frank


Reading Notes #232

Microsoft-Canadian-Cloud, from Lixar blobSuggestion of the week


Cloud



Reading Notes #231

tulipSuggestion of the week

  • Introducing docs.microsoft.com - Great post that explains all the nice features of the first glimpse of the new Microsoft documentation. They did a fantastic work, a post to read; a site to remember.

Cloud


Programming


Data


Miscellaneous




Reading Notes #230

15288837503_ba2b786d93_zSuggestion of the week

  • Data Locality - Great troubleshooting session explained, definitely a post to read.

Cloud


Programming


Photo credit: Claus Tom via Foter.com / CC BY-NC-ND


Reading Notes #229

NewLogicAppDesignerCloud


Data


Programming

  • Become a Visual Studio 2015 Power User (Allison Buchholtz-Au, Andrew Hall) - All Visual Studio developers must watch this video, big chance you had a d in your hand and didn't know about it.

Miscellaneous

  • It's a new blog! (Troy Hunt) - A delicious post, thanks Troy to share that with us.


A practical overview of Service Fabric

(Ce billet en aussi disponible en français: Un aperçu pratique de Microsoft Azure Service Fabric)

fabric
During the last Global Azure Bootcamp (April 16), the Montreal edition focused on Azure Service Fabric. The schedule for that day was packed with dynamic presentation and hand-on labs. Either because you were unable to be present or just because you want to learn more, it is not too late. The MsDevMtl team is happy to share with you all our documents we used.

Before you start

  • To be able to do the Hand on Labs you will need:
  • A PC with Windows 7, 8, 8.1 or 10
  • VisualStudio 2015 Update 1 or 2
  • Service Fabric SDK v2.0.135 (or more recent)
  • A Microsoft Azure subscription. If you don't already have one, here a free trial to get you started aka.ms/azuretrialmtl

The One-day Schedule

As you see the complete edition of the Azure Fabric Learning Path contains much more details and labs. Since we had only one day we decided to cherry picked what we thought was the best to get started, but feel free do more.

OneDayLearningPath

  • Intro to services and Service Fabric Overview
  • Labs 1 & 2
  • Application Packaging & deployment
  • Diner
  • Labs 3 & 4
  • MS at scale & High Availability
  • Lab 5
  • Diagnostics & Health policies
  • Lab 6
  • Who is using SF, AoA, Testing
  • Lab 7 & 8
  • Upgrades
  • Lab 9
  • Conclusion

Where to find everything you need


Questions?

All the presentations were done by Alexandre Brisebois (@Brisebois), Stepahne Laporte (@s_lapointe), myself (@fboucheros), and under the supervision of our fantastic bandmaster Guy Barette (@GuyBarrette). Feel free to ask us questions if you get blocked during your journey.




.

Reading Notes #228

IMG_20160416_085010Cloud

  • But Why Do You Trust Your Data? (Buck Woody) - I consider this post as a really great teaser. After ready his post most chances are you will check the video it recommended... and next give a shot to Azure data Catalog.

Programming


Data

  • Analyzing your Azure Search traffic (Berni Torres Garayar) - Great post that explains how to improve our services by listening to our client's search requests, leveraging the new Azure Search Analytics and PowerBi.

Miscellaneous


~Frank


Reading Notes #227

Suggestion of the week


2016-logo-250x169Cloud



MVP Award 2016!

MVP2016_paque

Thank you

Since two years now, the first of April is very special for me. Not because of all the April fool, but because that the date you made me a Microsoft Azure MVP.

I'm very proud and happy to be renew this year again. I wanted to take time to thank you all. I will continue to write and talk about my passions!
See you soon...






Up-comming events



Reading Notes #226

build-2016Microsoft Build 2016


Cloud


Programming