This module creates an Auto Scale for VPC instance group which dynamically creates virtual server instances to meet the demands of your environment. The virtual server instances (VSI) perscribed via an instance template can be connected to a load balancers.
- A Resource group
- A VPC
- A VPC SSH key
- A VPC subnet
module "vsi_autoscale" {
source = "terraform-ibm-modules/landing-zone-vsi-autoscale/ibm"
resource_group_id = module.resource_group.resource_group_id
zone = var.zone
image_id = var.image_id
create_security_group = var.create_security_group
security_group = var.security_group
tags = var.resource_tags
access_tags = var.access_tags
subnets = module.slz_vpc.subnet_zone_list
vpc_id = module.slz_vpc.vpc_id
prefix = var.prefix
placement_group_id = ibm_is_placement_group.placement_group.id
machine_type = var.machine_type
user_data = var.user_data
skip_iam_authorization_policy = var.skip_iam_authorization_policy
existing_kms_instance_guid = var.existing_kms_instance_guid
kms_encryption_enabled = var.kms_encryption_enabled
boot_volume_encryption_key = var.boot_volume_encryption_key
ssh_key_ids = [local.ssh_key_id]
block_storage_volumes = var.block_storage_volumes
instance_count = var.instance_count
load_balancers = var.load_balancers
application_port = var.application_port
group_managers = var.group_managers
}
You need the following permissions to run this module.
- Account Management
- Resource Group service
Viewer
platform access
- Resource Group service
- IAM Services
- VPC Infrastructure Services service
Editor
platform access
- VPC Infrastructure Services service
Name | Version |
---|---|
terraform | >= 1.3.0 |
ibm | >= 1.63.0, < 2.0.0 |
time | >= 0.9.1, < 1.0.0 |
Name | Source | Version |
---|---|---|
security_groups | terraform-ibm-modules/security-group/ibm | 2.6.2 |
Name | Type |
---|---|
ibm_iam_authorization_policy.block_storage_policy | resource |
ibm_is_instance_group.instance_group | resource |
ibm_is_instance_group_manager.instance_group_manager | resource |
ibm_is_instance_group_manager_action.instance_group_manager_actions | resource |
ibm_is_instance_group_manager_policy.instance_group_manager_policies | resource |
ibm_is_instance_template.instance_template | resource |
ibm_is_lb.lb | resource |
ibm_is_lb_listener.listener | resource |
ibm_is_lb_listener_policy.listener_policies | resource |
ibm_is_lb_listener_policy_rule.listener_policy_rule | resource |
ibm_is_lb_pool.pool | resource |
time_sleep.wait_180_seconds | resource |
time_sleep.wait_for_authorization_policy | resource |
ibm_is_vpc.vpc | data source |
Name | Description | Type | Default | Required |
---|---|---|---|---|
access_tags | A list of access tags to apply to the VSI resources created by the module. For more information, see https://cloud.ibm.com/docs/account?topic=account-access-tags-tutorial. | list(string) |
[] |
no |
allow_ip_spoofing | Allow IP spoofing on the primary network interface | bool |
false |
no |
application_port | The instance group uses when scaling up instances to supply the port for the Load Balancer pool member. | number |
null |
no |
auto_delete_volumes | Auto delete volumes when the instance is deleted | bool |
true |
no |
availability_policy_host_failure | The availability policy to use for this virtual server instance. The action to perform if the compute host experiences a failure | string |
"restart" |
no |
block_storage_volumes | List describing the block storage volumes that will be attached to each vsi | list( |
[] |
no |
boot_volume_encryption_key | CRN of boot volume encryption key | string |
null |
no |
create_security_group | Create security group for VSI. If this is passed as false, the default will be used | bool |
n/a | yes |
dedicated_host | The placement restrictions to use for the virtual server instance. Unique Identifier of the dedicated host where the instance is placed. | string |
null |
no |
dedicated_host_group | The placement restrictions to use for the virtual server instance. Unique Identifier of the dedicated host group where the instance is placed. | string |
null |
no |
existing_kms_instance_guid | The GUID of the Hyper Protect Crypto Services instance in which the key specified in var.boot_volume_encryption_key is coming from. | string |
null |
no |
group_managers | Instance group manager to add to the instance group | list( |
[] |
no |
image_id | Image ID used for VSI. Run 'ibmcloud is images' to find available images in a region | string |
n/a | yes |
instance_count | The number of instances to create in the instance group. | number |
null |
no |
instance_group_name | The name to assign the instance group. If no name is provided then the default will be {prefix}-ins-group . |
string |
null |
no |
instance_tmplt_name | The name to assign the instance template. If no name is provided then the default will be {prefix}-ins-tmplt . |
string |
null |
no |
kms_encryption_enabled | Set this to true to control the encryption keys used to encrypt the data that for the block storage volumes for VPC. If set to false, the data is encrypted by using randomly generated keys. For more info on encrypting block storage volumes, see https://cloud.ibm.com/docs/vpc?topic=vpc-creating-instances-byok | bool |
false |
no |
load_balancers | Load balancers to add to VSI | list( |
[] |
no |
machine_type | VSI machine type. Run 'ibmcloud is instance-profiles' to get a list of regional profiles | string |
n/a | yes |
placement_group_id | Unique Identifier of the Placement Group for restricting the placement of the instance, default behaviour is placement on any host | string |
null |
no |
prefix | The value that you would like to prefix to the name of the resources provisioned by this module. Explicitly set to null if you do not wish to use a prefix. This value is ignored if using one of the optional variables for explicit control over naming. | string |
null |
no |
resource_group_id | ID of resource group to create VSI and block storage volumes. If you wish to create the block storage volumes in a different resource group, you can optionally set that directly in the 'block_storage_volumes' variable. | string |
n/a | yes |
security_group | Security group created for VSI | object({ |
null |
no |
security_group_ids | IDs of additional security groups to be added to VSI deployment primary interface. A VSI interface can have a maximum of 5 security groups. | list(string) |
[] |
no |
skip_iam_authorization_policy | Set to true to skip the creation of an IAM authorization policy that permits all Storage Blocks to read the encryption key from the KMS instance. If set to false, pass in a value for the KMS instance in the existing_kms_instance_guid variable. In addition, no policy is created if var.kms_encryption_enabled is set to false. | bool |
false |
no |
ssh_key_ids | ssh key ids to use in creating vsi | list(string) |
n/a | yes |
subnets | A list of subnet IDs where VSI will be deployed | list( |
n/a | yes |
tags | List of tags to apply to resources created by this module. | list(string) |
[] |
no |
user_data | User data to initialize VSI deployment | string |
null |
no |
vpc_id | ID of VPC | string |
n/a | yes |
zone | The zone to create the resource in | string |
n/a | yes |
Name | Description |
---|---|
ibm_is_instance_group | Instance group information |
intstance_template | Instance template information |
lbs_list | Load balancer information |
security_groups | Security group information |
You can report issues and request features for this module in GitHub issues in the module repo. See Report an issue or request a feature.
To set up your local development environment, see Local development setup in the project documentation.