Git Product home page Git Product logo

terraform-azurerm-db-postgresql-flexible's Introduction

Azure Managed Database - PostgreSQL flexible

Changelog Notice Apache V2 License TF Registry

This module creates an Azure PostgreSQL Flexible server with databases along with logging activated firewall rules. A user is created for each databases created with this module. This module does not allow users to create new objects in the public schema regarding the CVE-2018-1058.

Global versioning rule for Claranet Azure modules

Module version Terraform version AzureRM version
>= 7.x.x 1.3.x >= 3.0
>= 6.x.x 1.x >= 3.0
>= 5.x.x 0.15.x >= 2.0
>= 4.x.x 0.13.x / 0.14.x >= 2.0
>= 3.x.x 0.12.x >= 2.0
>= 2.x.x 0.12.x < 2.0
< 2.x.x 0.11.x < 2.0

Contributing

If you want to contribute to this repository, feel free to use our pre-commit git hook configuration which will help you automatically update and format some files for you by enforcing our Terraform code module best-practices.

More details are available in the CONTRIBUTING.md file.

Usage

This module is optimized to work with the Claranet terraform-wrapper tool which set some terraform variables in the environment needed by this module. More details about variables set by the terraform-wrapper available in the documentation.

module "azure_region" {
  source  = "claranet/regions/azurerm"
  version = "x.x.x"

  azure_region = var.azure_region
}

module "rg" {
  source  = "claranet/rg/azurerm"
  version = "x.x.x"

  location    = module.azure_region.location
  client_name = var.client_name
  environment = var.environment
  stack       = var.stack
}

module "logs" {
  source  = "claranet/run/azurerm//modules/logs"
  version = "x.x.x"

  client_name         = var.client_name
  environment         = var.environment
  stack               = var.stack
  location            = module.azure_region.location
  location_short      = module.azure_region.location_short
  resource_group_name = module.rg.resource_group_name
}

module "postgresql_flexible" {
  source  = "claranet/db-postgresql-flexible/azurerm"
  version = "x.x.x"

  client_name    = var.client_name
  location       = module.azure_region.location
  location_short = module.azure_region.location_short
  environment    = var.environment
  stack          = var.stack

  resource_group_name = module.rg.resource_group_name

  tier               = "GeneralPurpose"
  size               = "D2s_v3"
  storage_mb         = 32768
  postgresql_version = 13

  allowed_cidrs = {
    "1" = "10.0.0.0/24"
    "2" = "12.34.56.78/32"
  }

  backup_retention_days        = 14
  geo_redundant_backup_enabled = true

  administrator_login = "azureadmin"

  databases = {
    mydatabase = {
      collation = "en_US.utf8"
      charset   = "UTF8"
    }
  }

  maintenance_window = {
    day_of_week  = 3
    start_hour   = 3
    start_minute = 0
  }

  logs_destinations_ids = [
    module.logs.logs_storage_account_id,
    module.logs.log_analytics_workspace_id
  ]

  extra_tags = {
    foo = "bar"
  }
}

provider "postgresql" {
  host      = module.postgresql_flexible.postgresql_flexible_fqdn
  port      = 5432
  username  = module.postgresql_flexible.postgresql_flexible_administrator_login
  password  = module.postgresql_flexible.postgresql_flexible_administrator_password
  sslmode   = "require"
  superuser = false
}

module "postgresql_users" {
  source  = "claranet/users/postgresql"
  version = "x.x.x"

  for_each = module.postgresql_flexible.postgresql_flexible_databases_names

  administrator_login = module.postgresql_flexible.postgresql_flexible_administrator_login

  database = each.key
}

module "postgresql_configuration" {
  source  = "claranet/database-configuration/postgresql"
  version = "x.x.x"

  for_each = module.postgresql_flexible.postgresql_flexible_databases_names

  administrator_login = module.postgresql_flexible.postgresql_flexible_administrator_login

  database_admin_user = module.postgresql_users[each.key].user
  database            = each.key
  schema_name         = each.key
}

Providers

Name Version
azurecaf ~> 1.2, >= 1.2.22
azurerm ~> 3.105
random >= 2.0

Modules

Name Source Version
diagnostics claranet/diagnostic-settings/azurerm ~> 6.5.0

Resources

Name Type
azurerm_postgresql_flexible_server.postgresql_flexible_server resource
azurerm_postgresql_flexible_server_configuration.postgresql_flexible_config resource
azurerm_postgresql_flexible_server_database.postgresql_flexible_db resource
azurerm_postgresql_flexible_server_firewall_rule.firewall_rules resource
random_password.administrator_password resource
azurecaf_name.postgresql_flexible_dbs data source
azurecaf_name.postgresql_flexible_server data source

Inputs

Name Description Type Default Required
administrator_login PostgreSQL administrator login. string n/a yes
administrator_password PostgreSQL administrator password. Strong Password : https://docs.microsoft.com/en-us/sql/relational-databases/security/strong-passwords?view=sql-server-2017. string null no
allowed_cidrs Map of authorized cidrs. map(string) n/a yes
authentication Authentication configurations for the PostgreSQL Flexible Server
object({
active_directory_auth_enabled = optional(bool)
password_auth_enabled = optional(bool)
tenant_id = optional(string)
})
{} no
auto_grow_enabled Enable auto grow for the PostgreSQL Flexible Server. bool false no
backup_retention_days Backup retention days for the PostgreSQL Flexible Server (Between 7 and 35 days). number 7 no
client_name Name of client. string n/a yes
custom_diagnostic_settings_name Custom name of the diagnostics settings, name will be 'default' if not set. string "default" no
custom_server_name Custom Server Name identifier. string "" no
databases Map of databases configurations with database name as key and following available configuration option:
* (optional) charset: Valid PostgreSQL charset : https://www.postgresql.org/docs/current/multibyte.html#CHARSET-TABLE
* (optional) collation: Valid PostgreSQL collation : http://www.postgresql.cn/docs/13/collation.html - be careful about https://docs.microsoft.com/en-us/windows/win32/intl/locale-names?redirectedfrom=MSDN
map(object({
charset = optional(string, "UTF8")
collation = optional(string, "en_US.utf8")
}))
{} no
delegated_subnet_id Id of the subnet to create the PostgreSQL Flexible Server. (Should not have any resource deployed in) string null no
environment Name of application's environnement. string n/a yes
extra_tags Map of custom tags. map(string) {} no
geo_redundant_backup_enabled Enable Geo Redundant Backup for the PostgreSQL Flexible Server. bool false no
location Azure location. string n/a yes
location_short Short string for Azure location. string n/a yes
logs_categories Log categories to send to destinations. list(string) null no
logs_destinations_ids List of destination resources IDs for logs diagnostic destination.
Can be Storage Account, Log Analytics Workspace and Event Hub. No more than one of each can be set.
If you want to specify an Azure EventHub to send logs and metrics to, you need to provide a formated string with both the EventHub Namespace authorization send ID and the EventHub name (name of the queue to use in the Namespace) separated by the `
` character. list(string) n/a
logs_metrics_categories Metrics categories to send to destinations. list(string) null no
maintenance_window Map of maintenance window configuration. map(number) null no
name_prefix Optional prefix for the generated name. string "" no
name_suffix Optional suffix for the generated name. string "" no
postgresql_configurations PostgreSQL configurations to enable. map(string) {} no
postgresql_version Version of PostgreSQL Flexible Server. Possible values are : https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/postgresql_flexible_server#version. number 13 no
private_dns_zone_id ID of the private DNS zone to create the PostgreSQL Flexible Server. string null no
public_network_access_enabled Enable public network access for the PostgreSQL Flexible Server. bool false no
resource_group_name Name of the application ressource group, herited from infra module. string n/a yes
size Size for PostgreSQL Flexible server sku : https://docs.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-compute-storage. string "D2ds_v4" no
stack Name of application stack. string n/a yes
standby_zone Specify availability-zone to enable high_availability and create standby PostgreSQL Flexible Server. (Null to disable high-availability) number 2 no
storage_mb Storage allowed for PostgresSQL Flexible server. Possible values : https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/postgresql_flexible_server#storage_mb. number 32768 no
tier Tier for PostgreSQL Flexible server sku : https://docs.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-compute-storage. Possible values are: GeneralPurpose, Burstable, MemoryOptimized. string "GeneralPurpose" no
use_caf_naming Use the Azure CAF naming provider to generate default resource name. custom_server_name override this if set. Legacy default name is used if this is set to false. bool true no
use_caf_naming_for_databases Use the Azure CAF naming provider to generate databases name. bool false no
zone Specify availability-zone for PostgreSQL Flexible main Server. number 1 no

