2.2 KiB
Executable File
layout | page_title | sidebar_current | description |
---|---|---|---|
vcs | Git Integration | docs-enterprise-vcs-git | Git repositories can be integrated with Terraform Enterprise by using push command. |
Git Integation
Git repositories can be integrated with Terraform Enterprise by using
terraform push
to import
Terraform configuration when changes are committed. When Terraform
configuration is imported using terraform push
a plan is automatically queued.
_Note: This integration is for Git repositories not hosted on GitHub. For repositories on GitHub, there is native GitHub Integration.
Setup
Terraform configuration can be manually imported by running terraform push
like below:
$ terraform push -name=$ATLAS_USERNAME/ENV_NAME
A better option than having to manually run terraform push
is to run it
using a git commit hook. A client-side pre-push
hook is suitable and will
push your Terraform configuration when you push local changes to your Git
server.
Client-side Commit Hook
The script below will execute terraform push
when you push local changes to
your Git server. Place the script at .git/pre-push
in your local Git
repository, set the necessary variables, and ensure the script is executable.
#!/bin/bash
#
# An example hook script to push Terraform configuration to Terraform Enterprise.
#
# Set the following variables for your project:
# - ENV_NAME - your environment name (e.g. org/env)
# - TERRAFORM_DIR - the local directory to push
# - DEFAULT_BRANCH - the branch to push. Other branches will be ignored.
ENV_NAME="YOUR_ORG/YOUR_ENV"
TERRAFORM_DIR="terraform"
DEFAULT_BRANCH=""
if [[ -z "$ENV_NAME" || -z "$TERRAFORM_DIR" || -z "$DEFAULT_BRANCH" ]]; then
echo 'pre-push hook: One or more variables are undefined. Canceling push.'
exit 1
fi
current_branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,')
if [ "$current_branch" == "$DEFAULT_BRANCH" ]; then
echo "pre-push hook: Pushing branch [$current_branch] to environment [$ENV_NAME]."
terraform push -name="$ENV_NAME" $TERRAFORM_DIR
else
echo "pre-push hook: NOT pushing branch [$current_branch] to environment [$ENV_NAME]."
fi