{"id":28070,"library":"pulumi-tailscale","title":"Pulumi Tailscale Provider","description":"A Pulumi package for creating and managing Tailscale cloud resources. Version 0.27.1 supports Python >=3.9, wraps the Terraform provider, and follows Pulumi’s major version release cadence (breaking changes alongside provider upgrades).","status":"active","version":"0.27.1","language":"python","source_language":"en","source_url":"https://github.com/pulumi/pulumi-tailscale","tags":["pulumi","tailscale","infrastructure","cloud-resources"],"install":[{"cmd":"pip install pulumi-tailscale","lang":"bash","label":"PyPI"}],"dependencies":[{"reason":"Pulumi SDK is required to use this provider","package":"pulumi","optional":false}],"imports":[{"note":"The module is named pulumi_tailscale, not tailscale","wrong":"import tailscale","symbol":"tailscale","correct":"import pulumi_tailscale as tailscale"},{"note":"Wrong import path","wrong":"from tailscale import Provider","symbol":"Provider","correct":"from pulumi_tailscale import Provider"}],"quickstart":{"code":"import pulumi\nimport pulumi_tailscale as tailscale\n\n# Requires TAILSCALE_API_KEY and TAILSCALE_TAILNET env vars\nprovider = tailscale.Provider(\n    \"ts-provider\",\n    api_key=os.environ.get('TAILSCALE_API_KEY', ''),\n    tailnet=os.environ.get('TAILSCALE_TAILNET', ''),\n)\n\n# Create a Tailnet key\ntailnet_key = tailscale.TailnetKey(\n    \"my-key\",\n    reusable=False,\n    ephemeral=False,\n    preauthorized=True,\n    expiry_seconds=3600,\n    tags=[\"tag:prod\"],\n    opts=pulumi.ResourceOptions(provider=provider),\n)\n\npulumi.export(\"key\", tailnet_key.key)","lang":"python","description":"Creates a Tailnet key with the Tailscale provider."},"warnings":[{"fix":"Remove `userId` from OAuthClient definitions and ensure `nodeId` is set in device queries.","message":"In v0.21.0, the `userId` input was removed from `oauthClient` resource and `nodeId` became required in `getDevicesDevice`. Check your stacks if upgrading from v0.20.x.","severity":"breaking","affected_versions":">=0.21.0, <0.22.0"},{"fix":"Replace `from pulumi_tailscale import Provider` with `from pulumi_tailscale import Provider as TailscaleProvider` or switch to the new path.","message":"The `tailscale.Provider` resource is deprecated; use `pulumi.providers.tailscale.Provider` instead.","severity":"deprecated","affected_versions":">=0.21.0"},{"fix":"Use `import pulumi_tailscale` or `from pulumi_tailscale import ...`","message":"Do not import from `tailscale` directly. The correct module is `pulumi_tailscale`.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"Use `import pulumi_tailscale` instead of `import tailscale`.","cause":"Importing the wrong module name.","error":"ModuleNotFoundError: No module named 'tailscale'"},{"fix":"Remove the `userId` argument from OAuthClient resource definition.","cause":"Using an older schema with `userId` on OAuthClient after v0.21.0 removed it.","error":"pulumi.errors.ResourceError: resource '...' has a problem: expected 'userId' to be set"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}