1. Packages
  2. Juniper Mist Provider
  3. API Docs
  4. site
  5. EvpnTopology
Juniper Mist v0.3.0 published on Wednesday, Apr 9, 2025 by Pulumi

junipermist.site.EvpnTopology

Explore with Pulumi AI

This resource manages the Site Evpn Topology.

EVPN allows an alternative but more efficient LAN architecture utilizing VxLAN / MP-BGP to separate the control plane (MAC / IP Learning) from the forwarding plane.

To create or manage your EVPN Topology with the Mist Provider, please refer to the How To - EVPN Topology Guide.

Example Usage

import * as pulumi from "@pulumi/pulumi";
import * as mist from "@pulumi/mist";

const evpnOne = new mist.index.SiteSiteEvpnTopology("evpn_one", {
    siteId: terraformTest.id,
    name: "evpn_one",
    evpnOptions: {
        routedAt: "core",
        overlay: {
            as: 65000,
        },
        coreAsBorder: true,
        autoLoopbackSubnet: "172.16.192.0/24",
        autoLoopbackSubnet6: "fd33:ab00:2::/64",
        perVlanVgaV4Mac: false,
        underlay: {
            asBase: 65001,
            useIpv6: false,
            subnet: "10.255.240.0/20",
        },
        autoRouterIdSubnet: "172.16.254.0/23",
    },
    switches: [
        {
            mac: "020004000001",
            role: "core",
        },
        {
            mac: "02000400002",
            role: "core",
        },
        {
            mac: "02000400003",
            role: "distribution",
        },
        {
            mac: "02000400004",
            role: "distribution",
        },
        {
            mac: "02000400005",
            role: "access",
        },
        {
            mac: "02000400006",
            role: "access",
        },
    ],
});
Copy
import pulumi
import pulumi_mist as mist

evpn_one = mist.index.SiteSiteEvpnTopology("evpn_one",
    site_id=terraform_test.id,
    name=evpn_one,
    evpn_options={
        routedAt: core,
        overlay: {
            as: 65000,
        },
        coreAsBorder: True,
        autoLoopbackSubnet: 172.16.192.0/24,
        autoLoopbackSubnet6: fd33:ab00:2::/64,
        perVlanVgaV4Mac: False,
        underlay: {
            asBase: 65001,
            useIpv6: False,
            subnet: 10.255.240.0/20,
        },
        autoRouterIdSubnet: 172.16.254.0/23,
    },
    switches=[
        {
            mac: 020004000001,
            role: core,
        },
        {
            mac: 02000400002,
            role: core,
        },
        {
            mac: 02000400003,
            role: distribution,
        },
        {
            mac: 02000400004,
            role: distribution,
        },
        {
            mac: 02000400005,
            role: access,
        },
        {
            mac: 02000400006,
            role: access,
        },
    ])
Copy
package main

