Describe infrastructure
This topic provides a sample infrastructure configuration that automates the deployment of a classic CelerData cluster on Azure to help you understand how you can work with the CelerData Cloud BYOC provider. It assumes that you have completed the preparations, configured the providers, and configured the Azure objects.
To create a classic CelerData cluster, you need to declare the following resources, which represent the infrastructure to be built, in the .tf file (for example, main.tf) in which you have configured the providers and Azure objects.
celerdatabyoc_azure_data_credential
resource "celerdatabyoc_azure_data_credential" "example" {
name = "<data_credential_name>"
managed_identity_resource_id = azurerm_user_assigned_identity.example.id
storage_account_name = azurerm_storage_account.example.name
container_name = azurerm_storage_container.example.name
}
This resource contains the following required arguments:
-
name
: (Forces new resource) The name of the data credential. Enter a unique name. -
managed_identity_resource_id
: (Forces new resource) The ID of the managed identity. Set this argument toazurerm_user_assigned_identity.example.id
. -
storage_account_name
: (Forces new resource) The name of the storage account. Set this argument toazurerm_storage_account.example.name
. -
container_name
: (Forces new resource) The name of the container. Set this argument toazurerm_storage_container.example.name
.
celerdatabyoc_azure_deployment_credential
resource "celerdatabyoc_azure_deployment_credential" "example" {
name = "<deployment_credential_name>"
application_id = azuread_application_registration.example.client_id
directory_id = azuread_service_principal.app_service_principal.application_tenant_id
client_secret_value = azuread_application_password.example.value
ssh_key_resource_id = azurerm_ssh_public_key.example.id
}
This resource contains the following required arguments:
-
name
: (Forces new resource) The name of the deployment credential. Enter a unique name. -
application_id
: (Forces new resource) The application (client) ID of the registered application. Set this argument toazuread_application_registration.example.client_id
. -
directory_id
: (Forces new resource) The directory (tenant) ID of the registered application. Set this argument toazuread_service_principal.app_service_principal.application_tenant_id
. -
client_secret_value
: (Forces new resource) The value of the client secret of the registered application. Set this argument toazuread_application_password.example.value
. -
ssh_key_resource_id
: (Forces new resource) The ID of the SSH public key. Set this argument toazurerm_ssh_public_key.example.id
.
celerdatabyoc_azure_network
resource "celerdatabyoc_azure_network" "example" {
name = "<network_credential_name>"
deployment_credential_id = celerdatabyoc_azure_deployment_credential.example.id
virtual_network_resource_id = azurerm_virtual_network.example.id
subnet_name = azurerm_subnet.example.name
region = local.cluster_region
public_accessible = true
}
This resource contains the following required arguments and optional arguments:
Required:
-
name
: (Forces new resource) The name of the network configuration. Enter a unique name. -
deployment_credential_id
: (Forces new resource) The ID of the deployment credential. Set this argument tocelerdatabyoc_azure_deployment_credential.example.id
. -
virtual_network_resource_id
: (Forces new resource) The resource ID of the Azure virtual network. Set this argument toazurerm_virtual_network.example.id
. -
subnet_name
: (Forces new resource) The name of the subnet. Set this argument toazurerm_subnet.example.name
. -
region
: (Forces new resource) The ID of the Azure region. Set this argument tolocal.cluster_region
, as we recommend that you set the region element as a local value in your Terraform configuration. See Local Values.
Optional:
public_accessible
: Whether the cluster can be accessed from public networks. Valid values:true
andfalse
. If you set this argument totrue
, CelerData will attach a load balancer to the cluster to distribute incoming queries, and will assign a public domain name to the cluster so you can access the cluster over a public network. If you set this argument tofalse
, the cluster is accessible only through a private domain name.
celerdatabyoc_classic_cluster
resource "celerdatabyoc_classic_cluster" "azure_terraform_test" {
cluster_name = "<cluster_name>"
fe_instance_type = "<fe_node_instance_type>"
fe_node_count = 1
deployment_credential_id = celerdatabyoc_azure_deployment_credential.example.id
data_credential_id = celerdatabyoc_azure_data_credential.example.id
network_id = celerdatabyoc_azure_network.example.id
be_instance_type = "<be_node_instance_type>"
be_node_count = 2
be_disk_number = 2
be_disk_per_size = 100
default_admin_password = "<SQL_user_initial_password>"
expected_cluster_state = "Running"
resource_tags = {
flag = "terraform-test"
}
csp = "azure"
region = local.cluster_region
depends_on = [azurerm_role_assignment.assignment_app_roles,azurerm_role_assignment.assignment_identity_roles]
}
The celerdatabyoc_classic_cluster
resource contains the following required arguments and optional arguments:
Required:
-
cluster_name
: (Forces new resource) The desired name for the cluster. -
fe_instance_type
: The instance type for FE nodes in the cluster. Select an FE instance type from the table "Supported instance types". -
deployment_credential_id
: (Forces new resource) The ID of the deployment credential. Set the value tocelerdatabyoc_azure_deployment_credential.example.id
. -
data_credential_id
: (Forces new resource) The ID of the data credential. Set the value tocelerdatabyoc_azure_data_credential.example.id
. -
network_id
: (Forces new resource) The ID of the network configuration. Set the value tocelerdatabyoc_azure_network.example.id
. -
be_instance_type
: The instance type for BE nodes in the cluster. Select a BE instance type from the table "Supported instance types". -
default_admin_password
: The initial password of the clusteradmin
user. -
expected_cluster_state
: When creating a cluster, you need to declare the status of the cluster you are creating. Cluster states are categorized asSuspended
andRunning
. If you want the cluster to start after provisioning, set this argument toRunning
. If you do not do so, the cluster will be suspended after provisioning. -
csp
: The cloud service provider of the cluster. Set this argument toazure
. -
region
: The ID of the Azure region to which the AWS VPC hosting the cluster belongs. See Supported cloud platforms and regions. Set this argument tolocal.cluster_region
, as we recommend that you set the bucket element as a local valuecluster_region
in your Terraform configuration. See Local Values. -
depends_on
: This argument creates a dependency between resources. If you want to deploy an Azure cluster, you must ensure that the resources used to declare the privileges of the resource group and managed identity are destroyed only after the cluster is released. To achieve this, you need to add this dependency.
Optional:
-
fe_node_count
: The number of FE nodes in the cluster. Valid values:1
,3
, and5
. Default value:1
. -
be_node_count
: The number of BE nodes in the cluster. Valid values: any non-zero positive integer. Default value:3
. -
be_disk_number
: (Forces new resource) The maximum number of disks that are allowed for each BE. Valid values: [1,24]. Default value:2
. -
be_disk_per_size
: The size per disk for each BE. Unit: GB. Maximum value:16000
. Default value:100
. You can only increase the value of this parameter, and the time interval between two value changes must be greater than 6 hours. -
resource_tags
: The tags to be attached to the cluster.