Outputs

Name Description
postgresql_flexible_administrator_login Administrator login for PostgreSQL Flexible server.
postgresql_flexible_administrator_password Administrator password for PostgreSQL Flexible server.
postgresql_flexible_configurations The map of all postgresql configurations set.
postgresql_flexible_database_ids The map of all database resource ids.
postgresql_flexible_databases_names Map of databases names.
postgresql_flexible_firewall_rules Map of PostgreSQL created rules.
postgresql_flexible_fqdn FQDN of the PostgreSQL server.
postgresql_flexible_server_id PostgreSQL server ID.
terraform_module Information about this Terraform module

Related documentation

Microsoft Azure documentation: docs.microsoft.com/fr-fr/azure/postgresql/flexible-server/

terraform-azurerm-db-postgresql-flexible's People

Contributors

alanbty avatar bzspi avatar jmapro avatar mloskot avatar nicolas-morel-claranet avatar rossifumax avatar semantic-release-bot avatar shr3ps avatar taoufik07 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

terraform-azurerm-db-postgresql-flexible's Issues

[BUG] ... Error: Error connecting to PostgreSQL server (scheme: postgres): XXXXdXXXXial tcp 127.0.0.1:5432: connect: connection refused

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

Terraform Version

1.6.6

AzureRM Provider Version

7.3.0

Affected Resource(s)/Data Source(s)

postgres flexible server deployment

Terraform Configuration Files

in the process of postgres db creation, terraform fails right after apply the firewall filters.

such as making more configurations after postgres flexible server is deployed.
For example the following configuration wouldn't complete and fails after the firewall filters are applied.


module "postgresql_users" {
  source  = "claranet/users/postgresql"
  version = "6.0.0"

  for_each = module.postgresql_flexible.postgresql_flexible_databases_names
  administrator_login = module.postgresql_flexible.postgresql_flexible_administrator_login
  database = each.key
}

module "postgresql_configuration" {
  source  = "claranet/database-configuration/postgresql"
  version = "6.0.0"

  for_each = module.postgresql_flexible.postgresql_flexible_databases_names

  administrator_login = module.postgresql_flexible.postgresql_flexible_administrator_login
  database_admin_user = module.postgresql_users[each.key].user
  database            = each.key
  schema_name         = each.key
}

Debug Output/Panic Output

