imperva
terraform-provider-incapsula
Go

This package is a plugin for Terraform, and is designed to be used to auto-provision sites in Incapsula via Incapsula’s API from the terraform cli/yaml configurations.

Last updated Jul 7, 2026
47
Stars
95
Forks
10
Issues
0
Stars/day
Attention Score
72
Language breakdown
Go 98.9%
HTML 0.5%
Shell 0.4%
Makefile 0.2%
Files click to expand
README

Terraform Incapsula Provider =========================

Maintainers


This provider plugin is maintained by the team at Imperva.

Requirements


- Terraform 0.14.x - Go 1.23.0 (to build the provider plugin)

Building The Provider


Clone repository to: $GOPATH/src/github.com/terraform-providers/terraform-provider-incapsula

$ git clone git@github.com:imperva/terraform-provider-incapsula $GOPATH/src/github.com/terraform-providers/terraform-provider-incapsula

Enter the provider directory and build the provider

$ cd $GOPATH/src/github.com/imperva/terraform-provider-incapsula
$ make build

Using the provider


If you're building the provider, follow the instructions to install it as a plugin. After placing it into your plugins directory, run terraform init to initialize it. Documentation about the provider specific configuration options can be found on the provider's website.

Developing the Provider


If you wish to work on the provider, you'll first need Go installed on your machine (version 1.11+ is required). You'll also need to correctly setup a GOPATH, as well as adding $GOPATH/bin to your $PATH.

To compile the provider, run make build. This will build the provider and put the provider binary in the $GOPATH/bin directory.

$ make bin
...
$ $GOPATH/bin/terraform-provider-incapsula
...

In order to test the provider, you can simply run make test.

$ make test

In order to run the full suite of Acceptance tests, run make testacc.

Note: Acceptance tests create real resources, and often cost money to run.

$ make testacc

An automation script is provided for Mac darwin 64amd based developers that encapsulates initial setups along make described commands. Please note that OSARCH=darwinamd64 is uncommented in GNUmakefile for default Mac users, if needed for Linux users comment back and uncomment OSARCH=linuxamd64

Brew is a pre-requisite for this script, as the main package manager to install the dependent libraries such as Golang, Terraform and Git. More details about this script is provided as inner code comments and description.

Script location /scripts/tf-provider-incap-orch.sh.

Script installation command will clone this repository to /workspace folder as a first step and pull from git in subsequent runs.

It's recommended to download the script to some directory in local machine and start with installation command execution

./tf-provider-incap-orch.sh -i "youApiID" "youApiKey"

Mock Server for Testing


A mock Imperva API server is provided for running tests without requiring real API credentials. This enables CI/CD pipelines and local development without access to a live Imperva environment.

Starting the Mock Server

make server

This starts the mock server on port 19443. The server outputs the required environment variables:

export INCAPSULAAPIID=mock-api-id
export INCAPSULAAPIKEY=mock-api-key
export INCAPSULABASEURL=http://localhost:19443
export INCAPSULABASEURLREV2=http://localhost:19443
export INCAPSULABASEURLREV3=http://localhost:19443
export INCAPSULABASEURL_API=http://localhost:19443
export INCAPSULACUSTOMTEST_DOMAIN=.mock.incaptest.com

Running Tests with Mock Server

# Terminal 1: Start the mock server
make server

Terminal 2: Run tests (requires mock server to be running)

make test

Implemented Endpoints

The mock server implements the following Imperva API endpoints:

Account Management (Cloud v1 API Documentation)

| Endpoint | Method | Description | |----------|--------|-------------| | /accounts/add | POST | Create account | | /account | POST | Get account status | | /accounts/configure | POST | Update account | | /accounts/delete | POST | Delete account | | /accounts/data-privacy/show | POST | Get data privacy settings | | /accounts/data-privacy/set-region-default | POST | Set default data region |

Site Management (Cloud v1 API Documentation)

| Endpoint | Method | Description | |----------|--------|-------------| | /sites/add | POST | Create site | | /sites/status | POST | Get site status | | /sites/configure | POST | Update site | | /sites/delete | POST | Delete site |

CSP Pre-Approved Domains (CSP API Documentation)

| Endpoint | Method | Description | |----------|--------|-------------| | /csp-api/v1/sites/{siteId}/preapprovedlist | GET | List pre-approved domains | | /csp-api/v1/sites/{siteId}/preapprovedlist | POST | Add pre-approved domain | | /csp-api/v1/sites/{siteId}/preapprovedlist/{domainRef} | GET | Get specific domain | | /csp-api/v1/sites/{siteId}/preapprovedlist/{domainRef} | DELETE | Remove domain | | /csp-api/v1/sites/{siteId}/domains/{domainRef}/status | GET/PUT | Domain status | | /csp-api/v1/sites/{siteId}/domains/{domainRef}/notes | GET/POST/DELETE | Domain notes |

Response Format

All API responses follow the standard Imperva format:

{
  "res": 0,
  "res_message": "OK",
  "debug_info": {...},
  "account|site|data": {...}
}

Error responses use non-zero res codes as documented in the API documentation.

Adding New Endpoints

To add new endpoints to the mock server:

  • Add the route in mock_server.go in the router() function
  • Implement the handler function following existing patterns
  • Add tests in mockservertest.go
  • Update this documentation
🔗 More in this category

© 2026 GitRepoTrend · imperva/terraform-provider-incapsula · Updated daily from GitHub