Publish Terraform templates

task australia Updated Sep 10, 2026 2 min read publish-terraform-templates.md
Raw file servicenow.com

Publish the Terraform template defined by the application in GitHub to enable version control, collaboration, and centralized storage.

Before you begin

Role required: Terraform admin

Procedure

  1. Create a GitHub repository dedicated to your Terraform templates.

  2. Save the following codes in a separate file.

    • File name: awsaccount.tf

      Java
      terraform {  required_providers {    aws = {      source  = "hashicorp/aws"      version = "~>5.0"    }  }}
      provider "aws" {  region = var.region}
      resource "aws_organizations_account" "account" {  email = var.root_email  name = var.account_name  tags = var.tags  parent_id = var.parent_id  close_on_deletion=var.close_delete  create_govcloud=var.gov_cloud}
      resource "aws_budgets_budget" "cost" {  name  = join("-", ["SN-CAM-Monthly-Budget", aws_organizations_account.account.id])  count = var.monthly_budget > 0 ? 1 : 0  budget_type  = "COST"  limit_amount = var.monthly_budget  limit_unit   = "USD"  time_unit    = "MONTHLY"
        cost_filter {    name = "LinkedAccount"    values = [      aws_organizations_account.account.id    ]  }
        notification {    comparison_operator        = "GREATER_THAN"    threshold                  = 100    threshold_type             = "PERCENTAGE"    notification_type          = "FORECASTED"    subscriber_email_addresses = [var.root_email, var.notification_email]  }
        notification {    comparison_operator        = "GREATER_THAN"    threshold                  = 85    threshold_type             = "PERCENTAGE"    notification_type          = "ACTUAL"    subscriber_email_addresses = [var.root_email, var.notification_email]  }
        notification {    comparison_operator        = "GREATER_THAN"    threshold                  = 100    threshold_type             = "PERCENTAGE"    notification_type          = "ACTUAL"    subscriber_email_addresses = [var.root_email, var.notification_email]  }}
    • File name: variables.tf

      Java
      variable "region" {  type = string  default = "us-east-1"}
      variable "account_name" {  type = string  description = "(Required) Account Name"}
      variable "root_email" {  type = string  description = "(Required) Account Email"}
      variable tags{  type = map(string)  description = "(Required) Tags for the resource"}
      variable "close_delete" {  type = bool  description = "Close Account on deletion"  default = true}
      variable "gov_cloud" {  type = bool  description = "Gov Cloud Account"  default = false}
      variable "parent_id" {  type = string  description = "(Required) Account Parent Organizational Unit"}
      variable monthly_budget {  type = number  default = 0}
      variable notification_email {  type = string  description = "Additional email where Budget Notifications are to be sent"}
  3. Push the Terraform files to the remote repository.

  4. Make a note of the location or URL once the template is stored in the GitHub.

    This template is then referenced in Terraform Cloud and the ServiceNow instance to automate the creation of a subscription account.

    Important:

    Don’t modify the template as the variables are closely connected to the application.

Parent Topic:Setting up Terraform and GitHub

Related topics

Create a Terraform organization for Cloud Account Management in Cloud Workspace

Integrate Terraform Cloud with GitHub

Create Terraform API token

Search documentation
Search document titles and file paths on the australia branch