Congratulations: another year of #windowsazure MVP awesomeness awaits you!

“Dear Mike Martin,

Congratulations! We are pleased to present you with the 2014 Microsoft® MVP Award!”

just when you thought your year couldn’t get any better, then you get this wonderful news of being renewed for another year of MVP. 2013 was a blast. What a ride. Being part of one of the most anticipating interactive MVP families makes you feel special (European way ;-)). This last MVP year brought me a lot: Azureconf, Cloudburst, Cloudbrew, the Global Windows Azure Bootcamp, Summit … just too much! But not only that, but more important : a lot of new friends … all over the world! And now? I can do it all over … again! And I’m happy as a clam with it :-) Thanks once more community because we can’t do it without your help!!!!

Advertisements

Bigger, Bolder, Better! Join the Global Windows Azure Bootcamp on 29/03!

imageAfter last year’s success, a second more successful round of GWAB is en route. At the end of this month we’ll have about 26h of around the world bootcamps in more than 135 locations. Sheer Madness!!! (or Fricking awesome as @Noopman always says J ) This year will be even more special. Last year we spent about 9000 compute hours on rendering Windows Azure Security (read this as sharks with fricking lazers J) and therefor we joined forces with a charity this year to put some good use to the compute capacity. What’s it about ? well read this smaal excerpt from the GWAB Site (http://global.windowsazurebootcamp.com/charity/ )

The Global Windows Azure Boot Camp event will help advance this endeavor by hosting a globally distributed lab in which attendees of the event will deploy virtual machines in Windows Azure which will help analyze data needed for this research. We’re aiming at discovering how our body’s serum protein glycosylation works. We want to know how high blood sugar levels present in diabetes patients affect the complex sugar production systems required for our health and ability to fight disease. We want to prove the theory that when small changes in this process start occurring, the disease can progress and lead to Type 2 diabetes. The results from this work will not only help understand the human diabetic state at the molecular level but also lead the way for early detection of diabetes.


looking at that map with all the locations just dazzles my mind!

map

Having that said I hope you will either join us or even better .. organize your own location (if you aren’t doing so already). there’s even 2 locations in Belgium: one in Genk and another one in Kortrijk, see our Azug page for more info : http://www.azug.be/events/2014-03-29—global-windows-azure-bootcamp-in-belgium

I’m proud of being part of the global organizer group next to these terrific gents:

Maarten Balliauw     Windows Azure MVP    @maartenballiauw

Magnus Mårtensson     Windows Azure MVP    @noopman

Mike Martin       Windows Azure MVP    @TechMike2kX

Alan Smith         Windows Azure MVP    @alansmith

Michael Wood         Windows Azure MVP     @mikewo

I hope March 29th will be as community filled for you as it will be for me!!!

Yours truly

M.

Toying around with Visual Studio Monaco on Windows Azure … some side dishes

050313_1311_Didyouknowh1.png2,5 months ago MSFT released Visual Studio Online to the masses (see my first look blogpost from 13/11/13 at it here ). It’s a great system and it works like a charm, but there’s a few things you need to know besides just the basics.

It’s an extension Jim, but not as we know it.

First things first, the foundation and architecture. Well actually when you’re using Monaco on of your websites, you’re actually using … well … your website. Monaco is installed as a Private Website extension totally living in the same sandbox environment as your website only with a different end-point.

When we take a look on the structure it will become more clear:

As you can see both the website and the Monaco site extension point to the same inetpub root on the PaaS IIS role. (Yes, websites do run on Windows Azure webroles). The only difference is that the VSO does editing and the entry point on website does runtime execution.

Knowing what the structure is of this this technology then something should slip to mind. Since it runs on the same node and workspace, you should realize that, when you would activate and use this a lot, it comes with a cost.

Because it runs on the same PaaS role, it will also use its compute and bandwidth capabilities. Compilation will be accumulated with your web calling compute hours on your website role. This means that, when for instance, running free model websites your website might be locked from time to time. So this is important enough to know and realize.

How they’ve build it is actually quite cool. The total solution Node.JS bases and consists out of a little more than 200.000 lines of TypeScript code, which gets compiled to JavaScript. So the entire thing is running client side/in the browser. For those who pay close attention: yes it is based on the same solution as is used for “Napa”, TFS Online, SkyDrive, Windows Azure Mobile Services, and so on and so …

Fast responsiveness during coding, semantic references, AST (Abstract Syntax Tree) running in the browser, etc. … are all being generated through TypeScript in the browser. Giving you flexibility and performance at your fingertips.

As stated, it’s based on Node.Js and following technologies have been integrated/used for developing the environment(s) in the back-end:

As you can see a nice fair set of tools and technologies used for bringing you a rich environment.

Crouching Tiger, Hidden Dragon.

Being aware of all the goodness Monaco hides let’s take a look at some non-conventional scenario’s. And by non-conventional I do mean scenario’s that it wasn’t perhaps even meant to be used for.

  1. I got the Power(Shell)

    Since we are running in a windows environment, one could start looking for the underlying technologies. One of the more important things in Windows today is PowerShell. Does it exist? Typing powrshell doesn’t seem to do much, but when typing help we do see there’s a powershell entry:

    But then again, it’s not a real life console as we know it.

    So let’s try something basic and try to get all the processes from the machine (s). I add a new file to the explorer tree and edit it with the line get-process


    I then enter the command ps powershell.ps1 in the console and …. Tattaaa:

    All the running processes are showing.

    I can even get all the variable information out of it by using get-variable:

    Or the PS version :

    BUUUUT no services … :

    This will probably have to do with the sandboxing (and can probably be used as proof too I think).

    Then again some powerfull info can still be gained from dir‘ing the env: psdrive which shows us that we are running on a Red Dog (the old/original Windows Azure Codename) machine and what kind of machine we’re running it on in shared mode

    Then of course we could use this power to create some stuff also, like webpages with that info and much much more. I haven’t found out which cmdlets are able to run and which ones not. But I think you could put some good use to the ps shell somehow.

  2. The Cloud Atlas … aka azure-cli

    Another thing we have available to this environment is npm (so it seems, when we run help from the console). Now, I don’t know about you, but when you say npm to me the first thing that jumps to mind is … you guessed it! Windows Azure Xplat Client Tools J !!! Now I got you probably thinking “wait, you’re not saying you want to manage the cloud … from the cloud …. ?” Yes I actually do want to do that: imagine git + npm + xplat tools = continuous availability of all your management scripts ! no need to have a device with all tools installed: you just need a browser. Yes but you also just can use the portal then … well not quite true, because now you can use your onsite created scripts … EVERYWHERE (even from a smartphone!)

    So let’s see if we can pull this one off :

    Well not with the –g switch (sandbox) but we can do it without. And as you can see it created me all my node tools in a separate folder inside my website:

    It installed allright , but does it work?

    It seems so now, doesn’t it?

    So the only thing missing a publishing settingsfile or an account login. Since the Azure-cli tools don’t support the account login yet, we need to go for a settings file. I guess launching a browser window from an emulated console inside a browser would be impossible, but I gave it a try anyway:

    No luck there, so I just dl’ed myself a fresh one from my own stack and dragged it inside my file explorer pane in Monaco:

    Let’s try to import the settings:

    This means I can access my Windows Azure Assets, right? Let’s try for something nog websites related:

    Cool J, can I do more?

    Let’s stop a VM

    Do note: CASE SENSITIVE ;-)

    WORD OF ADVICE : when doing the above operations: DO NOT FORGET TO DELETE YOUR .publishsettings! it’s a precious thing!

