Ejemplo n.º 1
0
        public StaticService(SolutionStack rg, string serviceName)
        {
            var sa = new Pulumi.Azure.Storage.Account(serviceName, new Pulumi.Azure.Storage.AccountArgs
            {
                ResourceGroupName      = rg.RGName,
                EnableHttpsTrafficOnly = true,
                AccountReplicationType = "LRS",
                AccountTier            = "Standard",
                AccountKind            = "StorageV2",
                StaticWebsite          = new AccountStaticWebsiteArgs
                {
                    IndexDocument = "index.html"
                }
            });

            StaticEndpoint = sa.PrimaryWebEndpoint;
        }
Ejemplo n.º 2
0
        public StaticWebsite(string name, StaticWebsiteArgs args, ComponentResourceOptions?options = null)
            : base("teamtimezones:azure:staticwebsite", name, options)
        {
            var opts = new CustomResourceOptions {
                Parent = this
            };
            var staticWebsiteStorageAccount = new Pulumi.Azure.Storage.Account(
                name,
                new Pulumi.Azure.Storage.AccountArgs
            {
                Name = name,
                ResourceGroupName      = args.StorageAccountName,
                EnableHttpsTrafficOnly = true,
                AccountReplicationType = "LRS",
                AccountTier            = "Standard",
                AccountKind            = "StorageV2",
                AccessTier             = "Hot"
            }, opts);

            StaticWebsiteConnection = staticWebsiteStorageAccount.PrimaryConnectionString;
        }
Ejemplo n.º 3
0
        public Step1Start()
        {
            const string prefix = Common.Prefix;

            var config   = new Config();
            var location = config.Get("location") ?? "australiaeast";

            #region Resource Group
            var resourceGroup = new ResourceGroup($"{prefix}-{Deployment.Instance.StackName}", new ResourceGroupArgs()
            {
                Name     = $"{prefix}-{Deployment.Instance.StackName}",
                Location = location
            });
            #endregion

            #region Storage Account
            var name = $"{prefix}{Deployment.Instance.StackName}web";
            var staticWebsiteStorageAccount = new Pulumi.Azure.Storage.Account(
                name,
                new Pulumi.Azure.Storage.AccountArgs
            {
                Name = name,
                ResourceGroupName      = resourceGroup.Name,
                EnableHttpsTrafficOnly = true,
                AccountReplicationType = "LRS",
                AccountTier            = "Standard",
                AccountKind            = "StorageV2",
                AccessTier             = "Hot"
            });
            #endregion

            #region Enable Static Website
            WebContainer =
                staticWebsiteStorageAccount.PrimaryBlobConnectionString.Apply(async v => await EnableStaticSites(v));
            #endregion
        }
Ejemplo n.º 4
0
        public static Task <int> Main()
        {
            var tags = new InputMap <string> {
                { "Owner", "PulumiDemo" }
            };

            return(Deployment.RunAsync(() =>
            {
                // Create an Azure Resource Group
                var resourceGroup = new ResourceGroup("resourceGroup", new ResourceGroupArgs
                {
                    Location = "westeurope",
                    Tags = tags
                });

                // Create an Azure Storage Account
                var storageAccount = new Account("storageAccount", new AccountArgs
                {
                    ResourceGroupName = resourceGroup.Name,
                    AccountReplicationType = "LRS",
                    AccountTier = "Standard",
                    Tags = tags
                });

                // Create an Azure Sql Server
                var sqlServer = new SqlServer("sqlServer", new SqlServerArgs
                {
                    AdministratorLogin = "******",
                    AdministratorLoginPassword = "******",
                    ResourceGroupName = resourceGroup.Name,
                    Version = "12.0",
                    Tags = tags
                });

                // Create an Azure Sql Database
                var sqlDatabase = new Database("sqlDatabase", new DatabaseArgs
                {
                    ResourceGroupName = resourceGroup.Name,
                    ServerName = sqlServer.Name,
                    Edition = "Basic",
                    Tags = tags
                });

                // Create an Azure Firewall Rule
                var currentIpAddress = FindCurrentIpAddress();
                var firewallRule = new FirewallRule("firewallRule", new FirewallRuleArgs
                {
                    ResourceGroupName = resourceGroup.Name,
                    ServerName = sqlServer.Name,
                    StartIpAddress = currentIpAddress,
                    EndIpAddress = currentIpAddress
                });

                // Export outputs to console/dashboard
                return new Dictionary <string, object>
                {
                    { "resourceGroupName", resourceGroup.Name },
                    { "storageAccountName", storageAccount.Name },
                    { "sqlServerName", sqlServer.Name },
                    { "sqlDatabaseName", sqlDatabase.Name },
                    { "firewallRuleName", firewallRule.Name }
                };
            }));
        }
Ejemplo n.º 5
0
        public Step2Start()
        {
            const string prefix   = Common.Prefix;
            var          config   = new Config();
            var          location = config.Get("location") ?? "australiaeast";

            #region Resource Group
            var resourceGroup = new ResourceGroup($"{prefix}-{Deployment.Instance.StackName}", new ResourceGroupArgs()
            {
                Name     = $"{prefix}-{Deployment.Instance.StackName}",
                Location = location
            });
            #endregion

            #region Static Website
            var name = $"{prefix}{Deployment.Instance.StackName}web";
            var staticWebsiteStorageAccount = new Pulumi.Azure.Storage.Account(
                name,
                new Pulumi.Azure.Storage.AccountArgs
            {
                Name = name,
                ResourceGroupName      = resourceGroup.Name,
                EnableHttpsTrafficOnly = true,
                AccountReplicationType = "LRS",
                AccountTier            = "Standard",
                AccountKind            = "StorageV2",
                AccessTier             = "Hot"
            });

            WebContainer =
                staticWebsiteStorageAccount.PrimaryBlobConnectionString.Apply(async v => await EnableStaticSites(v));
            #endregion

            #region Cosmos DB
            string accountName   = $"{prefix}-{Deployment.Instance.StackName}";
            string databaseName  = "TeamTimeZones";
            string containerName = "TeamMember";
            #region Account
            var cosmosAccount = new Account(accountName,
                                            new AccountArgs
            {
                Name = accountName,
                ResourceGroupName = resourceGroup.Name,
                GeoLocations      = new List <AccountGeoLocationArgs>
                {
                    new AccountGeoLocationArgs {
                        Location = location, FailoverPriority = 0
                    }
                },
                OfferType         = "Standard",
                ConsistencyPolicy = new AccountConsistencyPolicyArgs {
                    ConsistencyLevel = "Session"
                },
            });
            #endregion

            #region Database
            var database = new SqlDatabase(databaseName,
                                           new SqlDatabaseArgs
            {
                Name = databaseName,
                ResourceGroupName = resourceGroup.Name,
                AccountName       = cosmosAccount.Name
            });
            #endregion

            #region Container
            var container = new SqlContainer($"{prefix}-{Deployment.Instance.StackName}",
                                             new SqlContainerArgs
            {
                Name = containerName,
                ResourceGroupName = resourceGroup.Name,
                AccountName       = cosmosAccount.Name,
                DatabaseName      = database.Name,
                PartitionKeyPath  = "/TimeZone"
            });
            #endregion
            #endregion
        }