Skip to main content

Create a mock plan for Hashicorp Sentinel from 0.26.2 to 0.40.0

Project description

Sentinel Mock Plan

This project creates a mock plan for HashiCorp Sentinel 0.40.0 using a JSON plan file generated by Terraform. It converts the plan file into a format that can be used in Sentinel policies for testing and validation.

Table of Contents

Overview

This project provides a Python utility that processes a JSON plan file (produced by Terraform) and converts it into a mock plan file compatible with HashiCorp Sentinel 0.40.0. The generated mock plan is useful for simulating infrastructure changes and running Sentinel policies without applying actual changes to cloud infrastructure.

Features:

  • Converts a JSON Terraform plan into a mock Sentinel plan.
  • Customizable input and output file options.
  • Supports overwriting existing output files.

Prerequisites

  • Python 3.8+
  • Terraform (to generate the plan file)
  • HashiCorp Sentinel 0.40.0 (for testing with the generated mock plan)

Installation

  1. Install the package via pip:

    pip install sentinel-mock-plan
    

Usage

To use this utility, first generate the Terraform plan JSON file and then run the Python script to convert it.

Generating the JSON Plan

  1. Initialize Terraform with the desired backend configuration:

    terraform init -reconfigure -backend-config=backends/dev.tfvars
    
  2. Generate a Terraform plan:

    terraform plan -out=tf.plan -var-file=environments/dev.tfvars
    
  3. Export the plan to a JSON format:

    terraform show -no-color -json tf.plan > plan.json
    

Converting the JSON Plan to a Sentinel Mock Plan

Now, run the Python utility to convert the plan.json file into a mock Sentinel plan:

python -m sentinel_mock_plan --infile plan.json --outfile mock-tfplan-v2.sentinel

Options:

  • --infile: Input file name (default: plan.json)
  • --outfile: Output file name (default: mock-tfplan-v2.sentinel)
  • --overwrite: Overwrite the output file if it exists

Example:

python -m sentinel_mock_plan --infile plan.json --outfile mock-tfplan-v2.sentinel --overwrite

This will generate a mock plan file named mock-tfplan-v2.sentinel from the plan.json input.

Example Workflow

  1. Run Terraform commands:

    terraform init -reconfigure -backend-config=backends/dev.tfvars
    terraform plan -out=tf.plan -var-file=environments/dev.tfvars
    terraform show -no-color -json tf.plan > plan.json
    
  2. Convert the JSON plan to a mock Sentinel plan:

    python -m sentinel_mock_plan --infile plan.json --outfile mock-tfplan-v2.sentinel
    
  3. Use the generated mock plan in your Sentinel tests.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sentinel-mock-plan-0.4.0.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sentinel_mock_plan-0.4.0-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

Details for the file sentinel-mock-plan-0.4.0.tar.gz.

File metadata

  • Download URL: sentinel-mock-plan-0.4.0.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.0 CPython/3.10.18 Linux/6.11.0-1018-azure

File hashes

Hashes for sentinel-mock-plan-0.4.0.tar.gz
Algorithm Hash digest
SHA256 30a7db83672f6cdb00b8352c193f086068c68c37688b83bb8dcf90cd49102745
MD5 291cfcbeeb6d5ad716bf99bc0f11febf
BLAKE2b-256 b8d5202d303ed9ddde56bab8d299298a980d167217d3abbab6618fde997d7b43

See more details on using hashes here.

File details

Details for the file sentinel_mock_plan-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: sentinel_mock_plan-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 4.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.0 CPython/3.10.18 Linux/6.11.0-1018-azure

File hashes

Hashes for sentinel_mock_plan-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 79e0b2179674188c48d76d5b03623035619563d7f3573c4a06f1b7c3cd327de7
MD5 bac95781a5fdf111774666949d5dc1df
BLAKE2b-256 e7b6636ff52294c583db9a758271e31841e1e445a90298d34e296a3f5f9de40f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page