SlideShare a Scribd company logo
Rob Habraken | Technical Manager, Consultant & Sitecore MVP
Sitecore 8.2 on Azure Web Apps
Familiarity of
Windows
Built on .NET, Sitecore uses
the technology that your IT
department already knows.
Infinite scalability
Easily scales up and down as
demand changes.*
Rapidly deploy Sitecore on
Azure without worrying IT.
Speed to market
The only enterprise-
grade cloud
Microsoft Azure ensures that
Sitecore® Experience
Database™ is secure.
Always on
Never miss a beat; always
be there for your customers.
Interoperability
Integrates seamlessly with
your existing back-end
systems and marketing
investments.
Accident protection
Reliable and redundant copies of your
data and automatic failover protection.
Pay-as-you-go
Only pay for the power and
capacity you’re using.*
*Customers will need to ensure the proper number of content delivery
servers from Sitecore to meet scaling requirements.
Virtual Machines Cloud Services Web Apps
Azure hosting options
Control Support of legacy apps Ease of management Agility
• Web Apps is the new PaaS
standard with more agility &
easier to manage
• Web Apps were previously
marketed as a SaaS solution,
but is now considered to be
PaaS
• Sitecore is using additional
SaaS services to complete the
installation
Azure Module Sitecore 8.2-1
Delivery
ServersVisitors
Authors
Management
Servers
Content Management
Databases
Health
Monitoring
Content Delivery
Databases
Processing
Servers
Search
Collection
Database
Session
State
Reporting
Database
Reporting
Servers
• ARM (Azure Resource Manager) templates are an
Azure standard using JSON
• Delivered by Sitecore as a starting point for your own custom
provisioning
• Enables you to define one or more Azure resources including
dependencies between deployed resources
• Can be used for initial provision or as continuous deployment
• Use Web Deploy and DACPAC packages to setup site &
databases
The road to the ultimate Continuous Deployment setup
• What do we need more for a good CI/CD setup?
• How to edit and extend the provided ARM templates?
• What are the pitfalls and black holes in blue / green provisioning?
Streamlining your Cloud deployments
• Clean install per deployment, based on vanilla Sitecore install
• Keep database content and only deploy new / changed items
• Don’t disturb live site with deployment process or new content
• Option to rollback deployment upon failure
• Repeatable process, fully automated
Sitecore gives you handy ARM templates for the different sizings,
but they’re a head start only; you will run into some issues
• You cannot re-provision an environment, having to deploy over
an existing web app, being unable to remove files
• It doesn’t provision staging slots to deploy while keeping your
current version up & running
• It doesn’t tell you how to re-provision without overwriting your
database with content you want to keep
• Roll out your infrastructure first, like resource groups, databases,
hosting plans and slots
• Then, provision a vanilla Sitecore install into your staging slot
(this step includes installing databases and vanilla content)
• Then, create a repeatable re-provisioning step, provisioning a
vanilla Sitecore install into your staging slot, without databases!
(this actually wipes your staging slot each time your provision)
• Deploy your own solution over the staging slot & swap when ready
Web roles
Health
Monitoring
Databases
SearchCollection
Database
Session
State
1. Provision infrastructure only:
Empty Web App,
empty databases
Web roles
Health
Monitoring
Databases
SearchCollection
Database
Session
State
2. Provision vanilla Sitecore:
Sitecore into staging slot,
default content
Web roles
Health
Monitoring
Databases
SearchCollection
Database
Session
State
3. Swap (just to demo):
Swap
Web roles
Health
Monitoring
Databases
SearchCollection
Database
Session
State
3. Re-provision without database:
Wipes slot, installs new
files, keeping content
Web roles
Health
Monitoring
Databases
SearchCollection
Database
Session
State
4. Deploy your own solution:
Customizing ARM templates
• Split infra and msdeploy parts, so we can re-provision!
• Use output parameters to stitch templates together
• Add staging slots (default provisioning & deployment target)
• Upgrade minimum SKU configuration to support slots
• Add a databaseless SCWDP and provision for re-provisioning
• ARM splitting
• output parameters
• staging slots
• The Sitecore Web Deploy Packages you can download from
Sitecore contain vanilla databases, but you don’t want them to
overwrite your own Sitecore content while re-provisioning
• You have to strip the databases from the different SCWDPs
• You can do that using msdeploy, deploying from one zip archive
(SCWDP) to another, using the skip dbFullSQL & skip dbDacFx
parameters!
• Get the parameters.xml file out of the SCWDP; it contains all
the info about the required parameters to deploy that package
• Invoke msdeploy with the -skip:objectName=dbFullSql and
-skip:objectName=dbDacFx parameters
• Add all additional parameters required by the specific SCWDP
msdeploy -verb:sync -source:package="D:DataInetpubazurexp0-singleSitecore 8.2 rev. 161221_single.scwdp.zip" -
dest:package="D:DataInetpubazurexp0-singleSitecore 8.2 rev. 161221_single-nodb.scwdp.zip" -declareparamfile="D:DataInetpubazurexp0-
singleparameters.xml" -skip:objectName=dbFullSql -skip:objectName=dbDacFx -setparam:"Sitecore Admin New Password"=“giLvgjMXG0D9CuKYKctA" -
setparam:"Core DB User Name"="single-core-sitecore-msdeploy-user" -setparam:"Core DB Password"="TWsxzkGQ5VrPT@7znJDe9NkFFtG" -setparam:"Master DB User
Name"="single-master-sitecore-msdeploy-user" -setparam:"Master DB Password"="xgMR7p6dmLYdL@7znJDe9NkFFtG" -setparam:"Web DB User Name"="single-web-
sitecore-msdeploy-user" -setparam:"Web DB Password"="B3j0tnNXVBoS6@7znJDe9NkFFtG" -setparam:"Reporting DB User Name"="single-reporting-sitecore-
msdeploy-user" -setparam:"Reporting DB Password"="0dURnXD5T93f@7znJDe9NkFFtG" -setparam:"Core Admin Connection
String"="Encrypt=True;TrustServerCertificate=False;Data Source=azure-rg-sql.database.windows.net,1433;Initial Catalog=azure-rg-core-db;User Id=xp0-
single-sql;Password=a6CmAkgOyY236ctkzsNx;" -setparam:"Core Connection String"="Encrypt=True;TrustServerCertificate=False;Data Source=azure-rg-
sql.database.windows.net,1433;Initial Catalog=azure-rg-core-db;User Id=single-core-sitecore-msdeploy-user;Password=TWsxzkGQ5VrPT@7znJDe9NkFFtG;" -
setparam:"Master Admin Connection String"="Encrypt=True;TrustServerCertificate=False;Data Source=azure-rg-sql.database.windows.net,1433;Initial
Catalog=azure-rg-master-db;User Id=xp0-single-sql;Password=a6CmAkgOyY236ctkzsNx;" -setparam:"Master Connection
String"="Encrypt=True;TrustServerCertificate=False;Data Source=azure-rg-sql.database.windows.net,1433;Initial Catalog=azure-rg-master-db;User
Id=single-master-sitecore-msdeploy-user;Password=xgMR7p6dmLYdL@7znJDe9NkFFtG;" -setparam:"Web Admin Connection
String"="Encrypt=True;TrustServerCertificate=False;Data Source=azure-rg-web-sql.database.windows.net,1433;Initial Catalog=azure-rg-web-db;User Id=xp0-
single-sql;Password=a6CmAkgOyY236ctkzsNx;" -setparam:"Web Connection String"="Encrypt=True;TrustServerCertificate=False;Data Source=azure-rg-web-
sql.database.windows.net,1433;Initial Catalog=azure-rg-web-db;User Id=single-web-sitecore-msdeploy-user;Password=B3j0tnNXVBoS6@7znJDe9NkFFtG;" -
setparam:"Reporting Admin Connection String"="Encrypt=True;TrustServerCertificate=False;Data Source=azure-rg-sql.database.windows.net,1433;Initial
Catalog=azure-rg-reporting-db;User Id=xp0-single-sql;Password=a6CmAkgOyY236ctkzsNx;" -setparam:"Reporting Connection
String"="Encrypt=True;TrustServerCertificate=False;Data Source=azure-rg-sql.database.windows.net,1433;Initial Catalog=azure-rg-reporting-db;User
Id=single-reporting-sitecore-msdeploy-user;Password=0dURnXD5T93f@7znJDe9NkFFtG;" -setparam:"Analytics Connection String"="mongodb://mlab-
azure:mM8kY7jD6JkDUykx6D2y@ds123456.mlab.com:12345/analytics" -setparam:"Tracking Live Connection String"="mongodb://mlab-
azure:mM8kY7jD6JkDUykx6D2y@ds123456.mlab.com:12345/tracking-live" -setparam:"Tracking History Connection String"="mongodb://mlab-
azure:mM8kY7jD6JkDUykx6D2y@ds123456.mlab.com:12345/analytics-history" -setparam:"Tracking Contact Connection String"="mongodb://mlab-
azure:mM8kY7jD6JkDUykx6D2y@ds123456.mlab.com:12345/tracking-contact" -setparam:"Cloud Search Connection String"="serviceUrl=https://azure-rg-
as.search.windows.net;apiVersion=2015-02-28;apiKey=A6836C6EBBA68675D558336C6EBBA686" -setparam:"Application Insights Instrumentation Key"="ecc59b93-
57eb-4c89-1264-945b2ae914f6" -setparam:"Application Insights Role"="Single" -setparam:"License XML"="." -setparam:"IP Security Client IP"="0.0.0.0" -
setparam:"IP Security Client IP Mask"="0.0.0.0"
…and it would be different for each environment & instance role!
PS: these are all fake credentials, of course ;-)
• The real config values don’t have to be in the target package
• Actually, you don’t want them in there:
• A package should be re-usable among environment
• For security reasons, it shouldn’t contain the actual credentials
• They would be overwritten by the ARM provisioning anyway
• Use PowerShell to automate the creation and execution of the
command, based on the parameters.xml file
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)]
[string]$PackagePath,
[Parameter(Mandatory=$True)]
[string]$ParamFile,
[Parameter(Mandatory=$False)]
[string]$PackageDestinationPath =
$($PackagePath).Replace(".scwdp.zip", "-nodb.scwdp.zip")
)
$msdeploy = "C:Program FilesIISMicrosoft Web Deploy
V3msdeploy.exe"
$verb = "-verb:sync"
$source = "-source:package=`"$PackagePath`""
$destination = "-dest:package=`"$($PackageDestinationPath)`""
$declareParamFile = "-declareparamfile=`"$($ParamFile)`""
$skipDbFullSQL = "-skip:objectName=dbFullSql"
$skipDbDacFx = "-skip:objectName=dbDacFx"
# read parameter file
[xml]$paramfile_content = Get-Content -Path $ParamFile
$paramfile_paramnames =
$paramfile_content.parameters.parameter.name
$params = ""
foreach($paramname in $paramfile_paramnames){
$tmpvalue = "tmpvalue"
if($paramname -eq "License Xml"){ $tmpvalue =
"LicenseContent"}
if($paramname -eq "IP Security Client IP"){ $tmpvalue =
"0.0.0.0"}
if($paramname -eq "IP Security Client IP Mask"){ $tmpvalue =
"0.0.0.0"}
$params = "$params -setParam:`"$paramname`"=`"$tmpvalue`""
}
# create new package
Invoke-Expression "& '$msdeploy' --% $verb $source $destination
$declareParamFile $skipDbFullSQL $skipDbDacFx $params"
Combining PS, ARM & VSTS
• Re-provision using msdeploy ARM and db-less SCWDP
• Deploy to the staging slot using VSTS (for example)
• Test & warm up your new site
• Swap slots
• Do you have custom role specific configuration
(CM/CD/REP/PRC)?
• Don’t transform them in your Solution, use cargo payloads!
• For more info on this topic, check out this article by Bas Lijten:
http://blog.baslijten.com/sitecore-on-azure-create-custom-web-
deploy-packages-using-the-sitecore-azure-toolkit/
What could go wrong
• Use shared access signatures (SAS) to access your SCWDPs
• You are not allowed to publicly expose Sitecore software downloads
• You do not want to share your base install, possibly including configs
• Add IP security to all testing and acceptance environments
• You can copy IP security setup from the XP CM role
• I have added this to the XP0-single templates, using it for test mainly
• Use Azure Key Vault to store your keys and passwords
• Set your
container
access to
private
• Generate a
SAS token and
add it to your
package URL
• Add “.scm” to resource URL or access via Portal
• Browse through files, view or edit them (debugging only!)
• Execute PowerShell
• View Processes
• Etc.
• EventQueue issue: the staging slot creates an extra CM role,
which could introduce concurrency issues with your production
slot CM
• Indexing: if you do blue green deployments using an extra web
database, please take in mind that your Azure Search already
updates your indexes based on the new master content!
• Content stop: if you want to avoid conflicts, content editors
should not publish during deployments (although than can
continue working on the master database); if you want to
deploy continuously, this can be a huge disturbance for editors
• Sitecore will release a new set of ARM templates shortly,
containing a few aspects we’ve seen today, and more:
• Nested templates
• Splitting infra & application
• Module support (add-ons)
• Staging and databaseless re-provisioning? Check my repository
• Always use them as a boilerplate to create your own templates!
• Blog on Azure Cloud Services – deprecated!
http://sitecore.robhabraken.nl/index.php/2229/sitecore-azure/
• First blog of my series on Azure Web Apps
http://sitecore.robhabraken.nl/index.php/2407/an-introduction-to-sitecore-on-azure-web-apps/
• An comprehensive introduction to Sitecore on Azure Web Apps
https://www.robhabraken.nl/index.php/2622/sitecore-8-2-1-on-azure-web-apps/
• Automated scaling using PowerShell
https://www.robhabraken.nl/index.php/2658/saving-costs-by-scaling-down/
• One of the issues of staging on a shared master database
https://www.robhabraken.nl/index.php/2683/the-staging-slot-eventqueue-issue/
• Download my demo scripts & ARM templates
https://github.com/robhabraken/Sitecore-Azure-Scripts
• A blog post, including recordings of this session, will follow
shortly on my Sitecore blog https://www.robhabraken.nl/

