Azure Stack Hub Partner Solutions Series – BORDONARO IT

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

This week, Tiberiu Radu (Azure Stack Hub PM) and I, had the chance to speak with Microsoft MVP Dino Bordonaro from Azure Stack Hub Partner BORDONARO IT. BORDONARO IT is an Azure Stack Hub partner and Preferred SI that focuses on managed services. They are lead by Dino Bordonaro, who is an Azure Stack Hub MVP, and together with his team, they are delivering value to their customers by creating hybrid solutions on Azure and Azure Stack. BORDONARO IT runs the Center of Excellence where they offer Validation as a Service and PoC environments that partners and customers can use.


 


We created this new Azure Stack Hub Partner solution video series to show how our customers and partners use Azure Stack Hub in their Hybrid Cloud environment.  In this series, as we will meet customers that are deploying Azure Stack Hub for their own internal departments, partners that run managed services on behalf of their customers, and a wide range of in-between as we look at how our various partners are using Azure Stack Hub to bring the power of the cloud on-premises.


 


 


 


Links mentioned through the video:



 


I hope this video was helpful and you enjoyed watching it. If you have any questions, feel free to leave a comment below. If you want to learn more about the Microsoft Azure Stack portfolio, check out my blog post.

Azure CLI improvements for Azure Database for PostgreSQL – Single server

Azure CLI improvements for Azure Database for PostgreSQL – Single server

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

With the new changes to the Azure CLI, building applications has become much easier. This blog post walks you through key changes that can help enhance your productivity.


Some major changes include:



  1. A simplified single command for creating a new Postgres single server on Azure.

  2. The ability to use contextual information between CLI commands to help reduce the number of keystrokes for each command.

  3. New values for the parameter –public to create firewall rules as a part of the create experience.

  4. New command – list connection strings.

  5. Improved readable tabular formatted output for sku list and server list commands.


Note: Download the latest official release of the Azure CLI from the Azure CLI page or the dev build from the GitHub Azure CLI homepage.


 


Important: While this post focuses on Azure Database for PostgreSQL Single server, the changes described apply equally to our Flexible server deployment model.


 


1. Single command for creating a single server instance


