Get started with Adaptive Cards

Get started with Adaptive Cards

This article is contributed. See the original author and article here.

Hello dear digital technology enthusiast. I heard you would like to find out what Adaptive Cards are? In this article I will help you to understand what Adaptive Cards technology is, how it works and how you can use it. Follow me through the next chapters and I will try to explain it as clear as possible. 

 

In short words – Adaptive Cards is a technology, that lets you to focus on content and layout, not how it will be displayed on a specific device or browser. What you are responsible for is to prepare what you would like to show and how it should be organizede.g. should there be any tables, images, columns. However, the display side is taken care by the host. The host is an application, that displays Adaptive Card. It controls the colors, fonts, specific parts of layout, buttons’ shapes, backgrounds and almost everything that makes the Card to look, once displayed, as if this is just another piece of the user interface.  

 

Like a YouTube video in Facebook Messenger conversation. You see how seamlessly it displays within other chat messages? This is an example of a similar cards’ technology too. 

 

In Microsoft landscape we do have Adaptive Cards already in various places. Have you known it? You can find them when you talk to Cortana. 

TomaszPoszytek_0-1610369598416.png

They are also in Windows Timeline (access it by pressing Win+Tab).  

TomaszPoszytek_1-1610369705002.jpeg

 

You can find them in your Outlook when you receive a message containing an interactive form inside. 

TomaszPoszytek_2-1610369705011.png

 

And what is the most obvious – they are also present are very commonly used in Microsoft Teams – this is the platform on which I will focus in this article. 

Apart from the places I mentioned, Adaptive Cards are also present in multiple services from Microsoft, like Microsoft Search, Microsoft GraphAPI explorer, Azure Bot Framework and many more. This technology however is not limited and exclusively used only by Microsoft. Cisco is using it to display cards in their Webex Teams and Adaptive Cards’ SDK (Software Development Kit – set of tools used to build and run software) is open-source and hosted on github, therefore anyone can use it in their development own projects, for example when building apps for Android or custom web sites with JavaScript or .NET. 

 

How does Adaptive Cards work? 

