Pulumi Integration
Manage TigerAccess infrastructure as code with Pulumi. Define access policies, resources, and configurations using TypeScript, Python, Go, and other modern languages.
Modern Infrastructure as Code
Manage TigerAccess with the power and flexibility of real programming languages.
Multi-Language SDKs
Use TypeScript, Python, Go, C#, or Java to define TigerAccess resources with full type safety and IDE support.
Resource Provisioning
Declaratively manage users, roles, access rules, integrations, and all TigerAccess resources as code.
GitOps Workflows
Version control your access policies, review changes in PRs, and deploy with CI/CD pipelines.
State Management
Secure state storage with encryption, team collaboration, and drift detection built-in.
Full-Featured Pulumi Provider
Get Started with Pulumi
Install the provider and start managing TigerAccess as code in minutes.
Install Pulumi Provider
Install the TigerAccess Pulumi provider for your preferred language.
# TypeScript/JavaScript
npm install @tigeraccess/pulumi
# Python
pip install tigeraccess-pulumi
# Go
go get github.com/tigeraccess/pulumi-tigeraccess/sdk/go/tigeraccessConfigure Provider
Set up authentication and connection to your TigerAccess cluster.
import * as tigeraccess from "@tigeraccess/pulumi";
// Configure provider
const provider = new tigeraccess.Provider("tigeraccess", {
authServer: "https://auth.example.com:3025",
// Use identity file or token for authentication
identityFile: "~/.tac/identity",
});Create Resources
Define TigerAccess resources using your preferred programming language.
// Create a role
const devRole = new tigeraccess.Role("dev-role", {
metadata: {
name: "developers",
description: "Developer access role",
},
spec: {
allow: {
logins: ["ubuntu", "ec2-user"],
nodeLabels: {
env: ["dev", "staging"],
},
},
},
}, { provider });
// Create a user
const user = new tigeraccess.User("jane", {
metadata: {
name: "[email protected]",
},
spec: {
roles: [devRole.metadata.name],
},
}, { provider });Deploy with CI/CD
Integrate Pulumi into your CI/CD pipeline for automated deployments.
# GitHub Actions example
name: Pulumi Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pulumi/actions@v4
with:
command: up
stack-name: prod
env:
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
TIGERACCESS_AUTH_SERVER: ${{ secrets.TIGERACCESS_AUTH_SERVER }}
TIGERACCESS_IDENTITY_FILE: ${{ secrets.TIGERACCESS_IDENTITY }}Real-World Code Examples
See how to manage TigerAccess resources in your preferred language.
TypeScript Example
Complete example of managing TigerAccess resources with TypeScript.
import * as pulumi from "@pulumi/pulumi";
import * as tigeraccess from "@tigeraccess/pulumi";
// Create roles
const adminRole = new tigeraccess.Role("admin", {
metadata: {
name: "admins",
labels: { team: "platform" },
},
spec: {
allow: {
logins: ["root", "admin"],
nodeLabels: { "*": ["*"] },
rules: [{
resources: ["*"],
verbs: ["*"],
}],
},
},
});
// Create access list
const onCallAccess = new tigeraccess.AccessList("oncall", {
metadata: {
name: "oncall-production",
},
spec: {
title: "On-call production access",
grants: {
roles: ["admins"],
},
audit: {
nextAuditDate: "2024-06-01",
},
},
});
// Create integration
const awsIntegration = new tigeraccess.Integration("aws", {
metadata: {
name: "aws-prod",
},
spec: {
type: "aws",
aws: {
accountId: "123456789012",
roleArn: "arn:aws:iam::123456789012:role/TigerAccessRole",
regions: ["us-east-1", "us-west-2"],
},
},
});
export const roleName = adminRole.metadata.name;
export const accessListId = onCallAccess.metadata.name;Python Example
Python SDK example for infrastructure teams.
import pulumi
import tigeraccess_pulumi as tigeraccess
# Create a database connection
postgres_db = tigeraccess.Database("postgres-prod",
metadata=tigeraccess.MetadataArgs(
name="postgres-production",
labels={"env": "prod", "team": "data"}
),
spec=tigeraccess.DatabaseSpecArgs(
protocol="postgres",
uri="postgres.example.com:5432",
ca_cert="/etc/certs/postgres-ca.pem",
admin_user=tigeraccess.DatabaseUserArgs(
name="admin"
)
)
)
# Create bot for CI/CD
ci_bot = tigeraccess.Bot("ci-bot",
metadata=tigeraccess.MetadataArgs(
name="github-actions-bot"
),
spec=tigeraccess.BotSpecArgs(
roles=["ci-deployer"],
traits=[
tigeraccess.TraitArgs(
name="github-actions",
values=["deploy", "test"]
)
]
)
)
pulumi.export("database_name", postgres_db.metadata.name)
pulumi.export("bot_name", ci_bot.metadata.name)Infrastructure as Code Scenarios
Infrastructure Provisioning
Deploy TigerAccess alongside your infrastructure. Create SSH nodes, database connections, and Kubernetes clusters as part of your Pulumi stacks.
RBAC Management
Define roles, permissions, and access rules as code. Review access policy changes through pull requests before deploying to production.
Multi-Environment Setup
Use Pulumi stacks to manage dev, staging, and production TigerAccess configurations with environment-specific settings and shared base configurations.
Compliance Automation
Enforce compliance policies using Pulumi Policy Packs. Automatically validate that TigerAccess configurations meet security and compliance requirements.
Frequently Asked Questions
Which languages does the TigerAccess Pulumi provider support?
The provider supports TypeScript, JavaScript, Python, Go, C#, and Java. All languages provide full type safety and intellisense support in modern IDEs.
How do I manage secrets in Pulumi with TigerAccess?
Use Pulumi's built-in secret management to encrypt sensitive values like certificates and tokens. You can also integrate with Pulumi ESC (Environments, Secrets, and Configuration) for centralized secret management across stacks.
Can I import existing TigerAccess resources into Pulumi?
Yes. Use the pulumi import command to import existing TigerAccess resources into your Pulumi state. This allows you to gradually migrate to infrastructure as code without recreating resources.
How does Pulumi detect drift in TigerAccess configurations?
Run pulumi preview to compare your code against the actual state of resources in TigerAccess. Pulumi will show any differences and allow you to either update your code or refresh the state to match reality.
Can I use Pulumi Automation API with TigerAccess?
Yes. The Automation API allows you to embed Pulumi in your applications and build custom workflows. This is useful for building self-service portals where users can request access and have roles automatically provisioned.
How do I handle multi-environment deployments?
Use Pulumi stacks for each environment (dev, staging, prod). Share common configuration using stack references and component resources. Override environment-specific settings using stack configuration files.
Ready to Secure Your Infrastructure?
Join thousands of security-conscious teams using TigerAccess to protect their critical infrastructure and AI agents.
No credit card required • 14-day free trial • Enterprise support available