More Related Content

What's hot

Vet obst lecture 4 Congenital fetal defects (teratology)
Vet obst lecture 4 Congenital fetal defects (teratology)Vet obst lecture 4 Congenital fetal defects (teratology)
Vet obst lecture 4 Congenital fetal defects (teratology)
DrGovindNarayanPuroh
 
Presentation: Comparative Reproductive
Presentation: Comparative ReproductivePresentation: Comparative Reproductive
Presentation: Comparative Reproductive
Faisal A. Alshamiry
 
Surgical affection of penis and prepuce
Surgical affection of penis and prepuceSurgical affection of penis and prepuce
Surgical affection of penis and prepuce
Rubiat Ferdous
 
Surgical procedures in the bovine
Surgical procedures in the bovineSurgical procedures in the bovine
Surgical procedures in the bovine
lizzette mudindo
 
Principle of Maximum Entropy
Principle of Maximum EntropyPrinciple of Maximum Entropy
Principle of Maximum Entropy
Jiawang Liu
 
Semantic technologies for the Internet of Things
Semantic technologies for the Internet of Things Semantic technologies for the Internet of Things
Semantic technologies for the Internet of Things
PayamBarnaghi
 
BOVINE SPONGIFORM ENCEPHALOPHATHY (BSE), MAD COW
BOVINE SPONGIFORM ENCEPHALOPHATHY (BSE), MAD COWBOVINE SPONGIFORM ENCEPHALOPHATHY (BSE), MAD COW
BOVINE SPONGIFORM ENCEPHALOPHATHY (BSE), MAD COW
Shafi'i Abdullahi
 