module.accelerator.module.postgresql_flexible.azurerm_postgresql_flexible_server_firewall_rule.firewall_rules["0"]: Still creating... [30s elapsed]
module.accelerator.module.postgresql_flexible.azurerm_postgresql_flexible_server_firewall_rule.firewall_rules["0"]: Still creating... [40s elapsed]
module.accelerator.module.postgresql_flexible.azurerm_postgresql_flexible_server_firewall_rule.firewall_rules["0"]: Still creating... [50s elapsed]
module.accelerator.module.postgresql_flexible.azurerm_postgresql_flexible_server_firewall_rule.firewall_rules["0"]: Still creating... [1m0s elapsed]
module.accelerator.module.postgresql_flexible.azurerm_postgresql_flexible_server_firewall_rule.firewall_rules["0"]: Creation complete after 1m2s [id=/subscriptions/xxxxxxxxxxxxxxxx/resourceGroups/rg-fgeasf9/providers/Microsoft.DBforPostgreSQL/flexibleServers/psqlf-default-stack-bla-dev/firewallRules/0]
โ•ท
โ”‚ Error: Error connecting to PostgreSQL server  (scheme: postgres): XXXXdXXXXial tcp 127.0.0.1:5432: connect: connection refused
โ”‚ 
โ”‚   with module.accelerator.module.postgresql_configuration["main_db"].postgresql_grant.revoke_public,
โ”‚   on .terraform/modules/accelerator.postgresql_configuration/r-psql-db-config.tf line 1, in resource "postgresql_grant" "revoke_public":
โ”‚    1: resource "postgresql_grant" "revoke_public" {
โ”‚ 
โ•ต

Expected Behaviour

should apply the firewall filter as the last process so that other operations are not blocked.

Actual Behaviour

fails in the middle of deployment

Steps to Reproduce

No response

Important Factoids

No response

References

No response

[FEAT] ... public_network_access_enabled option not part of deployment

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

Description

currently there is no support this "public_network_access_enabled = false"
would be nice have in place.

New or Affected Resource(s)/Data Source(s)

none

Potential Terraform Configuration

module "postgresql_flexible" {
  source  = "claranet/db-postgresql-flexible/azurerm"
  version = "7.3.0"

  name_prefix         = "postgresql-flexible-server"
  ...
  public_network_access_enabled = false
  ...
}

References

https://registry.terraform.io/modules/Azure/postgresql/azurerm/latest

[BUG] ConflictingPublicNetworkAccessAndVirtualNetworkConfiguration

Community Note

When using the claranet/db-postgresql-flexible/azurerm module to deploy an Azure PostgreSQL Flexible Server with a virtual network configuration, a conflict arises due to the lack of an option to disable public network access.
The module requires the allowed_cidrs attribute to be specified, even when public access is not desired. Setting allowed_cidrs to an empty map {} does not resolve the issue, as the module still attempts to configure both public network access and virtual network integration, resulting in the following error:
Copy codeError: creating Flexible Server (Subscription: "28197c15-da6c-4e66-b241-cd23f9550102"
Resource Group Name: "rg-test-tsp1-acc"
Flexible Server Name: "psqlf-test-tsp1-gwc-acc"): performing Create: unexpected status 400 (400 Bad Request) with error: ConflictingPublicNetworkAccessAndVirtualNetworkConfiguration: Conflicting configuration is detected between Public Network Access and Virtual Network arguments. Public Network Access is not supported along with Virtual Network feature.
The documentation does not provide any information on how to disable public network access or resolve this conflict.

Please advise on how to resolve this issue or provide guidance on disabling public network access when using the claranet/db-postgresql-flexible/azurerm module with virtual network integration.

Terraform Version

1.7.2

AzureRM Provider Version

3.80

Affected Resource(s)/Data Source(s)

azurerm_postgresql_flexible_server.postgresql_flexible_server

Terraform Configuration Files

#https://github.com/claranet/terraform-azurerm-db-postgresql-flexible/tree/master/examples/delegated_subnet

module "azure_region" {
  source  = "claranet/regions/azurerm"
  version = "7.1.1"

  azure_region = var.location
}

module "rg" {
  source  = "claranet/rg/azurerm"
  version = "6.1.1"

  location    = module.azure_region.location
  client_name = var.application
  environment = var.environment
  stack       = var.stack
}


resource "random_password" "admin_password" {
  special = "false"
  length  = 32
}



module "vnet" {
  source  = "claranet/vnet/azurerm"
  version = "7.0.0"

  environment    = var.environment
  location       = module.azure_region.location
  location_short = module.azure_region.location_short
  client_name    = var.application
  stack          = var.stack

  resource_group_name = module.rg.resource_group_name

  vnet_cidr = [var.vnet_cidr]
}

module "subnet" {
  source  = "claranet/subnet/azurerm"
  version = "7.0.0"

  environment    = var.environment
  location_short = module.azure_region.location_short
  client_name    = var.application
  stack          = var.stack

  resource_group_name  = module.rg.resource_group_name
  virtual_network_name = module.vnet.virtual_network_name

  subnet_cidr_list = [var.subnet_cidr]

  service_endpoints = ["Microsoft.Storage"] # Beispielwert, passe ihn an deine Anforderungen an

  subnet_delegation = {
    postgresql-flexible = [
      {
        name    = "Microsoft.DBforPostgreSQL/flexibleServers"
        actions = ["Microsoft.Network/virtualNetworks/subnets/join/action"]
      }
    ]
  }
}

resource "azurerm_private_dns_zone" "postgres" {
  name                = format("%s-%s.postgres.database.azure.com", var.environment, var.stack)
  resource_group_name = module.rg.resource_group_name
}

resource "azurerm_private_dns_zone_virtual_network_link" "postgres" {
  name                = format("%s_dns_zone_postgres_%s", var.stack, var.environment)
  resource_group_name = module.rg.resource_group_name

  private_dns_zone_name = azurerm_private_dns_zone.postgres.name
  virtual_network_id    = module.vnet.virtual_network_id
}
module "postgresql_flexible" {
  source  = "claranet/db-postgresql-flexible/azurerm"
  version = "7.3.1"

  client_name    = var.application
  location       = module.azure_region.location
  location_short = module.azure_region.location_short
  environment    = var.environment
  stack          = var.stack

  resource_group_name = module.rg.resource_group_name

  depends_on = [
    azurerm_private_dns_zone_virtual_network_link.postgres, module.vnet
  ]

  tier               = "GeneralPurpose"
  size               = "D2s_v3"
  storage_mb         = 32768
  postgresql_version = 13

  allowed_cidrs = {}

  backup_retention_days        = 14
  geo_redundant_backup_enabled = true

  administrator_login    = "azureadmin"
  administrator_password = random_password.admin_password.result

  databases = {
    mydatabase = {
      collation = "en_US.utf8"
      charset   = "UTF8"
    }
  }

  maintenance_window = {
    day_of_week  = 3
    start_hour   = 3
    start_minute = 0
  }

  logs_destinations_ids = [
  ]

  private_dns_zone_id = azurerm_private_dns_zone.postgres.id
  delegated_subnet_id = module.subnet.subnet_id

  extra_tags = {
    foo = "bar"
  }
}

Debug Output/Panic Output

โ•ท
โ”‚ Error: creating Flexible Server (Subscription: "28197c14-da6c-4e66-b241-cd23f9550102"
โ”‚ Resource Group Name: "rg-test-tsp1-acc"
โ”‚ Flexible Server Name: "psqlf-test-tsp1-gwc-acc"): performing Create: unexpected status 400 (400 Bad Request) with error: ConflictingPublicNetworkAccessAndVirtualNetworkConfiguration: Conflicting configuration is detected between Public Network Access and Virtual Network arguments. Public Network Access is not supported along with Virtual Network feature.
โ”‚ 
โ”‚   with module.postgresql_flexible.azurerm_postgresql_flexible_server.postgresql_flexible_server,
โ”‚   on .terraform/modules/postgresql_flexible/r-postgresql-flexible.tf line 1, in resource "azurerm_postgresql_flexible_server" "postgresql_flexible_server":
โ”‚    1: resource "azurerm_postgresql_flexible_server" "postgresql_flexible_server" {
โ”‚ 
โ•ต

Expected Behaviour

The module should allow for the creation of an Azure PostgreSQL Flexible Server with virtual network integration and public network access disabled.

Actual Behaviour

The module encounters a conflict between the public network access and virtual network configuration, preventing the successful creation of the Azure PostgreSQL Flexible Server.

Steps to Reproduce

I mainly just used yor example deployment. https://github.com/claranet/terraform-azurerm-db-postgresql-flexible/tree/master/examples/delegated_subnet

  1. Configure the claranet/db-postgresql-flexible/azurerm module with a delegated subnet ID (delegated_subnet_id) and an empty allowed_cidrs map.

terraform plan is no problem.
2. terraform apply --> the error will come up.

Important Factoids

No response

References

No response

Timeline for provider

We tried yesterday your terraform module for a standard postgres database. The approach seems to be promising
for us, however, we would be more interested in the implementation of the flexible postgres database.

Do you have any timeline for this project?

[BUG] Default collation in postgresql flexible fails

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

Terraform Version

1.4.4

AzureRM Provider Version

3.73.0

Affected Resource(s)/Data Source(s)

azurerm_postgresql_flexible_server_database

Terraform Configuration Files

module "db-postgresql-flexible" {
  source  = "claranet/db-postgresql-flexible/azurerm"
  version = "7.0.0"

  administrator_login    = "admin"                                                                                             
  administrator_password = "password"
  allowed_cidrs = {
    "all"   = "0.0.0.0/32"
  }

  custom_server_name    = "postgresql-flexible-server"
  client_name           = ""
  environment           = ""
  location              = "West Europe"
  location_short        = ""
  logs_destinations_ids = []
  resource_group_name   = "resource_group"
  stack                 = ""
  postgresql_version    = 13

  storage_mb   = 131072
  standby_zone = null

  postgresql_configurations = {}
  databases = {
    main = {
      collation = "en_US.UTF8"
      charset   = "UTF8"
    }
  }
}

Debug Output/Panic Output

โ”‚ Error: collation contains unknown collation en_US.UTF8
โ”‚ 
โ”‚   with module.db-postgresql-flexible[0].azurerm_postgresql_flexible_server_database.postgresql_flexible_db["main"],
โ”‚   on .terraform/modules/db-postgresql-flexible/r-postgresql-flexible.tf line 59, in resource "azurerm_postgresql_flexible_server_database" "postgresql_flexible_db":
โ”‚   59:   collation = each.value.collation

Expected Behaviour

The resource should be successfully be created

Actual Behaviour

This should work until azurerm 3.69.0 version. They introduced some validation on the collation field that the default "en_US.UTF8" doesn't comply any more. The value "en_US.utf8" passes the validation and works but forces the complete replacement of the resource which isn't favorable for many production scenarios. It would be nice to have the collation on ignore_changes lifecycle maybe.

More information can be found in this issue in the AzureRM provider repository:
hashicorp/terraform-provider-azurerm#22936

Steps to Reproduce

  1. terraform apply

Important Factoids

No response

References

No response

[FEAT] Friendly flag to allow public access from any Azure service within Azure to PostgreSQL server

Community Note

  • Please vote on this issue by adding a ๐Ÿ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

Description

Azure Portal offers the following option for the firewall rules:

image

According to https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-firewall-rules#programmatically-manage-firewall-rules it can be achieved programmatically too:

From the Azure CLI, a firewall rule setting with a starting and ending address equal to 0.0.0.0 does the equivalent of the Allow public access from any Azure service within Azure to this server option in the portal.

because it is supported by the Resource Manager HTTP API:

Use value '0.0.0.0' for all Azure-internal IP addresses

In fact, it is also feasible to achieve with this module, for example

module "postgresql_flexible" {
  source  = "claranet/db-postgresql-flexible/azurerm"
  version = "x.x.x"

  allowed_cidrs = {
    "AzureServices" = "0.0.0.0/32"  # Allow public access from any Azure service within Azure to this server
  }
  ...

but that is thanks to the peculiar behaviour of the cidrhost function:

image

called in

start_ip_address = cidrhost(each.value, 0)
end_ip_address = cidrhost(each.value, -1)

Proposal

Wouldn't the module's interface be clearer if there was a dedicated boolean variable that controls the feature and the module hides the obscure 0.0.0.0-0.0.0.0 trick for the Azure services?

New or Affected Resource(s)/Data Source(s)

azurerm_postgresql_flexible_server_firewall_rule

Potential Terraform Configuration

variable "allow_public_access_from_azure_services" {
  description = "Allow public access from any Azure service within Azure to this server"
  default = false
  type = bool
}

References

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.