Ejemplo n.º 1
0
    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}
        });
    }
Ejemplo n.º 2
0
    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"
        });
    }