[UPDATED/ADDED 28-01-2014] The tale of two Git-ies …

When considering using VSO Monaco, try only to use it with DEV or more static WebPages and not in direct measures of using it in heavy production websites. Try to set up an ALM stream from your sources just a s you would in any other situation. The easiest way to achieve this is to activate the new Staging Preview on websites, which will actually help you on this matter (in the easiest way). How to proceed?

  1. Initiate a new website and activate VSO Monaco on this one. This site will function as your DEV area
  2. clone or initiate (depending on what you already have of course) a Git repo.
    DO NOTE: this is not to be confound with publish from sourcecontrol, this has to be seen as a LOCAL REPO! so do it through the VSO MONACO INTERFACE.
    Once that’s done and you have a stable solution, you can proceed to the next step in the flow
  3. initiate a second Website (create a quick one, without anything)
  4. activate the Staging Preview on this one.
    DO NOTE: when doing this you’ll need a standard mode website to achieve this, your dev site can still be in free mode (but consider the accompanying cost remark made earlier)
    staging
  5. once that’s done, open the staged site and choose to deploy from source control on that one and activate your earlier created git repo on this one.
  6. when in place you can now do a VIP swap when finished in Staging when neededHere’s a schematic of the flow :
    flox
    If you want more info on the underlying  and a more deep ALM thought on the thing take a look at the Monaco Blog site : http://blogs.msdn.com/b/monaco/archive/2013/12/06/using-monaco-for-in-depth-modifications.aspx

