1. Packages
  2. Linode Provider
  3. API Docs
  4. Interface
Linode v5.6.0 published on Wednesday, Dec 24, 2025 by Pulumi
linode logo
Linode v5.6.0 published on Wednesday, Dec 24, 2025 by Pulumi

    Provides a Linode Interface resource that can be used to create, modify, and delete network interfaces for Linode instances. Interfaces allow you to configure public, VLAN, and VPC networking for your Linode instances.

    This resource is specifically for Linode interfaces. If you are interested in deploying a Linode instance with a legacy config interface, please refer to the linode.InstanceConfig resource documentation for details.

    This resource is designed to work with explicitly defined disk and config resources for the Linode instance. See the Complete Example with Linode section below for details.

    For more information, see the Linode APIv4 docs.

    Example Usage

    Public Interface Example

    The following example shows how to create a public interface with specific IPv4 and IPv6 configurations.

    import * as pulumi from "@pulumi/pulumi";
    import * as linode from "@pulumi/linode";
    
    const _public = new linode.Interface("public", {
        linodeId: my_instance.id,
        "public": {
            ipv4: {
                addresses: [{
                    address: "auto",
                    primary: true,
                }],
            },
            ipv6: {
                ranges: [{
                    range: "/64",
                }],
            },
        },
    });
    
    import pulumi
    import pulumi_linode as linode
    
    public = linode.Interface("public",
        linode_id=my_instance["id"],
        public={
            "ipv4": {
                "addresses": [{
                    "address": "auto",
                    "primary": True,
                }],
            },
            "ipv6": {
                "ranges": [{
                    "range": "/64",
                }],
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-linode/sdk/v5/go/linode"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := linode.NewInterface(ctx, "public", &linode.InterfaceArgs{
    			LinodeId: pulumi.Any(my_instance.Id),
    			Public: &linode.InterfacePublicArgs{
    				Ipv4: &linode.InterfacePublicIpv4Args{
    					Addresses: linode.InterfacePublicIpv4AddressArray{
    						&linode.InterfacePublicIpv4AddressArgs{
    							Address: pulumi.String("auto"),
    							Primary: pulumi.Bool(true),
    						},
    					},
    				},
    				Ipv6: &linode.InterfacePublicIpv6Args{
    					Ranges: linode.InterfacePublicIpv6RangeArray{
    						&linode.InterfacePublicIpv6RangeArgs{
    							Range: pulumi.String("/64"),
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Linode = Pulumi.Linode;
    
    return await Deployment.RunAsync(() => 
    {
        var @public = new Linode.Interface("public", new()
        {
            LinodeId = my_instance.Id,
            Public = new Linode.Inputs.InterfacePublicArgs
            {
                Ipv4 = new Linode.Inputs.InterfacePublicIpv4Args
                {
                    Addresses = new[]
                    {
                        new Linode.Inputs.InterfacePublicIpv4AddressArgs
                        {
                            Address = "auto",
                            Primary = true,
                        },
                    },
                },
                Ipv6 = new Linode.Inputs.InterfacePublicIpv6Args
                {
                    Ranges = new[]
                    {
                        new Linode.Inputs.InterfacePublicIpv6RangeArgs
                        {
                            Range = "/64",
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.linode.Interface;
    import com.pulumi.linode.InterfaceArgs;
    import com.pulumi.linode.inputs.InterfacePublicArgs;
    import com.pulumi.linode.inputs.InterfacePublicIpv4Args;
    import com.pulumi.linode.inputs.InterfacePublicIpv6Args;
    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) {
            var public_ = new Interface("public", InterfaceArgs.builder()
                .linodeId(my_instance.id())
                .public_(InterfacePublicArgs.builder()
                    .ipv4(InterfacePublicIpv4Args.builder()
                        .addresses(InterfacePublicIpv4AddressArgs.builder()
                            .address("auto")
                            .primary(true)
                            .build())
                        .build())
                    .ipv6(InterfacePublicIpv6Args.builder()
                        .ranges(InterfacePublicIpv6RangeArgs.builder()
                            .range("/64")
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      public:
        type: linode:Interface
        properties:
          linodeId: ${["my-instance"].id}
          public:
            ipv4:
              addresses:
                - address: auto
                  primary: true
            ipv6:
              ranges:
                - range: /64
    

    IPv6-Only Public Interface Example

    The following example shows how to create an IPv6-only public interface. Note that you must explicitly set addresses = [] to prevent the automatic creation of an IPv4 address.

    import * as pulumi from "@pulumi/pulumi";
    import * as linode from "@pulumi/linode";
    
    const ipv6Only = new linode.Interface("ipv6_only", {
        linodeId: my_instance.id,
        "public": {
            ipv4: {
                addresses: [],
            },
            ipv6: {
                ranges: [{
                    range: "/64",
                }],
            },
        },
    });
    
    import pulumi
    import pulumi_linode as linode
    
    ipv6_only = linode.Interface("ipv6_only",
        linode_id=my_instance["id"],
        public={
            "ipv4": {
                "addresses": [],
            },
            "ipv6": {
                "ranges": [{
                    "range": "/64",
                }],
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-linode/sdk/v5/go/linode"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := linode.NewInterface(ctx, "ipv6_only", &linode.InterfaceArgs{
    			LinodeId: pulumi.Any(my_instance.Id),
    			Public: &linode.InterfacePublicArgs{
    				Ipv4: &linode.InterfacePublicIpv4Args{
    					Addresses: linode.InterfacePublicIpv4AddressArray{},
    				},
    				Ipv6: &linode.InterfacePublicIpv6Args{
    					Ranges: linode.InterfacePublicIpv6RangeArray{
    						&linode.InterfacePublicIpv6RangeArgs{
    							Range: pulumi.String("/64"),
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Linode = Pulumi.Linode;
    
    return await Deployment.RunAsync(() => 
    {
        var ipv6Only = new Linode.Interface("ipv6_only", new()
        {
            LinodeId = my_instance.Id,
            Public = new Linode.Inputs.InterfacePublicArgs
            {
                Ipv4 = new Linode.Inputs.InterfacePublicIpv4Args
                {
                    Addresses = new() { },
                },
                Ipv6 = new Linode.Inputs.InterfacePublicIpv6Args
                {
                    Ranges = new[]
                    {
                        new Linode.Inputs.InterfacePublicIpv6RangeArgs
                        {
                            Range = "/64",
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.linode.Interface;
    import com.pulumi.linode.InterfaceArgs;
    import com.pulumi.linode.inputs.InterfacePublicArgs;
    import com.pulumi.linode.inputs.InterfacePublicIpv4Args;
    import com.pulumi.linode.inputs.InterfacePublicIpv6Args;
    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) {
            var ipv6Only = new Interface("ipv6Only", InterfaceArgs.builder()
                .linodeId(my_instance.id())
                .public_(InterfacePublicArgs.builder()
                    .ipv4(InterfacePublicIpv4Args.builder()
                        .addresses()
                        .build())
                    .ipv6(InterfacePublicIpv6Args.builder()
                        .ranges(InterfacePublicIpv6RangeArgs.builder()
                            .range("/64")
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      ipv6Only:
        type: linode:Interface
        name: ipv6_only
        properties:
          linodeId: ${["my-instance"].id}
          public:
            ipv4:
              addresses: []
            ipv6:
              ranges:
                - range: /64
    

    VPC Interface Example

    The following example shows how to create a VPC interface with custom IPv4 configuration and 1:1 NAT.

    import * as pulumi from "@pulumi/pulumi";
    import * as linode from "@pulumi/linode";
    
    const vpc = new linode.Interface("vpc", {
        linodeId: my_instance.id,
        vpc: {
            subnetId: 240213,
            ipv4: {
                addresses: [{
                    address: "auto",
                }],
                ranges: [{
                    range: "/32",
                }],
            },
        },
    });
    
    import pulumi
    import pulumi_linode as linode
    
    vpc = linode.Interface("vpc",
        linode_id=my_instance["id"],
        vpc={
            "subnet_id": 240213,
            "ipv4": {
                "addresses": [{
                    "address": "auto",
                }],
                "ranges": [{
                    "range": "/32",
                }],
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-linode/sdk/v5/go/linode"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := linode.NewInterface(ctx, "vpc", &linode.InterfaceArgs{
    			LinodeId: pulumi.Any(my_instance.Id),
    			Vpc: &linode.InterfaceVpcArgs{
    				SubnetId: pulumi.Int(240213),
    				Ipv4: &linode.InterfaceVpcIpv4Args{
    					Addresses: linode.InterfaceVpcIpv4AddressArray{
    						&linode.InterfaceVpcIpv4AddressArgs{
    							Address: pulumi.String("auto"),
    						},
    					},
    					Ranges: linode.InterfaceVpcIpv4RangeArray{
    						&linode.InterfaceVpcIpv4RangeArgs{
    							Range: pulumi.String("/32"),
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Linode = Pulumi.Linode;
    
    return await Deployment.RunAsync(() => 
    {
        var vpc = new Linode.Interface("vpc", new()
        {
            LinodeId = my_instance.Id,
            Vpc = new Linode.Inputs.InterfaceVpcArgs
            {
                SubnetId = 240213,
                Ipv4 = new Linode.Inputs.InterfaceVpcIpv4Args
                {
                    Addresses = new[]
                    {
                        new Linode.Inputs.InterfaceVpcIpv4AddressArgs
                        {
                            Address = "auto",
                        },
                    },
                    Ranges = new[]
                    {
                        new Linode.Inputs.InterfaceVpcIpv4RangeArgs
                        {
                            Range = "/32",
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.linode.Interface;
    import com.pulumi.linode.InterfaceArgs;
    import com.pulumi.linode.inputs.InterfaceVpcArgs;
    import com.pulumi.linode.inputs.InterfaceVpcIpv4Args;
    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) {
            var vpc = new Interface("vpc", InterfaceArgs.builder()
                .linodeId(my_instance.id())
                .vpc(InterfaceVpcArgs.builder()
                    .subnetId(240213)
                    .ipv4(InterfaceVpcIpv4Args.builder()
                        .addresses(InterfaceVpcIpv4AddressArgs.builder()
                            .address("auto")
                            .build())
                        .ranges(InterfaceVpcIpv4RangeArgs.builder()
                            .range("/32")
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      vpc:
        type: linode:Interface
        properties:
          linodeId: ${["my-instance"].id}
          vpc:
            subnetId: 240213
            ipv4:
              addresses:
                - address: auto
              ranges:
                - range: /32
    

    VPC (IPv6) Interface Example

    The following example shows how to create a public VPC interface with a custom IPv6 configuration.

    import * as pulumi from "@pulumi/pulumi";
    import * as linode from "@pulumi/linode";
    
    const vpc = new linode.Interface("vpc", {
        linodeId: my_instance.id,
        vpc: {
            subnetId: 12345,
            ipv6: {
                isPublic: true,
                slaacs: [{
                    range: "auto",
                }],
                ranges: [{
                    range: "auto",
                }],
            },
        },
    });
    
    import pulumi
    import pulumi_linode as linode
    
    vpc = linode.Interface("vpc",
        linode_id=my_instance["id"],
        vpc={
            "subnet_id": 12345,
            "ipv6": {
                "is_public": True,
                "slaacs": [{
                    "range": "auto",
                }],
                "ranges": [{
                    "range": "auto",
                }],
            },
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-linode/sdk/v5/go/linode"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := linode.NewInterface(ctx, "vpc", &linode.InterfaceArgs{
    			LinodeId: pulumi.Any(my_instance.Id),
    			Vpc: &linode.InterfaceVpcArgs{
    				SubnetId: pulumi.Int(12345),
    				Ipv6: &linode.InterfaceVpcIpv6Args{
    					IsPublic: pulumi.Bool(true),
    					Slaacs: linode.InterfaceVpcIpv6SlaacArray{
    						&linode.InterfaceVpcIpv6SlaacArgs{
    							Range: pulumi.String("auto"),
    						},
    					},
    					Ranges: linode.InterfaceVpcIpv6RangeArray{
    						&linode.InterfaceVpcIpv6RangeArgs{
    							Range: pulumi.String("auto"),
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Linode = Pulumi.Linode;
    
    return await Deployment.RunAsync(() => 
    {
        var vpc = new Linode.Interface("vpc", new()
        {
            LinodeId = my_instance.Id,
            Vpc = new Linode.Inputs.InterfaceVpcArgs
            {
                SubnetId = 12345,
                Ipv6 = new Linode.Inputs.InterfaceVpcIpv6Args
                {
                    IsPublic = true,
                    Slaacs = new[]
                    {
                        new Linode.Inputs.InterfaceVpcIpv6SlaacArgs
                        {
                            Range = "auto",
                        },
                    },
                    Ranges = new[]
                    {
                        new Linode.Inputs.InterfaceVpcIpv6RangeArgs
                        {
                            Range = "auto",
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.linode.Interface;
    import com.pulumi.linode.InterfaceArgs;
    import com.pulumi.linode.inputs.InterfaceVpcArgs;
    import com.pulumi.linode.inputs.InterfaceVpcIpv6Args;
    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) {
            var vpc = new Interface("vpc", InterfaceArgs.builder()
                .linodeId(my_instance.id())
                .vpc(InterfaceVpcArgs.builder()
                    .subnetId(12345)
                    .ipv6(InterfaceVpcIpv6Args.builder()
                        .isPublic(true)
                        .slaacs(InterfaceVpcIpv6SlaacArgs.builder()
                            .range("auto")
                            .build())
                        .ranges(InterfaceVpcIpv6RangeArgs.builder()
                            .range("auto")
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      vpc:
        type: linode:Interface
        properties:
          linodeId: ${["my-instance"].id}
          vpc:
            subnetId: 12345
            ipv6:
              isPublic: true
              slaacs:
                - range: auto
              ranges:
                - range: auto
    

    VLAN Interface Example

    The following example shows how to create a VLAN interface.

    import * as pulumi from "@pulumi/pulumi";
    import * as linode from "@pulumi/linode";
    
    const vlan = new linode.Interface("vlan", {
        linodeId: web.id,
        vlan: {
            vlanLabel: "web-vlan",
            ipamAddress: "192.168.200.5/24",
        },
    });
    
    import pulumi
    import pulumi_linode as linode
    
    vlan = linode.Interface("vlan",
        linode_id=web["id"],
        vlan={
            "vlan_label": "web-vlan",
            "ipam_address": "192.168.200.5/24",
        })
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-linode/sdk/v5/go/linode"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := linode.NewInterface(ctx, "vlan", &linode.InterfaceArgs{
    			LinodeId: pulumi.Any(web.Id),
    			Vlan: &linode.InterfaceVlanArgs{
    				VlanLabel:   pulumi.String("web-vlan"),
    				IpamAddress: pulumi.String("192.168.200.5/24"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Linode = Pulumi.Linode;
    
    return await Deployment.RunAsync(() => 
    {
        var vlan = new Linode.Interface("vlan", new()
        {
            LinodeId = web.Id,
            Vlan = new Linode.Inputs.InterfaceVlanArgs
            {
                VlanLabel = "web-vlan",
                IpamAddress = "192.168.200.5/24",
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.linode.Interface;
    import com.pulumi.linode.InterfaceArgs;
    import com.pulumi.linode.inputs.InterfaceVlanArgs;
    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) {
            var vlan = new Interface("vlan", InterfaceArgs.builder()
                .linodeId(web.id())
                .vlan(InterfaceVlanArgs.builder()
                    .vlanLabel("web-vlan")
                    .ipamAddress("192.168.200.5/24")
                    .build())
                .build());
    
        }
    }
    
    resources:
      vlan:
        type: linode:Interface
        properties:
          linodeId: ${web.id}
          vlan:
            vlanLabel: web-vlan
            ipamAddress: 192.168.200.5/24
    

    Complete Example with Linode

    import * as pulumi from "@pulumi/pulumi";
    import * as linode from "@pulumi/linode";
    
    const my_instance = new linode.Instance("my-instance", {
        label: "my-instance",
        region: "us-mia",
        type: "g6-standard-1",
        interfaceGeneration: "linode",
    });
    const boot = new linode.InstanceDisk("boot", {
        label: "boot",
        linodeId: my_instance.id,
        size: my_instance.specs.apply(specs => specs[0].disk),
        image: "linode/debian12",
        rootPass: "this-is-NOT-a-safe-password",
    });
    const _public = new linode.Interface("public", {
        linodeId: my_instance.id,
        "public": {
            ipv4: {
                addresses: [{
                    address: "auto",
                    primary: true,
                }],
            },
            ipv6: {
                ranges: [{
                    range: "/64",
                }],
            },
        },
    });
    const my_config = new linode.InstanceConfig("my-config", {
        linodeId: my_instance.id,
        label: "my-config",
        devices: [{
            deviceName: "sda",
            diskId: boot.id,
        }],
        booted: true,
    }, {
        dependsOn: [_public],
    });
    
    import pulumi
    import pulumi_linode as linode
    
    my_instance = linode.Instance("my-instance",
        label="my-instance",
        region="us-mia",
        type="g6-standard-1",
        interface_generation="linode")
    boot = linode.InstanceDisk("boot",
        label="boot",
        linode_id=my_instance.id,
        size=my_instance.specs[0].disk,
        image="linode/debian12",
        root_pass="this-is-NOT-a-safe-password")
    public = linode.Interface("public",
        linode_id=my_instance.id,
        public={
            "ipv4": {
                "addresses": [{
                    "address": "auto",
                    "primary": True,
                }],
            },
            "ipv6": {
                "ranges": [{
                    "range": "/64",
                }],
            },
        })
    my_config = linode.InstanceConfig("my-config",
        linode_id=my_instance.id,
        label="my-config",
        devices=[{
            "deviceName": "sda",
            "diskId": boot.id,
        }],
        booted=True,
        opts = pulumi.ResourceOptions(depends_on=[public]))
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-linode/sdk/v5/go/linode"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		my_instance, err := linode.NewInstance(ctx, "my-instance", &linode.InstanceArgs{
    			Label:               pulumi.String("my-instance"),
    			Region:              pulumi.String("us-mia"),
    			Type:                pulumi.String("g6-standard-1"),
    			InterfaceGeneration: pulumi.String("linode"),
    		})
    		if err != nil {
    			return err
    		}
    		boot, err := linode.NewInstanceDisk(ctx, "boot", &linode.InstanceDiskArgs{
    			Label:    pulumi.String("boot"),
    			LinodeId: my_instance.ID(),
    			Size: pulumi.Int(my_instance.Specs.ApplyT(func(specs []linode.InstanceSpec) (*int, error) {
    				return &specs[0].Disk, nil
    			}).(pulumi.IntPtrOutput)),
    			Image:    pulumi.String("linode/debian12"),
    			RootPass: pulumi.String("this-is-NOT-a-safe-password"),
    		})
    		if err != nil {
    			return err
    		}
    		public, err := linode.NewInterface(ctx, "public", &linode.InterfaceArgs{
    			LinodeId: my_instance.ID(),
    			Public: &linode.InterfacePublicArgs{
    				Ipv4: &linode.InterfacePublicIpv4Args{
    					Addresses: linode.InterfacePublicIpv4AddressArray{
    						&linode.InterfacePublicIpv4AddressArgs{
    							Address: pulumi.String("auto"),
    							Primary: pulumi.Bool(true),
    						},
    					},
    				},
    				Ipv6: &linode.InterfacePublicIpv6Args{
    					Ranges: linode.InterfacePublicIpv6RangeArray{
    						&linode.InterfacePublicIpv6RangeArgs{
    							Range: pulumi.String("/64"),
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		_, err = linode.NewInstanceConfig(ctx, "my-config", &linode.InstanceConfigArgs{
    			LinodeId: my_instance.ID(),
    			Label:    pulumi.String("my-config"),
    			Devices: linode.InstanceConfigDevicesArgs{
    				map[string]interface{}{
    					"deviceName": "sda",
    					"diskId":     boot.ID(),
    				},
    			},
    			Booted: pulumi.Bool(true),
    		}, pulumi.DependsOn([]pulumi.Resource{
    			public,
    		}))
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Linode = Pulumi.Linode;
    
    return await Deployment.RunAsync(() => 
    {
        var my_instance = new Linode.Instance("my-instance", new()
        {
            Label = "my-instance",
            Region = "us-mia",
            Type = "g6-standard-1",
            InterfaceGeneration = "linode",
        });
    
        var boot = new Linode.InstanceDisk("boot", new()
        {
            Label = "boot",
            LinodeId = my_instance.Id,
            Size = my_instance.Specs.Apply(specs => specs[0].Disk),
            Image = "linode/debian12",
            RootPass = "this-is-NOT-a-safe-password",
        });
    
        var @public = new Linode.Interface("public", new()
        {
            LinodeId = my_instance.Id,
            Public = new Linode.Inputs.InterfacePublicArgs
            {
                Ipv4 = new Linode.Inputs.InterfacePublicIpv4Args
                {
                    Addresses = new[]
                    {
                        new Linode.Inputs.InterfacePublicIpv4AddressArgs
                        {
                            Address = "auto",
                            Primary = true,
                        },
                    },
                },
                Ipv6 = new Linode.Inputs.InterfacePublicIpv6Args
                {
                    Ranges = new[]
                    {
                        new Linode.Inputs.InterfacePublicIpv6RangeArgs
                        {
                            Range = "/64",
                        },
                    },
                },
            },
        });
    
        var my_config = new Linode.InstanceConfig("my-config", new()
        {
            LinodeId = my_instance.Id,
            Label = "my-config",
            Devices = new[]
            {
                
                {
                    { "deviceName", "sda" },
                    { "diskId", boot.Id },
                },
            },
            Booted = true,
        }, new CustomResourceOptions
        {
            DependsOn =
            {
                @public,
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.linode.Instance;
    import com.pulumi.linode.InstanceArgs;
    import com.pulumi.linode.InstanceDisk;
    import com.pulumi.linode.InstanceDiskArgs;
    import com.pulumi.linode.Interface;
    import com.pulumi.linode.InterfaceArgs;
    import com.pulumi.linode.inputs.InterfacePublicArgs;
    import com.pulumi.linode.inputs.InterfacePublicIpv4Args;
    import com.pulumi.linode.inputs.InterfacePublicIpv6Args;
    import com.pulumi.linode.InstanceConfig;
    import com.pulumi.linode.InstanceConfigArgs;
    import com.pulumi.resources.CustomResourceOptions;
    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) {
            var my_instance = new Instance("my-instance", InstanceArgs.builder()
                .label("my-instance")
                .region("us-mia")
                .type("g6-standard-1")
                .interfaceGeneration("linode")
                .build());
    
            var boot = new InstanceDisk("boot", InstanceDiskArgs.builder()
                .label("boot")
                .linodeId(my_instance.id())
                .size(my_instance.specs().applyValue(_specs -> _specs[0].disk()))
                .image("linode/debian12")
                .rootPass("this-is-NOT-a-safe-password")
                .build());
    
            var public_ = new Interface("public", InterfaceArgs.builder()
                .linodeId(my_instance.id())
                .public_(InterfacePublicArgs.builder()
                    .ipv4(InterfacePublicIpv4Args.builder()
                        .addresses(InterfacePublicIpv4AddressArgs.builder()
                            .address("auto")
                            .primary(true)
                            .build())
                        .build())
                    .ipv6(InterfacePublicIpv6Args.builder()
                        .ranges(InterfacePublicIpv6RangeArgs.builder()
                            .range("/64")
                            .build())
                        .build())
                    .build())
                .build());
    
            var my_config = new InstanceConfig("my-config", InstanceConfigArgs.builder()
                .linodeId(my_instance.id())
                .label("my-config")
                .devices(InstanceConfigDevicesArgs.builder()
                    .deviceName("sda")
                    .diskId(boot.id())
                    .build())
                .booted(true)
                .build(), CustomResourceOptions.builder()
                    .dependsOn(public_)
                    .build());
    
        }
    }
    
    resources:
      my-instance:
        type: linode:Instance
        properties:
          label: my-instance
          region: us-mia
          type: g6-standard-1
          interfaceGeneration: linode
      my-config:
        type: linode:InstanceConfig
        properties:
          linodeId: ${["my-instance"].id}
          label: my-config
          devices:
            - deviceName: sda
              diskId: ${boot.id}
          booted: true
        options:
          dependsOn:
            - ${public}
      boot:
        type: linode:InstanceDisk
        properties:
          label: boot
          linodeId: ${["my-instance"].id}
          size: ${["my-instance"].specs[0].disk}
          image: linode/debian12
          rootPass: this-is-NOT-a-safe-password
      public:
        type: linode:Interface
        properties:
          linodeId: ${["my-instance"].id}
          public:
            ipv4:
              addresses:
                - address: auto
                  primary: true
            ipv6:
              ranges:
                - range: /64
    

    Notes

    • Each Linode instance can have up to 3 network interfaces.
    • VLAN interfaces cannot be updated after creation and require recreation.
    • VPC subnet IDs cannot be changed after interface creation.
    • Firewall IDs are only supported for public and VPC interfaces, not for VLAN interfaces.
    • When configuring multiple interfaces, use the default_route setting to specify which interface should handle default routing.

    Create Interface Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new Interface(name: string, args: InterfaceArgs, opts?: CustomResourceOptions);
    @overload
    def Interface(resource_name: str,
                  args: InterfaceArgs,
                  opts: Optional[ResourceOptions] = None)
    
    @overload
    def Interface(resource_name: str,
                  opts: Optional[ResourceOptions] = None,
                  linode_id: Optional[int] = None,
                  default_route: Optional[InterfaceDefaultRouteArgs] = None,
                  firewall_id: Optional[int] = None,
                  public: Optional[InterfacePublicArgs] = None,
                  vlan: Optional[InterfaceVlanArgs] = None,
                  vpc: Optional[InterfaceVpcArgs] = None)
    func NewInterface(ctx *Context, name string, args InterfaceArgs, opts ...ResourceOption) (*Interface, error)
    public Interface(string name, InterfaceArgs args, CustomResourceOptions? opts = null)
    public Interface(String name, InterfaceArgs args)
    public Interface(String name, InterfaceArgs args, CustomResourceOptions options)
    
    type: linode:Interface
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args InterfaceArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args InterfaceArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args InterfaceArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args InterfaceArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args InterfaceArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var interfaceResource = new Linode.Interface("interfaceResource", new()
    {
        LinodeId = 0,
        DefaultRoute = new Linode.Inputs.InterfaceDefaultRouteArgs
        {
            Ipv4 = false,
            Ipv6 = false,
        },
        FirewallId = 0,
        Public = new Linode.Inputs.InterfacePublicArgs
        {
            Ipv4 = new Linode.Inputs.InterfacePublicIpv4Args
            {
                Addresses = new[]
                {
                    new Linode.Inputs.InterfacePublicIpv4AddressArgs
                    {
                        Address = "string",
                        Primary = false,
                    },
                },
                AssignedAddresses = new[]
                {
                    new Linode.Inputs.InterfacePublicIpv4AssignedAddressArgs
                    {
                        Address = "string",
                        Primary = false,
                    },
                },
                Shareds = new[]
                {
                    new Linode.Inputs.InterfacePublicIpv4SharedArgs
                    {
                        Address = "string",
                        LinodeId = 0,
                    },
                },
            },
            Ipv6 = new Linode.Inputs.InterfacePublicIpv6Args
            {
                AssignedRanges = new[]
                {
                    new Linode.Inputs.InterfacePublicIpv6AssignedRangeArgs
                    {
                        Range = "string",
                        RouteTarget = "string",
                    },
                },
                Ranges = new[]
                {
                    new Linode.Inputs.InterfacePublicIpv6RangeArgs
                    {
                        Range = "string",
                    },
                },
                Shareds = new[]
                {
                    new Linode.Inputs.InterfacePublicIpv6SharedArgs
                    {
                        Range = "string",
                        RouteTarget = "string",
                    },
                },
                Slaacs = new[]
                {
                    new Linode.Inputs.InterfacePublicIpv6SlaacArgs
                    {
                        Address = "string",
                        Prefix = 0,
                    },
                },
            },
        },
        Vlan = new Linode.Inputs.InterfaceVlanArgs
        {
            VlanLabel = "string",
            IpamAddress = "string",
        },
        Vpc = new Linode.Inputs.InterfaceVpcArgs
        {
            SubnetId = 0,
            Ipv4 = new Linode.Inputs.InterfaceVpcIpv4Args
            {
                Addresses = new[]
                {
                    new Linode.Inputs.InterfaceVpcIpv4AddressArgs
                    {
                        Address = "string",
                        Nat11Address = "string",
                        Primary = false,
                    },
                },
                AssignedAddresses = new[]
                {
                    new Linode.Inputs.InterfaceVpcIpv4AssignedAddressArgs
                    {
                        Address = "string",
                        Nat11Address = "string",
                        Primary = false,
                    },
                },
                AssignedRanges = new[]
                {
                    new Linode.Inputs.InterfaceVpcIpv4AssignedRangeArgs
                    {
                        Range = "string",
                    },
                },
                Ranges = new[]
                {
                    new Linode.Inputs.InterfaceVpcIpv4RangeArgs
                    {
                        Range = "string",
                    },
                },
            },
            Ipv6 = new Linode.Inputs.InterfaceVpcIpv6Args
            {
                AssignedRanges = new[]
                {
                    new Linode.Inputs.InterfaceVpcIpv6AssignedRangeArgs
                    {
                        Range = "string",
                    },
                },
                AssignedSlaacs = new[]
                {
                    new Linode.Inputs.InterfaceVpcIpv6AssignedSlaacArgs
                    {
                        Address = "string",
                        Range = "string",
                    },
                },
                IsPublic = false,
                Ranges = new[]
                {
                    new Linode.Inputs.InterfaceVpcIpv6RangeArgs
                    {
                        Range = "string",
                    },
                },
                Slaacs = new[]
                {
                    new Linode.Inputs.InterfaceVpcIpv6SlaacArgs
                    {
                        Range = "string",
                    },
                },
            },
        },
    });
    
    example, err := linode.NewInterface(ctx, "interfaceResource", &linode.InterfaceArgs{
    	LinodeId: pulumi.Int(0),
    	DefaultRoute: &linode.InterfaceDefaultRouteArgs{
    		Ipv4: pulumi.Bool(false),
    		Ipv6: pulumi.Bool(false),
    	},
    	FirewallId: pulumi.Int(0),
    	Public: &linode.InterfacePublicArgs{
    		Ipv4: &linode.InterfacePublicIpv4Args{
    			Addresses: linode.InterfacePublicIpv4AddressArray{
    				&linode.InterfacePublicIpv4AddressArgs{
    					Address: pulumi.String("string"),
    					Primary: pulumi.Bool(false),
    				},
    			},
    			AssignedAddresses: linode.InterfacePublicIpv4AssignedAddressArray{
    				&linode.InterfacePublicIpv4AssignedAddressArgs{
    					Address: pulumi.String("string"),
    					Primary: pulumi.Bool(false),
    				},
    			},
    			Shareds: linode.InterfacePublicIpv4SharedArray{
    				&linode.InterfacePublicIpv4SharedArgs{
    					Address:  pulumi.String("string"),
    					LinodeId: pulumi.Int(0),
    				},
    			},
    		},
    		Ipv6: &linode.InterfacePublicIpv6Args{
    			AssignedRanges: linode.InterfacePublicIpv6AssignedRangeArray{
    				&linode.InterfacePublicIpv6AssignedRangeArgs{
    					Range:       pulumi.String("string"),
    					RouteTarget: pulumi.String("string"),
    				},
    			},
    			Ranges: linode.InterfacePublicIpv6RangeArray{
    				&linode.InterfacePublicIpv6RangeArgs{
    					Range: pulumi.String("string"),
    				},
    			},
    			Shareds: linode.InterfacePublicIpv6SharedArray{
    				&linode.InterfacePublicIpv6SharedArgs{
    					Range:       pulumi.String("string"),
    					RouteTarget: pulumi.String("string"),
    				},
    			},
    			Slaacs: linode.InterfacePublicIpv6SlaacArray{
    				&linode.InterfacePublicIpv6SlaacArgs{
    					Address: pulumi.String("string"),
    					Prefix:  pulumi.Int(0),
    				},
    			},
    		},
    	},
    	Vlan: &linode.InterfaceVlanArgs{
    		VlanLabel:   pulumi.String("string"),
    		IpamAddress: pulumi.String("string"),
    	},
    	Vpc: &linode.InterfaceVpcArgs{
    		SubnetId: pulumi.Int(0),
    		Ipv4: &linode.InterfaceVpcIpv4Args{
    			Addresses: linode.InterfaceVpcIpv4AddressArray{
    				&linode.InterfaceVpcIpv4AddressArgs{
    					Address:      pulumi.String("string"),
    					Nat11Address: pulumi.String("string"),
    					Primary:      pulumi.Bool(false),
    				},
    			},
    			AssignedAddresses: linode.InterfaceVpcIpv4AssignedAddressArray{
    				&linode.InterfaceVpcIpv4AssignedAddressArgs{
    					Address:      pulumi.String("string"),
    					Nat11Address: pulumi.String("string"),
    					Primary:      pulumi.Bool(false),
    				},
    			},
    			AssignedRanges: linode.InterfaceVpcIpv4AssignedRangeArray{
    				&linode.InterfaceVpcIpv4AssignedRangeArgs{
    					Range: pulumi.String("string"),
    				},
    			},
    			Ranges: linode.InterfaceVpcIpv4RangeArray{
    				&linode.InterfaceVpcIpv4RangeArgs{
    					Range: pulumi.String("string"),
    				},
    			},
    		},
    		Ipv6: &linode.InterfaceVpcIpv6Args{
    			AssignedRanges: linode.InterfaceVpcIpv6AssignedRangeArray{
    				&linode.InterfaceVpcIpv6AssignedRangeArgs{
    					Range: pulumi.String("string"),
    				},
    			},
    			AssignedSlaacs: linode.InterfaceVpcIpv6AssignedSlaacArray{
    				&linode.InterfaceVpcIpv6AssignedSlaacArgs{
    					Address: pulumi.String("string"),
    					Range:   pulumi.String("string"),
    				},
    			},
    			IsPublic: pulumi.Bool(false),
    			Ranges: linode.InterfaceVpcIpv6RangeArray{
    				&linode.InterfaceVpcIpv6RangeArgs{
    					Range: pulumi.String("string"),
    				},
    			},
    			Slaacs: linode.InterfaceVpcIpv6SlaacArray{
    				&linode.InterfaceVpcIpv6SlaacArgs{
    					Range: pulumi.String("string"),
    				},
    			},
    		},
    	},
    })
    
    var interfaceResource = new Interface("interfaceResource", InterfaceArgs.builder()
        .linodeId(0)
        .defaultRoute(InterfaceDefaultRouteArgs.builder()
            .ipv4(false)
            .ipv6(false)
            .build())
        .firewallId(0)
        .public_(InterfacePublicArgs.builder()
            .ipv4(InterfacePublicIpv4Args.builder()
                .addresses(InterfacePublicIpv4AddressArgs.builder()
                    .address("string")
                    .primary(false)
                    .build())
                .assignedAddresses(InterfacePublicIpv4AssignedAddressArgs.builder()
                    .address("string")
                    .primary(false)
                    .build())
                .shareds(InterfacePublicIpv4SharedArgs.builder()
                    .address("string")
                    .linodeId(0)
                    .build())
                .build())
            .ipv6(InterfacePublicIpv6Args.builder()
                .assignedRanges(InterfacePublicIpv6AssignedRangeArgs.builder()
                    .range("string")
                    .routeTarget("string")
                    .build())
                .ranges(InterfacePublicIpv6RangeArgs.builder()
                    .range("string")
                    .build())
                .shareds(InterfacePublicIpv6SharedArgs.builder()
                    .range("string")
                    .routeTarget("string")
                    .build())
                .slaacs(InterfacePublicIpv6SlaacArgs.builder()
                    .address("string")
                    .prefix(0)
                    .build())
                .build())
            .build())
        .vlan(InterfaceVlanArgs.builder()
            .vlanLabel("string")
            .ipamAddress("string")
            .build())
        .vpc(InterfaceVpcArgs.builder()
            .subnetId(0)
            .ipv4(InterfaceVpcIpv4Args.builder()
                .addresses(InterfaceVpcIpv4AddressArgs.builder()
                    .address("string")
                    .nat11Address("string")
                    .primary(false)
                    .build())
                .assignedAddresses(InterfaceVpcIpv4AssignedAddressArgs.builder()
                    .address("string")
                    .nat11Address("string")
                    .primary(false)
                    .build())
                .assignedRanges(InterfaceVpcIpv4AssignedRangeArgs.builder()
                    .range("string")
                    .build())
                .ranges(InterfaceVpcIpv4RangeArgs.builder()
                    .range("string")
                    .build())
                .build())
            .ipv6(InterfaceVpcIpv6Args.builder()
                .assignedRanges(InterfaceVpcIpv6AssignedRangeArgs.builder()
                    .range("string")
                    .build())
                .assignedSlaacs(InterfaceVpcIpv6AssignedSlaacArgs.builder()
                    .address("string")
                    .range("string")
                    .build())
                .isPublic(false)
                .ranges(InterfaceVpcIpv6RangeArgs.builder()
                    .range("string")
                    .build())
                .slaacs(InterfaceVpcIpv6SlaacArgs.builder()
                    .range("string")
                    .build())
                .build())
            .build())
        .build());
    
    interface_resource = linode.Interface("interfaceResource",
        linode_id=0,
        default_route={
            "ipv4": False,
            "ipv6": False,
        },
        firewall_id=0,
        public={
            "ipv4": {
                "addresses": [{
                    "address": "string",
                    "primary": False,
                }],
                "assigned_addresses": [{
                    "address": "string",
                    "primary": False,
                }],
                "shareds": [{
                    "address": "string",
                    "linode_id": 0,
                }],
            },
            "ipv6": {
                "assigned_ranges": [{
                    "range": "string",
                    "route_target": "string",
                }],
                "ranges": [{
                    "range": "string",
                }],
                "shareds": [{
                    "range": "string",
                    "route_target": "string",
                }],
                "slaacs": [{
                    "address": "string",
                    "prefix": 0,
                }],
            },
        },
        vlan={
            "vlan_label": "string",
            "ipam_address": "string",
        },
        vpc={
            "subnet_id": 0,
            "ipv4": {
                "addresses": [{
                    "address": "string",
                    "nat11_address": "string",
                    "primary": False,
                }],
                "assigned_addresses": [{
                    "address": "string",
                    "nat11_address": "string",
                    "primary": False,
                }],
                "assigned_ranges": [{
                    "range": "string",
                }],
                "ranges": [{
                    "range": "string",
                }],
            },
            "ipv6": {
                "assigned_ranges": [{
                    "range": "string",
                }],
                "assigned_slaacs": [{
                    "address": "string",
                    "range": "string",
                }],
                "is_public": False,
                "ranges": [{
                    "range": "string",
                }],
                "slaacs": [{
                    "range": "string",
                }],
            },
        })
    
    const interfaceResource = new linode.Interface("interfaceResource", {
        linodeId: 0,
        defaultRoute: {
            ipv4: false,
            ipv6: false,
        },
        firewallId: 0,
        "public": {
            ipv4: {
                addresses: [{
                    address: "string",
                    primary: false,
                }],
                assignedAddresses: [{
                    address: "string",
                    primary: false,
                }],
                shareds: [{
                    address: "string",
                    linodeId: 0,
                }],
            },
            ipv6: {
                assignedRanges: [{
                    range: "string",
                    routeTarget: "string",
                }],
                ranges: [{
                    range: "string",
                }],
                shareds: [{
                    range: "string",
                    routeTarget: "string",
                }],
                slaacs: [{
                    address: "string",
                    prefix: 0,
                }],
            },
        },
        vlan: {
            vlanLabel: "string",
            ipamAddress: "string",
        },
        vpc: {
            subnetId: 0,
            ipv4: {
                addresses: [{
                    address: "string",
                    nat11Address: "string",
                    primary: false,
                }],
                assignedAddresses: [{
                    address: "string",
                    nat11Address: "string",
                    primary: false,
                }],
                assignedRanges: [{
                    range: "string",
                }],
                ranges: [{
                    range: "string",
                }],
            },
            ipv6: {
                assignedRanges: [{
                    range: "string",
                }],
                assignedSlaacs: [{
                    address: "string",
                    range: "string",
                }],
                isPublic: false,
                ranges: [{
                    range: "string",
                }],
                slaacs: [{
                    range: "string",
                }],
            },
        },
    });
    
    type: linode:Interface
    properties:
        defaultRoute:
            ipv4: false
            ipv6: false
        firewallId: 0
        linodeId: 0
        public:
            ipv4:
                addresses:
                    - address: string
                      primary: false
                assignedAddresses:
                    - address: string
                      primary: false
                shareds:
                    - address: string
                      linodeId: 0
            ipv6:
                assignedRanges:
                    - range: string
                      routeTarget: string
                ranges:
                    - range: string
                shareds:
                    - range: string
                      routeTarget: string
                slaacs:
                    - address: string
                      prefix: 0
        vlan:
            ipamAddress: string
            vlanLabel: string
        vpc:
            ipv4:
                addresses:
                    - address: string
                      nat11Address: string
                      primary: false
                assignedAddresses:
                    - address: string
                      nat11Address: string
                      primary: false
                assignedRanges:
                    - range: string
                ranges:
                    - range: string
            ipv6:
                assignedRanges:
                    - range: string
                assignedSlaacs:
                    - address: string
                      range: string
                isPublic: false
                ranges:
                    - range: string
                slaacs:
                    - range: string
            subnetId: 0
    

    Interface Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

    The Interface resource accepts the following input properties:

    LinodeId int
    The ID of the Linode to assign this interface to.
    DefaultRoute InterfaceDefaultRoute
    Indicates if the interface serves as the default route when multiple interfaces are eligible for this role.
    FirewallId int
    The ID of an enabled firewall to secure a VPC or public interface. Not allowed for VLAN interfaces.
    Public InterfacePublic
    Nested attributes object for a Linode public interface. Exactly one of public, vlan, or vpc must be specified.
    Vlan InterfaceVlan
    Nested attributes object for a Linode VLAN interface. Exactly one of public, vlan, or vpc must be specified.
    Vpc InterfaceVpc
    Nested attributes object for a Linode VPC interface. Exactly one of public, vlan, or vpc must be specified.
    LinodeId int
    The ID of the Linode to assign this interface to.
    DefaultRoute InterfaceDefaultRouteArgs
    Indicates if the interface serves as the default route when multiple interfaces are eligible for this role.
    FirewallId int
    The ID of an enabled firewall to secure a VPC or public interface. Not allowed for VLAN interfaces.
    Public InterfacePublicArgs
    Nested attributes object for a Linode public interface. Exactly one of public, vlan, or vpc must be specified.
    Vlan InterfaceVlanArgs
    Nested attributes object for a Linode VLAN interface. Exactly one of public, vlan, or vpc must be specified.
    Vpc InterfaceVpcArgs
    Nested attributes object for a Linode VPC interface. Exactly one of public, vlan, or vpc must be specified.
    linodeId Integer
    The ID of the Linode to assign this interface to.
    defaultRoute InterfaceDefaultRoute
    Indicates if the interface serves as the default route when multiple interfaces are eligible for this role.
    firewallId Integer
    The ID of an enabled firewall to secure a VPC or public interface. Not allowed for VLAN interfaces.
    public_ InterfacePublic
    Nested attributes object for a Linode public interface. Exactly one of public, vlan, or vpc must be specified.
    vlan InterfaceVlan
    Nested attributes object for a Linode VLAN interface. Exactly one of public, vlan, or vpc must be specified.
    vpc InterfaceVpc
    Nested attributes object for a Linode VPC interface. Exactly one of public, vlan, or vpc must be specified.
    linodeId number
    The ID of the Linode to assign this interface to.
    defaultRoute InterfaceDefaultRoute
    Indicates if the interface serves as the default route when multiple interfaces are eligible for this role.
    firewallId number
    The ID of an enabled firewall to secure a VPC or public interface. Not allowed for VLAN interfaces.
    public InterfacePublic
    Nested attributes object for a Linode public interface. Exactly one of public, vlan, or vpc must be specified.
    vlan InterfaceVlan
    Nested attributes object for a Linode VLAN interface. Exactly one of public, vlan, or vpc must be specified.
    vpc InterfaceVpc
    Nested attributes object for a Linode VPC interface. Exactly one of public, vlan, or vpc must be specified.
    linode_id int
    The ID of the Linode to assign this interface to.
    default_route InterfaceDefaultRouteArgs
    Indicates if the interface serves as the default route when multiple interfaces are eligible for this role.
    firewall_id int
    The ID of an enabled firewall to secure a VPC or public interface. Not allowed for VLAN interfaces.
    public InterfacePublicArgs
    Nested attributes object for a Linode public interface. Exactly one of public, vlan, or vpc must be specified.
    vlan InterfaceVlanArgs
    Nested attributes object for a Linode VLAN interface. Exactly one of public, vlan, or vpc must be specified.
    vpc InterfaceVpcArgs
    Nested attributes object for a Linode VPC interface. Exactly one of public, vlan, or vpc must be specified.
    linodeId Number
    The ID of the Linode to assign this interface to.
    defaultRoute Property Map
    Indicates if the interface serves as the default route when multiple interfaces are eligible for this role.
    firewallId Number
    The ID of an enabled firewall to secure a VPC or public interface. Not allowed for VLAN interfaces.
    public Property Map
    Nested attributes object for a Linode public interface. Exactly one of public, vlan, or vpc must be specified.
    vlan Property Map
    Nested attributes object for a Linode VLAN interface. Exactly one of public, vlan, or vpc must be specified.
    vpc Property Map
    Nested attributes object for a Linode VPC interface. Exactly one of public, vlan, or vpc must be specified.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the Interface resource produces the following output properties:

    Id string
    The provider-assigned unique ID for this managed resource.
    Id string
    The provider-assigned unique ID for this managed resource.
    id String
    The provider-assigned unique ID for this managed resource.
    id string
    The provider-assigned unique ID for this managed resource.
    id str
    The provider-assigned unique ID for this managed resource.
    id String
    The provider-assigned unique ID for this managed resource.

    Look up Existing Interface Resource

    Get an existing Interface resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: InterfaceState, opts?: CustomResourceOptions): Interface
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            default_route: Optional[InterfaceDefaultRouteArgs] = None,
            firewall_id: Optional[int] = None,
            linode_id: Optional[int] = None,
            public: Optional[InterfacePublicArgs] = None,
            vlan: Optional[InterfaceVlanArgs] = None,
            vpc: Optional[InterfaceVpcArgs] = None) -> Interface
    func GetInterface(ctx *Context, name string, id IDInput, state *InterfaceState, opts ...ResourceOption) (*Interface, error)
    public static Interface Get(string name, Input<string> id, InterfaceState? state, CustomResourceOptions? opts = null)
    public static Interface get(String name, Output<String> id, InterfaceState state, CustomResourceOptions options)
    resources:  _:    type: linode:Interface    get:      id: ${id}
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    DefaultRoute InterfaceDefaultRoute
    Indicates if the interface serves as the default route when multiple interfaces are eligible for this role.
    FirewallId int
    The ID of an enabled firewall to secure a VPC or public interface. Not allowed for VLAN interfaces.
    LinodeId int
    The ID of the Linode to assign this interface to.
    Public InterfacePublic
    Nested attributes object for a Linode public interface. Exactly one of public, vlan, or vpc must be specified.
    Vlan InterfaceVlan
    Nested attributes object for a Linode VLAN interface. Exactly one of public, vlan, or vpc must be specified.
    Vpc InterfaceVpc
    Nested attributes object for a Linode VPC interface. Exactly one of public, vlan, or vpc must be specified.
    DefaultRoute InterfaceDefaultRouteArgs
    Indicates if the interface serves as the default route when multiple interfaces are eligible for this role.
    FirewallId int
    The ID of an enabled firewall to secure a VPC or public interface. Not allowed for VLAN interfaces.
    LinodeId int
    The ID of the Linode to assign this interface to.
    Public InterfacePublicArgs
    Nested attributes object for a Linode public interface. Exactly one of public, vlan, or vpc must be specified.
    Vlan InterfaceVlanArgs
    Nested attributes object for a Linode VLAN interface. Exactly one of public, vlan, or vpc must be specified.
    Vpc InterfaceVpcArgs
    Nested attributes object for a Linode VPC interface. Exactly one of public, vlan, or vpc must be specified.
    defaultRoute InterfaceDefaultRoute
    Indicates if the interface serves as the default route when multiple interfaces are eligible for this role.
    firewallId Integer
    The ID of an enabled firewall to secure a VPC or public interface. Not allowed for VLAN interfaces.
    linodeId Integer
    The ID of the Linode to assign this interface to.
    public_ InterfacePublic
    Nested attributes object for a Linode public interface. Exactly one of public, vlan, or vpc must be specified.
    vlan InterfaceVlan
    Nested attributes object for a Linode VLAN interface. Exactly one of public, vlan, or vpc must be specified.
    vpc InterfaceVpc
    Nested attributes object for a Linode VPC interface. Exactly one of public, vlan, or vpc must be specified.
    defaultRoute InterfaceDefaultRoute
    Indicates if the interface serves as the default route when multiple interfaces are eligible for this role.
    firewallId number
    The ID of an enabled firewall to secure a VPC or public interface. Not allowed for VLAN interfaces.
    linodeId number
    The ID of the Linode to assign this interface to.
    public InterfacePublic
    Nested attributes object for a Linode public interface. Exactly one of public, vlan, or vpc must be specified.
    vlan InterfaceVlan
    Nested attributes object for a Linode VLAN interface. Exactly one of public, vlan, or vpc must be specified.
    vpc InterfaceVpc
    Nested attributes object for a Linode VPC interface. Exactly one of public, vlan, or vpc must be specified.
    default_route InterfaceDefaultRouteArgs
    Indicates if the interface serves as the default route when multiple interfaces are eligible for this role.
    firewall_id int
    The ID of an enabled firewall to secure a VPC or public interface. Not allowed for VLAN interfaces.
    linode_id int
    The ID of the Linode to assign this interface to.
    public InterfacePublicArgs
    Nested attributes object for a Linode public interface. Exactly one of public, vlan, or vpc must be specified.
    vlan InterfaceVlanArgs
    Nested attributes object for a Linode VLAN interface. Exactly one of public, vlan, or vpc must be specified.
    vpc InterfaceVpcArgs
    Nested attributes object for a Linode VPC interface. Exactly one of public, vlan, or vpc must be specified.
    defaultRoute Property Map
    Indicates if the interface serves as the default route when multiple interfaces are eligible for this role.
    firewallId Number
    The ID of an enabled firewall to secure a VPC or public interface. Not allowed for VLAN interfaces.
    linodeId Number
    The ID of the Linode to assign this interface to.
    public Property Map
    Nested attributes object for a Linode public interface. Exactly one of public, vlan, or vpc must be specified.
    vlan Property Map
    Nested attributes object for a Linode VLAN interface. Exactly one of public, vlan, or vpc must be specified.
    vpc Property Map
    Nested attributes object for a Linode VPC interface. Exactly one of public, vlan, or vpc must be specified.

    Supporting Types

    InterfaceDefaultRoute, InterfaceDefaultRouteArgs

    Ipv4 bool
    If set to true, the interface is used for the IPv4 default route.
    Ipv6 bool
    If set to true, the interface is used for the IPv6 default route.
    Ipv4 bool
    If set to true, the interface is used for the IPv4 default route.
    Ipv6 bool
    If set to true, the interface is used for the IPv6 default route.
    ipv4 Boolean
    If set to true, the interface is used for the IPv4 default route.
    ipv6 Boolean
    If set to true, the interface is used for the IPv6 default route.
    ipv4 boolean
    If set to true, the interface is used for the IPv4 default route.
    ipv6 boolean
    If set to true, the interface is used for the IPv6 default route.
    ipv4 bool
    If set to true, the interface is used for the IPv4 default route.
    ipv6 bool
    If set to true, the interface is used for the IPv6 default route.
    ipv4 Boolean
    If set to true, the interface is used for the IPv4 default route.
    ipv6 Boolean
    If set to true, the interface is used for the IPv6 default route.

    InterfacePublic, InterfacePublicArgs

    Ipv4 InterfacePublicIpv4
    IPv4 addresses for this interface.
    Ipv6 InterfacePublicIpv6
    IPv6 addresses for this interface.
    Ipv4 InterfacePublicIpv4
    IPv4 addresses for this interface.
    Ipv6 InterfacePublicIpv6
    IPv6 addresses for this interface.
    ipv4 InterfacePublicIpv4
    IPv4 addresses for this interface.
    ipv6 InterfacePublicIpv6
    IPv6 addresses for this interface.
    ipv4 InterfacePublicIpv4
    IPv4 addresses for this interface.
    ipv6 InterfacePublicIpv6
    IPv6 addresses for this interface.
    ipv4 InterfacePublicIpv4
    IPv4 addresses for this interface.
    ipv6 InterfacePublicIpv6
    IPv6 addresses for this interface.
    ipv4 Property Map
    IPv4 addresses for this interface.
    ipv6 Property Map
    IPv6 addresses for this interface.

    InterfacePublicIpv4, InterfacePublicIpv4Args

    Addresses List<InterfacePublicIpv4Address>
    IPv4 addresses configured for this Linode interface. Each object in this list supports:
    AssignedAddresses List<InterfacePublicIpv4AssignedAddress>
    (Computed) The IPv4 addresses assigned for use in the VPC subnet, calculated from the addresses input. Each object in this set supports:
    Shareds List<InterfacePublicIpv4Shared>
    (Computed) The IPv6 ranges assigned to this Linode interface that are also shared with another Linode. Each object in this set supports:
    Addresses []InterfacePublicIpv4Address
    IPv4 addresses configured for this Linode interface. Each object in this list supports:
    AssignedAddresses []InterfacePublicIpv4AssignedAddress
    (Computed) The IPv4 addresses assigned for use in the VPC subnet, calculated from the addresses input. Each object in this set supports:
    Shareds []InterfacePublicIpv4Shared
    (Computed) The IPv6 ranges assigned to this Linode interface that are also shared with another Linode. Each object in this set supports:
    addresses List<InterfacePublicIpv4Address>
    IPv4 addresses configured for this Linode interface. Each object in this list supports:
    assignedAddresses List<InterfacePublicIpv4AssignedAddress>
    (Computed) The IPv4 addresses assigned for use in the VPC subnet, calculated from the addresses input. Each object in this set supports:
    shareds List<InterfacePublicIpv4Shared>
    (Computed) The IPv6 ranges assigned to this Linode interface that are also shared with another Linode. Each object in this set supports:
    addresses InterfacePublicIpv4Address[]
    IPv4 addresses configured for this Linode interface. Each object in this list supports:
    assignedAddresses InterfacePublicIpv4AssignedAddress[]
    (Computed) The IPv4 addresses assigned for use in the VPC subnet, calculated from the addresses input. Each object in this set supports:
    shareds InterfacePublicIpv4Shared[]
    (Computed) The IPv6 ranges assigned to this Linode interface that are also shared with another Linode. Each object in this set supports:
    addresses Sequence[InterfacePublicIpv4Address]
    IPv4 addresses configured for this Linode interface. Each object in this list supports:
    assigned_addresses Sequence[InterfacePublicIpv4AssignedAddress]
    (Computed) The IPv4 addresses assigned for use in the VPC subnet, calculated from the addresses input. Each object in this set supports:
    shareds Sequence[InterfacePublicIpv4Shared]
    (Computed) The IPv6 ranges assigned to this Linode interface that are also shared with another Linode. Each object in this set supports:
    addresses List<Property Map>
    IPv4 addresses configured for this Linode interface. Each object in this list supports:
    assignedAddresses List<Property Map>
    (Computed) The IPv4 addresses assigned for use in the VPC subnet, calculated from the addresses input. Each object in this set supports:
    shareds List<Property Map>
    (Computed) The IPv6 ranges assigned to this Linode interface that are also shared with another Linode. Each object in this set supports:

    InterfacePublicIpv4Address, InterfacePublicIpv4AddressArgs

    Address string
    The IPv4 address. Defaults to "auto" for automatic assignment.
    Primary bool
    Whether this address is the primary address for the interface.
    Address string
    The IPv4 address. Defaults to "auto" for automatic assignment.
    Primary bool
    Whether this address is the primary address for the interface.
    address String
    The IPv4 address. Defaults to "auto" for automatic assignment.
    primary Boolean
    Whether this address is the primary address for the interface.
    address string
    The IPv4 address. Defaults to "auto" for automatic assignment.
    primary boolean
    Whether this address is the primary address for the interface.
    address str
    The IPv4 address. Defaults to "auto" for automatic assignment.
    primary bool
    Whether this address is the primary address for the interface.
    address String
    The IPv4 address. Defaults to "auto" for automatic assignment.
    primary Boolean
    Whether this address is the primary address for the interface.

    InterfacePublicIpv4AssignedAddress, InterfacePublicIpv4AssignedAddressArgs

    Address string
    The assigned IPv4 address.
    Primary bool
    Whether this address is the primary address for the interface.
    Address string
    The assigned IPv4 address.
    Primary bool
    Whether this address is the primary address for the interface.
    address String
    The assigned IPv4 address.
    primary Boolean
    Whether this address is the primary address for the interface.
    address string
    The assigned IPv4 address.
    primary boolean
    Whether this address is the primary address for the interface.
    address str
    The assigned IPv4 address.
    primary bool
    Whether this address is the primary address for the interface.
    address String
    The assigned IPv4 address.
    primary Boolean
    Whether this address is the primary address for the interface.

    InterfacePublicIpv4Shared, InterfacePublicIpv4SharedArgs

    Address string
    The assigned IPv4 address.
    LinodeId int
    The ID of the Linode to assign this interface to.
    Address string
    The assigned IPv4 address.
    LinodeId int
    The ID of the Linode to assign this interface to.
    address String
    The assigned IPv4 address.
    linodeId Integer
    The ID of the Linode to assign this interface to.
    address string
    The assigned IPv4 address.
    linodeId number
    The ID of the Linode to assign this interface to.
    address str
    The assigned IPv4 address.
    linode_id int
    The ID of the Linode to assign this interface to.
    address String
    The assigned IPv4 address.
    linodeId Number
    The ID of the Linode to assign this interface to.

    InterfacePublicIpv6, InterfacePublicIpv6Args

    AssignedRanges List<InterfacePublicIpv6AssignedRange>
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    Ranges List<InterfacePublicIpv6Range>
    Configured IPv6 range in CIDR notation (2600:0db8::1/64) or prefix-only (/64). Each object in this list supports:
    Shareds List<InterfacePublicIpv6Shared>
    (Computed) The IPv6 ranges assigned to this Linode interface that are also shared with another Linode. Each object in this set supports:
    Slaacs List<InterfacePublicIpv6Slaac>
    (Computed) The public SLAAC and subnet prefix settings for this public interface. Each object in this set supports:
    AssignedRanges []InterfacePublicIpv6AssignedRange
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    Ranges []InterfacePublicIpv6Range
    Configured IPv6 range in CIDR notation (2600:0db8::1/64) or prefix-only (/64). Each object in this list supports:
    Shareds []InterfacePublicIpv6Shared
    (Computed) The IPv6 ranges assigned to this Linode interface that are also shared with another Linode. Each object in this set supports:
    Slaacs []InterfacePublicIpv6Slaac
    (Computed) The public SLAAC and subnet prefix settings for this public interface. Each object in this set supports:
    assignedRanges List<InterfacePublicIpv6AssignedRange>
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    ranges List<InterfacePublicIpv6Range>
    Configured IPv6 range in CIDR notation (2600:0db8::1/64) or prefix-only (/64). Each object in this list supports:
    shareds List<InterfacePublicIpv6Shared>
    (Computed) The IPv6 ranges assigned to this Linode interface that are also shared with another Linode. Each object in this set supports:
    slaacs List<InterfacePublicIpv6Slaac>
    (Computed) The public SLAAC and subnet prefix settings for this public interface. Each object in this set supports:
    assignedRanges InterfacePublicIpv6AssignedRange[]
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    ranges InterfacePublicIpv6Range[]
    Configured IPv6 range in CIDR notation (2600:0db8::1/64) or prefix-only (/64). Each object in this list supports:
    shareds InterfacePublicIpv6Shared[]
    (Computed) The IPv6 ranges assigned to this Linode interface that are also shared with another Linode. Each object in this set supports:
    slaacs InterfacePublicIpv6Slaac[]
    (Computed) The public SLAAC and subnet prefix settings for this public interface. Each object in this set supports:
    assigned_ranges Sequence[InterfacePublicIpv6AssignedRange]
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    ranges Sequence[InterfacePublicIpv6Range]
    Configured IPv6 range in CIDR notation (2600:0db8::1/64) or prefix-only (/64). Each object in this list supports:
    shareds Sequence[InterfacePublicIpv6Shared]
    (Computed) The IPv6 ranges assigned to this Linode interface that are also shared with another Linode. Each object in this set supports:
    slaacs Sequence[InterfacePublicIpv6Slaac]
    (Computed) The public SLAAC and subnet prefix settings for this public interface. Each object in this set supports:
    assignedRanges List<Property Map>
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    ranges List<Property Map>
    Configured IPv6 range in CIDR notation (2600:0db8::1/64) or prefix-only (/64). Each object in this list supports:
    shareds List<Property Map>
    (Computed) The IPv6 ranges assigned to this Linode interface that are also shared with another Linode. Each object in this set supports:
    slaacs List<Property Map>
    (Computed) The public SLAAC and subnet prefix settings for this public interface. Each object in this set supports:

    InterfacePublicIpv6AssignedRange, InterfacePublicIpv6AssignedRangeArgs

    Range string
    The IPv6 network range in CIDR notation.
    RouteTarget string
    The public IPv6 address that the range is routed to.
    Range string
    The IPv6 network range in CIDR notation.
    RouteTarget string
    The public IPv6 address that the range is routed to.
    range String
    The IPv6 network range in CIDR notation.
    routeTarget String
    The public IPv6 address that the range is routed to.
    range string
    The IPv6 network range in CIDR notation.
    routeTarget string
    The public IPv6 address that the range is routed to.
    range str
    The IPv6 network range in CIDR notation.
    route_target str
    The public IPv6 address that the range is routed to.
    range String
    The IPv6 network range in CIDR notation.
    routeTarget String
    The public IPv6 address that the range is routed to.

    InterfacePublicIpv6Range, InterfacePublicIpv6RangeArgs

    Range string
    The IPv6 range.
    Range string
    The IPv6 range.
    range String
    The IPv6 range.
    range string
    The IPv6 range.
    range str
    The IPv6 range.
    range String
    The IPv6 range.

    InterfacePublicIpv6Shared, InterfacePublicIpv6SharedArgs

    Range string
    The IPv6 network range in CIDR notation.
    RouteTarget string
    The public IPv6 address that the range is routed to.
    Range string
    The IPv6 network range in CIDR notation.
    RouteTarget string
    The public IPv6 address that the range is routed to.
    range String
    The IPv6 network range in CIDR notation.
    routeTarget String
    The public IPv6 address that the range is routed to.
    range string
    The IPv6 network range in CIDR notation.
    routeTarget string
    The public IPv6 address that the range is routed to.
    range str
    The IPv6 network range in CIDR notation.
    route_target str
    The public IPv6 address that the range is routed to.
    range String
    The IPv6 network range in CIDR notation.
    routeTarget String
    The public IPv6 address that the range is routed to.

    InterfacePublicIpv6Slaac, InterfacePublicIpv6SlaacArgs

    Address string
    The assigned IPv4 address.
    Prefix int
    The subnet prefix length.
    Address string
    The assigned IPv4 address.
    Prefix int
    The subnet prefix length.
    address String
    The assigned IPv4 address.
    prefix Integer
    The subnet prefix length.
    address string
    The assigned IPv4 address.
    prefix number
    The subnet prefix length.
    address str
    The assigned IPv4 address.
    prefix int
    The subnet prefix length.
    address String
    The assigned IPv4 address.
    prefix Number
    The subnet prefix length.

    InterfaceVlan, InterfaceVlanArgs

    VlanLabel string
    The VLAN's unique label. Must be between 1 and 64 characters.
    IpamAddress string
    The VLAN interface's private IPv4 address in CIDR notation.
    VlanLabel string
    The VLAN's unique label. Must be between 1 and 64 characters.
    IpamAddress string
    The VLAN interface's private IPv4 address in CIDR notation.
    vlanLabel String
    The VLAN's unique label. Must be between 1 and 64 characters.
    ipamAddress String
    The VLAN interface's private IPv4 address in CIDR notation.
    vlanLabel string
    The VLAN's unique label. Must be between 1 and 64 characters.
    ipamAddress string
    The VLAN interface's private IPv4 address in CIDR notation.
    vlan_label str
    The VLAN's unique label. Must be between 1 and 64 characters.
    ipam_address str
    The VLAN interface's private IPv4 address in CIDR notation.
    vlanLabel String
    The VLAN's unique label. Must be between 1 and 64 characters.
    ipamAddress String
    The VLAN interface's private IPv4 address in CIDR notation.

    InterfaceVpc, InterfaceVpcArgs

    SubnetId int
    The VPC subnet identifier for this interface.
    Ipv4 InterfaceVpcIpv4
    IPv4 configuration for the VPC interface.
    Ipv6 InterfaceVpcIpv6
    IPv6 assigned through slaac and ranges. If you create a VPC interface in a subnet with IPv6 and don’t specify slaac or ranges, a SLAAC range is added automatically. NOTE: IPv6 VPCs may not currently be available to all users.
    SubnetId int
    The VPC subnet identifier for this interface.
    Ipv4 InterfaceVpcIpv4
    IPv4 configuration for the VPC interface.
    Ipv6 InterfaceVpcIpv6
    IPv6 assigned through slaac and ranges. If you create a VPC interface in a subnet with IPv6 and don’t specify slaac or ranges, a SLAAC range is added automatically. NOTE: IPv6 VPCs may not currently be available to all users.
    subnetId Integer
    The VPC subnet identifier for this interface.
    ipv4 InterfaceVpcIpv4
    IPv4 configuration for the VPC interface.
    ipv6 InterfaceVpcIpv6
    IPv6 assigned through slaac and ranges. If you create a VPC interface in a subnet with IPv6 and don’t specify slaac or ranges, a SLAAC range is added automatically. NOTE: IPv6 VPCs may not currently be available to all users.
    subnetId number
    The VPC subnet identifier for this interface.
    ipv4 InterfaceVpcIpv4
    IPv4 configuration for the VPC interface.
    ipv6 InterfaceVpcIpv6
    IPv6 assigned through slaac and ranges. If you create a VPC interface in a subnet with IPv6 and don’t specify slaac or ranges, a SLAAC range is added automatically. NOTE: IPv6 VPCs may not currently be available to all users.
    subnet_id int
    The VPC subnet identifier for this interface.
    ipv4 InterfaceVpcIpv4
    IPv4 configuration for the VPC interface.
    ipv6 InterfaceVpcIpv6
    IPv6 assigned through slaac and ranges. If you create a VPC interface in a subnet with IPv6 and don’t specify slaac or ranges, a SLAAC range is added automatically. NOTE: IPv6 VPCs may not currently be available to all users.
    subnetId Number
    The VPC subnet identifier for this interface.
    ipv4 Property Map
    IPv4 configuration for the VPC interface.
    ipv6 Property Map
    IPv6 assigned through slaac and ranges. If you create a VPC interface in a subnet with IPv6 and don’t specify slaac or ranges, a SLAAC range is added automatically. NOTE: IPv6 VPCs may not currently be available to all users.

    InterfaceVpcIpv4, InterfaceVpcIpv4Args

    Addresses List<InterfaceVpcIpv4Address>
    Specifies the IPv4 addresses to use in the VPC subnet. Each object in this list supports:
    AssignedAddresses List<InterfaceVpcIpv4AssignedAddress>
    (Computed) The IPv4 addresses assigned for use in the VPC subnet, calculated from the addresses input. Each object in this set supports:
    AssignedRanges List<InterfaceVpcIpv4AssignedRange>
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    Ranges List<InterfaceVpcIpv4Range>
    IPv4 ranges in CIDR notation (1.2.3.4/24) or prefix-only format (/24). Each object in this list supports:
    Addresses []InterfaceVpcIpv4Address
    Specifies the IPv4 addresses to use in the VPC subnet. Each object in this list supports:
    AssignedAddresses []InterfaceVpcIpv4AssignedAddress
    (Computed) The IPv4 addresses assigned for use in the VPC subnet, calculated from the addresses input. Each object in this set supports:
    AssignedRanges []InterfaceVpcIpv4AssignedRange
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    Ranges []InterfaceVpcIpv4Range
    IPv4 ranges in CIDR notation (1.2.3.4/24) or prefix-only format (/24). Each object in this list supports:
    addresses List<InterfaceVpcIpv4Address>
    Specifies the IPv4 addresses to use in the VPC subnet. Each object in this list supports:
    assignedAddresses List<InterfaceVpcIpv4AssignedAddress>
    (Computed) The IPv4 addresses assigned for use in the VPC subnet, calculated from the addresses input. Each object in this set supports:
    assignedRanges List<InterfaceVpcIpv4AssignedRange>
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    ranges List<InterfaceVpcIpv4Range>
    IPv4 ranges in CIDR notation (1.2.3.4/24) or prefix-only format (/24). Each object in this list supports:
    addresses InterfaceVpcIpv4Address[]
    Specifies the IPv4 addresses to use in the VPC subnet. Each object in this list supports:
    assignedAddresses InterfaceVpcIpv4AssignedAddress[]
    (Computed) The IPv4 addresses assigned for use in the VPC subnet, calculated from the addresses input. Each object in this set supports:
    assignedRanges InterfaceVpcIpv4AssignedRange[]
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    ranges InterfaceVpcIpv4Range[]
    IPv4 ranges in CIDR notation (1.2.3.4/24) or prefix-only format (/24). Each object in this list supports:
    addresses Sequence[InterfaceVpcIpv4Address]
    Specifies the IPv4 addresses to use in the VPC subnet. Each object in this list supports:
    assigned_addresses Sequence[InterfaceVpcIpv4AssignedAddress]
    (Computed) The IPv4 addresses assigned for use in the VPC subnet, calculated from the addresses input. Each object in this set supports:
    assigned_ranges Sequence[InterfaceVpcIpv4AssignedRange]
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    ranges Sequence[InterfaceVpcIpv4Range]
    IPv4 ranges in CIDR notation (1.2.3.4/24) or prefix-only format (/24). Each object in this list supports:
    addresses List<Property Map>
    Specifies the IPv4 addresses to use in the VPC subnet. Each object in this list supports:
    assignedAddresses List<Property Map>
    (Computed) The IPv4 addresses assigned for use in the VPC subnet, calculated from the addresses input. Each object in this set supports:
    assignedRanges List<Property Map>
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    ranges List<Property Map>
    IPv4 ranges in CIDR notation (1.2.3.4/24) or prefix-only format (/24). Each object in this list supports:

    InterfaceVpcIpv4Address, InterfaceVpcIpv4AddressArgs

    Address string
    The IPv4 address. Defaults to "auto" for automatic assignment.
    Nat11Address string
    The 1:1 NAT IPv4 address used to associate a public IPv4 address with the interface's VPC subnet IPv4 address.
    Primary bool
    Whether this address is the primary address for the interface.
    Address string
    The IPv4 address. Defaults to "auto" for automatic assignment.
    Nat11Address string
    The 1:1 NAT IPv4 address used to associate a public IPv4 address with the interface's VPC subnet IPv4 address.
    Primary bool
    Whether this address is the primary address for the interface.
    address String
    The IPv4 address. Defaults to "auto" for automatic assignment.
    nat11Address String
    The 1:1 NAT IPv4 address used to associate a public IPv4 address with the interface's VPC subnet IPv4 address.
    primary Boolean
    Whether this address is the primary address for the interface.
    address string
    The IPv4 address. Defaults to "auto" for automatic assignment.
    nat11Address string
    The 1:1 NAT IPv4 address used to associate a public IPv4 address with the interface's VPC subnet IPv4 address.
    primary boolean
    Whether this address is the primary address for the interface.
    address str
    The IPv4 address. Defaults to "auto" for automatic assignment.
    nat11_address str
    The 1:1 NAT IPv4 address used to associate a public IPv4 address with the interface's VPC subnet IPv4 address.
    primary bool
    Whether this address is the primary address for the interface.
    address String
    The IPv4 address. Defaults to "auto" for automatic assignment.
    nat11Address String
    The 1:1 NAT IPv4 address used to associate a public IPv4 address with the interface's VPC subnet IPv4 address.
    primary Boolean
    Whether this address is the primary address for the interface.

    InterfaceVpcIpv4AssignedAddress, InterfaceVpcIpv4AssignedAddressArgs

    Address string
    The assigned IPv4 address.
    Nat11Address string
    The assigned 1:1 NAT IPv4 address used to associate a public IPv4 address with the interface's VPC subnet IPv4 address.
    Primary bool
    Whether this address is the primary address for the interface.
    Address string
    The assigned IPv4 address.
    Nat11Address string
    The assigned 1:1 NAT IPv4 address used to associate a public IPv4 address with the interface's VPC subnet IPv4 address.
    Primary bool
    Whether this address is the primary address for the interface.
    address String
    The assigned IPv4 address.
    nat11Address String
    The assigned 1:1 NAT IPv4 address used to associate a public IPv4 address with the interface's VPC subnet IPv4 address.
    primary Boolean
    Whether this address is the primary address for the interface.
    address string
    The assigned IPv4 address.
    nat11Address string
    The assigned 1:1 NAT IPv4 address used to associate a public IPv4 address with the interface's VPC subnet IPv4 address.
    primary boolean
    Whether this address is the primary address for the interface.
    address str
    The assigned IPv4 address.
    nat11_address str
    The assigned 1:1 NAT IPv4 address used to associate a public IPv4 address with the interface's VPC subnet IPv4 address.
    primary bool
    Whether this address is the primary address for the interface.
    address String
    The assigned IPv4 address.
    nat11Address String
    The assigned 1:1 NAT IPv4 address used to associate a public IPv4 address with the interface's VPC subnet IPv4 address.
    primary Boolean
    Whether this address is the primary address for the interface.

    InterfaceVpcIpv4AssignedRange, InterfaceVpcIpv4AssignedRangeArgs

    Range string
    The IPv6 network range in CIDR notation.
    Range string
    The IPv6 network range in CIDR notation.
    range String
    The IPv6 network range in CIDR notation.
    range string
    The IPv6 network range in CIDR notation.
    range str
    The IPv6 network range in CIDR notation.
    range String
    The IPv6 network range in CIDR notation.

    InterfaceVpcIpv4Range, InterfaceVpcIpv4RangeArgs

    Range string
    The IPv4 range.
    Range string
    The IPv4 range.
    range String
    The IPv4 range.
    range string
    The IPv4 range.
    range str
    The IPv4 range.
    range String
    The IPv4 range.

    InterfaceVpcIpv6, InterfaceVpcIpv6Args

    AssignedRanges List<InterfaceVpcIpv6AssignedRange>
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    AssignedSlaacs List<InterfaceVpcIpv6AssignedSlaac>
    Assigned IPv6 SLAAC address ranges to use in the VPC subnet, calculated from slaac input.
    IsPublic bool
    Indicates whether the IPv6 configuration profile interface is public. (Default false)
    Ranges List<InterfaceVpcIpv6Range>
    Defines additional IPv6 network ranges.
    Slaacs List<InterfaceVpcIpv6Slaac>
    Defines IPv6 SLAAC address ranges. An address is automatically generated from the assigned /64 prefix using the Linode’s MAC address, just like on public IPv6 interfaces. Router advertisements (RA) are sent to the Linode, so standard SLAAC configuration works without any changes.
    AssignedRanges []InterfaceVpcIpv6AssignedRange
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    AssignedSlaacs []InterfaceVpcIpv6AssignedSlaac
    Assigned IPv6 SLAAC address ranges to use in the VPC subnet, calculated from slaac input.
    IsPublic bool
    Indicates whether the IPv6 configuration profile interface is public. (Default false)
    Ranges []InterfaceVpcIpv6Range
    Defines additional IPv6 network ranges.
    Slaacs []InterfaceVpcIpv6Slaac
    Defines IPv6 SLAAC address ranges. An address is automatically generated from the assigned /64 prefix using the Linode’s MAC address, just like on public IPv6 interfaces. Router advertisements (RA) are sent to the Linode, so standard SLAAC configuration works without any changes.
    assignedRanges List<InterfaceVpcIpv6AssignedRange>
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    assignedSlaacs List<InterfaceVpcIpv6AssignedSlaac>
    Assigned IPv6 SLAAC address ranges to use in the VPC subnet, calculated from slaac input.
    isPublic Boolean
    Indicates whether the IPv6 configuration profile interface is public. (Default false)
    ranges List<InterfaceVpcIpv6Range>
    Defines additional IPv6 network ranges.
    slaacs List<InterfaceVpcIpv6Slaac>
    Defines IPv6 SLAAC address ranges. An address is automatically generated from the assigned /64 prefix using the Linode’s MAC address, just like on public IPv6 interfaces. Router advertisements (RA) are sent to the Linode, so standard SLAAC configuration works without any changes.
    assignedRanges InterfaceVpcIpv6AssignedRange[]
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    assignedSlaacs InterfaceVpcIpv6AssignedSlaac[]
    Assigned IPv6 SLAAC address ranges to use in the VPC subnet, calculated from slaac input.
    isPublic boolean
    Indicates whether the IPv6 configuration profile interface is public. (Default false)
    ranges InterfaceVpcIpv6Range[]
    Defines additional IPv6 network ranges.
    slaacs InterfaceVpcIpv6Slaac[]
    Defines IPv6 SLAAC address ranges. An address is automatically generated from the assigned /64 prefix using the Linode’s MAC address, just like on public IPv6 interfaces. Router advertisements (RA) are sent to the Linode, so standard SLAAC configuration works without any changes.
    assigned_ranges Sequence[InterfaceVpcIpv6AssignedRange]
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    assigned_slaacs Sequence[InterfaceVpcIpv6AssignedSlaac]
    Assigned IPv6 SLAAC address ranges to use in the VPC subnet, calculated from slaac input.
    is_public bool
    Indicates whether the IPv6 configuration profile interface is public. (Default false)
    ranges Sequence[InterfaceVpcIpv6Range]
    Defines additional IPv6 network ranges.
    slaacs Sequence[InterfaceVpcIpv6Slaac]
    Defines IPv6 SLAAC address ranges. An address is automatically generated from the assigned /64 prefix using the Linode’s MAC address, just like on public IPv6 interfaces. Router advertisements (RA) are sent to the Linode, so standard SLAAC configuration works without any changes.
    assignedRanges List<Property Map>
    Assigned additional IPv6 ranges to use in the VPC subnet, calculated from ranges input.
    assignedSlaacs List<Property Map>
    Assigned IPv6 SLAAC address ranges to use in the VPC subnet, calculated from slaac input.
    isPublic Boolean
    Indicates whether the IPv6 configuration profile interface is public. (Default false)
    ranges List<Property Map>
    Defines additional IPv6 network ranges.
    slaacs List<Property Map>
    Defines IPv6 SLAAC address ranges. An address is automatically generated from the assigned /64 prefix using the Linode’s MAC address, just like on public IPv6 interfaces. Router advertisements (RA) are sent to the Linode, so standard SLAAC configuration works without any changes.

    InterfaceVpcIpv6AssignedRange, InterfaceVpcIpv6AssignedRangeArgs

    Range string
    The IPv6 network range in CIDR notation.
    Range string
    The IPv6 network range in CIDR notation.
    range String
    The IPv6 network range in CIDR notation.
    range string
    The IPv6 network range in CIDR notation.
    range str
    The IPv6 network range in CIDR notation.
    range String
    The IPv6 network range in CIDR notation.

    InterfaceVpcIpv6AssignedSlaac, InterfaceVpcIpv6AssignedSlaacArgs

    Address string
    The assigned IPv4 address.
    Range string
    The IPv6 network range in CIDR notation.
    Address string
    The assigned IPv4 address.
    Range string
    The IPv6 network range in CIDR notation.
    address String
    The assigned IPv4 address.
    range String
    The IPv6 network range in CIDR notation.
    address string
    The assigned IPv4 address.
    range string
    The IPv6 network range in CIDR notation.
    address str
    The assigned IPv4 address.
    range str
    The IPv6 network range in CIDR notation.
    address String
    The assigned IPv4 address.
    range String
    The IPv6 network range in CIDR notation.

    InterfaceVpcIpv6Range, InterfaceVpcIpv6RangeArgs

    Range string
    The IPv6 network range in CIDR notation.
    Range string
    The IPv6 network range in CIDR notation.
    range String
    The IPv6 network range in CIDR notation.
    range string
    The IPv6 network range in CIDR notation.
    range str
    The IPv6 network range in CIDR notation.
    range String
    The IPv6 network range in CIDR notation.

    InterfaceVpcIpv6Slaac, InterfaceVpcIpv6SlaacArgs

    Range string
    The IPv6 network range in CIDR notation.
    Range string
    The IPv6 network range in CIDR notation.
    range String
    The IPv6 network range in CIDR notation.
    range string
    The IPv6 network range in CIDR notation.
    range str
    The IPv6 network range in CIDR notation.
    range String
    The IPv6 network range in CIDR notation.

    Import

    Interfaces can be imported using a Linode ID followed by an Interface ID, separated by a comma, e.g.

    $ pulumi import linode:index/interface:Interface example 12345,67890
    

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    Linode pulumi/pulumi-linode
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the linode Terraform Provider.
    linode logo
    Linode v5.6.0 published on Wednesday, Dec 24, 2025 by Pulumi
      Meet Neo: Your AI Platform Teammate