Rajeev mishra ,castration of small animal(dog and cat).
Rajeev mishra ,castration of small animal(dog and cat).Rajeev mishra ,castration of small animal(dog and cat).
Rajeev mishra ,castration of small animal(dog and cat).
Raaz Eve Mishra
 
Equines(Horses) markings and identification
Equines(Horses) markings and identificationEquines(Horses) markings and identification
Equines(Horses) markings and identification
DrDarshanaShingne
 
Equine larynx
Equine larynxEquine larynx
Equine larynx
Dane Tatarniuk
 
Confusion matrix and classification evaluation metrics
Confusion matrix and classification evaluation metricsConfusion matrix and classification evaluation metrics
Confusion matrix and classification evaluation metrics
Minesh A. Jethva
 
Survey on Monocular Depth Estimation
Survey on Monocular Depth EstimationSurvey on Monocular Depth Estimation
Survey on Monocular Depth Estimation
범준 김
 
Markov Random Field (MRF)
Markov Random Field (MRF)Markov Random Field (MRF)
Diaphragmatic hernia
Diaphragmatic hernia Diaphragmatic hernia
Diaphragmatic hernia
Rekha Pathak
 
Metadata and ontologies
Metadata and ontologiesMetadata and ontologies
Metadata and ontologies
David Lamas
 
