private static IDictionary <string, object> Run() { var resourceGroup = new ResourceGroup("emoos-dev", new ResourceGroupArgs { Location = "WestEurope" }); Output <string> resourceGroupName = resourceGroup.Name; var planSkuArgs = new PlanSkuArgs { Tier = "Basic", Size = "B1" }; var plan = new Plan("DevAppServicePlan", new PlanArgs { ResourceGroupName = resourceGroupName, Kind = "Linux", Sku = planSkuArgs, Reserved = true }); var appSettings = new InputMap <string> { { "WEBSITES_ENABLE_APP_SERVICE_STORAGE", "false" } }; var image = "sqeezy/emoos.solutions:latest"; var siteConfig = new AppServiceSiteConfigArgs { AlwaysOn = false, LinuxFxVersion = $"DOCKER|{image}" }; var appService = new AppService("DevAppService", new AppServiceArgs { ResourceGroupName = resourceGroupName, AppServicePlanId = plan.Id, AppSettings = appSettings, HttpsOnly = false, SiteConfig = siteConfig }); var emoosDns = new Zone("emoos.solutions", new ZoneArgs { ResourceGroupName = "emoos", Name = "emoos.solutions" }, new CustomResourceOptions { ImportId = DnsId, Protect = true }); var txtRecord = new TxtRecord("@", new TxtRecordArgs { Name = "@", ResourceGroupName = emoosDns.ResourceGroupName, Ttl = 60, ZoneName = emoosDns.Name, Records = new InputList <TxtRecordRecordsArgs> { new TxtRecordRecordsArgs { Value = appService.DefaultSiteHostname } } }); var cname = new CNameRecord("dev", new CNameRecordArgs { Name = "dev", ResourceGroupName = emoosDns.ResourceGroupName, Ttl = 60, ZoneName = emoosDns.Name, Record = appService.DefaultSiteHostname }); var hostNameBinding = new CustomHostnameBinding("dev.emoos.solutions", new CustomHostnameBindingArgs { AppServiceName = appService.Name, Hostname = "dev.emoos.solutions", ResourceGroupName = resourceGroupName // SslState = "SniEnabled", // Thumbprint = "19A0220DE45552EE931E0959B10F6DDDAD5F946B" }); return(new Dictionary <string, object?> { { "default route", appService.DefaultSiteHostname }, { "resource group", resourceGroup.Name } // {"domain binding", hostNameBinding.Hostname} }); }
public NoraAzureStack() { var resourceGroup = new ResourceGroup(AddEnvironmentPrefix("nora")); // Reference existing app service plan. var appServicePlan = Plan.Get("home-projects-asp", "/subscriptions/72fc2865-939d-4afc-80d4-ab60f14c099e/resourceGroups/Shared/providers/Microsoft.Web/serverfarms/home-projects-asp"); // Reference existing cosmosdb account. var cosmosDbAccount = Account.Get("home-projects-cosmosdb", "/subscriptions/72fc2865-939d-4afc-80d4-ab60f14c099e/resourceGroups/Shared/providers/Microsoft.DocumentDB/databaseAccounts/home-projects-cosmosdb"); // Reference dns zone from cloudflare var dnsZone = Zone.Get("momo-adew.com", "b9eb57d1d01a353e72276d2fa0565d81"); var webApp = new AppService(AddEnvironmentPrefix("nora-web"), new AppServiceArgs { ResourceGroupName = resourceGroup.Name, HttpsOnly = true, AppServicePlanId = appServicePlan.Id }); // https://docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-custom-domain var customDomainName = AddEnvironmentPrefix("nora.momo-adew.com"); var verificationDomainName = $"asuid.{customDomainName}"; var verificationRecord = new Record("nora-web-txt-record", new RecordArgs { Name = verificationDomainName, ZoneId = dnsZone.Id, Type = "TXT", Value = webApp.CustomDomainVerificationId, Ttl = 300 }); var cnameRecord = new Record("nora-web-cname-record", new RecordArgs { Name = customDomainName, ZoneId = dnsZone.Id, Type = "CNAME", Value = webApp.DefaultSiteHostname, Ttl = 300 }); var hostNameBinding = new CustomHostnameBinding("nora-web-hostname", new CustomHostnameBindingArgs { Hostname = customDomainName, AppServiceName = webApp.Name, ResourceGroupName = resourceGroup.Name }); var sslCert = new ManagedCertificate("nora-web-cert", new ManagedCertificateArgs { CustomHostnameBindingId = hostNameBinding.Id }); var sslCertBinding = new CertificateBinding("nora-web-cert-binding", new CertificateBindingArgs { HostnameBindingId = hostNameBinding.Id, CertificateId = sslCert.Id, SslState = "SniEnabled" }); }