-
Notifications
You must be signed in to change notification settings - Fork 845
Expand file tree
/
Copy pathJenkinsfile
More file actions
77 lines (66 loc) · 2.72 KB
/
Jenkinsfile
File metadata and controls
77 lines (66 loc) · 2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
pipeline {
parameters {
string(name: 'environment', defaultValue: 'terraform', description: 'Workspace/environment file to use for deployment')
string(name: 'service', defaultValue: 'apache', description: 'please provide service name')
booleanParam(name: 'autoApprove', defaultValue: false, description: 'Automatically run apply after generating plan?')
}
environment {
AWS_ACCESS_KEY_ID = credentials('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = credentials('AWS_SECRET_ACCESS_KEY')
}
agent any
options {
timestamps ()
ansiColor('xterm')
}
stages {
stage('checkout') {
steps {
git branch: "devops1", url: "https://github.com/easyawslearn/Terraform-Tutorial.git"
}
}
stage('Plan') {
steps {
sh '''
cd terraform-aws-ec2-userdata ;
terraform init \
-upgrade=true \
-get=true \
-input=false \
-force-copy \
-backend=true \
-backend-config "bucket=aws-terraform-devops-backend" \
-backend-config "key=terraform/${service}.tfstate" \
-backend-config "region=us-east-1" \
-backend-config "dynamodb_table=terraform" \
-lock=true
'''
sh """#!/bin/bash
cd terraform-aws-ec2-userdata ; terraform workspace show | grep ${environment} ; if [ "\$?" == 0 ];then echo "workspace already exists ";else terraform workspace new ${environment}; fi;
cd terraform-aws-ec2-userdata ; echo "INFO: Terraform -> Working for ${environment}";
terraform plan -input=false -out tfplan -lock=true;
terraform show -no-color tfplan > tfplan.txt;
"""
}
}
stage('Approval') {
when {
not {
equals expected: true, actual: params.autoApprove
}
}
steps {
script {
def plan = readFile 'terraform-aws-ec2-userdata/tfplan.txt'
input message: "Do you want to apply the plan?",
parameters: [text(name: 'Plan', description: 'Please review the plan', defaultValue: plan)]
}
}
}
stage('Apply') {
steps {
sh "cd terraform-aws-ec2-userdata ; terraform apply -input=false tfplan"
}
}
}
}