As you can see VSO Monaco is not limited to coding alone, it even makes a great environment for doing some perhaps continuously available devops stuff. As with many thing Azure one should think outside of the box (and a big box it is indeed). Monaco is a standard tool but one you can (ab)use for your needs. Especially when you know that the entire environment is sandboxed and totally locked down for your privacy.

Happy tinkering!

Yours truly,

Techmike2kx

Toying with Server 2012 R2 and #WindowsAzure : the (rd)X-Files

051313_0924_Didyouknowh1.png

Since last summer Microsoft has allowed Remote Desktop Services running on Windows Azure. Do note this is not to be confound with an RDS session, which is merely for remote administration purposes. The thing I’m talking about is remote application provisioning and application virtualization. This would make a great alternative for Citrix environments. Or even just fun to play around with. J Now the thing on RDS and RemoteApp is that it can be installed in 2 flavours. With several roles and features there’s some things we need to keep in mind before we start unstalling this “little gem”. on a sidenote, this is only allowed, for now under SPLA licensing terms. More info on that can be found here:  http://blogs.msdn.com/b/luispanzano/archive/2013/07/15/remote-desktop-services-are-now-allowed-on-windows-azure.aspx  and http://www.windowsazure.com/en-us/pricing/licensing-faq/ 

Step 1 : Requirements

First of all Remote Desktop Services needs Active Directory as a basis for authentication and management. Typically you will run this setup on prem unles you want to go in a hosted application / SaaS like mode, but this would mean a lot of additional management and overhead. This means that you either need to provide a new AD or make sure you can reach an AD at your disposal. For practical matters and playing around I installed a new AD (and anything else RDS related afterwards) in a single VM on Windows Azure. Do note (and as always, this is something people tend to forget easily!!!) that, when you create an AD in Widnows Azure you need to add itself as DNS. The only way this can be achieved so far is by means of PowerShell. If you don’t do it this way, well basically you will lose your machine once it gets rebooted (and trust me it will reboot at one point in time).

1 #Specify my DC's DNS IP (127.0.0.1) 2 $myDNS = New-AzureDNS -Name 'myDNS' -IPAddress '127.0.0.1' 3 $vmname = 'MYVMNAME' 4 # OS Image to Use 5 $image = 'availablewindowsserverimage.us-127GB.vhd' 6 $service = 'MYVMSERVICE' 7 $AG = 'MYAFFINITYGROUPNAME' 8 $vnet = 'MYVNETNAME' 9 #VM Configuration 10 $MyDC = New-AzureVMConfig -name $vmname -InstanceSize 'Medium' -ImageName $image | 11 Add-AzureProvisioningConfig -Windows -Password MYPASSWORD -AdminUsername MYADMINUSERNAME | 12 Set-AzureSubnet -SubnetNames 'MYAVAILABLESUBET' #DO NOTE : THIS MUST EXIST! 13 14 New-AzureVM -ServiceName $service -VMs $MyDC -AffinityGroup $AG -DnsSettings $myDNS -VNetName $vnet

The real magic is located in the first line itself.