Login to your Azure account using  `az login`, select your subscription (if different from default), and then run the command `az postgres server create’ to create a Postgres Single Server Instance on Azure.


Note the following key points:



  • A resource group with a random name is created for you in the default region.

  • A server-name, admin username, and password are auto-generated for you.

  • The text in yellow indicates what is going on behind the scenes. The server gets created with the defaults which can be found using `az postgres server create –help`.

  • Two new fields (password and connection-string) are introduced in the output.

  • To override a default value, pass that parameter with the value of your choice.


PG create.png


 


 


2. Support for param-persist


Azure Database for PostgreSQL server CLI commands now support persisting values of parameters with the `az config param-persist` command , which locally stores information such as location, resource group, administrator login and server name for every sequential CLI command you execute. You can easily turn on param persist to store information using `az config param-persist on`. With param persist turned on, you can see the contextual information using `az config param-persist show`. You can always turn off support for param persist by using `az config param-persist off`.


A summary of points that you might find helpful is listed below:



  • Fields commonly stored in param persist are location, resource group, server name and administrator login.

  • The param persist is designed to hold only one value for any parameter – which is always from the latest executed command.

  • Turning off the param persist does not automatically clear the stored fields. You can clear up all or specific values in the param persist using the commands in `az config param-persist delete`.

  • An example of how param persist can reduce the effort is shown below.


Param persist on.PNG


 


 



  • Note how there is no longer a need to supply the server name and resource group in the firewall creation command when you add a new firewall rule to the server you just created. 


 


 

az postgres server firewall-rule create -n firewall-rule-1 --start-ip-address 107.223.9.21 --end-ip-address 107.223.9.27

 


 



  •  When in confusion about the values fetched from param persist – look for the text ‘Command argument values from local context’ field in the command output as shown below.


 


 

Local context is turned on. Its information is saved in working directory /home/aritra. You can run `az local-context off` to turn it off.
Command argument values from local context: --resource-group: group2029187709, --server-name: server905314632
{- Finished ..
  "endIpAddress": "107.223.9.27",
  "id": "/subscriptions/<your-subscription-id>/resourceGroups/group2029187709/providers/Microsoft.DBforPostgreSQL/servers/server905314632/firewallRules/firewall-rule-1",
  "name": "firewall-rule-1",
  "resourceGroup": "group2029187709",
  "startIpAddress": "107.223.9.21",
  "type": "Microsoft.DBforPostgreSQL/servers/firewallRules"
}

 


 


3. New values for the –public parameter in az postgres server create command


When creating a Postgres server using our managed database service on Azure, you want to get started quickly. You can now let the create experience take care of the accessibility based on the value you pass for the –public parameter in the create command. When a server is created with any of these newly supported values, a new field `firewallName` will show up in the output of the create command. In addition to the existing values of ‘Enabled’ and ‘Disabled’, we are now supporting the below values:





























Scenario Command
Allow all IPs from 0.0.0.0-255.255.255.255 az postgres server create –public all
Allow access to your client IP only az postgres server create –public <SingleIP>
Allow all IPs within a range az postgres server create –public <StartIP-DestinationIP>
Allow access to all Azure Services az postgres server create –public 0.0.0.0
Allow public access, but add allowed IPs later

az postgres server create –public Enabled.


Note : You need to add allowed IPs using `firewall-rule create` command



 


4. New command – az postgres server show-connection-string


`az postgres server show-connection-string`: Lists the connections string for connecting your Postgres database to applications such as ADO.NET, JDBC, JDBC Spring, Node.JS, PHP, Python, and Ruby.


 

az postgres server show-connection-string -s server905314632 -u flexibleHorse

 


All placeholder fields within {} in the connection string can be substituted with actual values when you pass them as parameters in the above command. 


 

{
  "connectionStrings": {
    "C++ (libpq)": "host=server905314632.postgres.database.azure.com port=5432 dbname={database} user=flexibleHorse@server905314632 password={password} sslmode=require",
    "ado.net": "Server=server905314632.postgres.database.azure.com;Database={database};Port=5432;User Id=flexibleHorse@server905314632;Password={password};",
    "jdbc": "jdbc:postgresql://server905314632.postgres.database.azure.com:5432/{database}?user=flexibleHorse@server905314632&password={password}",
    "node.js": "var client = new pg.Client('postgres://flexibleHorse@server905314632:{password}@server905314632.postgres.database.azure.com:5432/{database}');",
    "php": "host=server905314632.postgres.database.azure.com port=5432 dbname={database} user=flexibleHorse@server905314632 password={password}",
    "psql_cmd": "postgresql://flexibleHorse@server905314632:{password}@server905314632.postgres.database.azure.com/{database}?sslmode=require",
    "python": "cnx = psycopg2.connect(database='{database}', user='flexibleHorse@server905314632', host='server905314632.postgres.database.azure.com', password='{password}', port='5432')",
    "ruby": "cnx = PG::Connection.new(:host => 'server905314632.postgres.database.azure.com', :user => 'flexibleHorse@server905314632', :dbname => '{database}', :port => '5432', :password => '{password}')"
  }
}

 


 


5. Improved readable tabular format


For the commands below, the latest version of the Azure CLI supports viewing output in a tabular format, which provides you with a snapshot view.



  • `az postgres server list-skus -l eastus -o table`

  • `az postgres server list [-g <group_name>] [-n <server_name>] -o table`

    • Not supplying -g and –n would list all servers in the subscription.

    • Supplying -g and -n would list the details of a single server.

    • Supplying only -g would list the details of all servers in the resource group.




formatted output.PNG


 


Use powerful Azure CLI utilities with single server CLI


Azure CLI has powerful utilities that can be used with PostgreSQL Server CLI commands from finding right commands, getting readable output or even running REST APIs.  



  • az find to find the command you are looking.

  • Use the –help argument to get a complete list of commands and subgroups of a group.

  • Change the output formatting to table or tsv or yaml formats as you see fit.

  • Use az interactive mode which provides interactive shell with auto-completion, command descriptions, and examples.

  • Use az upgrade to update your CLI and extensions.

  • Use az rest command that lets you call your service endpoints to run GET, PUT, PATCH methods in a secure way.


The improvements have been designed to support the best possible experience for developers to create and manage their PostgreSQL servers. We’d love for you to try out the improvements and share your feedback for new CLI commands or issues with existing ones.


 

Azure Advocates Weekly Round Up – Scaling Events w/ Serverless, Cog Services, and DevOps Boards

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

XR Tea Party: BabylonJS & WebXR
Aysegul Yonet


 


 


Azure Stack Hub Partner Solutions Series – Cloud Assert
Thomas Maurer


This week, Tiberiu Radu (Azure Stack Hub PM) and I, had the chance to speak to Azure Stack Hub Partner Cloud Assert.


 


How To Measure The Power Consumption of Your Frontend Application | Sustainable Software
Asim Hussain


The second principle of Sustainable Software Engineering is to build energy efficient applications. The very first step in that direction is to measure the energy your application consumes, also known as its energy cost. Once you measure or estimate the energy cost of your application,


 



Sarah Lean


Browse content tagged with “Cloud Adoption Framework Series” on Channel 9.


 


DevOps Cloud Days, Day 3, Nov 18, 2020 – JFrog & Microsoft Azure
Jessica Deen


Join JFrog and Microsoft Azure to learn about integrations and future development. Secure your applications and modernize your business.


 


Scaling an Online Virtual World with Serverless Tech
Em Lazer-Walker


I help run an annual game design conference called Roguelike Celebration. Naturally, this year we wer…


 


Monitoring IoT systems from edge to cloud with Datadog
Paul DeCarlo


Microsoft Azure has a strong and active partnership with Datadog , the leading cloud-based monitoring and observability platform. Recently, Datadog and


 


Static Web App PR Workflow for Azure App Service using Azure DevOps Pt 2 (But what if my code is in GitHub) | Azure DevOps Blog
Abel Wang


Static Web App PR Workflow for Azure App Service using Azure DevOps Pt 2 (But what if my code is in GitHub) In part 1 (Static Web App PR Workflow for Azure App Service), I walked you you through how to set up that sweet pull request workflow for Static Web Apps for your app if your app was: hosted in Azure App Service your code in Azure Repos your CI pipeline in Azure Pipelines.


 


Azure DevOps Boards and Excel!
Sarah Lean


Use Excel to help manage your Azure DevOps Board items!


 


AzUpdate: New Priority Account capabilities in Microsoft 365, Bastion and Vnet peering, and more
Anthony Bartolo


Another busy week for cloud services at Microsoft.  Here are the news items the team at AzUpdate are covering this week: New Priority Account capabilities now available in Microsoft 365, Azure Bastion and VNet peering can be used together, New integrations between GitHub and Azure Policy allow for better manage policy definitions and assignments, New constrained vCPUs capable VMs now available and of course the Microsoft Learn module of the week.


 


HOW TO: Create a Windows Server 2019 NAS / FileServer from the command line
Rick Claus


Windows Server 2019 default install has no GUI or Desktop. How do you go about setting this thing up from the command line? In this post I give you the How To on how to setup a simple File Server to replace an old NAS device that was failing in my home lab. We’re talking PowerShell to configure Storage Spaces, User Accounts, SMB Shares, Power Profiles and more! 


 


Control holiday lights with Python, Azure IoT and Power Apps
Jim Bennett


No more controlling your holiday lights by hand – instead use IoT and a no-code mobile app!. Tagged with pythonfunbites, azure, python, iot.


 


Azure Stack Hub Partner Solutions Series – Cloud Assert
Thomas Maurer


This week, Tiberiu Radu (Azure Stack Hub PM @rctibi) and I, had the chance to speak to Azure Stack Hub Partner Cloud Assert.


 


AzureFunBytes – Episode 21 – @Azure Security with @deanbryen
Jay Gordon


Security is always the primary concern for those deploying applications into the cloud. This week on… Tagged with azure, security, tutorial, beginners.


 


Translating text with just a few lines of code using Azure Cognitive Services
Christopher Harrison


This article is part of #PythonFunBites. An old co-worker of mine is fond of saying “we’re not launc… Tagged with pythonbites, azure, python, ai.


 


Getting started with web dev using Flask
Christopher Harrison


This article is part of #PythonFunBites. There’s a lot of different web dev frameworks out there, an… Tagged with pythonfunbites, python, flask, webdev.


 


Set up Azure Shell locally – part 2
Pierre Roman


Azure Cloud Shell running in Visual Studio Code – differences with VS Code.


 


Working with Jupyter Notebooks in Visual Studio Code
Jasmine Greenaway


How to use Jupyter Notebooks in Visual Studio Code. Tagged with pythonfunbites, azure, python.


 


What’s New in Azure DevOps Docs For October? | Azure DevOps Blog
Abel Wang


What’s new for October1, 2020 – October 31, 2020 Hey hey! New docs have dropped for Azure DevOps for the month of October. What has changed? Oh, just things like… Delete and recover packages Remove, delete, or restore work items Use the Cross-platform CLI for Azure DevOps using personal access tokens (PATs) …and much more!


 


AzureFunBytes Short – Azure Containers (Kubernetes, Container Instances, More) | Azure DevOps Blog
Jay Gordon


Containers provide an easy way to run batch jobs without having to manage an environment and dependencies. Dynamic compute options, such as Azure Container Instances (ACI), can be used to efficiently ingest source data, process it, and place it in a durable store such as Azure Blob storage.


 


The Python Community is Stronger Together
Nina Zakharenko


Some thoughts on how to stay connected with the Python Community in 2020. 


 


Microsoft 365 PnP Weekly – Episode 105 – Microsoft 365 Developer Blog
Waldek Mastykarz


Connect to the latest conferences, trainings, and blog posts for Microsoft 365, Office client, and SharePoint developers. Join the Microsoft 365 Developer Program.


 


Microsoft Autonomous Driving Startups Program
Adi Polak


Join us for an exceptional conversation with Aditya from the Microsoft Autonomous Driving program. Aditya shares the trends in Autonomous Driving, what startups are building, how Microsoft can help,


 


Lisa At The Edge Podcast – Thomas Maurer – Career Development & Azure Arc
Thomas Maurer


Lisa At The Edge Podcast – Thomas Maurer – Career Development & Azure Arc we talked about Azure Arc and Azure Hybrid Cloud!


 


Control holiday lights with Python, Azure IoT and Power Apps
Jim Bennett


As the December holiday season descends, some cultures celebrate with lights, where’s other folks have breaks from school and are looking for a fun


 

Lesson Learned #147: Checking the connectivity to Azure SQL DB and MI

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

Sometimes we’re used to recieve service request that our customers needs to know the time spent in order to connect to their Azure SQL Database or Managed Instance or simply to check intermittent connections that they could have in their environment.


 


For these types of situation I would like to suggest to review two PowerShell Script that you could find on this URL that allow to obtain this information. 


 


Enjoy!

SAP S/4HANA Fully activated appliance installation in Azure

SAP S/4HANA Fully activated appliance installation in Azure

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

The traditional method of installing SAP is using Software Provisioning Manager (SWPM using SAPInst). SWPM takes a long time to install the system. And, even after the installation, you have just a shell system, which still requires a technical and functional configuration before you can use it – this is a cumbersome process and based on your requirements, this configuration process may take days to weeks.


 


Generally, when you are in a pilot or proof of concept phase, where you want to evaluate a specific feature, you can’t wait weeks!


 


One of the quick and easiest method of deploying SAP is via SAP Cloud Appliance Library,  which gives you trial license as well. To unlock the CAL solution, along with the SAP product licenses, you also need CAL subscription (as mentioned in the Figure1 below).


 


Sachin-Ghorpade_0-1606245197382.png


Figure1: Unlock solution using SAP CAL


 


Another option to get fully configured SAP S/4HANA system with sample data in hours, is using the S/4HANA Fully-Activated Appliance.


 


In this blog, you can explore how to install this fully activated SAP S/4H appliance in Azure. At the end of this blog, you will be able to successfully install the fully configured SAP S/4HANA 1909 SPS02 Fully Activated Appliance in Azure.


 


The overall process is very simple. You install the system which comes with pre-configured SID, and hostnames. Then you rename the SID, and hostnames to your desired nomenclature.


 


The process is divided into the following seven sections:



  1. What the end-results looks like?

  2. Infrastructure in Azure

  3. SAP Download

  4. Installation Process

  5. Register and rename the HANA system

  6. Rename the SAP system

  7. Post install activities


 


1.     What the end-result looks like?


After the installation, you will have the following three clients pre-installed.


Sachin-Ghorpade_1-1606245197387.png


 


Following products will be Installed:


Sachin-Ghorpade_2-1606245197456.png


 


2.     Infrastructure in Azure


Here are the VMs and storage configurations used for the VMs in Azure for this installation.


Jump box VM: used for software download, SAPGUI, SAPMMC, Putty etc.



  • Name: jumpbox1

  • Standard D4as_v4 (4 vcpus, 16 GiB memory)

  • Windows Server 2016 Datacenter

  • E drive with 128GB


SAP app and DB VM: VM to install SAP S/4HANA. Both Application and database layer are installed on the same VM



  • Name: s4h1902f2vm1

  • Standard E16ds_v4 (16 vcpus, 128 GiB memory)

  • SLES 12 SPS4 for SAP

  • SAP S/4HANA 1909 SPS2 Fully Activated Appliance

  • Disk layout


Sachin-Ghorpade_3-1606245197476.png


 


 


3.     SAP Download


You will need the following bits for installation. Download the installation bits from SAP marketplace https://launchpad.support.sap.com/#/softwarecenter. Use the SAP download managed to download these files. Download them to Jumpbox VMs. Based on download speed, it may take several hours to download them.


SAP S/4HANA 1909 FPS02 FA APPL INSTALLATION Bits


Sachin-Ghorpade_4-1606245197502.png


 


Software Provisioning Manager


Download SWPM 2 latest version from here: https://support.sap.com/en/tools/software-logistics-tools.html#section_622087154


SAP MMC


Search SAPMMC in download option


https://launchpad.support.sap.com/#/softwarecenter/search/sapmmc


SAPGUI


Sachin-Ghorpade_5-1606245197526.png


 


4.     Installation Process


In this phase, we will install the SAP system from fully activated appliance, and then rename the SID and host name to our desired names. Please note, both sap application and database layers are installed on the same VM.


 










































Current Name



Rename to (post install)



HANA DB SID: HDB



HANA DB SID: SG1



DB hostname: vhcalhdbdb



DB hostname: s4h1902f2vm1



DB Instance No: 02



DB Instance No: 02



SAP SID: S4H



SAP SID: SGH



CI hostname: vhcals4hci



CI hostname: s4h1902f2vm1



CS hostname: vhcals4hcs



CS hostname: s4h1902f2vm1



PAS instance No: 00



PAS instance No: 00



ASCS instance No: 01



ASCS instance No: 01



 


Please note, your VM name in Azure is s4h1902f2vm1.


Adjust /etc/hosts file


You will need to make the following entries in /etc/hosts for the installation. IP 10.x.x.8 is the private IP of the VM s4h1902f2vm1.


10.x.x.8       vhcalhdbdb.dummy.nodomain       vhcalhdbdb      vhcals4hci.dummy                                                                                                                                   .nodomain       vhcals4hci      vhcals4dcs.dummy.nodomain       vhcals4hcs


Copy and extract the SAP installation files.


Copy the 51054504_*.ZIP files from your jump box server (where you had downloaded them) to VM where SAP will be installed (i.e. s4h1902f2vm1). Copy them under the /sapmedia folder.


After copying the files, extract them on VM s4h1902f2vm1


#unzip 51054504_1.ZIP


#unzip 51054504_2.ZIP


#unzip 51054504_3.ZIP


#unzip 51054504_4.ZIP


It takes a while to extract these files.


Note: During this process, it may ask to overwrite label and version files, say Yes to overwrite them.


 


Once the extraction of zip files is completed, it will have a lot of *tgz* files. We will need to extract these tgz files now.


 


Let’s move all the tgz files to one location so we can easily extract them.


 # /sapmnt/sapmedia/S4FullyActivatedApplianceBits/51054504_1_1/SAPS4HANA1909FPS02SAPHANADB20basedonSAPNetweaverASABAP754_1


Sachin-Ghorpade_6-1606245197556.png


 


 


Once all the tgz files are under the above folder, let’s extract those tgz files in below order


# cat dblog.tgz-* | tar -zpxvf – -C /


# cat dbexe.tgz-* | tar -zpxvf – -C / 


# cat dbdata.tgz-* | tar -zpxvf – -C /


# cat usrsap.tgz-* | tar -zpxvf – -C /


# cat sapmnt.tgz-* | tar -zpxvf – -C /


You are done with the installation. You can get the passwords from the file /sapmnt/sapmedia/S4FullyActivatedApplianceBits/SAPS4HANA1909FPS02SAPHANADB20basedonSAPNetweaverASABAP754_4/SAP_Software_Appliance.xml.


5.    Register and rename the HANA system


Register the newly created database, also rename the system to new SID and hostname.


#/hana/shared/HDB/hdblcm/hdblcm –action=register_rename_system


After the registration is completed, HANA instance should come up automatically. You can check the status from the following command


#/usr/sap/hostctrl/exe/sapcontrol -nr 02 -function GetProcessList


6.    Rename the SAP system


Now, it’s a time to rename SAP system from S4H to SGH. Use SWPM to rename the SAP system.


#./sapinst SAPINST_USE_HOSTNAME=vhcals4hci SAPINST_ACCEPT_INTERNAL_SIGNATURE=true SAPINST_SLP_MODE=false


Sachin-Ghorpade_7-1606245197558.png


 


7.     Post install activities


Now, your system is ready to use. Please adjust the following before you use the system:



  • Check the RFC connection and change from vhcals* name to s4h1902f2vm1

  • Update host name in tCode /UI2/FLP_SYS_CONF

  • Apply License. You will need both SAP application and HANA licenses

  • Adapt transport configuration


 


 


Conclusion


Fully activated appliance is an easy and quick way to install your SAP system with sample data. This is a great solution when you want to perform a rapid prototype. Hope you like the blog.


 


 

Azure SQL Database: Improving Performance Tuning with Automatic Tuning | Data Exposed: MVP Edition

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

One of the performance benefits of using Azure SQL Database is the ability for Azure SQL Database to automatically add and remove indexes from the database, based on the workload that is running against the database. Join Denny Cherry as he shows you how to enable automatic tuning and when it won’t help you as much as you think that it will.