IaC Bazaar
AWSLive-tested

Jenkins Controller on AWS (EC2)

Self-hosted Jenkins controller on a hardened EC2 instance - restricted security group, IMDSv2 enforced, SSM access, encrypted root volume, Jenkins auto-installed via user-data.

terraformAWS#aws
aws-jenkinsterraform v1.7

Verification

Live-tested

Really deployed to a cloud sandbox, verified against its outputs and assertions, then destroyed - with the teardown confirmed.

Conformance

  • Static validation (fmt · validate · tflint)
  • Security scan clean (Checkov)
  • Plan test superseded by live test

Provenance

Functional

  • Live-tested - applied, verified, destroyed

Last verified 2026-06-29 · how we verify

Verify this download

cosign · sha-256

Don't take our word for it. Every release is signed with cosign - check the bytes against our pinned public key before you trust them.

# 1. Our pinned public key - fetch once, trust out-of-band
curl -O https://www.iac-bazaar.com/cosign.pub

# 2. This module's Sigstore bundle
curl -o aws-jenkins-1.0.0.sigstore.json \
  https://www.iac-bazaar.com/api/artifacts/aws-jenkins/signature

# 3. Verify the tarball you downloaded
cosign verify-blob \
  --key cosign.pub \
  --bundle aws-jenkins-1.0.0.sigstore.json \
  aws-jenkins-1.0.0.tar.gz
# → Verified OK

# 4. (optional) confirm the checksum too
echo "a2ead02ad06b50717a7b34a806df168323ffac21c94efb555ab8e794d3eea3a7  aws-jenkins-1.0.0.tar.gz" | sha256sum -c

Use it from the registry

terraform · opentofu
module "jenkins" {
  source  = "www.iac-bazaar.com/iac-bazaar/aws-jenkins/aws"
  version = "1.0.0"
}

Paid module — needs a purchase (or a subscription that covers it) plus a registry token from /account/tokens. Full setup: registry docs.

Inputs & outputs

Create a free account to read this module's contract

The declared contract — every input name, type, default and description, plus every output — is shown to signed-in accounts, not to anonymous visitors.

A free account sees the contract of every Free module. This one is Premium, so its contract unlocks when you buy it.

Documentation

aws-jenkins — Jenkins Controller on AWS

A single-node Jenkins controller on EC2 with secure defaults baked in. The instance runs Amazon Linux 2023 and installs Jenkins (stable) + Amazon Corretto 17 via cloud-init. IMDSv2 is enforced (http_tokens = required), the root EBS volume is always encrypted (gp3 by default), and the module ships an SSM-agent-ready, least-privilege instance profile (just AmazonSSMManagedInstanceCore) so you get Session Manager shell access with no SSH keys and no inbound SSH at all. The security group exposes the Jenkins UI and SSH only to the CIDR blocks you list in allowed_cidrs — there is no open-to-the-world default.

Self-contained for quick trials: leave subnet_id unset and the module discovers a subnet in the account's default VPC and derives the matching VPC for the security group.

Works with Terraform and OpenTofu (>= 1.6), AWS provider >= 6.0, < 7.0.

What it provisions

  • aws_instance — the Jenkins controller (IMDSv2-only, encrypted gp3 root, EBS-optimized).
  • aws_security_group + standalone ingress/egress rules — UI (jenkins_port) and SSH (22) from allowed_cidrs; all egress for package/plugin installs.
  • aws_iam_role + aws_iam_instance_profile — SSM-ready, least privilege.

Requirements

  • Terraform or OpenTofu >= 1.6
  • hashicorp/aws >= 6.0, < 7.0

License

Commercial — IaC Bazaar EULA. © IaC Bazaar. Original work (not derived from a third-party module).

Usage code & full reference unlock after purchase

The complete copy-paste usage, the full input/output reference, and operational notes ship with your licence - shown here and bundled in the download.

  • Usage
  • Inputs
  • Outputs
  • Notes

Related modules