Setup 1: Omgeving
De inrichting van een nieuwe IPROX OpenAPI omgeving gaat volgens de volgende stappen:
- Mongo database en account
- SQL database en account
- App Service voor CMS
- Release pipeline voor CMS
- App Service voor API
- Build Pipeline voor API1
- Release pipeline voor API
Het wordt aangeraden deze volgorde aan te houden.
1: Alleen voor de eerste Stage in de Release Pipeline, daarna wordt dezelfde Artifact in sequentiële volgorde gebruikt voor de overige Stages.Mongo database en account
- Registreer mongo account in LastPass onder Shared-Headless (accountnaam=naam omgeving), genereer wachtwoord zonder symbols
- Maak user account in https://cloud.mongodb.com/; restrict access tot read-write op database (=accountnaam)
- Login op database als atlasAdmin, use de database en doe
load("iprox_vw.js")enload("iprox_index.js")Of gebruik een client applicatie zoals Robo 3T of MongoDB Compass. (Daarmee kunnen de bestandeniprox_vw.jseniprox_index.jsgeopend en uitgevoerd worden vanuit de source code)
SQL database en account
- Ga naar de Elastic Pool
- Create database (naam=sqldb-[naam omgeving]), kies onder Additional Settings voor de Backup van
sqldb-iprox_starter; Disable Azure Defender - Login met management console (je moet je IP adres toegang geven)
- Maak een login aan (loginnaam=naam omgeving)
- Open een query in de nieuwe database en doe (na aanpassen van
naam-omgeving)
CREATE USER iprox
FOR LOGIN [naam-omgeving]
WITH DEFAULT_SCHEMA = dbo
GO
EXEC sp_addrolemember 'db_owner', 'iprox'
GO
- Stop je sessie in de management console
- Verwijder je IP adres via de Firewall van iprox SQL Server
- Indien het een productieomgeving betreft, ga in Azure naar de SQL Server en kies
Manage backupsonderSettings. Selecteer de omgeving en kies onder tabbladRetention policiesde actieConfigure policiesvoor de juiste database. Na instellen en bevestigen moeten de volgende waardes aanwezig zijn:
| Database | PiTR Backups | Weekly LTR Backups | Monthly LTR Backups | Yearly LTR Backups |
|---|---|---|---|---|
sqldb-naam-omgeving | 7 Days | 5 Weeks | 3 Months | Keep week 1 for 1 Year |
App Service voor CMS
- Naam = app-[naam-omgeving]-cms
- Enable Application Insights en gebruik deze General Settings:
| Naam | Waarde |
|---|---|
| .NET Framework version | ASP.NET V4.8 |
| Platform | 64 Bit |
| Managed pipeline version | Integrated |
| FTP state | Disabled |
| HTTP version | 2.0 |
| Web sockets | Off |
| Always on | Off |
| ARR affinity | Off |
| Remote debugging | Off |
| Client certificate mode | Ignore |
| Certificate exclusion paths | (leeg) |
- Maak CNAME van
naam-omgeving-cms.iproxapi.nlnaarapp-[naam-omgeving]-cms.azurewebsites.net. - Zet TLS settings op HTTPS only.
- Pas de hostname
naam-omgeving-cms.iproxapi.nltoe, inclusief koppelen van*.iproxapi.nlcertificaat. - Neem overige appsettings en connectionstrings over vanuit het template op Environment variables templates met aanpassing van database gegevens.
- Indien het een productieomgeving betreft, maak een nieuw deployment slot met een kloon van de instellingen.
- Indien het een productieomgeving betreft, stel de volgende applicatieinstelling in op het secundaire deployment slot:
disable_hangfire_backgroundjobsmet waardetrue. Het vinkjeDeployment slot settingmoet ingeschakeld zijn.
Release pipeline voor CMS
Voor het toevoegen van een Stage aan een release pipeline kies het Iprox.Cms Headless 2.0 DEV of Iprox.Cms Headless 2.0 PROD template.
Let op dat deze 2 vinken essentieel zijn:
Additional Deployment Options
- Remove additional files at destination
- Exclude files from the App_Data folder
Configuratie CMS
- Log in op het CMS met het standaard
ipaccount (voer indien nodig het SQL statementUPDATE GebTab SET Eml='xxx@iprox.nl WHERE Log='ip'uit op de database om toegang te krijgen via wachtwoord opvragen). - Voer onder Configuratie > Systeem de URL van het CMS in bij 'Basis internet adres'
- Voer onder Configuratie > Omgevingen de hostnames van CMS en API in voor de betreffende omgevingen bij 'Basis internet adres'
- Maak accounts aan voor jezelf en ten minste 1 collega en geef die dezelfde functie als het
ipaccount (de conventie is dat de gebruikersnaam gelijk is aan het e-mail adres) - Log in met je eigen account en disable het
ipaccount
App Service voor API
- General settings
| Naam | Waarde |
|---|---|
| Stack | .NET Core |
| Platform | 64 Bit |
| Managed pipeline version | Integrated |
| FTP state | Disabled |
| HTTP version | 2.0 |
| Web sockets | Off |
| Always on | On |
| ARR affinity | Off |
| Remote debugging | Off |
| Client certificate mode | Ignore |
- Overige settings conform template op Environment variables templates.
- Indien het een productieomgeving betreft, maak een nieuw deployment slot met een kloon van de instellingen.
Extra configuratie eigenschappen
Indien de basis URL voor Swagger afwijkt moet ook Documentation:RoutePrefix toegevoegd worden. Dit kan bijvoorbeeld de waarde api-docs bevatten.
Build Pipeline voor API
Deze stap hoeft per omgeving maar één keer uitgevoerd te worden. Daarna wordt dezelfde Artifact in de rest van de Release Pipeline voor de API omgeving gebruikt.
- Maak een nieuwe Build Pipeline aan met een toepasselijke naam van de omgeving op basis van de
azure-pipelines.ymlin de repositoryIprox.OpenApi.Release. - Pas de variabelen aan naar gelang de betreffende omgeving, zie iprox.open-api.release
Release pipeline voor API
- Indien het de eerste Stage in de release pipeline betreft, schakel
Continuous deployment triggerin. Alle andere Stages komen er sequentieel achter en kunnen pas geactiveerd worden als de vorige geslaagd is. - Vul tot slot de applicatieinstellingen
devops.BuildId,devops.DeploymentIdendevops.EnvironmentIdin de instellingen van de App Service van het CMS. De waardes hiervan kunnen gevonden worden in de query string van de URL van respectievelijk de Build Pipeline, de Release Pipeline en het bewerken van stage in een Release.