Adaptive Card is a technology that uses JSON (JavaScript Object Notation – structured method to describe information, learn more from Bob German here: https://techcommunity.microsoft.com/t5/microsoft-365-pnp-blog/introduction-to-json/ba-p/2049369to declare how the final card should look like. The defined code is then parsed by the host that has Adaptive Cards SDK installed. Using SDK and JSON schema (schema defines what information can be used by authors in their cardsfor the specific version translates code into valid HTML that is being displayed to users. 

TomaszPoszytek_3-1610369704993.png

 

Thanks to this approach, creation of user interface using Adaptive Cards is not only fast (no need to design separate card for desktop and mobile, for Android and iOS etc.), but also secure, since if part of JSON code that is used in card does not exist in SDK, it will not be rendered, so no malicious code can be then executed at user side. 

 

All right. Now that we know what they are and how they work, let me tell you how to create them. 

 

Adaptive Cards authoring 

The best place to start authoring your first (and every next) Adaptive Card is the designer, that you can find at https://adaptivecards.io/designer. There you can, following drag&drop visual designing approach create Adaptive Card and then configure all required properties. The designer is built from the following functionalities: 

TomaszPoszytek_4-1610369705020.png

 

  1. New card  allows to create a card from a blank canvas or to start using one from existing templates. 
  2. Select host app  is used to switch between hosts. Remember what I wrote at the beginning? Host control how the card is going to be displayed. Just experiment for example by choosing Microsoft Teams – Dark and Light host. See the differences. 
  3. Target version. Each host has different version of Adaptive Cards implemented. Therefore, once you select host, the version will be automatically selected for you. Version determines what functionalities can be used. 
  4. Card elements are the building bricks of the card. Here you need to choose between: 
    1. Containers – they define the layout, like imageSet will be displayed as a gallery, whereas FactSet as a table with two columns. 
    2. Elements – those are the pieces used to display the information like text or image. Why ActionSet is here? Good question. This container is lets you to define actions within any place of the card.  
    3. Inputs – with their help card can not only be used for displaying data, but also for its collecting. With inputs authors can build rich forms and request information from users. 
  5. Main canvas – here you can, following drag&drop method, place elements and build final card’s interface. 
  6. Card structure displays hierarchy of elements. Like TextBlock will be always below a container etc. 
  7. Element properties – here authors define parameters specific per each element. Like font size, align, id, values and much more. 
  8. Payload editor displays working JSON code, that author can simply copy and paste e.g. in Power Automate to display the card in Microsoft Teams. 
  9. Data editor is used to bind data placeholders in card with specific values from data object. This is called Adaptive Cards Templating and since is not yet supported in Microsoft Teams will not be explained in this article. 

 

What are the Actions? 

Actions can be added to the card via the ActionSet or simply defined at the bottom of the main container. 

TomaszPoszytek_5-1610369704978.png

 

There are four types of actions that author can choose from: 

  1. OpenUrl – lets to open an external URL. Like hyperlink. 
  2. Submit – sends back data from the card and inputs back to the host. Host is then responsible for the data processing and further operations. 
  3. ShowCard – displays or hides sub-card – like a card within a card. 
  4. ToggleVisibility – shows or hides defined elements on the card. 

 

Adaptive Cards in Microsoft Teams 

In Microsoft Teams the host that displays Adaptive Cards is called Flow Bot. This is bot built using Azure Bot Framework technology. Its job is not only to display custom cards, but also Power Automate Approvals and some more. 

 

Today there is just one option to display Adaptive Cards in Microsoft Teams without a need to develop custom bots. This is through Power Automate. How? Flow sends Adaptive Cards JSON code to the Flow Bot which renders it and display in Microsoft Teams conversation. 

In Power Automate there are several actions that allows to generate Adaptive Cards in MS Teams, however each has significantly different purpose. 

TomaszPoszytek_6-1610369705006.png

 

TomaszPoszytek_7-1610369704982.png

1. Post a choice of options as the Flow bot to a user – action allows to send an Adaptive Card in a pre-defined layout, where author can define message and options – that will be displayed as button. After card is sent, flow is paused for up to 30 days waiting for user’s response.  
This action can be used in simple approval/ collecting feedback scenarios, where no fancy layout is expected. 

TomaszPoszytek_8-1610369704984.png

2. Post an Adaptive Card to a Teams user and wait for a response – allows to send custom built Adaptive Card to a specific Microsoft Teams user and to pause the flow for up to 30 days while waiting for response. 


3. Post an Adaptive Card to a Teams channel and wait for a response – the same as above, but Adaptive Card is sent to a channel. 

TomaszPoszytek_9-1610369704985.png

4. Post a message as the Flow bot to a user – sends a pre-defined Adaptive Card to a chosen user but does nothing more. Author cannot embed here custom JSON code. 

 

5. Post a message as the Flow bot to a channel – the same as above, but message is sent to a channel.  

TomaszPoszytek_10-1610369704997.png

6. Post your own adaptive card as the Flow bot to a user – allows author to send custom Adaptive Card to a user, however it is not waiting for the response so in case card contains form, Action.Submit results in error.  

 

7. Post your own adaptive card as the Flow bot to a channel. As above, however the card is sent to a channel. The above two actions simply allow to send the card, but they do not offer any way to collect feedback. They are a good choice if you are planning to simply send informative card, without forms. 

 

 

Exercise! 

Now it is your turn. Build an easy flow, that is triggered manually and all it does is posting an Adaptive Card to a Teams channel (of your choice), using “Post your own adaptive card as the Flow bot to a channel” action 

TomaszPoszytek_11-1610369704987.png

 

Then copy paste the following Adaptive Card JSON code and paste as “Message” inside the action: 

 

 

 

{
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "type": "AdaptiveCard",
    "version": "1.2",
    "body": [
        {
            "type": "TextBlock",
            "text": "Hey @{triggerOutputs()['headers']['x-ms-user-name']}! Here are some cool cats photos",
            "size": "Large",
            "wrap": true
        },
        {
            "type": "TextBlock",
            "text": "I hope you like them ;)",
            "size": "Medium",
            "weight": "Lighter",
            "wrap": true
        },
        {
            "type": "ImageSet",
            "imageSize": "medium",
            "images": [
                {
                    "type": "Image",
                    "url": "https://4.bp.blogspot.com/-XkviAtJ1s6Q/T3YFb2RUhDI/AAAAAAAAAVQ/EHomLZlFMKo/s1600/small+cat.jpg",
                    "size": "Medium"
                },
                {
                    "type": "Image",
                    "url": "https://images4.fanpop.com/image/photos/18500000/Kitten-cats-18565791-1024-768.jpg",
                    "size": "Medium"
                },
                {
                    "type": "Image",
                    "url": "https://tse2.mm.bing.net/th?q=Funny+Cats&pid=Api&mkt=en-US&adlt=moderate&t=1",
                    "size": "Medium"
                },
                {
                    "type": "Image",
                    "url": "https://tse3.mm.bing.net/th?q=Grumpy+Cat&pid=Api&mkt=en-US&adlt=moderate&t=1",
                    "size": "Medium"
                }
            ]
        }
    ]
}

 

 

 

Now save and test your flow. You should see the below cool Adaptive Card in Microsoft Teams channel: 

TomaszPoszytek_12-1610369704999.png

 

Further learning 

Adaptive Cards is not just a simple technology. It is also the community that is behind. If you are interested in learning more about it, check the assets under the links below: 

  1. https://adaptivecards.io – here is the documentation, JSON schema explorer to tell you what is possible and what is not plus several samples. 
  2. https://adaptivecards.io/designer – the already known visual designer. 
  3. https://aka.ms/acroadmap – here is the roadmaprelease log and user voice, where you can submit your ideas. 
  4. https://madewithcards.io/ – the repository of community built Adaptive Cards examples, ready to use. 
  5. https://aka.ms/adaptivecardscommunitycall – add monthly, community call about Adaptive Cards to your calendar and be up to date with the latest ideas the team behind is planning. 
  6. https://github.com/microsoft/AdaptiveCards – the official github repository for Adaptive Cards code, where you can find the latest SDK if you plan to begin your journey as a developer. 

 

Wrap up

Adaptive Cards is a modern technology built by Microsoft to help content creators author parts of user interface much faster and with less issues, due to device-specific aspects. 

 

Knowledge about JSON code is useful, however it is not mandatory to successfully design cards. 

 

With the easy to use designer and intuitive actions in Power Automate, anyone can easily create and use Adaptive Cards for communication purposes and to enrich user experience in processes taking place inside Microsoft Teams. 

 

The technology can be used for many scenarios, that turns Microsoft Teams powered with Power Automate into a real digital workplace, where users can take part in the processes directly from conversations or chats, not being disturbed by the need to navigate between different systems. 

 

I encourage you to try it right away. 

Mount Blob storage on Linux VM NFS 3.0

Mount Blob storage on Linux VM NFS 3.0

This article is contributed. See the original author and article here.

Hello Folks!


 


Not so long ago I was working on an internal project that required me to deploy Linux VMs that were hosting a workload that saved a copy of any number of video live feeds to blob storage for safeguard and for future replays.  I also needed it to be mounted automatically when the VM was created.


 


I know that are several ways to map storage in a VM. You can:


 



  1. How to mount an NFS file share

  2. Use Azure Files with Linux over SMB

  3. How to mount Blob storage as a file system with blobfuse

  4. Mount Blob storage by using the Network File System (NFS) 3.0 protocol (preview)


I decided to give the NFS path a try.


 


Why NFS you may ask?


 


I’m not sure… Could be because NFSv3 provides compatibility for existing applications, could be because of the scale it can support or maybe just because it’s cost effective and easy to setup.


In any case, I followed the documentation here  to create the virtual network, service endpoint to ensure that the storage account can only be accessed from the appropriate vnet and subnet, and the storage account.


 


To automate this at the time of deployment I added the following few lines to the Custom Script Extention script i use to deploy the workload on a new VM at deployment time.


 


 


 

apt update
apt install nfs-common -y
mkdir -p /mnt/livefeed
mount -o sec=sys,vers=3,nolock,proto=tcp <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name> /mnt/livefeed

 


 


 


This worked great!


 


Except that the workload on the VM could not write to the blob storage. I realized that when the custom Script extension creates the folder livefeed in /mnt it’s done by the Azure Agent user context (Root) and therefore the permissions on that folder


 


NFS-permissions.png


 


Only provide read write to Root. For my test I added the following line to the end of my script, and it worked like a charme.


 


 


 

chmod 777 /mnt/livefeed

 


 


important.jpg


 


I do Not promote giving all rights to all users in a production environment.


 


 


My next step is to create a group that include the user context which the workload in running under and change the permissions so only the account needed have write access.


 


I really believe in the Least-Privilege Administrative Models when it comes to any environments (On-Prem, Hybrid and cloud native).


 


In any case, I hope this may give you some ideas on how you can leverage Azure services to address problems in your environment.


 


Cheers!


 


Pierre


 


 

 

 

Enhanced Audit Status Message Queries

This article is contributed. See the original author and article here.

First published on TECHNET on Mar 18, 2019


Authored by Brandon McMillan



Hello everyone!  My name is Brandon McMillan and I am a Microsoft Endpoint Configuration Manager (ConfigMgr) CE.  I have found that Status Message Queries can be one of the more underappreciated features of ConfigMgr.  The information you can gather in a quick and easy query can be very powerful in helping you determine the root cause analysis of an issue.  I hope this blog will provide you with additional Status Message Queries and how you can quickly export/import some examples into your environment.

First let’s break down the different Status Message Types:


 
































ID



Status Message Type



Description



256



Milestones


Use this type at the end of an operation to indicate the operation’s success or failure. If the operation was successful, use the Milestone type in an informational message. If the operation failed, use a milestone message type in a warning or error message.



512



Details


Use this type to illustrate the steps in a complex operation. Often, detail messages are meaningful only within the context of the sequence of status messages representing a complex operation.



768



Audits


Use this type for informational messages that provides a trail of actions taken by the Configuration Manager administrator. An audit message also depicts an operation that results in objects being added, modified, or deleted. You do not need to create audit messages; the provider automatically generates these messages for you.



1024



NT Events

 


Reference: SMS_StatusMessage WMI Class

Here is a quick overview of Status Message Queries:


 











Status Message Queries


Use this node to query status messages for specific events and related details. You can use status message queries to find the status messages related to specific events.

You can often use status message queries to identify when a specific component, operation, or Configuration Manager object was modified, and the account that was used to make the modification. For example, you can run the built-in query for Collections Created, Modified, or Deleted to identify when a specific collection was created, and the user account used to create the collection.



Reference: Use Alerts and the Status System


 


Enumerating Status Message Strings



How can we obtain a full listing of Status Message ID’s?  If you are unsure what Status Message ID’s to use to create a specific Status Message Query, you can export all the Status Messages ConfigMgr provides by using a PowerShell script from an article by SaudM .  The script and an example of an excel output from a ConfigMgr 2012 R2 environment can be found here: Enumerate Status Messages.



Here’s an example of how you can leverage the script and export the Status Messages based on type: Client, Provider, or Server Messages.


 


Client Messages


 

.Export-StatusMessages.ps1 -stringPathToDLL "<InstallDrive>:Program FilesMicrosoft Configuration ManagerbinX64system32smsmsgsclimsgs.dll" -stringOutputCSV ExportClientMsgs.csv

 


Provider Messages

 

.Export-StatusMessages.ps1 -stringPathToDLL "<InstallDrive>:Program FilesMicrosoft Configuration ManagerbinX64system32smsmsgsprovmsgs.dll" -stringOutputCSV ExportProviderMsgs.csv

 


Server Messages

 

.Export-StatusMessages.ps1 -stringPathToDLL "<InstallDrive>:Program FilesMicrosoft Configuration ManagerbinX64system32smsmsgssrvmsgs.dll" -stringOutputCSV ExportServerMsgs.csv

 


Default Status Message Queries


 


We provide many out of box queries that are delivered with the product; however, there are many Message ID’s that you can leverage which could help you build your own specific queries for your environment. Some of the default Status Message Queries you may already be familiar with are below:


 

































































Query Title Query Details
All Audit Status Messages for a Specific User Message Type: 768
Message Attribute ID: 403
All Audit Status Messages from a Specific Site Message Type: 768
Boundaries Created, Modified, or Deleted Message IDs: 40600-40602
Client Component Configuration Changes Message IDs: 30042-30047
Collections Created, Modified, or Deleted Message IDs: 30015-30017
Collection Member Resources Manually Deleted Message IDs: 30066-30067
Deployments Created, Modified, or Deleted Message IDs: 30006-30008
Packages Created, Modified, or Deleted Includes Package Conversion Status
Message IDs: 30000-30002
Programs Created, Modified, or Deleted Includes Package Conversion Status
Message IDs: 30003-30005
Queries Created, Modified, or Deleted Message IDs: 30063-30065
Remote Control Activity at a Specific Site, User, or System (4 Total) Message IDs: 30069-30087
Security Scopes Created, Modified, Deleted, or Imported Message IDs: 31200-31202 / 31220-31222 / 31207
Server Component Configuration Changes Message IDs: 30033-30035 / 30039-30041
Site Control Changes
Site Addresses Created, Modified, or Deleted Message IDs: 30018-30020

 


Enhanced Audit Status Message Queries


 


Now what if you need something more specific?  The following list may help you quickly determine what specific activities are occurring within your environment.  You can download the XML file and script resources here on GitHub: Enhanced Audit Status Message Queries.


 

































































































































































Query Title Query Details
Audit – All Alert Actions Includes DRS Alerts
Message IDs: 30240-30244
Audit – All Application Actions Message IDs: 30226-30228 / 49003-49005 / 52300
Audit – All Application Catalog Actions Message IDs: 30800-30805 / 50000-50004
Audit – All Asset Intelligence Actions Message IDs: 30208-30209 / 31001
Audit – All Azure and Co-Management Actions Message IDs: 53001-53005 / 53401-53403 / 53501-53503
Audit – All Boundary Group Actions Message IDs: 40500-40505
Audit – All Client and Collection Miscellaneous Actions Includes Update Membership, Device Imports, Clear PXE Deployments
Message IDs: 30104 / 30213 / 42021
Audit – All Client Configuration Requests (CCRs) Client Push actions.
Message IDs: 30106-30111
Audit – All Client Operations Actions Includes “Right Click” actions.
Message IDs: 40800-40804
Audit – All Client Settings Actions Includes Antimalware Policies.
Message IDs: 40300-40305
Audit – All CMPivot and Script Actions Message IDs: 40805-40806 / 52500-52505
Audit – All Conditional Access Actions Includes Exchange Online, SharePoint Online, and On-Prem Exchange actions.
Message IDs: 30340-30341
Audit – All ConfigMgr Actions in Console Checks components: Microsoft.ConfigurationManagement.exe / AdminUI.PS.Provider.dll
Audit – All Configuration Baseline Actions Message IDs: 30168 / 30193-30198
Audit – All Configuration Items Includes Compliance Settings and Endpoint Protection policy actions.
Message IDs: 30152-30167
Audit – All Content Library Actions Includes Content Library changes
Message IDs: 30080 / 30189-30191
Audit – All Distribution Point Actions Message IDs: 30009-30011 / 30068 / 30109 / 30125 / 30500-30503 / 40409-40410
Audit – All Distribution Point Changes Message IDs: 40400-40409 / 40506
Audit – All Folder Actions Message IDs: 30113-30117
Audit – All Messages  
Audit – All Messages (Specified Message ID)  
Audit – All Messages (Specified Timeline)  
Audit – All Migration Actions Message IDs: 30900-30907
Audit – All Mobile Device Management Actions Message IDs: 40200-40206 / 45000-45004 / 47000-47002 / 48000-48003 / 49003-49005 / 51000-51006 / 52000-52020
Audit – All Phased Deployment Actions Message IDs: 53601-53603
Audit – All Query Actions Message IDs: 30063-30065 / 30302-30303
Audit – All Report Actions Message IDs: 30091-30093 / 31000-31002
Audit – All Search Folder Actions Message IDs: 30700-30702
Audit – All Secondary Site Actions Message IDs: 30012-30014 / 30021-30023
Audit – All Site Server Boundary Actions Message IDs: 30054-30056
Audit – All Site Server Definition Actions Message IDs: 30030-30032
Audit – All Site Server Property Actions Message IDs: 30024-30029
Audit – All Site Server Role Actions Message IDs: 30036-30038
Audit – All Site Server Security Actions Message IDs: 30057-30062 / 30210-30212 / 31200-31242 / 31203-31249
Audit – All Site Server SQL Actions Includes Site Maintenance Tasks
Message IDs: 30048-30053
Audit – All Software Metering Rules Actions Message IDs: 30094-30095 / 30105
Audit – All Software Update Actions Message IDs: 30112 / 30118-30124 / 30135-30137 / 30172 / 30183-30188 / 30196-30198 / 30219-30221 / 30229-30231 / 30506-30507 / 42031-42033 / 4900-49002
Audit – All User Object Actions Message IDs: 30600-30606

 


Script to Import Status Message Queries


 


The script below can be download here on GitHub: Import-CMStatusMessageQueries.ps1.


 


 

param(
    [Parameter(Mandatory=$True)]
    [string]$XMLPath
)

# Imports ConfigMgr Module
Import-Module "$env:SMS_ADMIN_UI_PATH..ConfigurationManager.psd1"

# Get SiteCode
$SiteCode = Get-PSDrive -PSProvider CMSITE
Set-location $SiteCode":"

# Imports XML
try
{
    $CMStatusMsgs = Import-Clixml $XMLPath
}
catch
{
    Write-Host -ForegroundColor Red "Invalid file path or file type.  Please try again."
    Exit
}

foreach ($Query in $CMStatusMsgs)
{
    try
    {
        $StatusQuery = @{
            Name = $Query.Name
            Expression = $Query.Expression
            Comments = $Query.Comments
        }
        New-CMStatusMessageQuery @StatusQuery
        Write-Host -ForegroundColor Green $Query.Name "was created successfully."
    }
    catch
    {
        Write-Host -ForegroundColor Red $Query.Name "already exists."
    }
}

 


 


Export Status Message Queries to XML


What if you wish to export your own Status Message Queries to another environment?  You can leverage the ConfigMgr PowerShell cmdlets: Get-CMStatusMessageQuery and Export-Clixml.


 


NOTE: Requires the ConfigMgr PowerShell Module

 


Export all Queries


 

Get-CMStatusMessageQuery | Export-Clixml <path>StatusMsgQueries.xml

 


 


Export only Queries beginning with the name “Audit”


 

Get-CMStatusMessageQuery -Name Audit* | Export-Clixml <path>Audit_StatusMsgQueries.xml

 


 


References: Get-CMStatusMessageQuery, Export-Clixml

I hope this information will help you in becoming a true detective within your environment.  Very special thanks for SaudM on the “Enumerating Status Message Strings” script along with Kevin Kasalonis on his assistance with the content of this blog.

Thank you again for reading!

Brandon McMillan, Customer Engineer 

Disclaimer: The information on this site is provided “AS IS” with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of any included script samples are subject to the terms specified in the Terms of Use.

New ARM template for automating Magento deployments to Azure!

This article is contributed. See the original author and article here.

A few months ago, I published a blog post announcing the availability of guidance for deploying Magento in Azure Kubernetes Service (AKS). Today, I’m pleased to announce the release of an Azure Resource Manager (ARM) template, with variables for all scalability settings, designed to help deploy Azure resources for Magento. 


 


Note: For details about the solution architecture for running Magento on Azure, see this reference architecture. 


 


Performance tuning 


Initially, our goal was to identify the parameter settings required to reach 300+ orders per minute. For performance testing, wleveraged the Magento Performance Toolkit, which uses Apache JMeter to simulate customer behaviors such as signing in, browsing products, and checking out. At the beginning of the process, we discovered a few bottlenecks, such as serving static files, storing user sessions, using full-text search, and some issues related to networking. These factors contributed to a starting point of about 140 orders per minute. After we resolved all bottlenecks, we were able to achieve 340 orders per minute by using a 10node AKS cluster with 16 core MySQL


 


Template parameters 


To ensure a great starting point for all customers, the ARM template we’ve released uses default values for each variable. This ensures that you can avoid unnecessary initial costs when working on a proof of concept that requires deploying a performant architecture. In all likelihood, you’ll want to update these values to ensure that they address your specific scenario and scalability requirements. 


The following table lists parameters in the template that determine how much the cluster can scale. It provides detail about the default values included in the template, along with the parameters we used to achieve 340 orders per minute for comparison. 


 



















































Parameter 



Default value 



Value for 340 orders/min 



aksNodePoolSize 



3 



10 



aksNodePoolVMSize 



Standard_DS2_v2 



Standard_F8s_v2 



mySQLSkuName 



MO_Gen5_4 



MO_Gen5_16 



mySQLSkuTier 



MemoryOptimized 



MemoryOptimized 



mySQLSkuFamily 



Gen5 



Gen5 



mySQLSkuCapacity 



4 



16 



mySQLStorageSize 



128000 



512000 



fileShareQuota 



512 



16384 



 


Keep in mind that while higher values generally provide better performance, they also tend to result in increased costs.


 


Guidance 


If you have plans to deploy Magento on Azure, download the template, and review its contents. Use the Magento Performance Toolkit to help determine the most appropriate values based on your own cost and considerations. 


 


I hope you’ll find this template useful. If you have questions or feedback about the template, feel free to reach out to the Ask Azure DB for MySQL alias for additional assistance!

What makes Azure Red Hat OpenShift a streamlined experience for developers?

What makes Azure Red Hat OpenShift a streamlined experience for developers?

This article is contributed. See the original author and article here.

Kubernetes was built for the needs of IT operations, not developers. Wouldn’t it be nice if you can write code and push to source control, then have your application up and running in minutes?


 


Azure Red Hat OpenShift runs Kubernetes at its core and includes everything you need to manage your development lifecycle, such as standardized workflows, support for multiple environments, continuous integration, release management, and more.


 


In this blog post, we’ll explore some of the features that make Azure Red Hat OpenShift a turnkey container platform with a significantly improved developer and operator experience.


Web Console – developer perspective


The developer perspective in the OpenShift Web Console provides an alternative view that is focused on developer use cases. The enhanced UI for application topology and application builds in the Web Console make it easier for developers to build, deploy, configure, and visualize containerized applications and cluster resources. You can use the developer perspective to view the application topology, deploy applications, setup and review application health monitoring and logging, and configure build pipelines.


 


Video sequence showing application topology view in the developer consoleVideo sequence showing application topology view in the developer console


Source-to-image (S2I)


Bring your code from Git, or push it from your development machine to build reproducible container images, using several built-in builder images for Perl, PHP, .NET Core, Go, Ruby, Python, Java and Node.js. You can even create your own builder images. Source-to-image automatically injects your application’s source or binary artifacts into a base image and assembles the artifacts with any required dependencies to create a new, ready-to-run image containing your application.


 


Video sequence showing creating an application from Git using source-to-imageVideo sequence showing creating an application from Git using source-to-image


OpenShift Do


When creating applications to be deployed using containers, there are a lot of common build and deployment tasks that make up the inner development cycle. As a developer, you may need to write a Dockerfile, build containers locally, push them to a container registry, write lots of YAML and use kubectl apply before you can see your code running on the cluster. Odo (short for OpenShift Do) is a fast, iterative and straightforward CLI tool for developers who write, build and deploy applications on Kubernetes and OpenShift. Odo streamlines that inner loop to let you focus on your application’s source code. Its syntax and design uses concepts familiar to developers, such as projects, applications, and components. Odo can deploy applications in several development languages and frameworks. Deployment creation, build configurations and routes are automated and it is designed for quick iterations, as it detects changes to local code and deploys the updates to the cluster automatically.


 


Video sequence showing creating an application using odoVideo sequence showing creating an application using odo


OpenShift Serverless


Build portable event driven apps that scale with demand. Based on the open source Knative project, OpenShift Serverless simplifies the process of delivering code from development into production while abstracting away the underlying infrastructure. The serverless functionality will start the application containers when they are called by an event, such as an HTTP request and other triggers from a variety of event sources. The containers can also scale to zero, eliminating resource consumption when not in use.


 


Video sequence showing deploying an application to OpenShift ServerlessVideo sequence showing deploying an application to OpenShift Serverless


Next steps


Adopting a container platform lets you keep up with application scale and complexity requirements. Azure Red Hat OpenShift is designed to make deploying and managing applications easier. It provides commercial support for the languages, databases, and tooling you already use, while providing easy access to Azure services such as Azure Database for PostgreSQL and Azure Cosmos DB, to enable you create resilient and scalable cloud native applications. If you’re interested to see how this all works together, watch this short video to see how to deploy a multi-tier Java application from containers, from source code and through CI/CD into Azure Red Hat OpenShift.


 


Try Azure Red Hat OpenShift now. Start with the Azure Red Hat OpenShift documentation and continue your learning experience on the Azure video center. Connect with Microsoft and community experts to share feedback, learn from others, and find answers to your technical questions on the Azure Red Hat OpenShift topic on the Microsoft Q&A site.