import (
	"github.com/pulumi/pulumi-mist/sdk/go/mist"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := mist.NewSiteSiteEvpnTopology(ctx, "evpn_one", &mist.SiteSiteEvpnTopologyArgs{
			SiteId: terraformTest.Id,
			Name:   "evpn_one",
			EvpnOptions: map[string]interface{}{
				"routedAt": "core",
				"overlay": map[string]interface{}{
					"as": 65000,
				},
				"coreAsBorder":        true,
				"autoLoopbackSubnet":  "172.16.192.0/24",
				"autoLoopbackSubnet6": "fd33:ab00:2::/64",
				"perVlanVgaV4Mac":     false,
				"underlay": map[string]interface{}{
					"asBase":  65001,
					"useIpv6": false,
					"subnet":  "10.255.240.0/20",
				},
				"autoRouterIdSubnet": "172.16.254.0/23",
			},
			Switches: []map[string]interface{}{
				map[string]interface{}{
					"mac":  "020004000001",
					"role": "core",
				},
				map[string]interface{}{
					"mac":  "02000400002",
					"role": "core",
				},
				map[string]interface{}{
					"mac":  "02000400003",
					"role": "distribution",
				},
				map[string]interface{}{
					"mac":  "02000400004",
					"role": "distribution",
				},
				map[string]interface{}{
					"mac":  "02000400005",
					"role": "access",
				},
				map[string]interface{}{
					"mac":  "02000400006",
					"role": "access",
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
Copy
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Mist = Pulumi.Mist;

return await Deployment.RunAsync(() => 
{
    var evpnOne = new Mist.Index.SiteSiteEvpnTopology("evpn_one", new()
    {
        SiteId = terraformTest.Id,
        Name = "evpn_one",
        EvpnOptions = 
        {
            { "routedAt", "core" },
            { "overlay", 
            {
                { "as", 65000 },
            } },
            { "coreAsBorder", true },
            { "autoLoopbackSubnet", "172.16.192.0/24" },
            { "autoLoopbackSubnet6", "fd33:ab00:2::/64" },
            { "perVlanVgaV4Mac", false },
            { "underlay", 
            {
                { "asBase", 65001 },
                { "useIpv6", false },
                { "subnet", "10.255.240.0/20" },
            } },
            { "autoRouterIdSubnet", "172.16.254.0/23" },
        },
        Switches = new[]
        {
            
            {
                { "mac", "020004000001" },
                { "role", "core" },
            },
            
            {
                { "mac", "02000400002" },
                { "role", "core" },
            },
            
            {
                { "mac", "02000400003" },
                { "role", "distribution" },
            },
            
            {
                { "mac", "02000400004" },
                { "role", "distribution" },
            },
            
            {
                { "mac", "02000400005" },
                { "role", "access" },
            },
            
            {
                { "mac", "02000400006" },
                { "role", "access" },
            },
        },
    });

});
Copy
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.mist.siteSiteEvpnTopology;
import com.pulumi.mist.siteSiteEvpnTopologyArgs;
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 evpnOne = new SiteSiteEvpnTopology("evpnOne", SiteSiteEvpnTopologyArgs.builder()
            .siteId(terraformTest.id())
            .name("evpn_one")
            .evpnOptions(Map.ofEntries(
                Map.entry("routedAt", "core"),
                Map.entry("overlay", Map.of("as", 65000)),
                Map.entry("coreAsBorder", true),
                Map.entry("autoLoopbackSubnet", "172.16.192.0/24"),
                Map.entry("autoLoopbackSubnet6", "fd33:ab00:2::/64"),
                Map.entry("perVlanVgaV4Mac", false),
                Map.entry("underlay", Map.ofEntries(
                    Map.entry("asBase", 65001),
                    Map.entry("useIpv6", false),
                    Map.entry("subnet", "10.255.240.0/20")
                )),
                Map.entry("autoRouterIdSubnet", "172.16.254.0/23")
            ))
            .switches(List.of(            
                Map.ofEntries(
                    Map.entry("mac", "020004000001"),
                    Map.entry("role", "core")
                ),
                Map.ofEntries(
                    Map.entry("mac", "02000400002"),
                    Map.entry("role", "core")
                ),
                Map.ofEntries(
                    Map.entry("mac", "02000400003"),
                    Map.entry("role", "distribution")
                ),
                Map.ofEntries(
                    Map.entry("mac", "02000400004"),
                    Map.entry("role", "distribution")
                ),
                Map.ofEntries(
                    Map.entry("mac", "02000400005"),
                    Map.entry("role", "access")
                ),
                Map.ofEntries(
                    Map.entry("mac", "02000400006"),
                    Map.entry("role", "access")
                )))
            .build());

    }
}
Copy
resources:
  evpnOne:
    type: mist:siteSiteEvpnTopology
    name: evpn_one
    properties:
      siteId: ${terraformTest.id}
      name: evpn_one
      evpnOptions:
        routedAt: core
        overlay:
          as: 65000
        coreAsBorder: true
        autoLoopbackSubnet: 172.16.192.0/24
        autoLoopbackSubnet6: fd33:ab00:2::/64
        perVlanVgaV4Mac: false
        underlay:
          asBase: 65001
          useIpv6: false
          subnet: 10.255.240.0/20
        autoRouterIdSubnet: 172.16.254.0/23
      switches:
        - mac: '020004000001'
          role: core
        - mac: '02000400002'
          role: core
        - mac: '02000400003'
          role: distribution
        - mac: '02000400004'
          role: distribution
        - mac: '02000400005'
          role: access
        - mac: '02000400006'
          role: access
Copy

Create EvpnTopology Resource

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

Constructor syntax

new EvpnTopology(name: string, args: EvpnTopologyArgs, opts?: CustomResourceOptions);
@overload
def EvpnTopology(resource_name: str,
                 args: EvpnTopologyArgs,
                 opts: Optional[ResourceOptions] = None)

@overload
def EvpnTopology(resource_name: str,
                 opts: Optional[ResourceOptions] = None,
                 site_id: Optional[str] = None,
                 switches: Optional[Mapping[str, EvpnTopologySwitchesArgs]] = None,
                 evpn_options: Optional[EvpnTopologyEvpnOptionsArgs] = None,
                 name: Optional[str] = None,
                 pod_names: Optional[Mapping[str, str]] = None)
func NewEvpnTopology(ctx *Context, name string, args EvpnTopologyArgs, opts ...ResourceOption) (*EvpnTopology, error)
public EvpnTopology(string name, EvpnTopologyArgs args, CustomResourceOptions? opts = null)
public EvpnTopology(String name, EvpnTopologyArgs args)
public EvpnTopology(String name, EvpnTopologyArgs args, CustomResourceOptions options)
type: junipermist:site:EvpnTopology
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.

Parameters

name This property is required. string
The unique name of the resource.
args This property is required. EvpnTopologyArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.
resource_name This property is required. str
The unique name of the resource.
args This property is required. EvpnTopologyArgs
The arguments to resource properties.
opts ResourceOptions
Bag of options to control resource's behavior.
ctx Context
Context object for the current deployment.
name This property is required. string
The unique name of the resource.
args This property is required. EvpnTopologyArgs
The arguments to resource properties.
opts ResourceOption
Bag of options to control resource's behavior.
name This property is required. string
The unique name of the resource.
args This property is required. EvpnTopologyArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.
name This property is required. String
The unique name of the resource.
args This property is required. EvpnTopologyArgs
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 junipermistEvpnTopologyResource = new JuniperMist.Site.EvpnTopology("junipermistEvpnTopologyResource", new()
{
    SiteId = "string",
    Switches = 
    {
        { "string", new JuniperMist.Site.Inputs.EvpnTopologySwitchesArgs
        {
            Role = "string",
            DeviceprofileId = "string",
            EvpnId = 0,
            Mac = "string",
            Model = "string",
            Pod = 0,
            Pods = new[]
            {
                0,
            },
            RouterId = "string",
            SiteId = "string",
        } },
    },
    EvpnOptions = new JuniperMist.Site.Inputs.EvpnTopologyEvpnOptionsArgs
    {
        AutoLoopbackSubnet = "string",
        AutoLoopbackSubnet6 = "string",
        AutoRouterIdSubnet = "string",
        AutoRouterIdSubnet6 = "string",
        CoreAsBorder = false,
        Overlay = new JuniperMist.Site.Inputs.EvpnTopologyEvpnOptionsOverlayArgs
        {
            As = 0,
        },
        PerVlanVgaV4Mac = false,
        PerVlanVgaV6Mac = false,
        RoutedAt = "string",
        Underlay = new JuniperMist.Site.Inputs.EvpnTopologyEvpnOptionsUnderlayArgs
        {
            AsBase = 0,
            RoutedIdPrefix = "string",
            Subnet = "string",
            UseIpv6 = false,
        },
        VsInstances = 
        {
            { "string", new JuniperMist.Site.Inputs.EvpnTopologyEvpnOptionsVsInstancesArgs
            {
                Networks = new[]
                {
                    "string",
                },
            } },
        },
    },
    Name = "string",
    PodNames = 
    {
        { "string", "string" },
    },
});
Copy
example, err := site.NewEvpnTopology(ctx, "junipermistEvpnTopologyResource", &site.EvpnTopologyArgs{
	SiteId: pulumi.String("string"),
	Switches: site.EvpnTopologySwitchesMap{
		"string": &site.EvpnTopologySwitchesArgs{
			Role:            pulumi.String("string"),
			DeviceprofileId: pulumi.String("string"),
			EvpnId:          pulumi.Int(0),
			Mac:             pulumi.String("string"),
			Model:           pulumi.String("string"),
			Pod:             pulumi.Int(0),
			Pods: pulumi.IntArray{
				pulumi.Int(0),
			},
			RouterId: pulumi.String("string"),
			SiteId:   pulumi.String("string"),
		},
	},
	EvpnOptions: &site.EvpnTopologyEvpnOptionsArgs{
		AutoLoopbackSubnet:  pulumi.String("string"),
		AutoLoopbackSubnet6: pulumi.String("string"),
		AutoRouterIdSubnet:  pulumi.String("string"),
		AutoRouterIdSubnet6: pulumi.String("string"),
		CoreAsBorder:        pulumi.Bool(false),
		Overlay: &site.EvpnTopologyEvpnOptionsOverlayArgs{
			As: pulumi.Int(0),
		},
		PerVlanVgaV4Mac: pulumi.Bool(false),
		PerVlanVgaV6Mac: pulumi.Bool(false),
		RoutedAt:        pulumi.String("string"),
		Underlay: &site.EvpnTopologyEvpnOptionsUnderlayArgs{
			AsBase:         pulumi.Int(0),
			RoutedIdPrefix: pulumi.String("string"),
			Subnet:         pulumi.String("string"),
			UseIpv6:        pulumi.Bool(false),
		},
		VsInstances: site.EvpnTopologyEvpnOptionsVsInstancesMap{
			"string": &site.EvpnTopologyEvpnOptionsVsInstancesArgs{
				Networks: pulumi.StringArray{
					pulumi.String("string"),
				},
			},
		},
	},
	Name: pulumi.String("string"),
	PodNames: pulumi.StringMap{
		"string": pulumi.String("string"),
	},
})
Copy
var junipermistEvpnTopologyResource = new EvpnTopology("junipermistEvpnTopologyResource", EvpnTopologyArgs.builder()
    .siteId("string")
    .switches(Map.of("string", Map.ofEntries(
        Map.entry("role", "string"),
        Map.entry("deviceprofileId", "string"),
        Map.entry("evpnId", 0),
        Map.entry("mac", "string"),
        Map.entry("model", "string"),
        Map.entry("pod", 0),
        Map.entry("pods", 0),
        Map.entry("routerId", "string"),
        Map.entry("siteId", "string")
    )))
    .evpnOptions(EvpnTopologyEvpnOptionsArgs.builder()
        .autoLoopbackSubnet("string")
        .autoLoopbackSubnet6("string")
        .autoRouterIdSubnet("string")
        .autoRouterIdSubnet6("string")
        .coreAsBorder(false)
        .overlay(EvpnTopologyEvpnOptionsOverlayArgs.builder()
            .as(0)
            .build())
        .perVlanVgaV4Mac(false)
        .perVlanVgaV6Mac(false)
        .routedAt("string")
        .underlay(EvpnTopologyEvpnOptionsUnderlayArgs.builder()
            .asBase(0)
            .routedIdPrefix("string")
            .subnet("string")
            .useIpv6(false)
            .build())
        .vsInstances(Map.of("string", Map.of("networks", "string")))
        .build())
    .name("string")
    .podNames(Map.of("string", "string"))
    .build());
Copy
junipermist_evpn_topology_resource = junipermist.site.EvpnTopology("junipermistEvpnTopologyResource",
    site_id="string",
    switches={
        "string": {
            "role": "string",
            "deviceprofile_id": "string",
            "evpn_id": 0,
            "mac": "string",
            "model": "string",
            "pod": 0,
            "pods": [0],
            "router_id": "string",
            "site_id": "string",
        },
    },
    evpn_options={
        "auto_loopback_subnet": "string",
        "auto_loopback_subnet6": "string",
        "auto_router_id_subnet": "string",
        "auto_router_id_subnet6": "string",
        "core_as_border": False,
        "overlay": {
            "as_": 0,
        },
        "per_vlan_vga_v4_mac": False,
        "per_vlan_vga_v6_mac": False,
        "routed_at": "string",
        "underlay": {
            "as_base": 0,
            "routed_id_prefix": "string",
            "subnet": "string",
            "use_ipv6": False,
        },
        "vs_instances": {
            "string": {
                "networks": ["string"],
            },
        },
    },
    name="string",
    pod_names={
        "string": "string",
    })
Copy
const junipermistEvpnTopologyResource = new junipermist.site.EvpnTopology("junipermistEvpnTopologyResource", {
    siteId: "string",
    switches: {
        string: {
            role: "string",
            deviceprofileId: "string",
            evpnId: 0,
            mac: "string",
            model: "string",
            pod: 0,
            pods: [0],
            routerId: "string",
            siteId: "string",
        },
    },
    evpnOptions: {
        autoLoopbackSubnet: "string",
        autoLoopbackSubnet6: "string",
        autoRouterIdSubnet: "string",
        autoRouterIdSubnet6: "string",
        coreAsBorder: false,
        overlay: {
            as: 0,
        },
        perVlanVgaV4Mac: false,
        perVlanVgaV6Mac: false,
        routedAt: "string",
        underlay: {
            asBase: 0,
            routedIdPrefix: "string",
            subnet: "string",
            useIpv6: false,
        },
        vsInstances: {
            string: {
                networks: ["string"],
            },
        },
    },
    name: "string",
    podNames: {
        string: "string",
    },
});
Copy
type: junipermist:site:EvpnTopology
properties:
    evpnOptions:
        autoLoopbackSubnet: string
        autoLoopbackSubnet6: string
        autoRouterIdSubnet: string
        autoRouterIdSubnet6: string
        coreAsBorder: false
        overlay:
            as: 0
        perVlanVgaV4Mac: false
        perVlanVgaV6Mac: false
        routedAt: string
        underlay:
            asBase: 0
            routedIdPrefix: string
            subnet: string
            useIpv6: false
        vsInstances:
            string:
                networks:
                    - string
    name: string
    podNames:
        string: string
    siteId: string
    switches:
        string:
            deviceprofileId: string
            evpnId: 0
            mac: string
            model: string
            pod: 0
            pods:
                - 0
            role: string
            routerId: string
            siteId: string
Copy

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

SiteId This property is required. string
Switches This property is required. Dictionary<string, Pulumi.JuniperMist.Site.Inputs.EvpnTopologySwitchesArgs>
Property key can be the switch MAC Address
EvpnOptions Pulumi.JuniperMist.Site.Inputs.EvpnTopologyEvpnOptions
EVPN Options
Name string
PodNames Dictionary<string, string>
Property key is the pod number
SiteId This property is required. string
Switches This property is required. map[string]EvpnTopologySwitchesArgs
Property key can be the switch MAC Address
EvpnOptions EvpnTopologyEvpnOptionsArgs
EVPN Options
Name string
PodNames map[string]string
Property key is the pod number
siteId This property is required. String
switches This property is required. Map<String,EvpnTopologySwitchesArgs>
Property key can be the switch MAC Address
evpnOptions EvpnTopologyEvpnOptions
EVPN Options
name String
podNames Map<String,String>
Property key is the pod number
siteId This property is required. string
switches This property is required. {[key: string]: EvpnTopologySwitchesArgs}
Property key can be the switch MAC Address
evpnOptions EvpnTopologyEvpnOptions
EVPN Options
name string
podNames {[key: string]: string}
Property key is the pod number
site_id This property is required. str
switches This property is required. Mapping[str, EvpnTopologySwitchesArgs]
Property key can be the switch MAC Address
evpn_options EvpnTopologyEvpnOptionsArgs
EVPN Options
name str
pod_names Mapping[str, str]
Property key is the pod number
siteId This property is required. String
switches This property is required. Map<Property Map>
Property key can be the switch MAC Address
evpnOptions Property Map
EVPN Options
name String
podNames Map<String>
Property key is the pod number

Outputs

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

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

Look up Existing EvpnTopology Resource

Get an existing EvpnTopology 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?: EvpnTopologyState, opts?: CustomResourceOptions): EvpnTopology
@staticmethod
def get(resource_name: str,
        id: str,
        opts: Optional[ResourceOptions] = None,
        evpn_options: Optional[EvpnTopologyEvpnOptionsArgs] = None,
        name: Optional[str] = None,
        org_id: Optional[str] = None,
        pod_names: Optional[Mapping[str, str]] = None,
        site_id: Optional[str] = None,
        switches: Optional[Mapping[str, EvpnTopologySwitchesArgs]] = None) -> EvpnTopology
func GetEvpnTopology(ctx *Context, name string, id IDInput, state *EvpnTopologyState, opts ...ResourceOption) (*EvpnTopology, error)
public static EvpnTopology Get(string name, Input<string> id, EvpnTopologyState? state, CustomResourceOptions? opts = null)
public static EvpnTopology get(String name, Output<String> id, EvpnTopologyState state, CustomResourceOptions options)
resources:  _:    type: junipermist:site:EvpnTopology    get:      id: ${id}
name This property is required.
The unique name of the resulting resource.
id This property is required.
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 This property is required.
The unique name of the resulting resource.
id This property is required.
The unique provider ID of the resource to lookup.
name This property is required.
The unique name of the resulting resource.
id This property is required.
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 This property is required.
The unique name of the resulting resource.
id This property is required.
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 This property is required.
The unique name of the resulting resource.
id This property is required.
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:
EvpnOptions Pulumi.JuniperMist.Site.Inputs.EvpnTopologyEvpnOptions
EVPN Options
Name string
OrgId string
PodNames Dictionary<string, string>
Property key is the pod number
SiteId string
Switches Dictionary<string, Pulumi.JuniperMist.Site.Inputs.EvpnTopologySwitchesArgs>
Property key can be the switch MAC Address
EvpnOptions EvpnTopologyEvpnOptionsArgs
EVPN Options
Name string
OrgId string
PodNames map[string]string
Property key is the pod number
SiteId string
Switches map[string]EvpnTopologySwitchesArgs
Property key can be the switch MAC Address
evpnOptions EvpnTopologyEvpnOptions
EVPN Options
name String
orgId String
podNames Map<String,String>
Property key is the pod number
siteId String
switches Map<String,EvpnTopologySwitchesArgs>
Property key can be the switch MAC Address
evpnOptions EvpnTopologyEvpnOptions
EVPN Options
name string
orgId string
podNames {[key: string]: string}
Property key is the pod number
siteId string
switches {[key: string]: EvpnTopologySwitchesArgs}
Property key can be the switch MAC Address
evpn_options EvpnTopologyEvpnOptionsArgs
EVPN Options
name str
org_id str
pod_names Mapping[str, str]
Property key is the pod number
site_id str
switches Mapping[str, EvpnTopologySwitchesArgs]
Property key can be the switch MAC Address
evpnOptions Property Map
EVPN Options
name String
orgId String
podNames Map<String>
Property key is the pod number
siteId String
switches Map<Property Map>
Property key can be the switch MAC Address

Supporting Types

EvpnTopologyEvpnOptions
, EvpnTopologyEvpnOptionsArgs

AutoLoopbackSubnet string
Optional, for dhcp_relay, unique loopback IPs are required for ERB or IPClos where we can set option-82 server_id-overrides
AutoLoopbackSubnet6 string
Optional, for dhcp_relay, unique loopback IPs are required for ERB or IPClos where we can set option-82 server_id-overrides
AutoRouterIdSubnet string
Optional, this generates router_id automatically, if specified, router_id_prefix is ignored
AutoRouterIdSubnet6 string
Optional, this generates router_id automatically, if specified, router_id_prefix is ignored
CoreAsBorder bool
Optional, for ERB or CLOS, you can either use esilag to upstream routers or to also be the virtual-gateway. When routed_at != core, whether to do virtual-gateway at core as well
Overlay Pulumi.JuniperMist.Site.Inputs.EvpnTopologyEvpnOptionsOverlay
PerVlanVgaV4Mac bool
Only for by Core-Distribution architecture when evpn_options.routed_at==core. By default, JUNOS uses 00-00-5e-00-01-01 as the virtual-gateway-address's v4_mac. If enabled, 00-00-5e-00-0X-YY will be used (where XX=vlan_id/256, YY=vlan_id%256)
PerVlanVgaV6Mac bool
Only for by Core-Distribution architecture when evpn_options.routed_at==core. By default, JUNOS uses 00-00-5e-00-02-01 as the virtual-gateway-address's v6_mac. If enabled, 00-00-5e-00-1X-YY will be used (where XX=vlan_id/256, YY=vlan_id%256)
RoutedAt string
optional, where virtual-gateway should reside. enum: core, distribution, edge
Underlay Pulumi.JuniperMist.Site.Inputs.EvpnTopologyEvpnOptionsUnderlay
VsInstances Dictionary<string, Pulumi.JuniperMist.Site.Inputs.EvpnTopologyEvpnOptionsVsInstances>
Optional, for EX9200 only to segregate virtual-switches
AutoLoopbackSubnet string
Optional, for dhcp_relay, unique loopback IPs are required for ERB or IPClos where we can set option-82 server_id-overrides
AutoLoopbackSubnet6 string
Optional, for dhcp_relay, unique loopback IPs are required for ERB or IPClos where we can set option-82 server_id-overrides
AutoRouterIdSubnet string
Optional, this generates router_id automatically, if specified, router_id_prefix is ignored
AutoRouterIdSubnet6 string
Optional, this generates router_id automatically, if specified, router_id_prefix is ignored
CoreAsBorder bool
Optional, for ERB or CLOS, you can either use esilag to upstream routers or to also be the virtual-gateway. When routed_at != core, whether to do virtual-gateway at core as well
Overlay EvpnTopologyEvpnOptionsOverlay
PerVlanVgaV4Mac bool
Only for by Core-Distribution architecture when evpn_options.routed_at==core. By default, JUNOS uses 00-00-5e-00-01-01 as the virtual-gateway-address's v4_mac. If enabled, 00-00-5e-00-0X-YY will be used (where XX=vlan_id/256, YY=vlan_id%256)
PerVlanVgaV6Mac bool
Only for by Core-Distribution architecture when evpn_options.routed_at==core. By default, JUNOS uses 00-00-5e-00-02-01 as the virtual-gateway-address's v6_mac. If enabled, 00-00-5e-00-1X-YY will be used (where XX=vlan_id/256, YY=vlan_id%256)
RoutedAt string
optional, where virtual-gateway should reside. enum: core, distribution, edge
Underlay EvpnTopologyEvpnOptionsUnderlay
VsInstances map[string]EvpnTopologyEvpnOptionsVsInstances
Optional, for EX9200 only to segregate virtual-switches
autoLoopbackSubnet String
Optional, for dhcp_relay, unique loopback IPs are required for ERB or IPClos where we can set option-82 server_id-overrides
autoLoopbackSubnet6 String
Optional, for dhcp_relay, unique loopback IPs are required for ERB or IPClos where we can set option-82 server_id-overrides
autoRouterIdSubnet String
Optional, this generates router_id automatically, if specified, router_id_prefix is ignored
autoRouterIdSubnet6 String
Optional, this generates router_id automatically, if specified, router_id_prefix is ignored
coreAsBorder Boolean
Optional, for ERB or CLOS, you can either use esilag to upstream routers or to also be the virtual-gateway. When routed_at != core, whether to do virtual-gateway at core as well
overlay EvpnTopologyEvpnOptionsOverlay
perVlanVgaV4Mac Boolean
Only for by Core-Distribution architecture when evpn_options.routed_at==core. By default, JUNOS uses 00-00-5e-00-01-01 as the virtual-gateway-address's v4_mac. If enabled, 00-00-5e-00-0X-YY will be used (where XX=vlan_id/256, YY=vlan_id%256)
perVlanVgaV6Mac Boolean
Only for by Core-Distribution architecture when evpn_options.routed_at==core. By default, JUNOS uses 00-00-5e-00-02-01 as the virtual-gateway-address's v6_mac. If enabled, 00-00-5e-00-1X-YY will be used (where XX=vlan_id/256, YY=vlan_id%256)
routedAt String
optional, where virtual-gateway should reside. enum: core, distribution, edge
underlay EvpnTopologyEvpnOptionsUnderlay
vsInstances Map<String,EvpnTopologyEvpnOptionsVsInstances>
Optional, for EX9200 only to segregate virtual-switches
autoLoopbackSubnet string
Optional, for dhcp_relay, unique loopback IPs are required for ERB or IPClos where we can set option-82 server_id-overrides
autoLoopbackSubnet6 string
Optional, for dhcp_relay, unique loopback IPs are required for ERB or IPClos where we can set option-82 server_id-overrides
autoRouterIdSubnet string
Optional, this generates router_id automatically, if specified, router_id_prefix is ignored
autoRouterIdSubnet6 string
Optional, this generates router_id automatically, if specified, router_id_prefix is ignored
coreAsBorder boolean
Optional, for ERB or CLOS, you can either use esilag to upstream routers or to also be the virtual-gateway. When routed_at != core, whether to do virtual-gateway at core as well
overlay EvpnTopologyEvpnOptionsOverlay
perVlanVgaV4Mac boolean
Only for by Core-Distribution architecture when evpn_options.routed_at==core. By default, JUNOS uses 00-00-5e-00-01-01 as the virtual-gateway-address's v4_mac. If enabled, 00-00-5e-00-0X-YY will be used (where XX=vlan_id/256, YY=vlan_id%256)
perVlanVgaV6Mac boolean
Only for by Core-Distribution architecture when evpn_options.routed_at==core. By default, JUNOS uses 00-00-5e-00-02-01 as the virtual-gateway-address's v6_mac. If enabled, 00-00-5e-00-1X-YY will be used (where XX=vlan_id/256, YY=vlan_id%256)
routedAt string
optional, where virtual-gateway should reside. enum: core, distribution, edge
underlay EvpnTopologyEvpnOptionsUnderlay
vsInstances {[key: string]: EvpnTopologyEvpnOptionsVsInstances}
Optional, for EX9200 only to segregate virtual-switches
auto_loopback_subnet str
Optional, for dhcp_relay, unique loopback IPs are required for ERB or IPClos where we can set option-82 server_id-overrides
auto_loopback_subnet6 str
Optional, for dhcp_relay, unique loopback IPs are required for ERB or IPClos where we can set option-82 server_id-overrides
auto_router_id_subnet str
Optional, this generates router_id automatically, if specified, router_id_prefix is ignored
auto_router_id_subnet6 str
Optional, this generates router_id automatically, if specified, router_id_prefix is ignored
core_as_border bool
Optional, for ERB or CLOS, you can either use esilag to upstream routers or to also be the virtual-gateway. When routed_at != core, whether to do virtual-gateway at core as well
overlay EvpnTopologyEvpnOptionsOverlay
per_vlan_vga_v4_mac bool
Only for by Core-Distribution architecture when evpn_options.routed_at==core. By default, JUNOS uses 00-00-5e-00-01-01 as the virtual-gateway-address's v4_mac. If enabled, 00-00-5e-00-0X-YY will be used (where XX=vlan_id/256, YY=vlan_id%256)
per_vlan_vga_v6_mac bool
Only for by Core-Distribution architecture when evpn_options.routed_at==core. By default, JUNOS uses 00-00-5e-00-02-01 as the virtual-gateway-address's v6_mac. If enabled, 00-00-5e-00-1X-YY will be used (where XX=vlan_id/256, YY=vlan_id%256)
routed_at str
optional, where virtual-gateway should reside. enum: core, distribution, edge
underlay EvpnTopologyEvpnOptionsUnderlay
vs_instances Mapping[str, EvpnTopologyEvpnOptionsVsInstances]
Optional, for EX9200 only to segregate virtual-switches
autoLoopbackSubnet String
Optional, for dhcp_relay, unique loopback IPs are required for ERB or IPClos where we can set option-82 server_id-overrides
autoLoopbackSubnet6 String
Optional, for dhcp_relay, unique loopback IPs are required for ERB or IPClos where we can set option-82 server_id-overrides
autoRouterIdSubnet String
Optional, this generates router_id automatically, if specified, router_id_prefix is ignored
autoRouterIdSubnet6 String
Optional, this generates router_id automatically, if specified, router_id_prefix is ignored
coreAsBorder Boolean
Optional, for ERB or CLOS, you can either use esilag to upstream routers or to also be the virtual-gateway. When routed_at != core, whether to do virtual-gateway at core as well
overlay Property Map
perVlanVgaV4Mac Boolean
Only for by Core-Distribution architecture when evpn_options.routed_at==core. By default, JUNOS uses 00-00-5e-00-01-01 as the virtual-gateway-address's v4_mac. If enabled, 00-00-5e-00-0X-YY will be used (where XX=vlan_id/256, YY=vlan_id%256)
perVlanVgaV6Mac Boolean
Only for by Core-Distribution architecture when evpn_options.routed_at==core. By default, JUNOS uses 00-00-5e-00-02-01 as the virtual-gateway-address's v6_mac. If enabled, 00-00-5e-00-1X-YY will be used (where XX=vlan_id/256, YY=vlan_id%256)
routedAt String
optional, where virtual-gateway should reside. enum: core, distribution, edge
underlay Property Map
vsInstances Map<Property Map>
Optional, for EX9200 only to segregate virtual-switches

EvpnTopologyEvpnOptionsOverlay
, EvpnTopologyEvpnOptionsOverlayArgs

As int
Overlay BGP Local AS Number
As int
Overlay BGP Local AS Number
as Integer
Overlay BGP Local AS Number
as number
Overlay BGP Local AS Number
as_ int
Overlay BGP Local AS Number
as Number
Overlay BGP Local AS Number

EvpnTopologyEvpnOptionsUnderlay
, EvpnTopologyEvpnOptionsUnderlayArgs

AsBase int
Underlay BGP Base AS Number
RoutedIdPrefix string
Subnet string
Underlay subnet, by default, 10.255.240.0/20, or fd31:5700::/64 for ipv6
UseIpv6 bool
If v6 is desired for underlay
AsBase int
Underlay BGP Base AS Number
RoutedIdPrefix string
Subnet string
Underlay subnet, by default, 10.255.240.0/20, or fd31:5700::/64 for ipv6
UseIpv6 bool
If v6 is desired for underlay
asBase Integer
Underlay BGP Base AS Number
routedIdPrefix String
subnet String
Underlay subnet, by default, 10.255.240.0/20, or fd31:5700::/64 for ipv6
useIpv6 Boolean
If v6 is desired for underlay
asBase number
Underlay BGP Base AS Number
routedIdPrefix string
subnet string
Underlay subnet, by default, 10.255.240.0/20, or fd31:5700::/64 for ipv6
useIpv6 boolean
If v6 is desired for underlay
as_base int
Underlay BGP Base AS Number
routed_id_prefix str
subnet str
Underlay subnet, by default, 10.255.240.0/20, or fd31:5700::/64 for ipv6
use_ipv6 bool
If v6 is desired for underlay
asBase Number
Underlay BGP Base AS Number
routedIdPrefix String
subnet String
Underlay subnet, by default, 10.255.240.0/20, or fd31:5700::/64 for ipv6
useIpv6 Boolean
If v6 is desired for underlay

EvpnTopologyEvpnOptionsVsInstances
, EvpnTopologyEvpnOptionsVsInstancesArgs

Networks List<string>
Networks []string
networks List<String>
networks string[]
networks Sequence[str]
networks List<String>

EvpnTopologySwitches
, EvpnTopologySwitchesArgs

Role This property is required. string
use role==none to remove a switch from the topology. enum: access, collapsed-core, core, distribution, esilag-access, none
DeviceprofileId string
EvpnId int
Mac string
Model string
Pod int
Optionally, for distribution / access / esilag-access, they can be placed into different pods. e.g.

  • for CLOS, to group dist / access switches into pods
  • for ERB/CRB, to group dist / esilag-access into pods
Pods List<int>
By default, core switches are assumed to be connecting all pods. if you want to limit the pods, you can specify pods.
RouterId string
SiteId string
Role This property is required. string
use role==none to remove a switch from the topology. enum: access, collapsed-core, core, distribution, esilag-access, none
DeviceprofileId string
EvpnId int
Mac string
Model string
Pod int
Optionally, for distribution / access / esilag-access, they can be placed into different pods. e.g.

  • for CLOS, to group dist / access switches into pods
  • for ERB/CRB, to group dist / esilag-access into pods
Pods []int
By default, core switches are assumed to be connecting all pods. if you want to limit the pods, you can specify pods.
RouterId string
SiteId string
role This property is required. String
use role==none to remove a switch from the topology. enum: access, collapsed-core, core, distribution, esilag-access, none
deviceprofileId String
evpnId Integer
mac String
model String
pod Integer
Optionally, for distribution / access / esilag-access, they can be placed into different pods. e.g.

  • for CLOS, to group dist / access switches into pods
  • for ERB/CRB, to group dist / esilag-access into pods
pods List<Integer>
By default, core switches are assumed to be connecting all pods. if you want to limit the pods, you can specify pods.
routerId String
siteId String
role This property is required. string
use role==none to remove a switch from the topology. enum: access, collapsed-core, core, distribution, esilag-access, none
deviceprofileId string
evpnId number
mac string
model string
pod number
Optionally, for distribution / access / esilag-access, they can be placed into different pods. e.g.

  • for CLOS, to group dist / access switches into pods
  • for ERB/CRB, to group dist / esilag-access into pods
pods number[]
By default, core switches are assumed to be connecting all pods. if you want to limit the pods, you can specify pods.
routerId string
siteId string
role This property is required. str
use role==none to remove a switch from the topology. enum: access, collapsed-core, core, distribution, esilag-access, none
deviceprofile_id str
evpn_id int
mac str
model str
pod int
Optionally, for distribution / access / esilag-access, they can be placed into different pods. e.g.

  • for CLOS, to group dist / access switches into pods
  • for ERB/CRB, to group dist / esilag-access into pods
pods Sequence[int]
By default, core switches are assumed to be connecting all pods. if you want to limit the pods, you can specify pods.
router_id str
site_id str
role This property is required. String
use role==none to remove a switch from the topology. enum: access, collapsed-core, core, distribution, esilag-access, none
deviceprofileId String
evpnId Number
mac String
model String
pod Number
Optionally, for distribution / access / esilag-access, they can be placed into different pods. e.g.

  • for CLOS, to group dist / access switches into pods
  • for ERB/CRB, to group dist / esilag-access into pods
pods List<Number>
By default, core switches are assumed to be connecting all pods. if you want to limit the pods, you can specify pods.
routerId String
siteId String

Import

Using pulumi import, import mist_site_evpn_topology with:

EVPN Topology can be imported by specifying the site_id and the evpn_topology_id

$ pulumi import junipermist:site/evpnTopology:EvpnTopology evpn_one 17b46405-3a6d-4715-8bb4-6bb6d06f316a.d3c42998-9012-4859-9743-6b9bee475309
Copy

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

Package Details

Repository
junipermist pulumi/pulumi-junipermist
License
Apache-2.0
Notes
This Pulumi package is based on the mist Terraform Provider.