Skip to content

Commit 37a1771

Browse files
committed
Add
1 parent 025a324 commit 37a1771

File tree

3 files changed

+680
-0
lines changed

3 files changed

+680
-0
lines changed
Lines changed: 304 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,304 @@
1+
parameters:
2+
- name: JobName
3+
type: string
4+
default: TerraformInitPlanJob
5+
displayName: 'Custom Job Name'
6+
7+
- name: JobDisplayName
8+
type: string
9+
default: "Terraform Init & Terraform Plan"
10+
displayName: 'Custom Job Display Name'
11+
12+
- name: TerraformCodeLocation
13+
type: string
14+
default: 'terraform'
15+
displayName: 'Terraform Code Path'
16+
17+
- name: TerraformStackToRunJson
18+
type: string
19+
default: '["all"]'
20+
displayName: 'Terraform Stacks to Run'
21+
22+
- name: TerraformWorkspace
23+
type: string
24+
default: ''
25+
displayName: 'Terraform Workspace'
26+
27+
- name: RunTerraformInit
28+
type: string
29+
values: [ "true", "false" ]
30+
default: "true"
31+
displayName: 'Run Terraform Init'
32+
33+
- name: RunTerraformValidate
34+
type: string
35+
values: [ "true", "false" ]
36+
default: "true"
37+
displayName: 'Run Terraform Init'
38+
39+
- name: RunTerraformPlan
40+
type: string
41+
values: [ "true", "false" ]
42+
default: "true"
43+
displayName: 'Run Terraform Plan'
44+
45+
- name: RunTerraformPlanDestroy
46+
type: string
47+
values: [ "true", "false" ]
48+
default: "false"
49+
displayName: 'Run Terraform Plan Destroy'
50+
51+
- name: RunTerraformApply
52+
type: string
53+
values: [ "true", "false" ]
54+
default: "false"
55+
displayName: 'Run Terraform Apply'
56+
57+
- name: RunTerraformDestroy
58+
type: string
59+
values: [ "true", "false" ]
60+
default: "false"
61+
displayName: 'Run Terraform Destroy'
62+
63+
- name: TerraformInitCreateBackendStateFileName
64+
type: string
65+
values: [ "true", "false" ]
66+
default: "true"
67+
displayName: 'Whether the script should attempt to make a state file based on stack name'
68+
69+
- name: TerraformInitCreateBackendStateFilePrefix
70+
type: string
71+
default: ""
72+
displayName: 'Backend prefix'
73+
74+
- name: TerraformInitCreateBackendStateFileSuffix
75+
type: string
76+
default: ""
77+
displayName: 'Backend suffix'
78+
79+
- name: TerraformInitExtraArgsJson
80+
type: string
81+
default: '[ ]'
82+
displayName: 'Extra Args for terraform init'
83+
84+
- name: TerraformPlanExtraArgsJson
85+
type: string
86+
default: '[ ]'
87+
displayName: 'Extra Args for terraform plan'
88+
89+
- name: TerraformPlanDestroyExtraArgsJson
90+
type: string
91+
default: '[ ]'
92+
displayName: 'Extra Args for terraform plan -destroy'
93+
94+
- name: TerraformApplyExtraArgsJson
95+
type: string
96+
default: '[ ]'
97+
displayName: 'Extra Args for terraform apply'
98+
99+
- name: TerraformDestroyExtraArgsJson
100+
type: string
101+
default: '[ ]'
102+
displayName: 'Extra Args for terraform destroy'
103+
104+
- name: DebugMode
105+
type: string
106+
values: [ "true", "false" ]
107+
default: "false"
108+
displayName: 'Enable Debug Logging'
109+
110+
- name: DeletePlanFiles
111+
type: string
112+
values: [ "true", "false" ]
113+
default: "true"
114+
displayName: 'Delete Plan Files After Execution'
115+
116+
- name: TerraformVersion
117+
type: string
118+
default: 'latest'
119+
displayName: 'Terraform Version'
120+
121+
- name: RunCheckov
122+
type: string
123+
values: [ "true", "false" ]
124+
default: "true"
125+
displayName: 'Run Checkov Scan'
126+
127+
- name: CheckovSkipCheck
128+
type: string
129+
default: ''
130+
displayName: 'Checkov Skip Checks (Comma-Separated)'
131+
132+
- name: CheckovSoftfail
133+
type: string
134+
values: [ "true", "false" ]
135+
default: "false"
136+
displayName: 'Soft-Fail Checkov Scan'
137+
138+
- name: CheckovExtraArgsJson
139+
type: string
140+
default: '[ ]'
141+
displayName: 'ExtraArgs for CheckOv as JSON'
142+
143+
- name: TerraformPlanFileName
144+
type: string
145+
default: 'tfplan.plan'
146+
displayName: 'Terraform Plan File Name'
147+
148+
- name: TerraformDestroyPlanFileName
149+
type: string
150+
default: 'tfplan-destroy.plan'
151+
displayName: 'Terraform Destroy Plan File Name'
152+
153+
- name: CreateTerraformWorkspace
154+
type: string
155+
values: [ "true", "false" ]
156+
default: "true"
157+
displayName: 'Create or Select Terraform Workspace'
158+
159+
- name: UseAzureClientSecretLogin
160+
type: string
161+
values: [ "true", "false" ]
162+
default: "false"
163+
displayName: 'Use Azure Client Secret Login'
164+
165+
- name: UseAzureOidcLogin
166+
type: string
167+
values: [ "true", "false" ]
168+
default: "true"
169+
displayName: 'Use Azure OIDC Login'
170+
171+
- name: UseAzureUserLogin
172+
type: string
173+
values: [ "true", "false" ]
174+
default: "false"
175+
displayName: 'Use Azure User (Device Code) Login'
176+
177+
- name: UseAzureManagedIdentityLogin
178+
type: string
179+
values: [ "true", "false" ]
180+
default: "false"
181+
displayName: 'Use Azure Managed Identity Login'
182+
183+
- name: UseAzureServiceConnection
184+
type: string
185+
values: [ "true", "false" ]
186+
default: "true"
187+
displayName: 'Use Azure DevOps Service Connection'
188+
189+
- name: InstallTenvTerraform
190+
type: string
191+
values: [ "true", "false" ]
192+
default: "false"
193+
displayName: 'Install Tenv and Terraform'
194+
195+
- name: InstallAzureCli
196+
type: string
197+
values: [ "true", "false" ]
198+
default: "false"
199+
displayName: 'Install Azure CLI'
200+
201+
- name: AttemptAzureLogin
202+
type: string
203+
values: [ "true", "false" ]
204+
default: "false"
205+
displayName: 'Attempt Azure Login in Script'
206+
207+
- name: InstallCheckov
208+
type: string
209+
values: [ "true", "false" ]
210+
default: "false"
211+
displayName: 'Install Checkov'
212+
213+
- name: ServiceConnection
214+
type: string
215+
displayName: 'Azure DevOps Service Connection Name'
216+
217+
- name: additionalEnvVars
218+
type: object
219+
default: { }
220+
displayName: 'Additional Environment Variables to Export'
221+
222+
- name: additionalJobVars
223+
type: object
224+
default: { }
225+
displayName: 'Additional Job Variables'
226+
227+
- name: BackendUseAzureADAuth
228+
type: string
229+
values: [ "true", "false" ]
230+
default: "true"
231+
displayName: 'Backend Authentication via Azure AD'
232+
233+
- name: TargetSubscriptionId
234+
type: string
235+
default: ''
236+
displayName: 'Target Azure Subscription ID (Overrides Default)'
237+
238+
- name: AzureDevOpsPoolName
239+
type: string
240+
default: ''
241+
displayName: 'The Pool Name for the Job to run on'
242+
243+
- name: AzurePipelinesVmImage
244+
type: string
245+
default: 'ubuntu-latest'
246+
displayName: 'If Azure Pipelines is selected, which vmImage to run'
247+
248+
- name: dependsOnJobs
249+
displayName: "Depends On"
250+
type: object
251+
default: [ ]
252+
253+
- name: WorkspaceClean
254+
displayName: "Workspace clean"
255+
type: string
256+
default: "all"
257+
values:
258+
- "all"
259+
- "outputs"
260+
- "resources"
261+
262+
- name: EnableGitLongPaths
263+
values: [ "true", "false" ]
264+
default: "true"
265+
displayName: 'Run Git Long paths enablement'
266+
267+
- name: ConfigureAzureDevOpsGitUrl
268+
values: [ "true", "false" ]
269+
default: "false"
270+
displayName: 'Configure the Git Azure DevOps URL with insteadof for System.AccessToken injection'
271+
272+
jobs:
273+
- job: ${{ parameters.JobName }}
274+
displayName: ${{ parameters.JobDisplayName }}
275+
pool:
276+
name: ${{ parameters.AzureDevOpsPoolName }}
277+
${{ if eq(parameters.AzureDevOpsPoolName, 'Azure Pipelines') }}:
278+
vmImage: ${{ parameters.AzurePipelinesVmImage }}
279+
dependsOn: ${{ parameters.dependsOnJobs }}
280+
workspace:
281+
clean: ${{ parameters.WorkspaceClean }}
282+
283+
${{ if ne(length(parameters.additionalJobVars), 0) }}:
284+
variables:
285+
${{ each jobVar in parameters.additionalJobVars }}:
286+
${{ jobVar.Key }}: ${{ jobVar.Value }}
287+
288+
steps:
289+
- template: ../steps/terraform-free-form.yaml
290+
parameters:
291+
TerraformCodeLocation: ${{ parameters.TerraformCodeLocation }}
292+
TerraformArguments: ${{ parameters.TerraformArguements }}
293+
UseAzureClientSecretLogin: ${{ parameters.UseAzureClientSecretLogin }}
294+
UseAzureOidcLogin: ${{ parameters.UseAzureOidcLogin }}
295+
UseAzureUserLogin: ${{ parameters.UseAzureUserLogin }}
296+
UseAzureManagedIdentityLogin: ${{ parameters.UseAzureManagedIdentityLogin }}
297+
UseAzureServiceConnection: ${{ parameters.UseAzureServiceConnection }}
298+
AttemptAzureLogin: ${{ parameters.AttemptAzureLogin }}
299+
ServiceConnection: ${{ parameters.ServiceConnection }}
300+
additionalEnvVars: ${{ parameters.additionalEnvVars }}
301+
BackendUseAzureADAuth: ${{ parameters.BackendUseAzureADAuth }}
302+
TargetSubscriptionId: ${{ parameters.TargetSubscriptionId }}
303+
EnableGitLongPaths: ${{ parameters.EnableGitLongPaths }}
304+
ConfigureAzureDevOpsGitUrl: ${{ parameters.ConfigureAzureDevOpsGitUrl }}

0 commit comments

Comments
 (0)