PointNet
PointNetPointNet
20160406 ROS 1차 강의 (for 아스라다 팀)
20160406 ROS 1차 강의 (for 아스라다 팀)20160406 ROS 1차 강의 (for 아스라다 팀)
20160406 ROS 1차 강의 (for 아스라다 팀)
Yoonseok Pyo
 
Apstra AOSによるEVPN-VXLANの自動化
Apstra AOSによるEVPN-VXLANの自動化Apstra AOSによるEVPN-VXLANの自動化
Apstra AOSによるEVPN-VXLANの自動化
ApstraJapan
 
Equine breeding & reproduction
Equine  breeding & reproductionEquine  breeding & reproduction
Equine breeding & reproduction
Himanshu Pandey
 

What's hot (20)

Vet obst lecture 4 Congenital fetal defects (teratology)
Vet obst lecture 4 Congenital fetal defects (teratology)Vet obst lecture 4 Congenital fetal defects (teratology)
Vet obst lecture 4 Congenital fetal defects (teratology)
 
Presentation: Comparative Reproductive
Presentation: Comparative ReproductivePresentation: Comparative Reproductive
Presentation: Comparative Reproductive
 
Surgical affection of penis and prepuce
Surgical affection of penis and prepuceSurgical affection of penis and prepuce
Surgical affection of penis and prepuce
 
Surgical procedures in the bovine
Surgical procedures in the bovineSurgical procedures in the bovine
Surgical procedures in the bovine
 
Principle of Maximum Entropy
Principle of Maximum EntropyPrinciple of Maximum Entropy
Principle of Maximum Entropy
 
Semantic technologies for the Internet of Things
Semantic technologies for the Internet of Things Semantic technologies for the Internet of Things
Semantic technologies for the Internet of Things
 
BOVINE SPONGIFORM ENCEPHALOPHATHY (BSE), MAD COW
BOVINE SPONGIFORM ENCEPHALOPHATHY (BSE), MAD COWBOVINE SPONGIFORM ENCEPHALOPHATHY (BSE), MAD COW
BOVINE SPONGIFORM ENCEPHALOPHATHY (BSE), MAD COW
 
Rajeev mishra ,castration of small animal(dog and cat).
Rajeev mishra ,castration of small animal(dog and cat).Rajeev mishra ,castration of small animal(dog and cat).
Rajeev mishra ,castration of small animal(dog and cat).
 
Equines(Horses) markings and identification
Equines(Horses) markings and identificationEquines(Horses) markings and identification
Equines(Horses) markings and identification
 
Equine larynx
Equine larynxEquine larynx
Equine larynx
 
Confusion matrix and classification evaluation metrics
Confusion matrix and classification evaluation metricsConfusion matrix and classification evaluation metrics
Confusion matrix and classification evaluation metrics
 
Survey on Monocular Depth Estimation
Survey on Monocular Depth EstimationSurvey on Monocular Depth Estimation
Survey on Monocular Depth Estimation
 
Markov Random Field (MRF)
Markov Random Field (MRF)Markov Random Field (MRF)
Markov Random Field (MRF)
 
Diaphragmatic hernia
Diaphragmatic hernia Diaphragmatic hernia
Diaphragmatic hernia
 
Metadata and ontologies
Metadata and ontologiesMetadata and ontologies
Metadata and ontologies
 
PointNet
PointNetPointNet
PointNet
 
20160406 ROS 1차 강의 (for 아스라다 팀)
20160406 ROS 1차 강의 (for 아스라다 팀)20160406 ROS 1차 강의 (for 아스라다 팀)
20160406 ROS 1차 강의 (for 아스라다 팀)
 
Apstra AOSによるEVPN-VXLANの自動化
Apstra AOSによるEVPN-VXLANの自動化Apstra AOSによるEVPN-VXLANの自動化
Apstra AOSによるEVPN-VXLANの自動化
 
Blood transfusion in animals
Blood transfusion in animalsBlood transfusion in animals
Blood transfusion in animals
 
Equine breeding & reproduction
Equine  breeding & reproductionEquine  breeding & reproduction
Equine breeding & reproduction
 

Similar to Blue Green Sitecore Deployments on Azure

A to z for sql azure databases
A to z for sql azure databasesA to z for sql azure databases
A to z for sql azure databases
Antonios Chatzipavlis
 
Sitecore 8.2 Update 1 on Azure Web Apps
Sitecore 8.2 Update 1 on Azure Web AppsSitecore 8.2 Update 1 on Azure Web Apps
Sitecore 8.2 Update 1 on Azure Web Apps
Rob Habraken
 
