Managing clusters using the CLI
These examples show Azure as the cloud provider unless indicated otherwise.
Although the functionality is the same when using AWS or Google Cloud, there may be additional input flags based on the cloud provider type. Use the -h
or --help
flags for more information on the CLI commands.
Managing single-node and primary/standby high-availability clusters
Use the cluster
commands to create, retrieve information on, and manage single-node and primary/standby high-availability clusters.
Create a cluster in interactive mode
The default mode for the cluster create
and pgd create
commands is an interactive mode that guides you through the required cluster configuration by providing you with the valid values.
Tip
You can turn off prompting using the biganimal config set interactive_mode off
command. With prompting disabled, if any required flags are missing, the CLI exits with an error.
For example, to create a primary/standby high-availability cluster:
biganimal cluster create
Cluster architecture: Primary/Standby High Availability Number of standby replicas: 2 Replicas Enable read-only workloads: No Provider: Azure Cloud Provider Subscription ID: "111,222" Service Account IDs, (leave empty to stop adding): "id1@iam.gcp" Cluster Name: my-biganimal-cluster Password: **************** PostgreSQL type: EDB Postgres Advanced Server PostgreSQL version: 14 Region: East US Instance type: E2s v3(2vCPU, 16GB RAM) Volume type: Azure Premium Storage Volume properties: P1 (4 Gi, 120 Provisioned IOPS, 25 Provisioned MB/s) Networking: Public By default your cluster allows all inbound communications, add IP allowed list to restrict the access: Yes Add CIDR blocks "192.168.1.1/16=Sample Description" leave empty to stop adding: Add database config in the format "application_name=sample_app&array_nulls=true", Leave empty for default configuration: Backup Retention Period, note backups will incur storage charges from the cloud provider directly. e.g. "7d", "2w" or "3m": 30d
You're prompted to confirm that you want to create the cluster. After the cluster creation process is complete, it generates a cluster ID.
biganimal cluster create
........ Are you sure you want to Create Cluster ? [y|N]: y Create Cluster operation is started Cluster ID is "p-gxhkfww1fe" To check current state, run: biganimal cluster show --id p-gxhkfww1fe
Check your cluster was created successfully using the cluster show
command shown in the return message:
biganimal cluster show --id p-gxhkfww1fe
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Clusters │ ├──────────────┬──────────────────────┬──────────┬──────────────┬──────────────────────────┬─────────────┬───────────────┬───────────────────────────────┬────────────────────┬────────────┤ │ ID │ Name │ Provider │ Architecture │ Status │ Region │ Instance Type │ Postgres Details │ Maintenance Window │ FAReplicas │ ├──────────────┼──────────────────────┼──────────┼──────────────┼──────────────────────────┼─────────────┼───────────────┼───────────────────────────────┼────────────────────┼────────────┤ │ p-gxhkfww1fe │ my-biganimal-cluster │ Azure │ ha │ Cluster in healthy state │ East US │ E2s v3 │ EDB Postgres Advanced Server │ Disabled │ N/A │ │ │ │ │ │ │ │ │ │ │ │ └──────────────┴──────────────────────┴──────────┴──────────────┴──────────────────────────┴─────────────┴───────────────┴───────────────────────────────┴────────────────────┴────────────┘
Create a cluster using a configuration file
You can use the create --config-file
command to create one or more clusters with the same configuration in a noninteractive mode.
Here's a sample configuration file in YAML format with Azure specified as the provider:
# config_file.yaml --- clusterArchitecture: ha # <string: cluster architecture, valid values ["single" | "ha" ]> haStandbyReplicas: 2 # <number: Number of standby replicas. Field must be specified if user has selected Primary/Standby High Availability cluster type. Default value is 2, valid values [1, 2].> provider: azure # <string: cloud provider id, valid values ["azure", "aws", "gcp"]> cspSubscriptionIDs: # <list: cloud provider subscription/account ID, required when cluster is EDB Hosted> - 123123123 # <string> - 456456456 # <string> serviceAccountIds: # <list: A Google Cloud Service Account is used for logs. If you leave this blank, then you will be unable to access log details for this cluster. Required when cluster is EDB Hosted> - service-account-1234567b@development-data-123456.iam.gserviceaccount.com# <string> - service-account-1234567b@development-data-123456.iam.gserviceaccount.com# <string> clusterName: biganimal_cluster # <string: cluster name> password: ************ # <string: cluster password (must be at least 12 characters)> # refer following link for steps to setup IAM: https://www.enterprisedb.com/docs/biganimal/latest/using_cluster/01_postgres_access/iam-authentication-for-postgres iamAuthentication: true # <bool: Identity and Access Management, enabling IAM authentication will allow database users to authenticate to Postgres using your cloud provider's IAM(currently supported only for AWS). You can set up IAM authentication after your cluster is provisioned.> postgresType: epas # <string: postgresType id, valid values ["postgres" | "epas" | "pgextended"]> postgresVersion: 14 # <string: postgres version> region: eastus # <string: provider region id> instanceType: azure:Standard_E2s_v3 # <string: instance type id> volumeType: azurepremiumstorage # <string: volume type id> volumeProperties: P1 # <string: Applicable to Azure Premium Storage only, volume properties id> volumePropertySize: 4Gi # <string: Not Applicable to Azure Premium Storage, volume size in Gibibytes or Tebibytes, you may append unit suffix Ti,Gi(the default unit).> volumePropertyIOPS: 1000 # <number>: Not Applicable to Azure Premium Storage and GCP:[pd-ssd], volume Input/Output Operations Per Second> networking: public # <string: input "private" or "public" network> allowIpRangeMap: # <list: IP Range to allow network traffic to your cluster from the public Internet> - cidr: 9.9.9.9/28 # <string: CIDR of allowed source IP range> description: Allow traffic from App A # <string: The description of this allowed ip range> - cidr: 10.10.10.10/27 # <string: CIDR of allowed source IP range> description: Allow traffic from App B # <string: The description of this allowed ip range> readOnlyWorkloads: true # <bool: Set True to enable read-only connection and route all read-only queries to standby replicas and reduce the workload on primary> pgConfigMap: # <Object: Postgres configuration> application_name: test_app # <string: set the database "application_name" property to "test_app"> array_nulls: true # <bool: set the database "array_nulls" property to True> backupRetentionPeriod: 30d # <string: Retention period must be between 1-180 days or 1-25 weeks or 1-6 months. Using strings like "7d" or "2w" or "3m" to specify days, weeks and months respectively.> superuserAccess: true # <bool: Superuser Access, Grants superuser access to the edb_admin role, this will bypass all the permission checks and should be used very carefully.> pgvector: true # <bool: Set True to enable pgvector extension. Adds support for vector storage and vector similarity search to Postgres.> postgis: true # <bool: Set True to enable postgis extension. PostGIS extends the capabilities of the PostgreSQL relational database by adding support storing, indexing and querying geographic data.>
Note
For backward compatibility, allowIpRangeMap
and pgConfigMap
properties also support embedded JSON format.
allowIpRangeMap: [["9.9.9.9/28", "Allow traffic from App A"],["10.10.10.10/27", "Allow traffic from App B"]] pgConfigMap: [["application_name","test_app"],["array_nulls","true"]]
To create the cluster using the sample configuration file config_file.yaml
:
biganimal cluster create --config-file "./config_file.yaml"
To enable you to view valid values to use in the configuration file for Cloud Service and cloud service provider-related properties, the CLI provides a series of cluster subcommands. For example, you can use cluster show-architectures
to list all Cloud Service database architectures available in your cloud service provider account:
biganimal cluster show-architectures
┌───────────────────────────────────────────────────── ──────────┐ │ Architecture │ ├────────┬───────────────────────────────────────────┬──────────┤ │ ID │ Name │ Status │ ├────────┼───────────────────────────────────────────┼──────────┤ │ ha │ Primary/Standby High Availability │ enabled │ │ pgd │ Extreme High Availability │ disabled │ │ single │ Single Node │ enabled │ └────────┴───────────────────────────────────────────┴──────────┘
Tip
You can turn off the confirmation step with the biganimal disable-confirm
command.
Get cluster connection information
To use your Cloud Service cluster, you first need to get your cluster's connection information. To get your cluster's connection information, use the cluster show-connection
command:
biganimal cluster show-connection \ --name "my-biganimal-cluster" \ --provider "azure" \ --region "eastus"
┌───────────────-----------──┬──────────────────────────────────────────────────────────────────────────────────────────┐ │ Name │ Details │ ├────────────────-----------─┼──────────────────────────────────────────────────────────────────────────────────────────┤ │ read-write-connection │ postgresql://edb_admin@p-gxhkfww1fe.30glixgayvwhtmn3.enterprisedb.network:5432/edb_admin │ │ rw-service-name │ postgresql://edb_admin@p-gxhkfww1fe.30glixgayvwhtmn3.enterprisedb.network:5432/edb_admin │ │ read-only-connection │ Disabled │ │ ro-service-name │ Disabled │ └─────────────────-----------┴──────────────────────────────────────────────────────────────────────────────────────────┘
Tip
You can query the complete connection information with other output formats, like JSON or YAML. For example:
biganimal cluster show-connection \ --name "my-biganimal-cluster" \ --provider "azure" \ --region "eastus" \ --output "json"
Update cluster
After the cluster is created, you can update attributes of the cluster, including both the cluster’s profile and its deployment architecture. You can update the following attributes:
- Cluster name
- Password of administrator account
- Cluster architecture
- Number of standby replicas
- Instance type of cluster
- Instance volume properties
- Networking
- Allowed IP list
- Postgres database configuration
- Volume properties, size, IOPS
- Retention period
- Read-only workloads
- IAM authentication
- Cloud service provider subscription IDs
- Service account IDs
For example, to set the public allowed IP range list, use the --cidr-blocks
flag:
./biganimal cluster update --name "my-biganimal-cluster" --provider "azure" \ --region "eastus" \ --cidr-blocks "9.9.9.9/28=Traffic from App A"
To check whether the setting took effect, use the cluster show
command, and view the detailed cluster information output in JSON format. For example: