Octopus - Populate Octoterra Space (Azure Backend)

Octopus.TerraformApply exported 2023-12-20 by mcasperson belongs to ‘Octopus’ category.

This step exposes the fields required to deploy a project or space serialized with octoterra using Terraform.

This step configures a Terraform Azure backend.

It is recommended that this step be run with the octopuslabs/terraform-workertools worker image.

Parameters

When steps based on the template are included in a project’s deployment process, the parameters below can be set.

Terraform Workspace

OctoterraApply.Terraform.Workspace.Name = #{OctoterraApply.Octopus.SpaceID}

The name of the Terraform workspace. This must be unique for every project this module is deployed to. The default value is based on the space ID that the module is applied to: #{OctoterraApply.Octopus.SpaceID}. Leave this as the default value unless you have a specific reason to change it.

Terraform Module Package

OctoterraApply.Terraform.Package.Id =

The package created by octoterra. It must include the space_population directory.

Octopus Server URL

OctoterraApply.Octopus.ServerUrl = #{Octopus.Web.ServerUri}

The Octopus server URL.

Octopus API key

OctoterraApply.Octopus.ApiKey =

The Octopus API key. See the documentation for details on creating an API key.

Octopus Space ID

OctoterraApply.Octopus.SpaceID =

The Space ID to deploy the Terraform module into. The Octopus - Lookup Space ID step can be used to convert a space name to an ID.

Azure Account Variable

OctoterraApply.Azure.Account =

The Azure account variable.

Azure Backend Resource Group

OctoterraApply.Azure.Storage.ResourceGroup =

The name of the resource group holding the Azure storage account. See the Terraform documentation for details on using Azure storage accounts as a backend.

Azure Storage Account Name

OctoterraApply.Azure.Storage.AccountName =

The name of the Azure storage account used to hold the Terraform state. See the Terraform documentation for details on using Azure storage accounts as a backend.

Azure Storage Container

OctoterraApply.Azure.Storage.Container =

The name of the Azure storage account container used to hold the Terraform state. See the Terraform documentation for details on using Azure storage accounts as a backend.

Azure Storage Key

OctoterraApply.Azure.Storage.Key = Project_#{Octopus.Project.Name | Replace "[^A-Za-z0-9]" "_"}

The file used to hold the Terraform state. See the Terraform documentation for details on using Azure as a backend. The combination of the workspace name and this key must be unique.

The default value is the name of the project and a prefix to indicate the type of resource: Project_#{Octopus.Project.Name | Replace "[^A-Za-z0-9]" "_"}.

Terraform Additional Apply Params

OctoterraApply.Terraform.AdditionalApplyParams =

This field can be used to define additional parameters passed to the terraform apply command. This field can be left blank. See the Terraform documentation for details on the apply command.

Terraform Additional Init Params

OctoterraApply.Terraform.AdditionalInitParams =

This field can be used to define additional parameters passed to the terraform init command. This field can be left blank. See the Terraform documentation for details on the init command.

Script body

Steps based on this template will execute the following undefined script.

undefined

Provided under the Apache License version 2.0.

Report an issue

To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.

{
  "Id": "c15be981-3138-47c8-a935-ab388b7840be",
  "Name": "Octopus - Populate Octoterra Space (Azure Backend)",
  "Description": "This step exposes the fields required to deploy a project or space serialized with [octoterra](https://github.com/OctopusSolutionsEngineering/OctopusTerraformExport) using Terraform.\n\nThis step configures a Terraform Azure backend.\n\nIt is recommended that this step be run with the `octopuslabs/terraform-workertools` worker image.",
  "Version": 1,
  "ExportedAt": "2023-12-20T23:12:15.992Z",
  "ActionType": "Octopus.TerraformApply",
  "Author": "mcasperson",
  "Packages": [
    {
      "Id": "093b1515-15a9-4446-8dc2-6297018a77e7",
      "Name": "",
      "PackageId": null,
      "FeedId": null,
      "AcquisitionLocation": null,
      "Properties": {
        "SelectionMode": "deferred",
        "PackageParameterName": "OctoterraApply.Terraform.Package.Id"
      }
    }
  ],
  "Parameters": [
    {
      "Id": "fc203025-f9f8-421d-a4d8-963347555a7b",
      "Name": "OctoterraApply.Terraform.Workspace.Name",
      "Label": "Terraform Workspace",
      "HelpText": "The name of the Terraform workspace. This must be unique for every project this module is deployed to. The default value is based on the space ID that the module is applied to: `#{OctoterraApply.Octopus.SpaceID}`. Leave this as the default value unless you have a specific reason to change it.",
      "DefaultValue": "#{OctoterraApply.Octopus.SpaceID}",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "f3581f20-f65f-4819-9060-aca5d0e5dc85",
      "Name": "OctoterraApply.Terraform.Package.Id",
      "Label": "Terraform Module Package",
      "HelpText": "The package created by [octoterra](https://github.com/OctopusSolutionsEngineering/OctopusTerraformExport). It must include the `space_population` directory.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "Package"
      }
    },
    {
      "Id": "6e9b0c07-703a-4c1f-a5f6-83084fb676d8",
      "Name": "OctoterraApply.Octopus.ServerUrl",
      "Label": "Octopus Server URL",
      "HelpText": "The Octopus server URL.",
      "DefaultValue": "#{Octopus.Web.ServerUri}",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "09c3a07e-1c63-4342-8b7f-1d596cc26c11",
      "Name": "OctoterraApply.Octopus.ApiKey",
      "Label": "Octopus API key",
      "HelpText": "The Octopus API key. See the [documentation](https://octopus.com/docs/octopus-rest-api/how-to-create-an-api-key) for details on creating an API key.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "Sensitive"
      }
    },
    {
      "Id": "a320bade-7813-4326-8335-b99ffe525871",
      "Name": "OctoterraApply.Octopus.SpaceID",
      "Label": "Octopus Space ID",
      "HelpText": "The Space ID to deploy the Terraform module into. The [Octopus - Lookup Space ID](https://library.octopus.com/step-templates/324f747e-e2cd-439d-a660-774baf4991f2/actiontemplate-octopus-lookup-space-id) step can be used to convert a space name to an ID.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "19fef90b-d94d-4a45-8cc5-6da4925a4b23",
      "Name": "OctoterraApply.Azure.Account",
      "Label": "Azure Account Variable",
      "HelpText": "The Azure account variable.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "AzureAccount"
      }
    },
    {
      "Id": "9442e8fb-056b-4a24-a129-adfe9726ea8d",
      "Name": "OctoterraApply.Azure.Storage.ResourceGroup",
      "Label": "Azure Backend Resource Group",
      "HelpText": "The name of the resource group holding the Azure storage account. See the [Terraform documentation](https://developer.hashicorp.com/terraform/language/settings/backends/azurerm) for details on using Azure storage accounts as a backend.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "d3098333-99ac-463f-83eb-f66aca3d1055",
      "Name": "OctoterraApply.Azure.Storage.AccountName",
      "Label": "Azure Storage Account Name",
      "HelpText": "The name of the Azure storage account used to hold the Terraform state. See the [Terraform documentation](https://developer.hashicorp.com/terraform/language/settings/backends/azurerm) for details on using Azure storage accounts as a backend.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "514db3ac-89a7-4537-abfc-cf7bf7c6ac8c",
      "Name": "OctoterraApply.Azure.Storage.Container",
      "Label": "Azure Storage Container",
      "HelpText": "The name of the Azure storage account container used to hold the Terraform state. See the [Terraform documentation](https://developer.hashicorp.com/terraform/language/settings/backends/azurerm) for details on using Azure storage accounts as a backend.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "e34b942b-f99b-48d1-9989-6810a2d0a71b",
      "Name": "OctoterraApply.Azure.Storage.Key",
      "Label": "Azure Storage Key",
      "HelpText": "The file used to hold the Terraform state. See the [Terraform documentation](https://developer.hashicorp.com/terraform/language/settings/backends/azurerm) for details on using Azure as a backend. The combination of the workspace name and this key must be unique. \n\nThe default value is the name of the project and a prefix to indicate the type of resource: `Project_#{Octopus.Project.Name | Replace \"[^A-Za-z0-9]\" \"_\"}`.",
      "DefaultValue": "Project_#{Octopus.Project.Name | Replace \"[^A-Za-z0-9]\" \"_\"}",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "eef59864-851c-4f6a-bb55-f4a58e1ca2b2",
      "Name": "OctoterraApply.Terraform.AdditionalApplyParams",
      "Label": "Terraform Additional Apply Params",
      "HelpText": "This field can be used to define additional parameters passed to the `terraform apply` command. This field can be left blank. See the [Terraform documentation](https://developer.hashicorp.com/terraform/cli/commands/apply) for details on the `apply` command.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "dae7e399-1bdc-49c2-90d1-b7b2560b379a",
      "Name": "OctoterraApply.Terraform.AdditionalInitParams",
      "Label": "Terraform Additional Init Params",
      "HelpText": "This field can be used to define additional parameters passed to the `terraform init` command. This field can be left blank.  See the [Terraform documentation](https://developer.hashicorp.com/terraform/cli/commands/init) for details on the `init` command.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    }
  ],
  "Properties": {
    "Octopus.Action.GoogleCloud.UseVMServiceAccount": "True",
    "Octopus.Action.GoogleCloud.ImpersonateServiceAccount": "False",
    "Octopus.Action.Terraform.GoogleCloudAccount": "False",
    "Octopus.Action.Terraform.AzureAccount": "True",
    "Octopus.Action.Terraform.ManagedAccount": "None",
    "Octopus.Action.Terraform.AllowPluginDownloads": "True",
    "Octopus.Action.Script.ScriptSource": "Package",
    "Octopus.Action.Terraform.RunAutomaticFileSubstitution": "False",
    "Octopus.Action.Terraform.PlanJsonOutput": "False",
    "Octopus.Action.Terraform.Workspace": "#{OctoterraApply.Terraform.Workspace.Name}",
    "Octopus.Action.Terraform.AdditionalInitParams": "-backend-config=\"resource_group_name=#{OctoterraApply.Azure.Storage.ResourceGroup}\" -backend-config=\"storage_account_name=#{OctoterraApply.Azure.Storage.AccountName}\" -backend-config=\"container_name=#{OctoterraApply.Azure.Storage.Container}\" -backend-config=\"key=#{OctoterraApply.Azure.Storage.Key}\" #{if OctoterraApply.Terraform.AdditionalInitParams}#{OctoterraApply.Terraform.AdditionalInitParams}#{/if}",
    "Octopus.Action.Terraform.AdditionalActionParams": "-var=octopus_server=#{OctoterraApply.Octopus.ServerUrl} -var=octopus_apikey=#{OctoterraApply.Octopus.ApiKey} -var=octopus_space_id=#{OctoterraApply.Octopus.SpaceID} #{if OctoterraApply.Terraform.AdditionalApplyParams}#{OctoterraApply.Terraform.AdditionalApplyParams}#{/if}",
    "Octopus.Action.Package.DownloadOnTentacle": "False",
    "Octopus.Action.RunOnServer": "true",
    "Octopus.Action.AwsAccount.UseInstanceRole": "False",
    "Octopus.Action.Aws.AssumeRole": "False",
    "Octopus.Action.Terraform.TemplateDirectory": "space_population",
    "Octopus.Action.Terraform.FileSubstitution": "**/project_variable_sensitive*.tf",
    "Octopus.Action.AzureAccount.Variable": "OctoterraApply.Azure.Account"
  },
  "Category": "Octopus",
  "HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/octopus-apply-octoterra-module-azure.json",
  "Website": "/step-templates/c15be981-3138-47c8-a935-ab388b7840be",
  "Logo": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAC1QTFRFT6Tl////L5Pg8vj9Y67omsvwPJrisdfzfbzs5fL7y+T32Ov5isLucLXqvt31CJPHWwAABMJJREFUeNrs3deW4jAMAFDF3U75/89dlp0ZhiU4blJEjvQ8hYubLJsA00UCBCIQgQhEIAIRiEAEIhCBCEQgAhGIQAQiEIEIhD8kJm+t+QprfdKfB9HbYpx6CWfspj8HMi+gMgHL/AmQA8W3JTKH+ALFvzCeL0RbpyoCPE9IJeNOSQwh5Z3qd6yRGWQ2qi2cZQWxqj1WzQYSjeoJmJlAklOd4VlArOqPhQEkqBERToeMcfRJBkC0Uep8CfBpjz4JsHJ0zF3dkEWNje0kiB/sUC6eApndaIiCMyAa1PiwJ0AWhRGJHJJQHG2dC7h1rNbO1QOxSA7lNCkkKrQIpJCAB1GREILYIC1NAiwbpKFJgGWDNExcwGstfExcZBCHC6nOglshHtmhViLIig1RNBCN7qjtW8C0Z1UvJcC1Z9XmwMBzzvobmgAyEzgq91dtEEsBsQSQQAFZCSBAATEEEApHZbrVBIkkEIUPSVeB+KtALA0kXQUSrwKZBCIQBnk8Y4i5CsReBeKvkqLM+BCSDWJlrZFvGk9SRTHshkgjZCGAaArIxm3H3grhVzFlW2msfl1ca79UJ1bofYvsDHHlNdTZnlh5MghuPd5NdBDUNZHyCkfktIh03XzALGRPlBDPac7qgWjHZzWcmF5zmmkhidMQ6boKiDXcDTUEaylZqCGJ0Vjvu/fLJtHqhSANEvqb2OYqkOUqEHuVMbJcZdZCGiPhKhC4yjqiIjEE7XThMp8fAWII3mY3kUIQD+AMKQTzPiBhgQ63HlT/KSvgtoi0dq5mCPah1UIE0eh3sT0NhOByvKeAkFzi8PgQomumFhsyOxpIzZN4gLOj5plVwNpR0b2AuePWKBEHQu24pSsJA+LVCeHHQxZ1SiyDIdqok8IOhSSnTottHEQTdyt4ettAj4KkzA4dMikk2Dht2S5ptm1vswnPDxn0YyDZ5oDM3iToo2T5voWaYe+Q+vdjH80QyAzZhCgcDtLMI1Tmtz9w++XHgziHQHJJu/OZ3bs9Xn8gQ72NcP3dKqEfkp10F51xhoIi2I91R+LurXV/5q7pH+wx061CzO16oSQleMyr8fXvwMA0Pro8432DPD/ySx8XrHfSuDAM8n6UhnjQabaiXf5Bq/lREHvEeNtn1rJ08+C/uXkQZHeguxAPC3UvtcJYUogLzZX5hhZZvS6onG5lxXtzWGaygwb79vT/IXhdlNibwlKYOR6T8xjI7W8n+xV7T+GH4tMzWwR+lZhRkJYSsC0thpmCYqyngOz3rN2FLBZ2wZflBCggUHF0Vnp88JKienzIXLSEZCZqU7IKr/gQW9yx3pzV7Y9kvWZWTRRIqDmTtRUnU7b2lLcTYmoqHqnmiO1poER0SPkAeZMAZxaJx0Y3TCdAclsIqDz03ALcyxfTCZBsthoGXWmigGyVhWPLFJJfuuKQWycoEFdXbH4dJJoJxNR1eD/kshz6yn48cF8yW8sFoitflB1w6Q8n+/15Za7oA17/pYNmYgP5fmWm8L1NOHPWgK8kuFew1/JXtOA0yJCv7ah7X8ObUuT5kObU30+fDZm8+zqP+HTIpK0xQ796b5Kv2hSIQAQiEIEIRCACEYhABCIQgQhEIAIRiEAEIpBf8UeAAQAEjtYmlDTcCgAAAABJRU5ErkJggg==",
  "$Meta": {
    "Type": "ActionTemplate"
  }
}

History

Page updated on Wednesday, December 20, 2023