Cloud computing 3702
Cloud computing 3702Cloud computing 3702
Cloud computing 3702Jess Coburn
 
MongoDB World 2019: Why NBCUniversal Migrated to MongoDB Atlas
MongoDB World 2019: Why NBCUniversal Migrated to MongoDB AtlasMongoDB World 2019: Why NBCUniversal Migrated to MongoDB Atlas
MongoDB World 2019: Why NBCUniversal Migrated to MongoDB Atlas
MongoDB
 
Copy Data Management for the DBA
Copy Data Management for the DBACopy Data Management for the DBA
Copy Data Management for the DBA
Kellyn Pot'Vin-Gorman
 
Denver SQL Saturday The Next Frontier
Denver SQL Saturday The Next FrontierDenver SQL Saturday The Next Frontier
Denver SQL Saturday The Next Frontier
Kellyn Pot'Vin-Gorman
 
AUSPC 2013 - Understanding the Five Layers of SharePoint Security
AUSPC 2013 - Understanding the Five Layers of SharePoint SecurityAUSPC 2013 - Understanding the Five Layers of SharePoint Security
AUSPC 2013 - Understanding the Five Layers of SharePoint SecurityMichael Noel
 
Sitecore9 key features by jitendra soni - Presented in Sitecore User Group UK
Sitecore9 key features by jitendra soni - Presented in Sitecore User Group UKSitecore9 key features by jitendra soni - Presented in Sitecore User Group UK
Sitecore9 key features by jitendra soni - Presented in Sitecore User Group UK
Jitendra Soni
 
PowerShell DSC - State of the Art & Community by Gael Colas
PowerShell DSC - State of the Art & Community by Gael ColasPowerShell DSC - State of the Art & Community by Gael Colas
PowerShell DSC - State of the Art & Community by Gael Colas
UK DevOps Collective
 
Azure - Data Platform
Azure - Data PlatformAzure - Data Platform
Azure - Data Platform
giventocode
 
IBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the CloudIBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the Cloud
Andrew Coleman
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith
Markus Eisele
 
Azure from scratch part 3 By Girish Kalamati
Azure from scratch part 3 By Girish KalamatiAzure from scratch part 3 By Girish Kalamati
Azure from scratch part 3 By Girish Kalamati
Girish Kalamati
 
More Cache for Less Cash (DevLink 2014)
More Cache for Less Cash (DevLink 2014)More Cache for Less Cash (DevLink 2014)
More Cache for Less Cash (DevLink 2014)
Michael Collier
 
12 Things about Oracle WebLogic Server 12c
12 Things	 about Oracle WebLogic Server 12c12 Things	 about Oracle WebLogic Server 12c
12 Things about Oracle WebLogic Server 12c
Guatemala User Group
 
Access Data from XPages with the Relational Controls
Access Data from XPages with the Relational ControlsAccess Data from XPages with the Relational Controls
Access Data from XPages with the Relational Controls
Teamstudio
 
Azure Nights August2017
Azure Nights August2017Azure Nights August2017
Azure Nights August2017
Michael Frank
 
Sql Start! 2020 - SQL Server Lift & Shift su Azure
Sql Start! 2020 - SQL Server Lift & Shift su AzureSql Start! 2020 - SQL Server Lift & Shift su Azure
Sql Start! 2020 - SQL Server Lift & Shift su Azure
Marco Obinu
 
SQLCAT: A Preview to PowerPivot Server Best Practices
SQLCAT: A Preview to PowerPivot Server Best PracticesSQLCAT: A Preview to PowerPivot Server Best Practices
SQLCAT: A Preview to PowerPivot Server Best Practices
Denny Lee
 
24 HOP edición Español -Diferentes técnicas de administración de logins y usu...
24 HOP edición Español -Diferentes técnicas de administración de logins y usu...24 HOP edición Español -Diferentes técnicas de administración de logins y usu...
24 HOP edición Español -Diferentes técnicas de administración de logins y usu...SpanishPASSVC
 

Similar to Blue Green Sitecore Deployments on Azure (20)

A to z for sql azure databases
A to z for sql azure databasesA to z for sql azure databases
A to z for sql azure databases
 
Sitecore 8.2 Update 1 on Azure Web Apps
Sitecore 8.2 Update 1 on Azure Web AppsSitecore 8.2 Update 1 on Azure Web Apps
Sitecore 8.2 Update 1 on Azure Web Apps
 
Cloud computing 3702
Cloud computing 3702Cloud computing 3702
Cloud computing 3702
 
MongoDB World 2019: Why NBCUniversal Migrated to MongoDB Atlas
MongoDB World 2019: Why NBCUniversal Migrated to MongoDB AtlasMongoDB World 2019: Why NBCUniversal Migrated to MongoDB Atlas
MongoDB World 2019: Why NBCUniversal Migrated to MongoDB Atlas
 
Copy Data Management for the DBA
Copy Data Management for the DBACopy Data Management for the DBA
Copy Data Management for the DBA
 
Denver SQL Saturday The Next Frontier
Denver SQL Saturday The Next FrontierDenver SQL Saturday The Next Frontier
Denver SQL Saturday The Next Frontier
 
AUSPC 2013 - Understanding the Five Layers of SharePoint Security
AUSPC 2013 - Understanding the Five Layers of SharePoint SecurityAUSPC 2013 - Understanding the Five Layers of SharePoint Security
AUSPC 2013 - Understanding the Five Layers of SharePoint Security
 
Sitecore9 key features by jitendra soni - Presented in Sitecore User Group UK
Sitecore9 key features by jitendra soni - Presented in Sitecore User Group UKSitecore9 key features by jitendra soni - Presented in Sitecore User Group UK
Sitecore9 key features by jitendra soni - Presented in Sitecore User Group UK
 
PowerShell DSC - State of the Art & Community by Gael Colas
PowerShell DSC - State of the Art & Community by Gael ColasPowerShell DSC - State of the Art & Community by Gael Colas
PowerShell DSC - State of the Art & Community by Gael Colas
 
Azure - Data Platform
Azure - Data PlatformAzure - Data Platform
Azure - Data Platform
 
IBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the CloudIBM InterConnect 2015 - IIB in the Cloud
IBM InterConnect 2015 - IIB in the Cloud
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith
 
Azure from scratch part 3 By Girish Kalamati
Azure from scratch part 3 By Girish KalamatiAzure from scratch part 3 By Girish Kalamati
Azure from scratch part 3 By Girish Kalamati
 
More Cache for Less Cash (DevLink 2014)
More Cache for Less Cash (DevLink 2014)More Cache for Less Cash (DevLink 2014)
More Cache for Less Cash (DevLink 2014)
 
12 Things about Oracle WebLogic Server 12c
12 Things	 about Oracle WebLogic Server 12c12 Things	 about Oracle WebLogic Server 12c
12 Things about Oracle WebLogic Server 12c
 
Access Data from XPages with the Relational Controls
Access Data from XPages with the Relational ControlsAccess Data from XPages with the Relational Controls
Access Data from XPages with the Relational Controls
 
Azure Nights August2017
Azure Nights August2017Azure Nights August2017
Azure Nights August2017
 
Sql Start! 2020 - SQL Server Lift & Shift su Azure
Sql Start! 2020 - SQL Server Lift & Shift su AzureSql Start! 2020 - SQL Server Lift & Shift su Azure
Sql Start! 2020 - SQL Server Lift & Shift su Azure
 
SQLCAT: A Preview to PowerPivot Server Best Practices
SQLCAT: A Preview to PowerPivot Server Best PracticesSQLCAT: A Preview to PowerPivot Server Best Practices
SQLCAT: A Preview to PowerPivot Server Best Practices
 
24 HOP edición Español -Diferentes técnicas de administración de logins y usu...
24 HOP edición Español -Diferentes técnicas de administración de logins y usu...24 HOP edición Español -Diferentes técnicas de administración de logins y usu...
24 HOP edición Español -Diferentes técnicas de administración de logins y usu...
 

Recently uploaded

SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 

Recently uploaded (20)

SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 