Once that’s done then it’s just a mere running of the “Add Role and Feature”-Wizard or running the Powershell cmdlet’s for adding and configuring AD and DNS. (this can be done by adding the module throught Import-Module ServerManager and Import-Module ADDSDeployment , if you want to see what it might look like well here’s a sample AD deployment script (could be done through PowerShell remoting if your want to fully go for DevOps mode )

1 Import-Module ADDSDeployment 2 Install-ADDSForest ` 3 -CreateDnsDelegation:$false ` 4 -DatabasePath "C:\Windows\NTDS" ` 5 -DomainMode "Win2012R2" ` 6 -DomainName "MYDOMAINNAME.EXT" ` 7 -DomainNetbiosName "MYDOMAINNAME" ` 8 -ForestMode "Win2012R2" ` 9 -InstallDns:$true ` 10 -LogPath "C:\Windows\NTDS" ` 11 -NoRebootOnCompletion:$false ` 12 -SysvolPath "C:\Windows\SYSVOL" ` 13 -Force:$true

once the machine is created add an additional endpoint on HTTPS / Port 443 in order to have RDS work properly (you can also add it to your script)

Step 2 : gimme an R, Gimme, a D Gimme an S! R-D-S

Once AD is in place, we can continue with the installation of RDS itself. now as I mentioned there’s a couple of “flavors” to install. the choices that you have are somewhat limited with Windows Azure. And it makes sense somehow (you’ll see in a aminute)

Well for installing RDS you need to go to Manager and run the Add Roles and Features wizard again.

image

image

This time, instead of choosing Role-Based or Feature-based installation choose Remote Desktop Services Installation (and press the obligatory Next button of course or you’ll just sit there for hours)

image

Now when you didn’t install an AD (or joined a domain when doing a multi machine installation) you might get following message:

image

If so … welll you knnow what to do (I’ll give a hint : see the requirements)

The next choice to make is either you go the the one click way or the multi click way. When choosing Satandard Deployment you get the choice to pick all the different servers yourself (and thus enabling multi server/role deployments) where the Quick Start gives you the easy option on installing every role on one machine.

image

I’ll go with the Quick Start for now (but for your convenience and curiosity I’ll add the other installation options at the end of the post)

Now, the screen that pops up next is actually the flavor choice is was talking about earlier, but since we are doing this on Windows Azure our choice is a little pre-defined here.

image

Can you guess why? No? Look again … see it now? Yes, indeed. the first choice is the one for VM based desktop deployments. Hence maybe the reason why I didn’t call my blogpost the VDI Files (although my server is called something like that) Why won’t this work. We’ll easy, for virtualizing you actually need hardware to become the hypervisor. And since we are on Azure Vm’s already we don’t have access to an hypervisor or Hyper-V host. If you would pick the Virtual machine-based desktop deployment you would actually receive following message/error :

image

So just abandon that choice and pick Session-based desktop deployment. Now it could be that you still get a popup with an error/message:

image

this actually means that WinRM isn’t registered well somehow. to avoid/solve this just run a  Powershell console in admin mode and run Enable-PSRemoting . This will configure every aspect of WinRM correctly for you with every aspect kept in mind (FW, Listener , etc etc…)

image

just make sure you answer [A] Yes to All twice.

if you now retry the wizard will pass to the next step:

image

check that the server is correct (since it’s a single machine install …. well not much choice there, is there?)

confirm and check the ‘’”Restart” option

image

and DEPLOY:

image

since it’s RDS, the machine will disappear as terminal connection for a couple of times (it messes with the remote session settings a couple of times and  a reboot at the end)

Step 3: Run Forrest, Run

now all should be up and running, the time has come to give it a small test drive.Just surf to the newly created Cloudservice Url (it looks something like this https://cloudservicename.cloudapp.net/RDWeb )  and you’ll get a dirty browser windows with a certificate trust question:

image

This is normal (IIS auto generates a self signed cert), just click continue to this website. If all is well you’ll get a logon screen for you RDS environment.

image

Enter a username and password for a user existing in your domain.

now you should see 2 things: a browser window ith all accessible apps (jaaaaay!) and a system tray icon: image

image

image

Unfortunately when clicking one of the apps you’ll see this

image

and then this

image

this is due to the name resolution from DNS (see step 4 for more info).

his can be easily resoled by adding the VIP of your VM and your internal FQDN of your server to your local HOSTS file. That way it can resolve directly.  E.g. xxx.xxx.xxx.xxx MYSERVERNAME.MYINTERNALDOMAIN.EXT

after you do that it will as a charm. for instance I added Internet Explorer in private (or pr0n mode if you please )

image

and gives this as a result

image

Step 5: additional config

Off course now you want to start using it and adding your own apps. this is a 2 click config which is super easy!

go to the Server Manager and open the RDS management.

image

CLick on the left hand side on the QuickSessionCollection, which is the standard app collection

image

this will show all the already available apps. In the task button, select the Publish RemoteApp Programs

image

and then just follow the wizard (again)

image

image

image

image

Done the apps should now show up in the browser after a refresh.

image

and that’s it

APPENDIX:

the small issues arise

As you can see there’s a few catches here and there.

Since I did an install, it also auto-generated a self-signed cert for the HTTPS traffic. now for testing and internal references this isn’t an issue, but make sure you do it correctly for production and public facing (even if it just was for the cosmetic part of ) This does mean however that, if you want to make use of the Windows 8.x RemoteApps feature for registering the feeds and installing the app shortcuts THIS WILL NOT WORK (the CA is not trusted and Windows makes a deal out of it, which I find normal)

Another thing we’ve come across is the DNS issue, since I didn’t incorporate a Site-2-Site VPN (or even a P2S for that matter ), I’m having resolution issues with DNS –> refering from .Cloudapp.net towards the internal dns name doesn’t resolve. For production purposes you would typically handle this through your public DNS namespace servers, which will be able to resolve these hostnames.

as promised: “The Distributed Setup Screens”

1

image

2

image

3

image

4

image

Of course there’s a lot more config and distribution possible but hey  it’s a quick start. Happy Fooling around !

It’s another release of #windowsazure tools galore …. Or how teams can excel in continuous delivery mode!

051313_0924_Didyouknowh1.pngToday another couple of major releases have been thrown at the world. And not the least to be honest! Different teams within the Windows Azure Delivery Team in Redmond have created several new packages at your disposal/use/fingertips:

  • A new release of the Windows Azure SDK already now on version 2.2. It returns us all the features we had for 2.1 in Visual Studio 2012 but now also in version 2013! Plus now everything can be found underneath the Windows Azure tree instead of websites as a separate childitem.

    In Visual Studio 2012 – SDK 2.1 you had:

    Now in Visual Studio 2013 – SDK 2.2 you have

    One of the new features also in there is the possibility to logon with you credentials instead of certificates

    The connect will do the same things as explained in next release topic J, hang in there !

    Another handy thing is that for Windows Azure SQL Databases you no longer need to pass throught the management portal in order to have access to your databases

  • There’s also an update available for all you Powershell lovers out there: Windows Azure Powershell 0.7.0, an upgrade to the Augustus release of the cmdlets/tools. One of the better and newer things is the support for WAAD authentication support, so no more need for publishingfile downloads or certificates in order to manage your Windows Azure assets! How does it work?

    Here’s a quick guide:

  1. Install the new Powershell tools
  2. Open the Windows Azure Powershell commandline (or a normal powerhell console and do import-module Azure)
  3. Use the Add-AzureAccount cmdlet, and it will open up a window where you need to enter your account name (LiveId or org id)

    After entering your ID, then it could be that your account is recognized either as a Live ID, Org ID or even both. If so choose the most appropriate one you’d like to use:

    Enter your password :

    And you’ll be returned to the prompt:

  4. Of course you can not only add but also Get-AzureAccount

    and Remove-AzureAccount (with a prompt of course!)

What else is in their changelog: 2013.10.21 Version 0.7.0

  • Windows Azure Active Directory authentication support!
    • Now you can use your Microsoft account or Organizational account to login from PowerShell without the need of any management certificate or publish settings file!
    • Use Add-AzureAccount to get started
    • Checkout Add-AzureAccount, Get-AzureAcccount and Remove-AzureAccount for details
  • Changed the file format which is used to store the subscription information. Information in the original file will be added to the new file automatically. If you downgrade from 0.7.0 to a lower version, you can still see the subscriptions you imported before the 0.7.0 upgrade. But anything added after the 0.7.0 upgrade won’t show up in the downgrade.
  • BREAKING CHANGE
    • Changed the assembly name and namespace from Microsoft.WindowsAzure.Management.to Microsoft.WindowsAzure.Commands.*
    • Select-AzureSubscription
      • Now you can use it to select or clear either the current subscription or the default subscription
      • Replaced the -Clear parameter with -NoCurrent parameter
    • Set-AzureSubscription
      • Removed -DefaultSubscription and -NoDefaultSubscription parameters. Go to Select-AzureSubscription with -Default and -NoDefault parameters.
    • New-AzureSqlDatabaseServerContext
      • Replaced the -SubscriptionData parameter with -SubscriptionName parameter
  • Upgraded Windows Azure SDK dependency from 1.8 to 2.0
  • Added support for a new virtual machine high memory SKU (A5)
  • Next to the Windows env’s favorite commandline, there’s also a new Crossplatform tooling edition available (already at v0.7.3!!)

    Biggest new thing available is the ability to shutdown a VM on stop.

  • And then for the master piece, or like the French are willing to call it: La Piece de Résistance: The Windows Azure Service Management Libraries

    Yes you heard it folks: no more need of calling the API directly, MS now packaged (or started packaging) the Management API in an easy to use library distributed throught Nuget packages. For adding the packages just run Install-Package
    Microsoft.WindowsAzure.Management and all the API goodness will be coming dripping into your project at your disposal J (if you want to take a look on the available ones separate you can do so either through the package manager GUI or through the PowerShell NuGet cmdlets BUT … you need to keep in mind these are PreRelease version packages. So to get these you need to either select “Include Prerelease” or run the cmdlet Get-Package -ListAvailable -Filter microsoft.windowsazure.management –IncludePrerelease (the IncludePrerelease is the key here J )

    What comes with the package so far:

    The base needed :

    Nuget Package:        Microsoft.WindowsAzure.Common

    Description:         Provides infrastructure for common error handling, tracing, configuration, and HTTP/REST-based pipeline manipulation. The package also exposes the CloudContext type, which enables centralized discovery of available Windows Azure libraries.

    Supported Platforms

    • .NET Framework 4.5, 4.5.1
    • .NET for Windows Store apps
    • Windows Phone 8
    • Silverlight 5
    • Portable Class Libraries

    Nuget Package:        Microsoft.WindowsAzure.Common.Dependencies

    Description:         Provides popular portable components for a common HTTP pipeline and JSON parsing. This package is included as a dependency to other libraries such as the Windows Azure Management Libraries and should not be directly added to your project.


The goods:

Nuget Package:        Microsoft.WindowsAzure.Management

Description:         Provides Windows Azure infrastructure and data center management operations, including the ability to create and manage affinity groups.

Nuget Package:        Microsoft.WindowsAzure.Management.Compute

Description:         Provides virtual machine and hosted service management capabilities to developers. Launch, restart, scale, and manage VMs, hosted services, virtual disks, operating system images, and more.

Nuget Package:        Microsoft.WindowsAzure.Management.Libraries

Description:     This set of packages open up a rich surface area of Windows Azure services, giving you the power to automate, deploy, and test cloud infrastructure with ease.These services support Windows Azure Virtual Machines, Hosted Services, Storage, Virtual Networks, Web Sites and core data center infrastructure management.

Nuget Package:        Microsoft.WindowsAzure.Management.Storage

Description:         Provides storage management operations for Windows Azure, including the ability to create, delete, and configure storage service accounts and credentials.

Nuget Package:        Microsoft.WindowsAzure.Management.VirtualNetworks

Description:         Provides virtual network management capabilities for Windows Azure.

Nuget Package:        Microsoft.WindowsAzure.Management.WebSites

Description:         Provides management capabilities for Windows Azure Web Sites. Deploy, configure, debug, and scale your websites using familiar APIs.

The cool thing is that the new PowerShell release immediately implements the above new created Packages in order to keep everything aligned. If you want an in to depth blogpost on the topic read the program owner for this solution , namely Brady Gaster (@bradygaster) http://www.bradygaster.com/post/getting-started-with-the-windows-azure-management-libraries

  • With all the abovely mentioned new “offline” toys there’s also a new version of the portal available; The Portal now runs on version 3.11 instead of 3.10 (uh? Portal versions you say? Well yes .. Press CTRL-A and you get to see the version numbers and more info regarding the portal )

    The biggest improvement or new thing can be found in the settings pages. Here’s what:

    In v 3.10

    You had this familiar screen

    But in the “newer” version or v3.11

    You see the addendum at your left hand site:

    Where you can now attach your subscription(s) to a domain, which makes multi-tenancy more manageable in the future

    • Check you Usage per subscription

    • Change the domain assigned to the subscription
    • Also on filtering this allows you to filter multi subscriptions by domain

As you can see a lot of new toys to play with and a lot of tiny tweaks in everything that makes our life’s way more easy.