Tailscale v0.26.0 published on Thursday, Feb 12, 2026 by Pulumi
Tailscale v0.26.0 published on Thursday, Feb 12, 2026 by Pulumi
The devices data source describes a list of devices in a tailnet
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as tailscale from "@pulumi/tailscale";
const sampleDevices = tailscale.getDevices({
namePrefix: "example-",
filters: [
{
name: "isEphemeral",
values: ["true"],
},
{
name: "tags",
values: [
"tag:server",
"tag:test",
],
},
],
});
import pulumi
import pulumi_tailscale as tailscale
sample_devices = tailscale.get_devices(name_prefix="example-",
filters=[
{
"name": "isEphemeral",
"values": ["true"],
},
{
"name": "tags",
"values": [
"tag:server",
"tag:test",
],
},
])
package main
import (
"github.com/pulumi/pulumi-tailscale/sdk/go/tailscale"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := tailscale.GetDevices(ctx, &tailscale.GetDevicesArgs{
NamePrefix: pulumi.StringRef("example-"),
Filters: []tailscale.GetDevicesFilter{
{
Name: "isEphemeral",
Values: []string{
"true",
},
},
{
Name: "tags",
Values: []string{
"tag:server",
"tag:test",
},
},
},
}, nil)
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Tailscale = Pulumi.Tailscale;
return await Deployment.RunAsync(() =>
{
var sampleDevices = Tailscale.GetDevices.Invoke(new()
{
NamePrefix = "example-",
Filters = new[]
{
new Tailscale.Inputs.GetDevicesFilterInputArgs
{
Name = "isEphemeral",
Values = new[]
{
"true",
},
},
new Tailscale.Inputs.GetDevicesFilterInputArgs
{
Name = "tags",
Values = new[]
{
"tag:server",
"tag:test",
},
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.tailscale.TailscaleFunctions;
import com.pulumi.tailscale.inputs.GetDevicesArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var sampleDevices = TailscaleFunctions.getDevices(GetDevicesArgs.builder()
.namePrefix("example-")
.filters(
GetDevicesFilterArgs.builder()
.name("isEphemeral")
.values("true")
.build(),
GetDevicesFilterArgs.builder()
.name("tags")
.values(
"tag:server",
"tag:test")
.build())
.build());
}
}
variables:
sampleDevices:
fn::invoke:
function: tailscale:getDevices
arguments:
namePrefix: example-
filters:
- name: isEphemeral
values:
- 'true'
- name: tags
values:
- tag:server
- tag:test
Using getDevices
Two invocation forms are available. The direct form accepts plain arguments and either blocks until the result value is available, or returns a Promise-wrapped result. The output form accepts Input-wrapped arguments and returns an Output-wrapped result.
function getDevices(args: GetDevicesArgs, opts?: InvokeOptions): Promise<GetDevicesResult>
function getDevicesOutput(args: GetDevicesOutputArgs, opts?: InvokeOptions): Output<GetDevicesResult>def get_devices(filters: Optional[Sequence[GetDevicesFilter]] = None,
name_prefix: Optional[str] = None,
opts: Optional[InvokeOptions] = None) -> GetDevicesResult
def get_devices_output(filters: Optional[pulumi.Input[Sequence[pulumi.Input[GetDevicesFilterArgs]]]] = None,
name_prefix: Optional[pulumi.Input[str]] = None,
opts: Optional[InvokeOptions] = None) -> Output[GetDevicesResult]func GetDevices(ctx *Context, args *GetDevicesArgs, opts ...InvokeOption) (*GetDevicesResult, error)
func GetDevicesOutput(ctx *Context, args *GetDevicesOutputArgs, opts ...InvokeOption) GetDevicesResultOutput> Note: This function is named GetDevices in the Go SDK.
public static class GetDevices
{
public static Task<GetDevicesResult> InvokeAsync(GetDevicesArgs args, InvokeOptions? opts = null)
public static Output<GetDevicesResult> Invoke(GetDevicesInvokeArgs args, InvokeOptions? opts = null)
}public static CompletableFuture<GetDevicesResult> getDevices(GetDevicesArgs args, InvokeOptions options)
public static Output<GetDevicesResult> getDevices(GetDevicesArgs args, InvokeOptions options)
fn::invoke:
function: tailscale:index/getDevices:getDevices
arguments:
# arguments dictionaryThe following arguments are supported:
- Filters
List<Get
Devices Filter> - Filters the device list to elements devices whose fields match the provided values.
- Name
Prefix string - Filters the device list to elements whose name has the provided prefix
- Filters
[]Get
Devices Filter - Filters the device list to elements devices whose fields match the provided values.
- Name
Prefix string - Filters the device list to elements whose name has the provided prefix
- filters
List<Get
Devices Filter> - Filters the device list to elements devices whose fields match the provided values.
- name
Prefix String - Filters the device list to elements whose name has the provided prefix
- filters
Get
Devices Filter[] - Filters the device list to elements devices whose fields match the provided values.
- name
Prefix string - Filters the device list to elements whose name has the provided prefix
- filters
Sequence[Get
Devices Filter] - Filters the device list to elements devices whose fields match the provided values.
- name_
prefix str - Filters the device list to elements whose name has the provided prefix
- filters List<Property Map>
- Filters the device list to elements devices whose fields match the provided values.
- name
Prefix String - Filters the device list to elements whose name has the provided prefix
getDevices Result
The following output properties are available:
- Devices
List<Get
Devices Device> - The list of devices in the tailnet
- Id string
- The provider-assigned unique ID for this managed resource.
- Filters
List<Get
Devices Filter> - Filters the device list to elements devices whose fields match the provided values.
- Name
Prefix string - Filters the device list to elements whose name has the provided prefix
- Devices
[]Get
Devices Device - The list of devices in the tailnet
- Id string
- The provider-assigned unique ID for this managed resource.
- Filters
[]Get
Devices Filter - Filters the device list to elements devices whose fields match the provided values.
- Name
Prefix string - Filters the device list to elements whose name has the provided prefix
- devices
List<Get
Devices Device> - The list of devices in the tailnet
- id String
- The provider-assigned unique ID for this managed resource.
- filters
List<Get
Devices Filter> - Filters the device list to elements devices whose fields match the provided values.
- name
Prefix String - Filters the device list to elements whose name has the provided prefix
- devices
Get
Devices Device[] - The list of devices in the tailnet
- id string
- The provider-assigned unique ID for this managed resource.
- filters
Get
Devices Filter[] - Filters the device list to elements devices whose fields match the provided values.
- name
Prefix string - Filters the device list to elements whose name has the provided prefix
- devices
Sequence[Get
Devices Device] - The list of devices in the tailnet
- id str
- The provider-assigned unique ID for this managed resource.
- filters
Sequence[Get
Devices Filter] - Filters the device list to elements devices whose fields match the provided values.
- name_
prefix str - Filters the device list to elements whose name has the provided prefix
- devices List<Property Map>
- The list of devices in the tailnet
- id String
- The provider-assigned unique ID for this managed resource.
- filters List<Property Map>
- Filters the device list to elements devices whose fields match the provided values.
- name
Prefix String - Filters the device list to elements whose name has the provided prefix
Supporting Types
GetDevicesDevice
- Addresses List<string>
- The list of device's IPs
- bool
- Whether the device is authorized to access the tailnet
- Blocks
Incoming boolConnections - Whether the device blocks incoming connections
- Client
Version string - The Tailscale client version running on the device
- Created string
- The creation time of the device
- Expires string
- The expiry time of the device's key
- Hostname string
- The short hostname of the device
- Id string
- The legacy identifier of the device. Use node_id instead for new resources.
- Is
External bool - Whether the device is marked as external
- Key
Expiry boolDisabled - Whether the device's key expiry is disabled
- Last
Seen string - The last seen time of the device
- Machine
Key string - The machine key of the device
- Name string
- The full name of the device (e.g.
hostname.domain.ts.net) - Node
Id string - The preferred indentifier for a device.
- Node
Key string - The node key of the device
- Os string
- The operating system of the device
- List<string>
- The tags applied to the device
- Tailnet
Lock stringError - The tailnet lock error for the device, if any
- Tailnet
Lock stringKey - The tailnet lock key for the device, if any
- Update
Available bool - Whether an update is available for the device
- User string
- The user associated with the device
- Addresses []string
- The list of device's IPs
- bool
- Whether the device is authorized to access the tailnet
- Blocks
Incoming boolConnections - Whether the device blocks incoming connections
- Client
Version string - The Tailscale client version running on the device
- Created string
- The creation time of the device
- Expires string
- The expiry time of the device's key
- Hostname string
- The short hostname of the device
- Id string
- The legacy identifier of the device. Use node_id instead for new resources.
- Is
External bool - Whether the device is marked as external
- Key
Expiry boolDisabled - Whether the device's key expiry is disabled
- Last
Seen string - The last seen time of the device
- Machine
Key string - The machine key of the device
- Name string
- The full name of the device (e.g.
hostname.domain.ts.net) - Node
Id string - The preferred indentifier for a device.
- Node
Key string - The node key of the device
- Os string
- The operating system of the device
- []string
- The tags applied to the device
- Tailnet
Lock stringError - The tailnet lock error for the device, if any
- Tailnet
Lock stringKey - The tailnet lock key for the device, if any
- Update
Available bool - Whether an update is available for the device
- User string
- The user associated with the device
- addresses List<String>
- The list of device's IPs
- Boolean
- Whether the device is authorized to access the tailnet
- blocks
Incoming BooleanConnections - Whether the device blocks incoming connections
- client
Version String - The Tailscale client version running on the device
- created String
- The creation time of the device
- expires String
- The expiry time of the device's key
- hostname String
- The short hostname of the device
- id String
- The legacy identifier of the device. Use node_id instead for new resources.
- is
External Boolean - Whether the device is marked as external
- key
Expiry BooleanDisabled - Whether the device's key expiry is disabled
- last
Seen String - The last seen time of the device
- machine
Key String - The machine key of the device
- name String
- The full name of the device (e.g.
hostname.domain.ts.net) - node
Id String - The preferred indentifier for a device.
- node
Key String - The node key of the device
- os String
- The operating system of the device
- List<String>
- The tags applied to the device
- tailnet
Lock StringError - The tailnet lock error for the device, if any
- tailnet
Lock StringKey - The tailnet lock key for the device, if any
- update
Available Boolean - Whether an update is available for the device
- user String
- The user associated with the device
- addresses string[]
- The list of device's IPs
- boolean
- Whether the device is authorized to access the tailnet
- blocks
Incoming booleanConnections - Whether the device blocks incoming connections
- client
Version string - The Tailscale client version running on the device
- created string
- The creation time of the device
- expires string
- The expiry time of the device's key
- hostname string
- The short hostname of the device
- id string
- The legacy identifier of the device. Use node_id instead for new resources.
- is
External boolean - Whether the device is marked as external
- key
Expiry booleanDisabled - Whether the device's key expiry is disabled
- last
Seen string - The last seen time of the device
- machine
Key string - The machine key of the device
- name string
- The full name of the device (e.g.
hostname.domain.ts.net) - node
Id string - The preferred indentifier for a device.
- node
Key string - The node key of the device
- os string
- The operating system of the device
- string[]
- The tags applied to the device
- tailnet
Lock stringError - The tailnet lock error for the device, if any
- tailnet
Lock stringKey - The tailnet lock key for the device, if any
- update
Available boolean - Whether an update is available for the device
- user string
- The user associated with the device
- addresses Sequence[str]
- The list of device's IPs
- bool
- Whether the device is authorized to access the tailnet
- blocks_
incoming_ boolconnections - Whether the device blocks incoming connections
- client_
version str - The Tailscale client version running on the device
- created str
- The creation time of the device
- expires str
- The expiry time of the device's key
- hostname str
- The short hostname of the device
- id str
- The legacy identifier of the device. Use node_id instead for new resources.
- is_
external bool - Whether the device is marked as external
- key_
expiry_ booldisabled - Whether the device's key expiry is disabled
- last_
seen str - The last seen time of the device
- machine_
key str - The machine key of the device
- name str
- The full name of the device (e.g.
hostname.domain.ts.net) - node_
id str - The preferred indentifier for a device.
- node_
key str - The node key of the device
- os str
- The operating system of the device
- Sequence[str]
- The tags applied to the device
- tailnet_
lock_ strerror - The tailnet lock error for the device, if any
- tailnet_
lock_ strkey - The tailnet lock key for the device, if any
- update_
available bool - Whether an update is available for the device
- user str
- The user associated with the device
- addresses List<String>
- The list of device's IPs
- Boolean
- Whether the device is authorized to access the tailnet
- blocks
Incoming BooleanConnections - Whether the device blocks incoming connections
- client
Version String - The Tailscale client version running on the device
- created String
- The creation time of the device
- expires String
- The expiry time of the device's key
- hostname String
- The short hostname of the device
- id String
- The legacy identifier of the device. Use node_id instead for new resources.
- is
External Boolean - Whether the device is marked as external
- key
Expiry BooleanDisabled - Whether the device's key expiry is disabled
- last
Seen String - The last seen time of the device
- machine
Key String - The machine key of the device
- name String
- The full name of the device (e.g.
hostname.domain.ts.net) - node
Id String - The preferred indentifier for a device.
- node
Key String - The node key of the device
- os String
- The operating system of the device
- List<String>
- The tags applied to the device
- tailnet
Lock StringError - The tailnet lock error for the device, if any
- tailnet
Lock StringKey - The tailnet lock key for the device, if any
- update
Available Boolean - Whether an update is available for the device
- user String
- The user associated with the device
GetDevicesFilter
Package Details
- Repository
- tailscale pulumi/pulumi-tailscale
- License
- Apache-2.0
- Notes
- This Pulumi package is based on the
tailscaleTerraform Provider.
Tailscale v0.26.0 published on Thursday, Feb 12, 2026 by Pulumi