Blue Green Sitecore Deployments on Azure

  • 1. Rob Habraken | Technical Manager, Consultant & Sitecore MVP
  • 2. Sitecore 8.2 on Azure Web Apps
  • 3. Familiarity of Windows Built on .NET, Sitecore uses the technology that your IT department already knows. Infinite scalability Easily scales up and down as demand changes.* Rapidly deploy Sitecore on Azure without worrying IT. Speed to market The only enterprise- grade cloud Microsoft Azure ensures that Sitecore® Experience Database™ is secure. Always on Never miss a beat; always be there for your customers. Interoperability Integrates seamlessly with your existing back-end systems and marketing investments. Accident protection Reliable and redundant copies of your data and automatic failover protection. Pay-as-you-go Only pay for the power and capacity you’re using.* *Customers will need to ensure the proper number of content delivery servers from Sitecore to meet scaling requirements.
  • 4. Virtual Machines Cloud Services Web Apps Azure hosting options Control Support of legacy apps Ease of management Agility • Web Apps is the new PaaS standard with more agility & easier to manage • Web Apps were previously marketed as a SaaS solution, but is now considered to be PaaS • Sitecore is using additional SaaS services to complete the installation Azure Module Sitecore 8.2-1
  • 5.
  • 7. • ARM (Azure Resource Manager) templates are an Azure standard using JSON • Delivered by Sitecore as a starting point for your own custom provisioning • Enables you to define one or more Azure resources including dependencies between deployed resources • Can be used for initial provision or as continuous deployment • Use Web Deploy and DACPAC packages to setup site & databases
  • 8. The road to the ultimate Continuous Deployment setup
  • 9. • What do we need more for a good CI/CD setup? • How to edit and extend the provided ARM templates? • What are the pitfalls and black holes in blue / green provisioning?
  • 10. Streamlining your Cloud deployments
  • 11. • Clean install per deployment, based on vanilla Sitecore install • Keep database content and only deploy new / changed items • Don’t disturb live site with deployment process or new content • Option to rollback deployment upon failure • Repeatable process, fully automated
  • 12. Sitecore gives you handy ARM templates for the different sizings, but they’re a head start only; you will run into some issues • You cannot re-provision an environment, having to deploy over an existing web app, being unable to remove files • It doesn’t provision staging slots to deploy while keeping your current version up & running • It doesn’t tell you how to re-provision without overwriting your database with content you want to keep
  • 13. • Roll out your infrastructure first, like resource groups, databases, hosting plans and slots • Then, provision a vanilla Sitecore install into your staging slot (this step includes installing databases and vanilla content) • Then, create a repeatable re-provisioning step, provisioning a vanilla Sitecore install into your staging slot, without databases! (this actually wipes your staging slot each time your provision) • Deploy your own solution over the staging slot & swap when ready
  • 15. Web roles Health Monitoring Databases SearchCollection Database Session State 2. Provision vanilla Sitecore: Sitecore into staging slot, default content
  • 17. Web roles Health Monitoring Databases SearchCollection Database Session State 3. Re-provision without database: Wipes slot, installs new files, keeping content
  • 19.
  • 21. • Split infra and msdeploy parts, so we can re-provision! • Use output parameters to stitch templates together • Add staging slots (default provisioning & deployment target) • Upgrade minimum SKU configuration to support slots • Add a databaseless SCWDP and provision for re-provisioning
  • 22. • ARM splitting • output parameters • staging slots
  • 23. • The Sitecore Web Deploy Packages you can download from Sitecore contain vanilla databases, but you don’t want them to overwrite your own Sitecore content while re-provisioning • You have to strip the databases from the different SCWDPs • You can do that using msdeploy, deploying from one zip archive (SCWDP) to another, using the skip dbFullSQL & skip dbDacFx parameters!
  • 24. • Get the parameters.xml file out of the SCWDP; it contains all the info about the required parameters to deploy that package • Invoke msdeploy with the -skip:objectName=dbFullSql and -skip:objectName=dbDacFx parameters • Add all additional parameters required by the specific SCWDP
  • 25. msdeploy -verb:sync -source:package="D:DataInetpubazurexp0-singleSitecore 8.2 rev. 161221_single.scwdp.zip" - dest:package="D:DataInetpubazurexp0-singleSitecore 8.2 rev. 161221_single-nodb.scwdp.zip" -declareparamfile="D:DataInetpubazurexp0- singleparameters.xml" -skip:objectName=dbFullSql -skip:objectName=dbDacFx -setparam:"Sitecore Admin New Password"=“giLvgjMXG0D9CuKYKctA" - setparam:"Core DB User Name"="single-core-sitecore-msdeploy-user" -setparam:"Core DB Password"="TWsxzkGQ5VrPT@7znJDe9NkFFtG" -setparam:"Master DB User Name"="single-master-sitecore-msdeploy-user" -setparam:"Master DB Password"="xgMR7p6dmLYdL@7znJDe9NkFFtG" -setparam:"Web DB User Name"="single-web- sitecore-msdeploy-user" -setparam:"Web DB Password"="B3j0tnNXVBoS6@7znJDe9NkFFtG" -setparam:"Reporting DB User Name"="single-reporting-sitecore- msdeploy-user" -setparam:"Reporting DB Password"="0dURnXD5T93f@7znJDe9NkFFtG" -setparam:"Core Admin Connection String"="Encrypt=True;TrustServerCertificate=False;Data Source=azure-rg-sql.database.windows.net,1433;Initial Catalog=azure-rg-core-db;User Id=xp0- single-sql;Password=a6CmAkgOyY236ctkzsNx;" -setparam:"Core Connection String"="Encrypt=True;TrustServerCertificate=False;Data Source=azure-rg- sql.database.windows.net,1433;Initial Catalog=azure-rg-core-db;User Id=single-core-sitecore-msdeploy-user;Password=TWsxzkGQ5VrPT@7znJDe9NkFFtG;" - setparam:"Master Admin Connection String"="Encrypt=True;TrustServerCertificate=False;Data Source=azure-rg-sql.database.windows.net,1433;Initial Catalog=azure-rg-master-db;User Id=xp0-single-sql;Password=a6CmAkgOyY236ctkzsNx;" -setparam:"Master Connection String"="Encrypt=True;TrustServerCertificate=False;Data Source=azure-rg-sql.database.windows.net,1433;Initial Catalog=azure-rg-master-db;User Id=single-master-sitecore-msdeploy-user;Password=xgMR7p6dmLYdL@7znJDe9NkFFtG;" -setparam:"Web Admin Connection String"="Encrypt=True;TrustServerCertificate=False;Data Source=azure-rg-web-sql.database.windows.net,1433;Initial Catalog=azure-rg-web-db;User Id=xp0- single-sql;Password=a6CmAkgOyY236ctkzsNx;" -setparam:"Web Connection String"="Encrypt=True;TrustServerCertificate=False;Data Source=azure-rg-web- sql.database.windows.net,1433;Initial Catalog=azure-rg-web-db;User Id=single-web-sitecore-msdeploy-user;Password=B3j0tnNXVBoS6@7znJDe9NkFFtG;" - setparam:"Reporting Admin Connection String"="Encrypt=True;TrustServerCertificate=False;Data Source=azure-rg-sql.database.windows.net,1433;Initial Catalog=azure-rg-reporting-db;User Id=xp0-single-sql;Password=a6CmAkgOyY236ctkzsNx;" -setparam:"Reporting Connection String"="Encrypt=True;TrustServerCertificate=False;Data Source=azure-rg-sql.database.windows.net,1433;Initial Catalog=azure-rg-reporting-db;User Id=single-reporting-sitecore-msdeploy-user;Password=0dURnXD5T93f@7znJDe9NkFFtG;" -setparam:"Analytics Connection String"="mongodb://mlab- azure:mM8kY7jD6JkDUykx6D2y@ds123456.mlab.com:12345/analytics" -setparam:"Tracking Live Connection String"="mongodb://mlab- azure:mM8kY7jD6JkDUykx6D2y@ds123456.mlab.com:12345/tracking-live" -setparam:"Tracking History Connection String"="mongodb://mlab- azure:mM8kY7jD6JkDUykx6D2y@ds123456.mlab.com:12345/analytics-history" -setparam:"Tracking Contact Connection String"="mongodb://mlab- azure:mM8kY7jD6JkDUykx6D2y@ds123456.mlab.com:12345/tracking-contact" -setparam:"Cloud Search Connection String"="serviceUrl=https://azure-rg- as.search.windows.net;apiVersion=2015-02-28;apiKey=A6836C6EBBA68675D558336C6EBBA686" -setparam:"Application Insights Instrumentation Key"="ecc59b93- 57eb-4c89-1264-945b2ae914f6" -setparam:"Application Insights Role"="Single" -setparam:"License XML"="." -setparam:"IP Security Client IP"="0.0.0.0" - setparam:"IP Security Client IP Mask"="0.0.0.0" …and it would be different for each environment & instance role! PS: these are all fake credentials, of course ;-)
  • 26. • The real config values don’t have to be in the target package • Actually, you don’t want them in there: • A package should be re-usable among environment • For security reasons, it shouldn’t contain the actual credentials • They would be overwritten by the ARM provisioning anyway • Use PowerShell to automate the creation and execution of the command, based on the parameters.xml file
  • 27. [CmdletBinding()] Param( [Parameter(Mandatory=$True)] [string]$PackagePath, [Parameter(Mandatory=$True)] [string]$ParamFile, [Parameter(Mandatory=$False)] [string]$PackageDestinationPath = $($PackagePath).Replace(".scwdp.zip", "-nodb.scwdp.zip") ) $msdeploy = "C:Program FilesIISMicrosoft Web Deploy V3msdeploy.exe" $verb = "-verb:sync" $source = "-source:package=`"$PackagePath`"" $destination = "-dest:package=`"$($PackageDestinationPath)`"" $declareParamFile = "-declareparamfile=`"$($ParamFile)`"" $skipDbFullSQL = "-skip:objectName=dbFullSql" $skipDbDacFx = "-skip:objectName=dbDacFx" # read parameter file [xml]$paramfile_content = Get-Content -Path $ParamFile $paramfile_paramnames = $paramfile_content.parameters.parameter.name $params = "" foreach($paramname in $paramfile_paramnames){ $tmpvalue = "tmpvalue" if($paramname -eq "License Xml"){ $tmpvalue = "LicenseContent"} if($paramname -eq "IP Security Client IP"){ $tmpvalue = "0.0.0.0"} if($paramname -eq "IP Security Client IP Mask"){ $tmpvalue = "0.0.0.0"} $params = "$params -setParam:`"$paramname`"=`"$tmpvalue`"" } # create new package Invoke-Expression "& '$msdeploy' --% $verb $source $destination $declareParamFile $skipDbFullSQL $skipDbDacFx $params"
  • 29. • Re-provision using msdeploy ARM and db-less SCWDP • Deploy to the staging slot using VSTS (for example) • Test & warm up your new site • Swap slots
  • 30.
  • 31. • Do you have custom role specific configuration (CM/CD/REP/PRC)? • Don’t transform them in your Solution, use cargo payloads! • For more info on this topic, check out this article by Bas Lijten: http://blog.baslijten.com/sitecore-on-azure-create-custom-web- deploy-packages-using-the-sitecore-azure-toolkit/
  • 32. What could go wrong
  • 33. • Use shared access signatures (SAS) to access your SCWDPs • You are not allowed to publicly expose Sitecore software downloads • You do not want to share your base install, possibly including configs • Add IP security to all testing and acceptance environments • You can copy IP security setup from the XP CM role • I have added this to the XP0-single templates, using it for test mainly • Use Azure Key Vault to store your keys and passwords
  • 34. • Set your container access to private • Generate a SAS token and add it to your package URL
  • 35. • Add “.scm” to resource URL or access via Portal • Browse through files, view or edit them (debugging only!) • Execute PowerShell • View Processes • Etc.
  • 36. • EventQueue issue: the staging slot creates an extra CM role, which could introduce concurrency issues with your production slot CM • Indexing: if you do blue green deployments using an extra web database, please take in mind that your Azure Search already updates your indexes based on the new master content! • Content stop: if you want to avoid conflicts, content editors should not publish during deployments (although than can continue working on the master database); if you want to deploy continuously, this can be a huge disturbance for editors
  • 37.
  • 38. • Sitecore will release a new set of ARM templates shortly, containing a few aspects we’ve seen today, and more: • Nested templates • Splitting infra & application • Module support (add-ons) • Staging and databaseless re-provisioning? Check my repository • Always use them as a boilerplate to create your own templates!
  • 39. • Blog on Azure Cloud Services – deprecated! http://sitecore.robhabraken.nl/index.php/2229/sitecore-azure/ • First blog of my series on Azure Web Apps http://sitecore.robhabraken.nl/index.php/2407/an-introduction-to-sitecore-on-azure-web-apps/ • An comprehensive introduction to Sitecore on Azure Web Apps https://www.robhabraken.nl/index.php/2622/sitecore-8-2-1-on-azure-web-apps/ • Automated scaling using PowerShell https://www.robhabraken.nl/index.php/2658/saving-costs-by-scaling-down/ • One of the issues of staging on a shared master database https://www.robhabraken.nl/index.php/2683/the-staging-slot-eventqueue-issue/
  • 40. • Download my demo scripts & ARM templates https://github.com/robhabraken/Sitecore-Azure-Scripts • A blog post, including recordings of this session, will follow shortly on my Sitecore blog https://www.robhabraken.nl/