pulumi-tailscale 1.0.0a1759993309__tar.gz → 1.0.0a1769802536__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/PKG-INFO +1 -1
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/__init__.py +9 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/acl.py +38 -38
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/config/__init__.pyi +9 -4
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/config/vars.py +11 -4
- pulumi_tailscale-1.0.0a1769802536/pulumi_tailscale/federated_identity.py +576 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/get_acl.py +6 -2
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/oauth_client.py +46 -18
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/provider.py +44 -16
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/pulumi-plugin.json +1 -1
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/tailnet_settings.py +58 -9
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale.egg-info/PKG-INFO +1 -1
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale.egg-info/SOURCES.txt +1 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pyproject.toml +1 -1
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/README.md +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/_inputs.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/_utilities.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/aws_external_id.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/config/__init__.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/contacts.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/device_authorization.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/device_key.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/device_subnet_routes.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/device_tags.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/dns_configuration.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/dns_nameservers.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/dns_preferences.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/dns_search_paths.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/dns_split_nameservers.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/get4_via6.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/get_device.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/get_devices.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/get_user.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/get_users.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/logstream_configuration.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/outputs.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/posture_integration.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/py.typed +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/tailnet_key.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/webhook.py +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale.egg-info/dependency_links.txt +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale.egg-info/requires.txt +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale.egg-info/top_level.txt +0 -0
- {pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/setup.cfg +0 -0
{pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/__init__.py
RENAMED
|
@@ -18,6 +18,7 @@ from .dns_nameservers import *
|
|
|
18
18
|
from .dns_preferences import *
|
|
19
19
|
from .dns_search_paths import *
|
|
20
20
|
from .dns_split_nameservers import *
|
|
21
|
+
from .federated_identity import *
|
|
21
22
|
from .get4_via6 import *
|
|
22
23
|
from .get_acl import *
|
|
23
24
|
from .get_device import *
|
|
@@ -140,6 +141,14 @@ _utilities.register(
|
|
|
140
141
|
"tailscale:index/dnsSplitNameservers:DnsSplitNameservers": "DnsSplitNameservers"
|
|
141
142
|
}
|
|
142
143
|
},
|
|
144
|
+
{
|
|
145
|
+
"pkg": "tailscale",
|
|
146
|
+
"mod": "index/federatedIdentity",
|
|
147
|
+
"fqn": "pulumi_tailscale",
|
|
148
|
+
"classes": {
|
|
149
|
+
"tailscale:index/federatedIdentity:FederatedIdentity": "FederatedIdentity"
|
|
150
|
+
}
|
|
151
|
+
},
|
|
143
152
|
{
|
|
144
153
|
"pkg": "tailscale",
|
|
145
154
|
"mod": "index/logstreamConfiguration",
|
{pulumi_tailscale-1.0.0a1759993309 → pulumi_tailscale-1.0.0a1769802536}/pulumi_tailscale/acl.py
RENAMED
|
@@ -25,8 +25,8 @@ class AclArgs:
|
|
|
25
25
|
"""
|
|
26
26
|
The set of arguments for constructing a Acl resource.
|
|
27
27
|
:param pulumi.Input[_builtins.str] acl: The policy that defines which devices and users are allowed to connect in your network. Can be either a JSON or a HuJSON string.
|
|
28
|
-
:param pulumi.Input[_builtins.bool] overwrite_existing_content: If true, will skip requirement to import acl before allowing changes. Be careful, can cause
|
|
29
|
-
:param pulumi.Input[_builtins.bool] reset_acl_on_destroy: If true, will reset the
|
|
28
|
+
:param pulumi.Input[_builtins.bool] overwrite_existing_content: If true, will skip requirement to import acl before allowing changes. Be careful, can cause the policy file to be overwritten
|
|
29
|
+
:param pulumi.Input[_builtins.bool] reset_acl_on_destroy: If true, will reset the policy file for the Tailnet to the default when this resource is destroyed
|
|
30
30
|
"""
|
|
31
31
|
pulumi.set(__self__, "acl", acl)
|
|
32
32
|
if overwrite_existing_content is not None:
|
|
@@ -50,7 +50,7 @@ class AclArgs:
|
|
|
50
50
|
@pulumi.getter(name="overwriteExistingContent")
|
|
51
51
|
def overwrite_existing_content(self) -> Optional[pulumi.Input[_builtins.bool]]:
|
|
52
52
|
"""
|
|
53
|
-
If true, will skip requirement to import acl before allowing changes. Be careful, can cause
|
|
53
|
+
If true, will skip requirement to import acl before allowing changes. Be careful, can cause the policy file to be overwritten
|
|
54
54
|
"""
|
|
55
55
|
return pulumi.get(self, "overwrite_existing_content")
|
|
56
56
|
|
|
@@ -62,7 +62,7 @@ class AclArgs:
|
|
|
62
62
|
@pulumi.getter(name="resetAclOnDestroy")
|
|
63
63
|
def reset_acl_on_destroy(self) -> Optional[pulumi.Input[_builtins.bool]]:
|
|
64
64
|
"""
|
|
65
|
-
If true, will reset the
|
|
65
|
+
If true, will reset the policy file for the Tailnet to the default when this resource is destroyed
|
|
66
66
|
"""
|
|
67
67
|
return pulumi.get(self, "reset_acl_on_destroy")
|
|
68
68
|
|
|
@@ -80,8 +80,8 @@ class _AclState:
|
|
|
80
80
|
"""
|
|
81
81
|
Input properties used for looking up and filtering Acl resources.
|
|
82
82
|
:param pulumi.Input[_builtins.str] acl: The policy that defines which devices and users are allowed to connect in your network. Can be either a JSON or a HuJSON string.
|
|
83
|
-
:param pulumi.Input[_builtins.bool] overwrite_existing_content: If true, will skip requirement to import acl before allowing changes. Be careful, can cause
|
|
84
|
-
:param pulumi.Input[_builtins.bool] reset_acl_on_destroy: If true, will reset the
|
|
83
|
+
:param pulumi.Input[_builtins.bool] overwrite_existing_content: If true, will skip requirement to import acl before allowing changes. Be careful, can cause the policy file to be overwritten
|
|
84
|
+
:param pulumi.Input[_builtins.bool] reset_acl_on_destroy: If true, will reset the policy file for the Tailnet to the default when this resource is destroyed
|
|
85
85
|
"""
|
|
86
86
|
if acl is not None:
|
|
87
87
|
pulumi.set(__self__, "acl", acl)
|
|
@@ -106,7 +106,7 @@ class _AclState:
|
|
|
106
106
|
@pulumi.getter(name="overwriteExistingContent")
|
|
107
107
|
def overwrite_existing_content(self) -> Optional[pulumi.Input[_builtins.bool]]:
|
|
108
108
|
"""
|
|
109
|
-
If true, will skip requirement to import acl before allowing changes. Be careful, can cause
|
|
109
|
+
If true, will skip requirement to import acl before allowing changes. Be careful, can cause the policy file to be overwritten
|
|
110
110
|
"""
|
|
111
111
|
return pulumi.get(self, "overwrite_existing_content")
|
|
112
112
|
|
|
@@ -118,7 +118,7 @@ class _AclState:
|
|
|
118
118
|
@pulumi.getter(name="resetAclOnDestroy")
|
|
119
119
|
def reset_acl_on_destroy(self) -> Optional[pulumi.Input[_builtins.bool]]:
|
|
120
120
|
"""
|
|
121
|
-
If true, will reset the
|
|
121
|
+
If true, will reset the policy file for the Tailnet to the default when this resource is destroyed
|
|
122
122
|
"""
|
|
123
123
|
return pulumi.get(self, "reset_acl_on_destroy")
|
|
124
124
|
|
|
@@ -138,9 +138,11 @@ class Acl(pulumi.CustomResource):
|
|
|
138
138
|
reset_acl_on_destroy: Optional[pulumi.Input[_builtins.bool]] = None,
|
|
139
139
|
__props__=None):
|
|
140
140
|
"""
|
|
141
|
-
The acl resource allows you to configure a Tailscale
|
|
141
|
+
The acl resource allows you to configure a Tailscale policy file. See https://tailscale.com/kb/1395/tailnet-policy-file for more information. Note that this resource will completely overwrite existing policy file contents for a given tailnet.
|
|
142
142
|
|
|
143
|
-
If tests are defined in the
|
|
143
|
+
If tests are defined in the policy file (the top-level "tests" section), policy file validation will occur before creation and update operations are applied.
|
|
144
|
+
|
|
145
|
+
> **Note:** The naming of this resource predates Tailscale's usage of the term "policy file" to refer to the centralized configuration file for a tailnet. This resource controls a tailnet's entire policy file and not just the ACLs section within it.
|
|
144
146
|
|
|
145
147
|
## Example Usage
|
|
146
148
|
|
|
@@ -150,20 +152,20 @@ class Acl(pulumi.CustomResource):
|
|
|
150
152
|
import pulumi_tailscale as tailscale
|
|
151
153
|
|
|
152
154
|
as_json = tailscale.Acl("as_json", acl=json.dumps({
|
|
153
|
-
"
|
|
154
|
-
"
|
|
155
|
-
"
|
|
156
|
-
"
|
|
155
|
+
"grants": [{
|
|
156
|
+
"src": ["*"],
|
|
157
|
+
"dst": ["*"],
|
|
158
|
+
"ip": ["*"],
|
|
157
159
|
}],
|
|
158
160
|
}))
|
|
159
161
|
as_hujson = tailscale.Acl("as_hujson", acl=\"\"\" {
|
|
160
162
|
// Comments in HuJSON policy are preserved when the policy is applied.
|
|
161
|
-
"
|
|
163
|
+
\\"grants\\": [
|
|
162
164
|
{
|
|
163
165
|
// Allow all users access to all ports.
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
166
|
+
\\"src\\" = [\\"*\\"],
|
|
167
|
+
\\"dst\\" = [\\"*\\"],
|
|
168
|
+
\\"ip\\" = [\\"*\\"],
|
|
167
169
|
},
|
|
168
170
|
],
|
|
169
171
|
}
|
|
@@ -172,8 +174,6 @@ class Acl(pulumi.CustomResource):
|
|
|
172
174
|
|
|
173
175
|
## Import
|
|
174
176
|
|
|
175
|
-
The `pulumi import` command can be used, for example:
|
|
176
|
-
|
|
177
177
|
ID doesn't matter.
|
|
178
178
|
|
|
179
179
|
```sh
|
|
@@ -183,8 +183,8 @@ class Acl(pulumi.CustomResource):
|
|
|
183
183
|
:param str resource_name: The name of the resource.
|
|
184
184
|
:param pulumi.ResourceOptions opts: Options for the resource.
|
|
185
185
|
:param pulumi.Input[_builtins.str] acl: The policy that defines which devices and users are allowed to connect in your network. Can be either a JSON or a HuJSON string.
|
|
186
|
-
:param pulumi.Input[_builtins.bool] overwrite_existing_content: If true, will skip requirement to import acl before allowing changes. Be careful, can cause
|
|
187
|
-
:param pulumi.Input[_builtins.bool] reset_acl_on_destroy: If true, will reset the
|
|
186
|
+
:param pulumi.Input[_builtins.bool] overwrite_existing_content: If true, will skip requirement to import acl before allowing changes. Be careful, can cause the policy file to be overwritten
|
|
187
|
+
:param pulumi.Input[_builtins.bool] reset_acl_on_destroy: If true, will reset the policy file for the Tailnet to the default when this resource is destroyed
|
|
188
188
|
"""
|
|
189
189
|
...
|
|
190
190
|
@overload
|
|
@@ -193,9 +193,11 @@ class Acl(pulumi.CustomResource):
|
|
|
193
193
|
args: AclArgs,
|
|
194
194
|
opts: Optional[pulumi.ResourceOptions] = None):
|
|
195
195
|
"""
|
|
196
|
-
The acl resource allows you to configure a Tailscale
|
|
196
|
+
The acl resource allows you to configure a Tailscale policy file. See https://tailscale.com/kb/1395/tailnet-policy-file for more information. Note that this resource will completely overwrite existing policy file contents for a given tailnet.
|
|
197
197
|
|
|
198
|
-
If tests are defined in the
|
|
198
|
+
If tests are defined in the policy file (the top-level "tests" section), policy file validation will occur before creation and update operations are applied.
|
|
199
|
+
|
|
200
|
+
> **Note:** The naming of this resource predates Tailscale's usage of the term "policy file" to refer to the centralized configuration file for a tailnet. This resource controls a tailnet's entire policy file and not just the ACLs section within it.
|
|
199
201
|
|
|
200
202
|
## Example Usage
|
|
201
203
|
|
|
@@ -205,20 +207,20 @@ class Acl(pulumi.CustomResource):
|
|
|
205
207
|
import pulumi_tailscale as tailscale
|
|
206
208
|
|
|
207
209
|
as_json = tailscale.Acl("as_json", acl=json.dumps({
|
|
208
|
-
"
|
|
209
|
-
"
|
|
210
|
-
"
|
|
211
|
-
"
|
|
210
|
+
"grants": [{
|
|
211
|
+
"src": ["*"],
|
|
212
|
+
"dst": ["*"],
|
|
213
|
+
"ip": ["*"],
|
|
212
214
|
}],
|
|
213
215
|
}))
|
|
214
216
|
as_hujson = tailscale.Acl("as_hujson", acl=\"\"\" {
|
|
215
217
|
// Comments in HuJSON policy are preserved when the policy is applied.
|
|
216
|
-
"
|
|
218
|
+
\\"grants\\": [
|
|
217
219
|
{
|
|
218
220
|
// Allow all users access to all ports.
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
221
|
+
\\"src\\" = [\\"*\\"],
|
|
222
|
+
\\"dst\\" = [\\"*\\"],
|
|
223
|
+
\\"ip\\" = [\\"*\\"],
|
|
222
224
|
},
|
|
223
225
|
],
|
|
224
226
|
}
|
|
@@ -227,8 +229,6 @@ class Acl(pulumi.CustomResource):
|
|
|
227
229
|
|
|
228
230
|
## Import
|
|
229
231
|
|
|
230
|
-
The `pulumi import` command can be used, for example:
|
|
231
|
-
|
|
232
232
|
ID doesn't matter.
|
|
233
233
|
|
|
234
234
|
```sh
|
|
@@ -288,8 +288,8 @@ class Acl(pulumi.CustomResource):
|
|
|
288
288
|
:param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
|
|
289
289
|
:param pulumi.ResourceOptions opts: Options for the resource.
|
|
290
290
|
:param pulumi.Input[_builtins.str] acl: The policy that defines which devices and users are allowed to connect in your network. Can be either a JSON or a HuJSON string.
|
|
291
|
-
:param pulumi.Input[_builtins.bool] overwrite_existing_content: If true, will skip requirement to import acl before allowing changes. Be careful, can cause
|
|
292
|
-
:param pulumi.Input[_builtins.bool] reset_acl_on_destroy: If true, will reset the
|
|
291
|
+
:param pulumi.Input[_builtins.bool] overwrite_existing_content: If true, will skip requirement to import acl before allowing changes. Be careful, can cause the policy file to be overwritten
|
|
292
|
+
:param pulumi.Input[_builtins.bool] reset_acl_on_destroy: If true, will reset the policy file for the Tailnet to the default when this resource is destroyed
|
|
293
293
|
"""
|
|
294
294
|
opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
|
|
295
295
|
|
|
@@ -312,7 +312,7 @@ class Acl(pulumi.CustomResource):
|
|
|
312
312
|
@pulumi.getter(name="overwriteExistingContent")
|
|
313
313
|
def overwrite_existing_content(self) -> pulumi.Output[Optional[_builtins.bool]]:
|
|
314
314
|
"""
|
|
315
|
-
If true, will skip requirement to import acl before allowing changes. Be careful, can cause
|
|
315
|
+
If true, will skip requirement to import acl before allowing changes. Be careful, can cause the policy file to be overwritten
|
|
316
316
|
"""
|
|
317
317
|
return pulumi.get(self, "overwrite_existing_content")
|
|
318
318
|
|
|
@@ -320,7 +320,7 @@ class Acl(pulumi.CustomResource):
|
|
|
320
320
|
@pulumi.getter(name="resetAclOnDestroy")
|
|
321
321
|
def reset_acl_on_destroy(self) -> pulumi.Output[Optional[_builtins.bool]]:
|
|
322
322
|
"""
|
|
323
|
-
If true, will reset the
|
|
323
|
+
If true, will reset the policy file for the Tailnet to the default when this resource is destroyed
|
|
324
324
|
"""
|
|
325
325
|
return pulumi.get(self, "reset_acl_on_destroy")
|
|
326
326
|
|
|
@@ -24,24 +24,29 @@ baseUrl: Optional[str]
|
|
|
24
24
|
The base URL of the Tailscale API. Defaults to https://api.tailscale.com. Can be set via the TAILSCALE_BASE_URL environment variable.
|
|
25
25
|
"""
|
|
26
26
|
|
|
27
|
+
identityToken: Optional[str]
|
|
28
|
+
"""
|
|
29
|
+
The jwt identity token to exchange for a Tailscale API token when using a federated identity client. Can be set via the TAILSCALE_IDENTITY_TOKEN environment variable. Conflicts with 'api_key' and 'oauth_client_secret'.
|
|
30
|
+
"""
|
|
31
|
+
|
|
27
32
|
oauthClientId: Optional[str]
|
|
28
33
|
"""
|
|
29
|
-
The OAuth application's ID when using OAuth client credentials. Can be set via the TAILSCALE_OAUTH_CLIENT_ID environment variable.
|
|
34
|
+
The OAuth application's ID when using OAuth client credentials. Can be set via the TAILSCALE_OAUTH_CLIENT_ID environment variable. Either 'oauth_client_secret' or 'identity_token' must be set alongside 'oauth_client_id'. Conflicts with 'api_key'.
|
|
30
35
|
"""
|
|
31
36
|
|
|
32
37
|
oauthClientSecret: Optional[str]
|
|
33
38
|
"""
|
|
34
|
-
The OAuth application's secret when using OAuth client credentials. Can be set via the TAILSCALE_OAUTH_CLIENT_SECRET environment variable.
|
|
39
|
+
The OAuth application's secret when using OAuth client credentials. Can be set via the TAILSCALE_OAUTH_CLIENT_SECRET environment variable. Conflicts with 'api_key' and 'identity_token'.
|
|
35
40
|
"""
|
|
36
41
|
|
|
37
42
|
scopes: Optional[str]
|
|
38
43
|
"""
|
|
39
|
-
The OAuth 2.0 scopes to request when
|
|
44
|
+
The OAuth 2.0 scopes to request when generating the access token using the supplied OAuth client credentials. See https://tailscale.com/kb/1215/oauth-clients/#scopes for available scopes. Only valid when both 'oauth_client_id' and 'oauth_client_secret' are set.
|
|
40
45
|
"""
|
|
41
46
|
|
|
42
47
|
tailnet: Optional[str]
|
|
43
48
|
"""
|
|
44
|
-
The
|
|
49
|
+
The tailnet ID. Tailnets created before Oct 2025 can still use the legacy ID, but the Tailnet ID is the preferred identifier. Can be set via the TAILSCALE_TAILNET environment variable. Default is the tailnet that owns API credentials passed to the provider.
|
|
45
50
|
"""
|
|
46
51
|
|
|
47
52
|
userAgent: Optional[str]
|
|
@@ -34,31 +34,38 @@ class _ExportableConfig(types.ModuleType):
|
|
|
34
34
|
"""
|
|
35
35
|
return __config__.get('baseUrl')
|
|
36
36
|
|
|
37
|
+
@_builtins.property
|
|
38
|
+
def identity_token(self) -> Optional[str]:
|
|
39
|
+
"""
|
|
40
|
+
The jwt identity token to exchange for a Tailscale API token when using a federated identity client. Can be set via the TAILSCALE_IDENTITY_TOKEN environment variable. Conflicts with 'api_key' and 'oauth_client_secret'.
|
|
41
|
+
"""
|
|
42
|
+
return __config__.get('identityToken')
|
|
43
|
+
|
|
37
44
|
@_builtins.property
|
|
38
45
|
def oauth_client_id(self) -> Optional[str]:
|
|
39
46
|
"""
|
|
40
|
-
The OAuth application's ID when using OAuth client credentials. Can be set via the TAILSCALE_OAUTH_CLIENT_ID environment variable.
|
|
47
|
+
The OAuth application's ID when using OAuth client credentials. Can be set via the TAILSCALE_OAUTH_CLIENT_ID environment variable. Either 'oauth_client_secret' or 'identity_token' must be set alongside 'oauth_client_id'. Conflicts with 'api_key'.
|
|
41
48
|
"""
|
|
42
49
|
return __config__.get('oauthClientId')
|
|
43
50
|
|
|
44
51
|
@_builtins.property
|
|
45
52
|
def oauth_client_secret(self) -> Optional[str]:
|
|
46
53
|
"""
|
|
47
|
-
The OAuth application's secret when using OAuth client credentials. Can be set via the TAILSCALE_OAUTH_CLIENT_SECRET environment variable.
|
|
54
|
+
The OAuth application's secret when using OAuth client credentials. Can be set via the TAILSCALE_OAUTH_CLIENT_SECRET environment variable. Conflicts with 'api_key' and 'identity_token'.
|
|
48
55
|
"""
|
|
49
56
|
return __config__.get('oauthClientSecret')
|
|
50
57
|
|
|
51
58
|
@_builtins.property
|
|
52
59
|
def scopes(self) -> Optional[str]:
|
|
53
60
|
"""
|
|
54
|
-
The OAuth 2.0 scopes to request when
|
|
61
|
+
The OAuth 2.0 scopes to request when generating the access token using the supplied OAuth client credentials. See https://tailscale.com/kb/1215/oauth-clients/#scopes for available scopes. Only valid when both 'oauth_client_id' and 'oauth_client_secret' are set.
|
|
55
62
|
"""
|
|
56
63
|
return __config__.get('scopes')
|
|
57
64
|
|
|
58
65
|
@_builtins.property
|
|
59
66
|
def tailnet(self) -> Optional[str]:
|
|
60
67
|
"""
|
|
61
|
-
The
|
|
68
|
+
The tailnet ID. Tailnets created before Oct 2025 can still use the legacy ID, but the Tailnet ID is the preferred identifier. Can be set via the TAILSCALE_TAILNET environment variable. Default is the tailnet that owns API credentials passed to the provider.
|
|
62
69
|
"""
|
|
63
70
|
return __config__.get('tailnet')
|
|
64
71
|
|