Invoke-Terra.ps1
#Set-StrictMode -Version Latest ##################################################### # Invoke-Terra ##################################################### <#PSScriptInfo .VERSION 0.2 .GUID 4eb31ea2-dbfd-4d66-9f6d-1d16ce6187d0 .AUTHOR David Walker, Sitecore Dave, Radical Dave .COMPANYNAME David Walker, Sitecore Dave, Radical Dave .COPYRIGHT David Walker, Sitecore Dave, Radical Dave .TAGS powershell sitecore package .LICENSEURI https://github.com/SharedSitecore/Invoke-Terra/blob/main/LICENSE .PROJECTURI https://github.com/SharedSitecore/Invoke-Terra .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES #> <# .DESCRIPTION PowerShell Script to Invoke-Terra .PARAMETER name Path of package #> ##################################################### # Invoke-Terra ##################################################### [CmdletBinding(SupportsShouldProcess)] Param( [Parameter(Mandatory=$false)] #Init,Plan,Apply,Full [string] $mode = "full", [Parameter(Mandatory=$false)] [string] $name = "main", [Parameter(Mandatory=$false)] [string] $output = '', [Parameter(Mandatory=$false)] [string] $backendconfig = '', [Parameter(Mandatory=$false)] [string] $varfile = '' ) begin { $ProgressPreference = "SilentlyContinue" $ErrorActionPreference = 'Stop' $PSScriptName = ($MyInvocation.MyCommand.Name.Replace(".ps1","")) $PSCallingScript = if ($MyInvocation.PSCommandPath) { $MyInvocation.PSCommandPath | Split-Path -Parent } else { $null } Write-Verbose "$PSScriptRoot\$PSScriptName $name $output $backendconfig $varfile called by:$PSCallingScript" } process { if (!$output) { $output = $name } if (@('full','init') -contains $mode) { $backendconfig = Get-ConfigFile 'tfbackend' # if (!$backendconfig -and (Test-Path "*.tfbackend*")) # { # if (Test-Path "*.tfbackend.user") { $backendconfig = ".tfbackend.user" } # elseif (Test-Path ".tfbackend") { $backendconfig = ".tfbackend"} # } if (!$backendconfig) { terraform.exe init } else { terraform.exe init -backend-config="$backendconfig" } } if (@('full','plan') -contains $mode) { $varfile = Get-ConfigFile 'tfvars' # if (!$varfile -and (Test-Path "*.tfvars*")) # { # if (Test-Path "*.tfvars.user") { $varfile = ".tfvars.user" } # elseif (Test-Path ".tfvars") { $varfile = ".tfvars"} # } if (!$varfile) { terraform.exe plan -out="$output.tfplan" } else { terraform.exe plan -var-file="$varfile" -out="$output.tfplan" } } if (@('full','apply') -contains $mode) { terraform.exe apply "$output.tfplan" } } end { Write-Verbose "$PSScriptName $name $output $backendconfig $varfile end" } |