Pluggable modules

Create the Pluggable Module Resource in Terraform to run Pluggable Module Policies

To learn more about this OneFuse module, refer to Pluggable modules.

Prerequisites

  1. Configure the OneFuse Provider
  2. Review an overview on OneFuse Modules with Terraform

Steps

  1. Create variables.tf file
  2. Create main.tf file
  3. Run terraform commands to deploy a OneFuse Pluggable Module Deployment and run provisioning scenario(s):
    1. terraform init
    2. terraform plan
    3. terraform apply
  4. Run terraform command to destroy OneFuse Pluggable Module Deployment and run deprovision scenario(s), if any:
    • terraform destroy

Create variables.tf

Add the following in the variables.tf file. Update the values as needed.

// SAMPLE VARIABLES.TF FILE CONFIGURATIONS

variable "onefuse_scheme" {
  type    = string
  default = "https"
}

variable "onefuse_address" {
  type = string
}

variable "onefuse_port" {
  type    = string
  default = "443"
}

variable "onefuse_user" {
  type    = string
  default = "admin"
}

variable "onefuse_password" {
  type    = string
  default = "admin"
}

variable "onefuse_verify_ssl" {
  type    = bool
  default = false
}

variable "workspace_url" {
  type    = string
  default = ""              // Default
}

variable "template_properties" {
  type = map
  default = {
    "Environment" = "d"     //p for production or d for development
    "Location"    = "w"     //e for East or w for West
    "Application" = "wp"    //wp for wordpress or iis for IIS
    "OS"          = "l"     //l for Linux or w for Windows
  }
}

Create main.tf for Pluggable Module Resource

Add the following in the main.tf file. Update the values as needed.

Parameter references

The following defines the function of each Pluggable Module specific parameter.

Parameter Name Required? Notes
policy_id Required OneFuse Module Policy ID (integer).
workspace_url Optional OneFuse Workspace URL path. Use "" for the default workspace.
template_properties Optional Additional properties that are referenced within the Policy.

Pluggable Module specific parameters:

Parameter Name Required? Notes
timeouts Optional Timeout (in minutes) for create and/or delete operations. See the example below the table.
timeouts {
  create = "20m"
  delete = "20m"
}

Sample main.tf

// Terraform OneFuse Provider
terraform {
  required_providers {
    onefuse = {
      source  = "CloudBoltSoftware/onefuse"
      version = ">= 1.50.2"
   }
  }
  required_version = ">= 0.13"
}

// Inititalize OneFuse Provider
provider "onefuse" {
  scheme     = var.onefuse_scheme
  address    = var.onefuse_address
  port       = var.onefuse_port
  user       = var.onefuse_user
  password   = var.onefuse_password
  verify_ssl = var.onefuse_verify_ssl
}

// Data Source for Pluggable Module Policy - lookup Policy ID by Policy Name
data "onefuse_module_policy" "module_policy" {
  name = "my_policy_name"  // Replace with Policy Name
}

// Resource for Pluggable Module
resource "onefuse_module_deployment" "my_module_deployment" {
  policy_id           = data.onefuse_module_policy.module_policy.id // Refers to Data Source to get Policy ID
  workspace_url       = ""
  template_properties = var.template_properties
  timeouts {
    create    = "20m"
    delete    = "20m"
  }
}

// Outputs for Resource
output "module_output" {
  value = jsondecode(onefuse_module_deployment.my_module_deployment.provisioning_job_results)
}

output "module_deprov_output" {
  value = jsondecode(onefuse_module_deployment.my_module_deployment.deprovisioning_job_results)
}

OneFuse Module: Pluggable Modules Import

Create main.tf for Pluggable Modules Import

Add the following in the main.tf file.

The following parameter is required to import Pluggable Modules object.

Parameter references:

Parameter Name Required? Notes
policy_id Required OneFuse Module Policy ID (integer).

Sample main.tf

// Terraform OneFuse Provider
terraform {
  required_providers {
    onefuse = {
      source  = "CloudBoltSoftware/onefuse"
      version = ">= 1.50.2"
   }
  }
  required_version = ">= 0.13"
}


// Inititalize OneFuse Provider
// Create the separate variables.tf file or hard code the values.
provider "onefuse" {
  scheme     = var.onefuse_scheme
  address    = var.onefuse_address
  port       = var.onefuse_port
  user       = var.onefuse_user
  password   = var.onefuse_password
  verify_ssl = var.onefuse_verify_ssl
}

resource "onefuse_module_deployment" "my_module_deployment" {
  policy_id    = 1
}

Run the following command to import the OneFuse Pluggable Modules Resource.

terraform import <resource_type>.<resource_name> <resource_id>
terraform import onefuse_module_deployment.my_module_deployment 2