1. Packages
  2. Proxmox Virtual Environment (Proxmox VE)
  3. API Docs
  4. SDNZone
  5. Qinq
Proxmox Virtual Environment (Proxmox VE) v7.4.0 published on Sunday, Aug 17, 2025 by Daniel Muehlbachler-Pietrzykowski

proxmoxve.SDNZone.Qinq

Explore with Pulumi AI

proxmoxve logo
Proxmox Virtual Environment (Proxmox VE) v7.4.0 published on Sunday, Aug 17, 2025 by Daniel Muehlbachler-Pietrzykowski

    QinQ Zone in Proxmox SDN. QinQ also known as VLAN stacking, that uses multiple layers of VLAN tags for isolation. The QinQ zone defines the outer VLAN tag (the Service VLAN) whereas the inner VLAN tag is defined by the VNet. Your physical network switches must support stacked VLANs for this configuration. Due to the double stacking of tags, you need 4 more bytes for QinQ VLANs. For example, you must reduce the MTU to 1496 if you physical interface MTU is 1500.

    Example Usage

    import * as pulumi from "@pulumi/pulumi";
    import * as proxmoxve from "@muhlba91/pulumi-proxmoxve";
    
    const example = new proxmoxve.sdnzone.Qinq("example", {
        bridge: "vmbr0",
        dns: "1.1.1.1",
        dnsZone: "example.com",
        zoneId: "qinq1",
        ipam: "pve",
        mtu: 1496,
        nodes: ["pve"],
        reverseDns: "1.1.1.1",
        serviceVlan: 100,
        serviceVlanProtocol: "802.1ad",
    });
    
    import pulumi
    import pulumi_proxmoxve as proxmoxve
    
    example = proxmoxve.sdnzone.Qinq("example",
        bridge="vmbr0",
        dns="1.1.1.1",
        dns_zone="example.com",
        zone_id="qinq1",
        ipam="pve",
        mtu=1496,
        nodes=["pve"],
        reverse_dns="1.1.1.1",
        service_vlan=100,
        service_vlan_protocol="802.1ad")
    
    package main
    
    import (
    	"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnzone"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := sdnzone.NewQinq(ctx, "example", &sdnzone.QinqArgs{
    			Bridge:  pulumi.String("vmbr0"),
    			Dns:     pulumi.String("1.1.1.1"),
    			DnsZone: pulumi.String("example.com"),
    			ZoneId:  pulumi.String("qinq1"),
    			Ipam:    pulumi.String("pve"),
    			Mtu:     pulumi.Int(1496),
    			Nodes: pulumi.StringArray{
    				pulumi.String("pve"),
    			},
    			ReverseDns:          pulumi.String("1.1.1.1"),
    			ServiceVlan:         pulumi.Int(100),
    			ServiceVlanProtocol: pulumi.String("802.1ad"),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using ProxmoxVE = Pulumi.ProxmoxVE;
    
    return await Deployment.RunAsync(() => 
    {
        var example = new ProxmoxVE.SDNZone.Qinq("example", new()
        {
            Bridge = "vmbr0",
            Dns = "1.1.1.1",
            DnsZone = "example.com",
            ZoneId = "qinq1",
            Ipam = "pve",
            Mtu = 1496,
            Nodes = new[]
            {
                "pve",
            },
            ReverseDns = "1.1.1.1",
            ServiceVlan = 100,
            ServiceVlanProtocol = "802.1ad",
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import io.muehlbachler.pulumi.proxmoxve.SDNZone.Qinq;
    import io.muehlbachler.pulumi.proxmoxve.SDNZone.QinqArgs;
    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 example = new Qinq("example", QinqArgs.builder()
                .bridge("vmbr0")
                .dns("1.1.1.1")
                .dnsZone("example.com")
                .zoneId("qinq1")
                .ipam("pve")
                .mtu(1496)
                .nodes("pve")
                .reverseDns("1.1.1.1")
                .serviceVlan(100)
                .serviceVlanProtocol("802.1ad")
                .build());
    
        }
    }
    
    resources:
      example:
        type: proxmoxve:SDNZone:Qinq
        properties:
          bridge: vmbr0
          # Optional attributes
          dns: 1.1.1.1
          dnsZone: example.com
          zoneId: qinq1
          ipam: pve
          mtu: 1496
          nodes:
            - pve
          reverseDns: 1.1.1.1
          serviceVlan: 100
          serviceVlanProtocol: 802.1ad
    

    Create Qinq Resource

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

    Constructor syntax

    new Qinq(name: string, args: QinqArgs, opts?: CustomResourceOptions);
    @overload
    def Qinq(resource_name: str,
             args: QinqArgs,
             opts: Optional[ResourceOptions] = None)
    
    @overload
    def Qinq(resource_name: str,
             opts: Optional[ResourceOptions] = None,
             bridge: Optional[str] = None,
             nodes: Optional[Sequence[str]] = None,
             service_vlan: Optional[int] = None,
             zone_id: Optional[str] = None,
             dns: Optional[str] = None,
             dns_zone: Optional[str] = None,
             ipam: Optional[str] = None,
             mtu: Optional[int] = None,
             reverse_dns: Optional[str] = None,
             service_vlan_protocol: Optional[str] = None)
    func NewQinq(ctx *Context, name string, args QinqArgs, opts ...ResourceOption) (*Qinq, error)
    public Qinq(string name, QinqArgs args, CustomResourceOptions? opts = null)
    public Qinq(String name, QinqArgs args)
    public Qinq(String name, QinqArgs args, CustomResourceOptions options)
    
    type: proxmoxve:SDNZone:Qinq
    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 QinqArgs
    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 QinqArgs
    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 QinqArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args QinqArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args QinqArgs
    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 qinqResource = new ProxmoxVE.SDNZone.Qinq("qinqResource", new()
    {
        Bridge = "string",
        Nodes = new[]
        {
            "string",
        },
        ServiceVlan = 0,
        ZoneId = "string",
        Dns = "string",
        DnsZone = "string",
        Ipam = "string",
        Mtu = 0,
        ReverseDns = "string",
        ServiceVlanProtocol = "string",
    });
    
    example, err := sdnzone.NewQinq(ctx, "qinqResource", &sdnzone.QinqArgs{
    	Bridge: pulumi.String("string"),
    	Nodes: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	ServiceVlan:         pulumi.Int(0),
    	ZoneId:              pulumi.String("string"),
    	Dns:                 pulumi.String("string"),
    	DnsZone:             pulumi.String("string"),
    	Ipam:                pulumi.String("string"),
    	Mtu:                 pulumi.Int(0),
    	ReverseDns:          pulumi.String("string"),
    	ServiceVlanProtocol: pulumi.String("string"),
    })
    
    var qinqResource = new Qinq("qinqResource", QinqArgs.builder()
        .bridge("string")
        .nodes("string")
        .serviceVlan(0)
        .zoneId("string")
        .dns("string")
        .dnsZone("string")
        .ipam("string")
        .mtu(0)
        .reverseDns("string")
        .serviceVlanProtocol("string")
        .build());
    
    qinq_resource = proxmoxve.sdnzone.Qinq("qinqResource",
        bridge="string",
        nodes=["string"],
        service_vlan=0,
        zone_id="string",
        dns="string",
        dns_zone="string",
        ipam="string",
        mtu=0,
        reverse_dns="string",
        service_vlan_protocol="string")
    
    const qinqResource = new proxmoxve.sdnzone.Qinq("qinqResource", {
        bridge: "string",
        nodes: ["string"],
        serviceVlan: 0,
        zoneId: "string",
        dns: "string",
        dnsZone: "string",
        ipam: "string",
        mtu: 0,
        reverseDns: "string",
        serviceVlanProtocol: "string",
    });
    
    type: proxmoxve:SDNZone:Qinq
    properties:
        bridge: string
        dns: string
        dnsZone: string
        ipam: string
        mtu: 0
        nodes:
            - string
        reverseDns: string
        serviceVlan: 0
        serviceVlanProtocol: string
        zoneId: string
    

    Qinq 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 Qinq resource accepts the following input properties:

    Bridge string
    A local, VLAN-aware bridge that is already configured on each local node
    Nodes List<string>
    The Proxmox nodes which the zone and associated VNets should be deployed on
    ServiceVlan int
    Service VLAN tag for QinQ. The tag must be between 1 and 4094.
    ZoneId string
    The unique identifier of the SDN zone.
    Dns string
    DNS API server address.
    DnsZone string
    DNS domain name. Used to register hostnames, such as <hostname>.<domain>. The DNS zone must already exist on the DNS server.
    Ipam string
    IP Address Management system.
    Mtu int
    MTU value for the zone.
    ReverseDns string
    Reverse DNS API server address.
    ServiceVlanProtocol string
    Service VLAN protocol for QinQ. The protocol must be 802.1ad or 802.1q.
    Bridge string
    A local, VLAN-aware bridge that is already configured on each local node
    Nodes []string
    The Proxmox nodes which the zone and associated VNets should be deployed on
    ServiceVlan int
    Service VLAN tag for QinQ. The tag must be between 1 and 4094.
    ZoneId string
    The unique identifier of the SDN zone.
    Dns string
    DNS API server address.
    DnsZone string
    DNS domain name. Used to register hostnames, such as <hostname>.<domain>. The DNS zone must already exist on the DNS server.
    Ipam string
    IP Address Management system.
    Mtu int
    MTU value for the zone.
    ReverseDns string
    Reverse DNS API server address.
    ServiceVlanProtocol string
    Service VLAN protocol for QinQ. The protocol must be 802.1ad or 802.1q.
    bridge String
    A local, VLAN-aware bridge that is already configured on each local node
    nodes List<String>
    The Proxmox nodes which the zone and associated VNets should be deployed on
    serviceVlan Integer
    Service VLAN tag for QinQ. The tag must be between 1 and 4094.
    zoneId String
    The unique identifier of the SDN zone.
    dns String
    DNS API server address.
    dnsZone String
    DNS domain name. Used to register hostnames, such as <hostname>.<domain>. The DNS zone must already exist on the DNS server.
    ipam String
    IP Address Management system.
    mtu Integer
    MTU value for the zone.
    reverseDns String
    Reverse DNS API server address.
    serviceVlanProtocol String
    Service VLAN protocol for QinQ. The protocol must be 802.1ad or 802.1q.
    bridge string
    A local, VLAN-aware bridge that is already configured on each local node
    nodes string[]
    The Proxmox nodes which the zone and associated VNets should be deployed on
    serviceVlan number
    Service VLAN tag for QinQ. The tag must be between 1 and 4094.
    zoneId string
    The unique identifier of the SDN zone.
    dns string
    DNS API server address.
    dnsZone string
    DNS domain name. Used to register hostnames, such as <hostname>.<domain>. The DNS zone must already exist on the DNS server.
    ipam string
    IP Address Management system.
    mtu number
    MTU value for the zone.
    reverseDns string
    Reverse DNS API server address.
    serviceVlanProtocol string
    Service VLAN protocol for QinQ. The protocol must be 802.1ad or 802.1q.
    bridge str
    A local, VLAN-aware bridge that is already configured on each local node
    nodes Sequence[str]
    The Proxmox nodes which the zone and associated VNets should be deployed on
    service_vlan int
    Service VLAN tag for QinQ. The tag must be between 1 and 4094.
    zone_id str
    The unique identifier of the SDN zone.
    dns str
    DNS API server address.
    dns_zone str
    DNS domain name. Used to register hostnames, such as <hostname>.<domain>. The DNS zone must already exist on the DNS server.
    ipam str
    IP Address Management system.
    mtu int
    MTU value for the zone.
    reverse_dns str
    Reverse DNS API server address.
    service_vlan_protocol str
    Service VLAN protocol for QinQ. The protocol must be 802.1ad or 802.1q.
    bridge String
    A local, VLAN-aware bridge that is already configured on each local node
    nodes List<String>
    The Proxmox nodes which the zone and associated VNets should be deployed on
    serviceVlan Number
    Service VLAN tag for QinQ. The tag must be between 1 and 4094.
    zoneId String
    The unique identifier of the SDN zone.
    dns String
    DNS API server address.
    dnsZone String
    DNS domain name. Used to register hostnames, such as <hostname>.<domain>. The DNS zone must already exist on the DNS server.
    ipam String
    IP Address Management system.
    mtu Number
    MTU value for the zone.
    reverseDns String
    Reverse DNS API server address.
    serviceVlanProtocol String
    Service VLAN protocol for QinQ. The protocol must be 802.1ad or 802.1q.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the Qinq 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 Qinq Resource

    Get an existing Qinq 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?: QinqState, opts?: CustomResourceOptions): Qinq
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            bridge: Optional[str] = None,
            dns: Optional[str] = None,
            dns_zone: Optional[str] = None,
            ipam: Optional[str] = None,
            mtu: Optional[int] = None,
            nodes: Optional[Sequence[str]] = None,
            reverse_dns: Optional[str] = None,
            service_vlan: Optional[int] = None,
            service_vlan_protocol: Optional[str] = None,
            zone_id: Optional[str] = None) -> Qinq
    func GetQinq(ctx *Context, name string, id IDInput, state *QinqState, opts ...ResourceOption) (*Qinq, error)
    public static Qinq Get(string name, Input<string> id, QinqState? state, CustomResourceOptions? opts = null)
    public static Qinq get(String name, Output<String> id, QinqState state, CustomResourceOptions options)
    resources:  _:    type: proxmoxve:SDNZone:Qinq    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:
    Bridge string
    A local, VLAN-aware bridge that is already configured on each local node
    Dns string
    DNS API server address.
    DnsZone string
    DNS domain name. Used to register hostnames, such as <hostname>.<domain>. The DNS zone must already exist on the DNS server.
    Ipam string
    IP Address Management system.
    Mtu int
    MTU value for the zone.
    Nodes List<string>
    The Proxmox nodes which the zone and associated VNets should be deployed on
    ReverseDns string
    Reverse DNS API server address.
    ServiceVlan int
    Service VLAN tag for QinQ. The tag must be between 1 and 4094.
    ServiceVlanProtocol string
    Service VLAN protocol for QinQ. The protocol must be 802.1ad or 802.1q.
    ZoneId string
    The unique identifier of the SDN zone.
    Bridge string
    A local, VLAN-aware bridge that is already configured on each local node
    Dns string
    DNS API server address.
    DnsZone string
    DNS domain name. Used to register hostnames, such as <hostname>.<domain>. The DNS zone must already exist on the DNS server.
    Ipam string
    IP Address Management system.
    Mtu int
    MTU value for the zone.
    Nodes []string
    The Proxmox nodes which the zone and associated VNets should be deployed on
    ReverseDns string
    Reverse DNS API server address.
    ServiceVlan int
    Service VLAN tag for QinQ. The tag must be between 1 and 4094.
    ServiceVlanProtocol string
    Service VLAN protocol for QinQ. The protocol must be 802.1ad or 802.1q.
    ZoneId string
    The unique identifier of the SDN zone.
    bridge String
    A local, VLAN-aware bridge that is already configured on each local node
    dns String
    DNS API server address.
    dnsZone String
    DNS domain name. Used to register hostnames, such as <hostname>.<domain>. The DNS zone must already exist on the DNS server.
    ipam String
    IP Address Management system.
    mtu Integer
    MTU value for the zone.
    nodes List<String>
    The Proxmox nodes which the zone and associated VNets should be deployed on
    reverseDns String
    Reverse DNS API server address.
    serviceVlan Integer
    Service VLAN tag for QinQ. The tag must be between 1 and 4094.
    serviceVlanProtocol String
    Service VLAN protocol for QinQ. The protocol must be 802.1ad or 802.1q.
    zoneId String
    The unique identifier of the SDN zone.
    bridge string
    A local, VLAN-aware bridge that is already configured on each local node
    dns string
    DNS API server address.
    dnsZone string
    DNS domain name. Used to register hostnames, such as <hostname>.<domain>. The DNS zone must already exist on the DNS server.
    ipam string
    IP Address Management system.
    mtu number
    MTU value for the zone.
    nodes string[]
    The Proxmox nodes which the zone and associated VNets should be deployed on
    reverseDns string
    Reverse DNS API server address.
    serviceVlan number
    Service VLAN tag for QinQ. The tag must be between 1 and 4094.
    serviceVlanProtocol string
    Service VLAN protocol for QinQ. The protocol must be 802.1ad or 802.1q.
    zoneId string
    The unique identifier of the SDN zone.
    bridge str
    A local, VLAN-aware bridge that is already configured on each local node
    dns str
    DNS API server address.
    dns_zone str
    DNS domain name. Used to register hostnames, such as <hostname>.<domain>. The DNS zone must already exist on the DNS server.
    ipam str
    IP Address Management system.
    mtu int
    MTU value for the zone.
    nodes Sequence[str]
    The Proxmox nodes which the zone and associated VNets should be deployed on
    reverse_dns str
    Reverse DNS API server address.
    service_vlan int
    Service VLAN tag for QinQ. The tag must be between 1 and 4094.
    service_vlan_protocol str
    Service VLAN protocol for QinQ. The protocol must be 802.1ad or 802.1q.
    zone_id str
    The unique identifier of the SDN zone.
    bridge String
    A local, VLAN-aware bridge that is already configured on each local node
    dns String
    DNS API server address.
    dnsZone String
    DNS domain name. Used to register hostnames, such as <hostname>.<domain>. The DNS zone must already exist on the DNS server.
    ipam String
    IP Address Management system.
    mtu Number
    MTU value for the zone.
    nodes List<String>
    The Proxmox nodes which the zone and associated VNets should be deployed on
    reverseDns String
    Reverse DNS API server address.
    serviceVlan Number
    Service VLAN tag for QinQ. The tag must be between 1 and 4094.
    serviceVlanProtocol String
    Service VLAN protocol for QinQ. The protocol must be 802.1ad or 802.1q.
    zoneId String
    The unique identifier of the SDN zone.

    Import

    #!/usr/bin/env sh

    QinQ SDN zone can be imported using its unique identifier (zone ID)

    $ pulumi import proxmoxve:SDNZone/qinq:Qinq example qinq1
    

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

    Package Details

    Repository
    proxmoxve muhlba91/pulumi-proxmoxve
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the proxmox Terraform Provider.
    proxmoxve logo
    Proxmox Virtual Environment (Proxmox VE) v7.4.0 published on Sunday, Aug 17, 2025 by Daniel Muehlbachler-Pietrzykowski