We will be learning how to execute Terraform scripts automatically using Jenkins pipeline. We will create EC2 instance using Terraform and Jenkins in AWS cloud.
Pre-requisties:
- Jenkins is up and running
- Terraform is installed in Jenkins
- Terraform files already created in your SCM.
Create IAM role to provision EC2 instance in AWS
Select AWS service, EC2, Click on Next Permissions
Type EC2 and choose AmazonEC2FullAccess as policy
Click on Next tags, Next Review
give some role name and click on Create role.
Assign IAM role to EC2 instance
Go back to Jenkins EC2 instance, click on EC2 instance, Security, Modify IAM role
Type your IAM role name my-ec2-terraform-role and Save to attach that role to EC2 instance.
Create Jenkins Pipeline
Add parameters to the pipeline
Click checkbox - This project is parameterized, choose Choice Parameter
type apply and enter and type destroy as choices as it is shown below
Go to Pipeline section
Add below pipeline code
pipeline {
agent any
stages {
stage('Checkout') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/main']], extensions: [], userRemoteConfigs: [[url: 'https://github.com/mydevopscoach/my-tf-iac-aws-repo']]])
}
}
stage ("terraform init") {
steps {
sh ('terraform init')
}
}
stage ("terraform Action") {
steps {
echo "Terraform action is --> ${action}"
sh ('terraform ${action} --auto-approve')
}
}
}
}
Click on Build with Parameters and choose apply to build the infrastructure or choose destroy if you like to destroy the infrastructure you have built.
Click on Build
Now you should see the console output if you choose apply.
Pipeline will look like below:
Login to AWS console, you should see the new EC2 instance created.