Terraform ignore parallelism flag when running through Jenkins

Viewed 53

I am running Terraform job using Jenkins pipeline. Terraform refresh is taking too long 10m~, using -parallelism=60 (local)terraform runs much faster 2.5m~. When running the same config through Jenkins salve with parallelism I don't see any improve in running time.

Jenkins ver. 2.154

Jenkins Docker plugin 1.1.6

SSH Agent plugin 1.19

Flow: Jenkins master creates job -> Jenkins slave running Docker image of terraform

def terraformRun(String envName, String terraformAction, String dirName = 'env') {
    sshagent(['xxxxxxx-xxx-xxx-xxx-xxxxxxxx']) {
        withEnv(["ENV_NAME=${envName}", "TERRAFORM_ACTION=${terraformAction}", "DIR_NAME=${dirName}"]) {
            sh '''
                #!/bin/bash
                set -e
                ssh-keyscan -H "bitbucket.org" >> ~/.ssh/known_hosts
                AUTO_APPROVE=""
                echo terraform "${TERRAFORM_ACTION}" on "${ENV_NAME}"
                cd "${DIR_NAME}"
                export TF_WORKSPACE="${ENV_NAME}"
                echo "terraform init"
                terraform init -input=false

                echo "terraform refresh"
                terraform apply -refresh-only -auto-approve -parallelism=60 -var-file=tfvars/"${ENV_NAME}".tfvars -var-file=../variables.tfvars # Refresh is working but it seems to ignore parallelism

                echo "terraform ${TERRAFORM_ACTION}"
                if [ ${TERRAFORM_ACTION} = "apply" ]; then
                    AUTO_APPROVE="-auto-approve"
                fi

                terraform ${TERRAFORM_ACTION} -refresh=false -var-file=tfvars/"${ENV_NAME}".tfvars -var-file=../variables.tfvars ${AUTO_APPROVE}

                echo "terraform ${TERRAFORM_ACTION} on ${ENV_NAME} finished successfully."
               '''
        }
    }
}
0 Answers
Related