Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Vidyasagar SC Machupalli
Vidyasagar SC Machupalli

Posted on • Originally published atMedium on

     

Create Multiple Instances in a VPC Using Terraform

Learn how to provision multiple virtual server instances (VSIs) in a Virtual Private Cloud (VPC) using Terraform scripts with IBM Cloud Schematics.

Rather than directly diving into the Terraform scripts, let’s quickly learn about what is Terraform and how IBM Cloud Schematics simplifies the Terraform scripting experience on IBM Cloud.

What is Terraform?

Terraform is an open source software, developed by HashiCorp, that enables predictable and consistent provisioning of IBM Cloud platform, classic infrastructure, and VPC infrastructure resources by using a high-level scripting language. You can use Terraform to automate your IBM Cloud resource provisioning, rapidly build complex, multi-tier cloud environments, and enableInfrastructure as Code (IaC).

What is IBM Cloud Schematics?

WithIBM Cloud Schematics, you can organize your IBM Cloud resources across environments by using workspaces. Every workspace points to a set of Terraform configuration files that build a Terraform template. You can choose to create your own Terraform template or use one of the pre-defined templates that are provided by IBM. Workspaces allow for the separation of concerns for cloud resources and can be individually managed with IBM Cloud Identity and Access Management. To use IBM Cloud Schematics, you don’t need to install the Terraform CLI or the IBM Cloud Provider plug-in for Terraform.

Let’s get started

Creating one VSI in aVPC is pretty easy using theTerraform IBM provider. If you check thedocumentation, the sample Terraform script goes like this:

resource "ibm_is_instance" "testacc_instance" {name = "testinstance"image = "7eb4e35b-4257-56f8-d7da-326d85452591"profile = "bx2-2x8"primary_network_interface {subnet = ibm_is_subnet.testacc_subnet.id}network_interfaces {name = "eth1"subnet = ibm_is_subnet.testacc_subnet.id}vpc = ibm_is_vpc.testacc_vpc.idzone = "us-south-1"keys = [ibm_is_ssh_key.testacc_sshkey.id]//User can configure timeouts_timeouts {create = "90m"delete = "30m"}}
Enter fullscreen modeExit fullscreen mode

But what is the simplest way to provision multiple VSIs in a VPC?

This question came up while working onvpc-instance-extension code sample toauto-assign a floating IP as and when a new VSI is created.

One of ourcompanion scripts for VPCsolution tutorials had this answer, and all we need to do is extend the Terraform script to provision multiple VSIs. Code snippet from vpc-one-vsi script:

resource "ibm_is_instance" "instance" {name = "${var.basename}-instance"vpc = ibm_is_vpc.vpc.idzone = var.subnet_zoneprofile = module.map_gen1_to_gen2.profileimage = data.ibm_is_image.ds_image.idkeys = [data.ibm_is_ssh_key.ds_key.id]resource_group = data.ibm_resource_group.group.idprimary_network_interface {subnet = ibm_is_subnet.subnet.id}}
Enter fullscreen modeExit fullscreen mode

Create multiple instances using count

There is a parameter in Terraform called count that can be applied on resources to simplify configurations and let you scale resources by simply incrementing a number.

So, we can add a count to the above Terraform script:

resource "ibm_is_instance" "instance" {count = var.instance_countname = "${var.basename}-instance-${count.index}"vpc = ibm_is_vpc.vpc.idzone = var.subnet_zoneprofile = module.map_gen1_to_gen2.profileimage = data.ibm_is_image.ds_image.idkeys = [data.ibm_is_ssh_key.ds_key.id]resource_group = data.ibm_resource_group.group.idprimary_network_interface {  subnet = ibm_is_subnet.subnet.id}}
Enter fullscreen modeExit fullscreen mode

var.instance_count is a Terraform variable, and you can find the complete script under thevsi branch of VPC-tutorials repository.

What’s the role of Schematics?

You can run this Terraform script just by simply pointing to the Git repository with the scripts.

_Note:_You will need an IBM Cloud account with permissions to provision VPC resources. Check thegetting started with VPC documentation.

  • You should see the Terraform variables section. Fill the variables as per your requirement and don’t forget to set the instance_count to 2 or more:

  • ClickSave changes and scroll to the top of the page toGenerate (terraform plan) andApply (terraform apply) the changes.
  • ClickApply plan and clickView log to check the progress. (Generate plan is optional.):

Using CLI

You can also provision VPC resources using the IBM Cloud CLI with Schematics plugin. All you need to do is to create a JSON config file and pass it to a command. Follow the instructions provided in theREADME.mdof vpc-instance-extension repository.

Remove resources

Cleaning up VPC resources is pretty easy. All you need to do is follow these three steps:

  1. Click onActions on your Schematics workspace and clickDelete.
  2. Check the all the Delete options, and enter the workspace name.
  3. ClickDelete , and you are done.

Learn more

Check theIBM Cloud Solution tutorials for more VPC-related content and code samples.

Originally published athttps://www.ibm.comon August 6, 2020.


Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

A little bit of everything in this journey called LIFE
  • Location
    Austin, TX
  • Work
    Polyglot programmer
  • Joined

More fromVidyasagar SC Machupalli

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp