UNPKG

@equinix-labs/pulumi-equinix

Version:

A Pulumi package for creating and managing equinix cloud resources.

1,421 lines 55.3 kB
import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; import * as enums from "../types/enums"; /** * Resource `equinix.networkedge.Device` allows creation and management of Equinix Network Edge virtual network devices. * * Network Edge virtual network devices can be created in two modes: * * * **managed** - (default) Where Equinix manages connectivity and services in the device and customer gets limited access to the device. * * **self-configured** - Where customer provisions and manages own services in the device with less restricted access. Some device types are offered only in this mode. * * In addition to management modes, there are two software license modes available: * * * **subscription** - Where Equinix provides software license, including end-to-end support, and bills for the service respectively. * * **BYOL** - [bring your own license] Where customer brings his own, already procured device software license. There are no charges associated with such license. It is the only licensing mode for `self-configured` devices. * * ## Example Usage * ### example 1 * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const dc = equinix.networkedge.getAccountOutput({ * metroCode: "DC", * }); * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const csr1000VHa = new equinix.networkedge.Device("csr1000vHa", { * name: "tf-csr1000v-p", * throughput: 500, * throughputUnit: equinix.networkedge.ThroughputUnit.Mbps, * metroCode: dc.apply(dc => dc.metroCode), * typeCode: "CSR1000V", * selfManaged: false, * connectivity: "INTERNET-ACCESS", * byol: false, * packageCode: "SEC", * notifications: [ * "john@equinix.com", * "marry@equinix.com", * "fred@equinix.com", * ], * hostname: "csr1000v-p", * termLength: 12, * accountNumber: dc.apply(dc => dc.number), * version: "16.09.05", * coreCount: 2, * secondaryDevice: { * name: "tf-csr1000v-s", * metroCode: sv.apply(sv => sv.metroCode), * hostname: "csr1000v-s", * notifications: [ * "john@equinix.com", * "marry@equinix.com", * ], * accountNumber: sv.apply(sv => sv.number), * }, * }); * ``` * ### example 2 * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const panwCluster = new equinix.networkedge.Device("panwCluster", { * name: "tf-panw", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "PA-VM", * selfManaged: true, * byol: true, * packageCode: "VM100", * notifications: [ * "john@equinix.com", * "marry@equinix.com", * "fred@equinix.com", * ], * termLength: 12, * accountNumber: sv.apply(sv => sv.number), * version: "10.1.3", * interfaceCount: 10, * coreCount: 2, * sshKey: { * username: "test", * keyName: "test-key", * }, * aclTemplateId: "0bff6e05-f0e7-44cd-804a-25b92b835f8b", * clusterDetails: { * clusterName: "tf-panw-cluster", * node0: { * vendorConfiguration: { * hostname: "panw-node0", * }, * licenseToken: "licenseToken", * }, * node1: { * vendorConfiguration: { * hostname: "panw-node1", * }, * licenseToken: "licenseToken", * }, * }, * }); * ``` * ### example 3 * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * import * as std from "@pulumi/std"; * * const config = new pulumi.Config(); * const filepath = config.get("filepath") || "cloudInitFileFolder/TF-AVX-cloud-init-file.txt"; * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const aviatrixCloudinitFile = new equinix.networkedge.NetworkFile("aviatrixCloudinitFile", { * fileName: "TF-AVX-cloud-init-file.txt", * content: std.fileOutput({ * input: filepath, * }).apply(invoke => invoke.result), * metroCode: sv.apply(sv => sv.metroCode).apply((x) => equinix.index.Metro[x]), * deviceTypeCode: "AVIATRIX_EDGE_10", * processType: equinix.networkedge.FileType.CloudInit, * selfManaged: true, * byol: true, * }); * const aviatrixSingle = new equinix.networkedge.Device("aviatrixSingle", { * name: "tf-aviatrix", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "AVIATRIX_EDGE_10", * selfManaged: true, * byol: true, * packageCode: "STD", * notifications: ["john@equinix.com"], * termLength: 12, * accountNumber: sv.apply(sv => sv.number), * version: "6.9", * coreCount: 2, * cloudInitFileId: aviatrixCloudinitFile.uuid, * aclTemplateId: "c06150ea-b604-4ad1-832a-d63936e9b938", * }); * ``` * ### example 4 * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * name: "account-name", * metroCode: "SV", * }); * const c8KvSingle = new equinix.networkedge.Device("c8kvSingle", { * name: "tf-c8kv", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "C8000V", * selfManaged: true, * byol: true, * packageCode: "network-essentials", * notifications: ["test@equinix.com"], * hostname: "C8KV", * accountNumber: sv.apply(sv => sv.number), * version: "17.06.01a", * coreCount: 2, * termLength: 12, * licenseToken: "valid-license-token", * additionalBandwidth: 5, * sshKey: { * username: "test-username", * keyName: "valid-key-name", * }, * aclTemplateId: "3e548c02-9164-4197-aa23-05b1f644883c", * }); * ``` * ### example 5 * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * name: "account-name", * metroCode: "SV", * }); * const vsrxSingle = new equinix.networkedge.Device("vsrxSingle", { * name: "tf-c8kv-sdwan", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "VSRX", * selfManaged: true, * byol: true, * packageCode: "STD", * notifications: ["test@equinix.com"], * hostname: "VSRX", * accountNumber: sv.apply(sv => sv.number), * version: "23.2R1.13", * coreCount: 2, * termLength: 12, * additionalBandwidth: 5, * projectId: "a86d7112-d740-4758-9c9c-31e66373746b", * diverseDeviceId: "ed7891bd-15b4-4f72-ac56-d96cfdacddcc", * sshKey: { * username: "test-username", * keyName: "valid-key-name", * }, * aclTemplateId: "3e548c02-9164-4197-aa23-05b1f644883c", * }); * ``` * ### example 6 * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * name: "account-name", * metroCode: "SV", * }); * const testPublicKey = new equinix.networkedge.SshKey("testPublicKey", { * name: "key-name", * publicKey: "ssh-dss key-value", * type: "DSA", * }); * const aristaHa = new equinix.networkedge.Device("aristaHa", { * name: "tf-arista-p", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "ARISTA-ROUTER", * selfManaged: true, * connectivity: "PRIVATE", * byol: true, * packageCode: "CloudEOS", * notifications: ["test@equinix.com"], * hostname: "arista-p", * accountNumber: sv.apply(sv => sv.number), * version: "4.29.0", * coreCount: 4, * termLength: 12, * additionalBandwidth: 5, * sshKey: { * username: "test-username", * keyName: testPublicKey.name, * }, * aclTemplateId: "c637a17b-7a6a-4486-924b-30e6c36904b0", * secondaryDevice: { * name: "tf-arista-s", * metroCode: sv.apply(sv => sv.metroCode), * hostname: "arista-s", * notifications: ["test@eq.com"], * accountNumber: sv.apply(sv => sv.number), * aclTemplateId: "fee5e2c0-6198-4ce6-9cbd-bbe6c1dbe138", * }, * }); * ``` * ### example 7 * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * name: "account-name", * metroCode: "SV", * }); * const testPublicKey = new equinix.networkedge.SshKey("testPublicKey", { * name: "key-name", * publicKey: "ssh-dss key-value", * type: "DSA", * }); * const bluecatBddsHa = new equinix.networkedge.Device("bluecatBddsHa", { * name: "tf-bluecat-bdds-p", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "BLUECAT", * selfManaged: true, * connectivity: "PRIVATE", * byol: true, * packageCode: "STD", * notifications: ["test@equinix.com"], * accountNumber: sv.apply(sv => sv.number), * version: "9.6.0", * coreCount: 2, * termLength: 12, * vendorConfiguration: { * hostname: "test", * privateAddress: "x.x.x.x", * privateCidrMask: "24", * privateGateway: "x.x.x.x", * licenseKey: "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx", * licenseId: "xxxxxxxxxxxxxxx", * }, * sshKey: { * username: "test-username", * keyName: testPublicKey.name, * }, * secondaryDevice: { * name: "tf-bluecat-bdds-s", * metroCode: sv.apply(sv => sv.metroCode), * notifications: ["test@eq.com"], * accountNumber: sv.apply(sv => sv.number), * vendorConfiguration: { * hostname: "test", * privateAddress: "x.x.x.x", * privateCidrMask: "24", * privateGateway: "x.x.x.x", * licenseKey: "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx", * licenseId: "xxxxxxxxxxxxxxx", * }, * }, * }); * ``` * ### example 8 * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * import * as std from "@pulumi/std"; * * const sv = equinix.networkedge.getAccountOutput({ * name: "account-name", * metroCode: "SV", * }); * const bluecatEdgeServicePointCloudinitPrimaryFile = new equinix.networkedge.NetworkFile("bluecatEdgeServicePointCloudinitPrimaryFile", { * fileName: "TF-BLUECAT-ESP-cloud-init-file.txt", * content: std.fileOutput({ * input: filepath, * }).apply(invoke => invoke.result), * metroCode: sv.apply(sv => sv.metroCode).apply((x) => equinix.index.Metro[x]), * deviceTypeCode: "BLUECAT-EDGE-SERVICE-POINT", * processType: equinix.networkedge.FileType.CloudInit, * selfManaged: true, * byol: true, * }); * const bluecatEdgeServicePointCloudinitSecondaryFile = new equinix.networkedge.NetworkFile("bluecatEdgeServicePointCloudinitSecondaryFile", { * fileName: "TF-BLUECAT-ESP-cloud-init-file.txt", * content: std.fileOutput({ * input: filepath, * }).apply(invoke => invoke.result), * metroCode: sv.apply(sv => sv.metroCode).apply((x) => equinix.index.Metro[x]), * deviceTypeCode: "BLUECAT-EDGE-SERVICE-POINT", * processType: equinix.networkedge.FileType.CloudInit, * selfManaged: true, * byol: true, * }); * const bluecatEdgeServicePointHa = new equinix.networkedge.Device("bluecatEdgeServicePointHa", { * name: "tf-bluecat-edge-service-point-p", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "BLUECAT-EDGE-SERVICE-POINT", * selfManaged: true, * connectivity: "PRIVATE", * byol: true, * packageCode: "STD", * notifications: ["test@equinix.com"], * accountNumber: sv.apply(sv => sv.number), * cloudInitFileId: bluecatEdgeServicePointCloudinitPrimaryFile.uuid, * version: "4.6.3", * coreCount: 4, * termLength: 12, * secondaryDevice: { * name: "tf-bluecat-edge-service-point-s", * metroCode: sv.apply(sv => sv.metroCode), * notifications: ["test@eq.com"], * accountNumber: sv.apply(sv => sv.number), * cloudInitFileId: bluecatEdgeServicePointCloudinitSecondaryFile.uuid, * }, * }); * ``` * ### example 9 * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const panwCluster = new equinix.networkedge.Device("panwCluster", { * name: "tf-panw", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "PA-VM", * selfManaged: true, * byol: true, * packageCode: "VM100", * notifications: [ * "john@equinix.com", * "marry@equinix.com", * "fred@equinix.com", * ], * termLength: 12, * accountNumber: sv.apply(sv => sv.number), * version: "11.1.3", * interfaceCount: 10, * coreCount: 2, * sshKey: { * username: "test", * keyName: "test-key", * }, * aclTemplateId: "0bff6e05-f0e7-44cd-804a-25b92b835f8b", * clusterDetails: { * clusterName: "tf-panw-cluster", * node0: { * vendorConfiguration: { * hostname: "panw-node0", * panoramaIpAddress: "x.x.x.x", * panoramaAuthKey: "xxxxxxxxxxx", * }, * licenseToken: "licenseToken", * }, * node1: { * vendorConfiguration: { * hostname: "panw-node1", * panoramaIpAddress: "x.x.x.x", * panoramaAuthKey: "xxxxxxxxxxx", * }, * licenseToken: "licenseToken", * }, * }, * }); * ``` * ### example Aviatrix Transit Edge * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * import * as std from "@pulumi/std"; * * const config = new pulumi.Config(); * const filepath = config.get("filepath") || "cloudInitFileFolder/TF-AVX-cloud-init-file.txt"; * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const aviatrixCloudinitFile = new equinix.networkedge.NetworkFile("aviatrixCloudinitFile", { * fileName: "TF-AVX-cloud-init-file.txt", * content: std.fileOutput({ * input: filepath, * }).apply(invoke => invoke.result), * metroCode: sv.apply(sv => sv.metroCode).apply((x) => equinix.index.Metro[x]), * deviceTypeCode: "AVIATRIX_TRANSIT_EDGE", * processType: equinix.networkedge.FileType.CloudInit, * selfManaged: true, * byol: true, * }); * const aviatrixTransitEdgeSingle = new equinix.networkedge.Device("aviatrix-transit-edge-single", { * name: "tf-aviatrix", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "AVIATRIX_TRANSIT_EDGE", * selfManaged: true, * byol: true, * packageCode: "STD", * notifications: ["john@equinix.com"], * termLength: 12, * accountNumber: sv.apply(sv => sv.number), * version: "7.2.a", * coreCount: 2, * cloudInitFileId: aviatrixCloudinitFile.uuid, * aclTemplateId: "c06150ea-b604-4ad1-832a-d63936e9b938", * }); * ``` * ### example aruba edgeconnect ha device * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const aRUBAEDGECONNECTAM = new equinix.networkedge.Device("ARUBA-EDGECONNECT-AM", { * name: "TF_Aruba_Edge_Connect", * projectId: "XXXXX", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "EDGECONNECT-SDWAN", * selfManaged: true, * byol: true, * packageCode: "EC-V", * notifications: ["test@eq.com"], * accountNumber: sv.apply(sv => sv.number), * version: "9.4.2.3", * coreCount: 2, * termLength: 1, * additionalBandwidth: 50, * interfaceCount: 32, * aclTemplateId: "XXXXXXX", * vendorConfiguration: { * accountKey: "xxxxx", * accountName: "xxxx", * applianceTag: "tests", * hostname: "test", * }, * secondaryDevice: { * name: "TF_CHECKPOINT", * metroCode: sv.apply(sv => sv.metroCode), * accountNumber: sv.apply(sv => sv.number), * aclTemplateId: "XXXXXXX", * notifications: ["test@eq.com"], * vendorConfiguration: { * accountKey: "xxxxx", * accountName: "xxxx", * applianceTag: "test", * hostname: "test", * }, * }, * }); * ``` * ### example c8000v byol without default password * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const c8000VByolWithtoutDefaultPassword = new equinix.networkedge.Device("c8000v-byol-withtout-default-password", { * name: "tf-c8000v-byol", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "C8000V", * selfManaged: true, * byol: true, * generateDefaultPassword: false, * packageCode: "VM100", * notifications: [ * "john@equinix.com", * "marry@equinix.com", * "fred@equinix.com", * ], * termLength: 12, * accountNumber: sv.apply(sv => sv.number), * version: "17.11.01a", * interfaceCount: 10, * coreCount: 2, * tier: 1, * sshKey: { * username: "test", * keyName: "test-key", * }, * aclTemplateId: "0bff6e05-f0e7-44cd-804a-25b92b835f8b", * }); * ``` * ### example c8000v byol with bandwidth throughput * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const c8000VByolThroughput = new equinix.networkedge.Device("c8000v-byol-throughput", { * name: "tf-c8000v-byol", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "C8000V", * selfManaged: true, * byol: true, * packageCode: "VM100", * notifications: [ * "john@equinix.com", * "marry@equinix.com", * "fred@equinix.com", * ], * termLength: 12, * accountNumber: sv.apply(sv => sv.number), * version: "17.11.01a", * interfaceCount: 10, * coreCount: 2, * throughput: 100, * throughputUnit: equinix.networkedge.ThroughputUnit.Mbps, * sshKey: { * username: "test", * keyName: "test-key", * }, * aclTemplateId: "0bff6e05-f0e7-44cd-804a-25b92b835f8b", * }); * ``` * ### example c8000v byol with bandwidth tier * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const c8000VByolTier = new equinix.networkedge.Device("c8000v-byol-tier", { * name: "tf-c8000v-byol", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "C8000V", * selfManaged: true, * byol: true, * packageCode: "VM100", * notifications: [ * "john@equinix.com", * "marry@equinix.com", * "fred@equinix.com", * ], * termLength: 12, * accountNumber: sv.apply(sv => sv.number), * version: "17.11.01a", * interfaceCount: 10, * coreCount: 2, * tier: 1, * sshKey: { * username: "test", * keyName: "test-key", * }, * aclTemplateId: "0bff6e05-f0e7-44cd-804a-25b92b835f8b", * }); * ``` * ### example checkpoint single device * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const cHECKPOINTSV = new equinix.networkedge.Device("CHECKPOINT-SV", { * name: "TF_CHECKPOINT", * projectId: "XXXX", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "CGUARD", * selfManaged: true, * byol: true, * packageCode: "STD", * notifications: ["test@eq.com"], * accountNumber: sv.apply(sv => sv.number), * version: "R81.20", * hostname: "test", * coreCount: 2, * termLength: 1, * additionalBandwidth: 5, * aclTemplateId: "XXXXXXX", * sshKey: { * username: "XXXXX", * keyName: "XXXXXX", * }, * }); * ``` * ### example cisco ftd cluster znpd * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const ciscoFTDSV = new equinix.networkedge.Device("cisco-FTD-SV", { * name: "TF_Cisco_NGFW_CLUSTER_ZNPD", * projectId: "XXXXXXX", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "Cisco_NGFW", * selfManaged: true, * connectivity: "PRIVATE", * byol: true, * packageCode: "FTDv10", * notifications: ["test@eq.com"], * accountNumber: sv.apply(sv => sv.number), * version: "7.0.4-55", * hostname: "test", * coreCount: 4, * termLength: 1, * interfaceCount: 10, * clusterDetails: { * clusterName: "tf-ftd-cluster", * node0: { * vendorConfiguration: { * hostname: "test", * activationKey: "XXXXX", * controller1: "X.X.X.X", * managementType: "FMC", * }, * }, * node1: { * vendorConfiguration: { * hostname: "test", * managementType: "FMC", * }, * }, * }, * }); * ``` * ### example fortigate sdwan single device * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const fTNTSDWANSV = new equinix.networkedge.Device("FTNT-SDWAN-SV", { * name: "TF_FTNT-SDWAN", * projectId: "XXXXXXXXXX", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "FG-SDWAN", * selfManaged: true, * byol: true, * packageCode: "VM02", * notifications: ["test@eq.com"], * accountNumber: sv.apply(sv => sv.number), * version: "7.0.14", * hostname: "test", * coreCount: 2, * termLength: 1, * additionalBandwidth: 50, * aclTemplateId: "XXXXXXXX", * vendorConfiguration: { * adminPassword: "XXXXX", * controller1: "X.X.X.X", * }, * }); * ``` * ### example infoblox cluster device * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const iNFOBLOXSV = new equinix.networkedge.Device("INFOBLOX-SV", { * name: "TF_INFOBLOX", * projectId: "XXXXXXXXXX", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "INFOBLOX-GRID-MEMBER", * selfManaged: true, * byol: true, * packageCode: "STD", * notifications: ["test@eq.com"], * accountNumber: sv.apply(sv => sv.number), * version: "9.0.5", * connectivity: "PRIVATE", * coreCount: 8, * termLength: 1, * clusterDetails: { * clusterName: "tf-infoblox-cluster", * node0: { * vendorConfiguration: { * adminPassword: "xxxxxxx", * ipAddress: "X.X.X.X", * subnetMaskIp: "X.X.X.X", * gatewayIp: "X.X.X.X", * }, * }, * node1: { * vendorConfiguration: { * adminPassword: "xxxxxxx", * ipAddress: "X.X.X.X", * subnetMaskIp: "X.X.X.X", * gatewayIp: "X.X.X.X", * }, * }, * }, * }); * ``` * ### example infoblox ha device * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const iNFOBLOXSV = new equinix.networkedge.Device("INFOBLOX-SV", { * name: "TF_INFOBLOX", * projectId: "XXXXXXXXXX", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "INFOBLOX-GRID-MEMBER", * selfManaged: true, * connectivity: "PRIVATE", * byol: true, * packageCode: "STD", * notifications: ["test@eq.com"], * accountNumber: sv.apply(sv => sv.number), * version: "9.0.5", * coreCount: 8, * termLength: 1, * vendorConfiguration: { * adminPassword: "X.X.X.X", * ipAddress: "X.X.X.X", * subnetMaskIp: "X.X.X.X", * gatewayIp: "X.X.X.X", * }, * secondaryDevice: { * name: "TF_INFOBLOX-Sec", * metroCode: sv.apply(sv => sv.metroCode), * accountNumber: sv.apply(sv => sv.number), * notifications: ["test@eq.com"], * vendorConfiguration: { * adminPassword: "X.X.X.X", * ipAddress: "X.X.X.X", * subnetMaskIp: "X.X.X.X", * gatewayIp: "X.X.X.X", * }, * }, * }); * ``` * ### example infoblox single device * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const iNFOBLOXSV = new equinix.networkedge.Device("INFOBLOX-SV", { * name: "TF_INFOBLOX", * projectId: "XXXXXXXXXX", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "INFOBLOX-GRID-MEMBER", * selfManaged: true, * byol: true, * connectivity: "PRIVATE", * packageCode: "STD", * notifications: ["test@eq.com"], * accountNumber: sv.apply(sv => sv.number), * version: "9.0.5", * coreCount: 8, * termLength: 1, * vendorConfiguration: { * adminPassword: "xxxxxx", * ipAddress: "X.X.X.X", * subnetMaskIp: "X.X.X.X", * gatewayIp: "X.X.X.X", * }, * }); * ``` * ### example versa sdwan ha device * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const fTNTSDWANSV = new equinix.networkedge.Device("FTNT-SDWAN-SV", { * name: "TF_VERSA-SDWAN", * projectId: "XXXXXXXXX", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "VERSA_SDWAN", * selfManaged: true, * byol: true, * packageCode: "FLEX_VNF_2", * notifications: ["test@eq.com"], * accountNumber: sv.apply(sv => sv.number), * version: "21.2.3", * coreCount: 2, * termLength: 1, * additionalBandwidth: 50, * aclTemplateId: "XXXXXXXXX", * vendorConfiguration: { * controller1: "X.X.X.X", * controller2: "X.X.X.X", * localId: "test@test.com", * remoteId: "test@test.com", * serialNumber: "4", * }, * secondaryDevice: { * name: "Praveena_TF_VERSA", * metroCode: sv.apply(sv => sv.metroCode), * accountNumber: sv.apply(sv => sv.number), * aclTemplateId: "XXXXXXXX", * notifications: ["test@eq.com"], * vendorConfiguration: { * controller1: "X.X.X.X", * controller2: "X.X.X.X", * localId: "test@test.com", * remoteId: "test@test.com", * serialNumber: "4", * }, * }, * }); * ``` * ### example vyos router ha device * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const vYOSAM = new equinix.networkedge.Device("VYOS-AM", { * name: "TF_VYOS", * projectId: "XXXXXXX", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "VYOS-ROUTER", * selfManaged: true, * byol: false, * packageCode: "STD", * notifications: ["test@eq.com"], * accountNumber: sv.apply(sv => sv.number), * version: "1.4.1-2501", * hostname: "test", * coreCount: 2, * termLength: 1, * additionalBandwidth: 50, * aclTemplateId: "XXXXXXXX", * sshKey: { * username: "test", * keyName: "xxxxxxxx", * }, * secondaryDevice: { * name: "TF_CHECKPOINT", * metroCode: sv.apply(sv => sv.metroCode), * accountNumber: sv.apply(sv => sv.number), * hostname: "test", * aclTemplateId: "XXXXXXXXXXX", * notifications: ["test@eq.com"], * }, * }); * ``` * ### example zscaler appc * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const zscalerAppcSingle = new equinix.networkedge.Device("zscaler-appc-single", { * name: "tf-zscaler-appc", * projectId: "XXXXXX", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "ZSCALER-APPC", * selfManaged: true, * byol: true, * connectivity: "PRIVATE", * packageCode: "STD", * notifications: [ * "john@equinix.com", * "marry@equinix.com", * "fred@equinix.com", * ], * termLength: 12, * accountNumber: sv.apply(sv => sv.number), * version: "23.395.1", * interfaceCount: 1, * coreCount: 4, * vendorConfiguration: { * provisioningKey: "XXXXXXXXXX", * hostname: "XXXX", * }, * sshKey: { * username: "test", * keyName: "test-key", * }, * }); * ``` * ### example zscaler pse * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const sv = equinix.networkedge.getAccountOutput({ * metroCode: "SV", * }); * const zscalerPseSingle = new equinix.networkedge.Device("zscaler-pse-single", { * name: "tf-zscaler-pse", * projectId: "XXXXXX", * metroCode: sv.apply(sv => sv.metroCode), * typeCode: "ZSCALER-PSE", * selfManaged: true, * byol: true, * connectivity: "PRIVATE", * packageCode: "STD", * notifications: [ * "john@equinix.com", * "marry@equinix.com", * "fred@equinix.com", * ], * termLength: 12, * accountNumber: sv.apply(sv => sv.number), * version: "23.395.1", * interfaceCount: 1, * coreCount: 4, * vendorConfiguration: { * provisioningKey: "XXXXXXXXXX", * hostname: "XXXX", * }, * sshKey: { * username: "test", * keyName: "test-key", * }, * }); * ``` * * ## Import * * This resource can be imported using an existing ID: * * ```sh * $ pulumi import equinix:networkedge/device:Device example {existing_id} * ``` * * The `license_token`, `mgmt_acl_template_uuid` and `cloud_init_file_id` fields can not be imported. */ export declare class Device extends pulumi.CustomResource { /** * Get an existing Device resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input<pulumi.ID>, state?: DeviceState, opts?: pulumi.CustomResourceOptions): Device; /** * Returns true if the given object is an instance of Device. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj: any): obj is Device; /** * Billing account number for a device. */ readonly accountNumber: pulumi.Output<string>; /** * Identifier of a WAN interface ACL template that will be applied on the device. */ readonly aclTemplateId: pulumi.Output<string | undefined>; /** * Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps). */ readonly additionalBandwidth: pulumi.Output<number>; /** * (Autonomous System Number) Unique identifier for a network on the internet. */ readonly asn: pulumi.Output<number>; /** * Boolean value that determines device licensing mode, i.e., `bring your own license` or `subscription` (default). */ readonly byol: pulumi.Output<boolean | undefined>; /** * Identifier of a cloud init file that will be applied on the device. */ readonly cloudInitFileId: pulumi.Output<string | undefined>; /** * An object that has the cluster details. See Cluster Details below for more details. */ readonly clusterDetails: pulumi.Output<outputs.networkedge.DeviceClusterDetails | undefined>; /** * Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS */ readonly connectivity: pulumi.Output<string | undefined>; /** * Number of CPU cores used by device. (**NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.**) */ readonly coreCount: pulumi.Output<number>; /** * Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices. */ readonly diverseDeviceId: pulumi.Output<string>; /** * Name of the device with diverse device UUID. This field is returned in device details if the device is created by passing diverse_device_id. */ readonly diverseDeviceName: pulumi.Output<string>; /** * Boolean value that determines to create device with or without default password. Use this field to let Equinix know if you want your new device to be create with default admin password. * This field is only meaningful for C8000V Autonomous(single/ha) and Fortinet Firewall devices(single/ha/cluster). If not specified, by default device is created with admin password. */ readonly generateDefaultPassword: pulumi.Output<boolean | undefined>; /** * Device hostname prefix. */ readonly hostname: pulumi.Output<string>; /** * Device location Equinix Business Exchange name. */ readonly ibx: pulumi.Output<string>; /** * Number of network interfaces on a device. If not specified, default number for a given device type will be used. */ readonly interfaceCount: pulumi.Output<number>; /** * List of device interfaces. See Interface Attribute below for more details. */ readonly interfaces: pulumi.Output<outputs.networkedge.DeviceInterface[]>; /** * Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode. */ readonly licenseFile: pulumi.Output<string | undefined>; /** * Identifier of a license file that will be applied on the device. */ readonly licenseFileId: pulumi.Output<string>; /** * Device license registration status. Possible values are `APPLYING_LICENSE`, `REGISTERED`, `APPLIED`, `WAITING_FOR_CLUSTER_SETUP`, `REGISTRATION_FAILED`. */ readonly licenseStatus: pulumi.Output<string>; /** * License Token applicable for some device types in BYOL licensing mode. */ readonly licenseToken: pulumi.Output<string | undefined>; /** * Device location metro code. */ readonly metroCode: pulumi.Output<string>; /** * Identifier of an MGMT interface ACL template that will be applied on the device. */ readonly mgmtAclTemplateUuid: pulumi.Output<string | undefined>; /** * Device name. */ readonly name: pulumi.Output<string>; /** * List of email addresses that will receive device status notifications. */ readonly notifications: pulumi.Output<string[]>; /** * Name/number used to identify device order on the invoice. */ readonly orderReference: pulumi.Output<string | undefined>; /** * Device software package code. */ readonly packageCode: pulumi.Output<string>; /** * Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization. */ readonly projectId: pulumi.Output<string>; /** * Purchase order number associated with a device order. */ readonly purchaseOrderNumber: pulumi.Output<string | undefined>; /** * Device redundancy type applicable for HA devices, either primary or secondary. */ readonly redundancyType: pulumi.Output<string>; /** * Unique identifier for a redundant device applicable for HA devices. */ readonly redundantId: pulumi.Output<string>; /** * Device location region. */ readonly region: pulumi.Output<string>; /** * Definition of secondary device for redundant device configurations. See Secondary Device below for more details. */ readonly secondaryDevice: pulumi.Output<outputs.networkedge.DeviceSecondaryDevice | undefined>; /** * Boolean value that determines device management mode, i.e., `self-managed` or `Equinix-managed` (default). */ readonly selfManaged: pulumi.Output<boolean | undefined>; /** * IP address of SSH enabled interface on the device. */ readonly sshIpAddress: pulumi.Output<string>; /** * FQDN of SSH enabled interface on the device. */ readonly sshIpFqdn: pulumi.Output<string>; /** * Definition of SSH key that will be provisioned on a device */ readonly sshKey: pulumi.Output<outputs.networkedge.DeviceSshKey | undefined>; /** * interface status. One of `AVAILABLE`, `RESERVED`, `ASSIGNED`. */ readonly status: pulumi.Output<string>; /** * Device term length. */ readonly termLength: pulumi.Output<number>; /** * Device license throughput. */ readonly throughput: pulumi.Output<number | undefined>; /** * License throughput unit. One of `Mbps` or `Gbps`. */ readonly throughputUnit: pulumi.Output<string | undefined>; /** * Select bandwidth tier for your own license, i.e., `0` or `1` or `2` or `3`. Tiers applicable only for C8000V Autonomous or C8000V SDWAN (controller) device types. If not provided, tier is defaulted to '2'. */ readonly tier: pulumi.Output<number>; /** * Device type code. */ readonly typeCode: pulumi.Output<string>; /** * Device unique identifier. */ readonly uuid: pulumi.Output<string>; /** * Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress, provisioningKey, ipAddress(applicable for infoblox only), subnetMaskIp(applicable for infoblox only), gatewayIp(applicable for infoblox only)) * * `ssh-key` - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details. */ readonly vendorConfiguration: pulumi.Output<{ [key: string]: string; }>; /** * Device software software version. */ readonly version: pulumi.Output<string>; /** * device interface id picked for WAN */ readonly wanInterfaceId: pulumi.Output<string | undefined>; /** * Device location zone code. */ readonly zoneCode: pulumi.Output<string>; /** * Create a Device resource with the given unique name, arguments, and options. * * @param name The _unique_ name of the resource. * @param args The arguments to use to populate this resource's properties. * @param opts A bag of options that control this resource's behavior. */ constructor(name: string, args: DeviceArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering Device resources. */ export interface DeviceState { /** * Billing account number for a device. */ accountNumber?: pulumi.Input<string>; /** * Identifier of a WAN interface ACL template that will be applied on the device. */ aclTemplateId?: pulumi.Input<string>; /** * Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps). */ additionalBandwidth?: pulumi.Input<number>; /** * (Autonomous System Number) Unique identifier for a network on the internet. */ asn?: pulumi.Input<number>; /** * Boolean value that determines device licensing mode, i.e., `bring your own license` or `subscription` (default). */ byol?: pulumi.Input<boolean>; /** * Identifier of a cloud init file that will be applied on the device. */ cloudInitFileId?: pulumi.Input<string>; /** * An object that has the cluster details. See Cluster Details below for more details. */ clusterDetails?: pulumi.Input<inputs.networkedge.DeviceClusterDetails>; /** * Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS */ connectivity?: pulumi.Input<string>; /** * Number of CPU cores used by device. (**NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.**) */ coreCount?: pulumi.Input<number>; /** * Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices. */ diverseDeviceId?: pulumi.Input<string>; /** * Name of the device with diverse device UUID. This field is returned in device details if the device is created by passing diverse_device_id. */ diverseDeviceName?: pulumi.Input<string>; /** * Boolean value that determines to create device with or without default password. Use this field to let Equinix know if you want your new device to be create with default admin password. * This field is only meaningful for C8000V Autonomous(single/ha) and Fortinet Firewall devices(single/ha/cluster). If not specified, by default device is created with admin password. */ generateDefaultPassword?: pulumi.Input<boolean>; /** * Device hostname prefix. */ hostname?: pulumi.Input<string>; /** * Device location Equinix Business Exchange name. */ ibx?: pulumi.Input<string>; /** * Number of network interfaces on a device. If not specified, default number for a given device type will be used. */ interfaceCount?: pulumi.Input<number>; /** * List of device interfaces. See Interface Attribute below for more details. */ interfaces?: pulumi.Input<pulumi.Input<inputs.networkedge.DeviceInterface>[]>; /** * Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode. */ licenseFile?: pulumi.Input<string>; /** * Identifier of a license file that will be applied on the device. */ licenseFileId?: pulumi.Input<string>; /** * Device license registration status. Possible values are `APPLYING_LICENSE`, `REGISTERED`, `APPLIED`, `WAITING_FOR_CLUSTER_SETUP`, `REGISTRATION_FAILED`. */ licenseStatus?: pulumi.Input<string>; /** * License Token applicable for some device types in BYOL licensing mode. */ licenseToken?: pulumi.Input<string>; /** * Device location metro code. */ metroCode?: pulumi.Input<string>; /** * Identifier of an MGMT interface ACL template that will be applied on the device. */ mgmtAclTemplateUuid?: pulumi.Input<string>; /** * Device name. */ name?: pulumi.Input<string>; /** * List of email addresses that will receive device status notifications. */ notifications?: pulumi.Input<pulumi.Input<string>[]>; /** * Name/number used to identify device order on the invoice. */ orderReference?: pulumi.Input<string>; /** * Device software package code. */ packageCode?: pulumi.Input<string>; /** * Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization. */ projectId?: pulumi.Input<string>; /** * Purchase order number associated with a device order. */ purchaseOrderNumber?: pulumi.Input<string>; /** * Device redundancy type applicable for HA devices, either primary or secondary. */ redundancyType?: pulumi.Input<string>; /** * Unique identifier for a redundant device applicable for HA devices. */ redundantId?: pulumi.Input<string>; /** * Device location region. */ region?: pulumi.Input<string>; /** * Definition of secondary device for redundant device configurations. See Secondary Device below for more details. */ secondaryDevice?: pulumi.Input<inputs.networkedge.DeviceSecondaryDevice>; /** * Boolean value that determines device management mode, i.e., `self-managed` or `Equinix-managed` (default). */ selfManaged?: pulumi.Input<boolean>; /** * IP address of SSH enabled interface on the device. */ sshIpAddress?: pulumi.Input<string>; /** * FQDN of SSH enabled interface on the device. */ sshIpFqdn?: pulumi.Input<string>; /** * Definition of SSH key that will be provisioned on a device */ sshKey?: pulumi.Input<inputs.networkedge.DeviceSshKey>; /** * interface status. One of `AVAILABLE`, `RESERVED`, `ASSIGNED`. */ status?: pulumi.Input<string>; /** * Device term length. */ termLength?: pulumi.Input<number>; /** * Device license throughput. */ throughput?: pulumi.Input<number>; /** * License throughput unit. One of `Mbps` or `Gbps`. */ throughputUnit?: pulumi.Input<string | enums.networkedge.ThroughputUnit>; /** * Select bandwidth tier for your own license, i.e., `0` or `1` or `2` or `3`. Tiers applicable only for C8000V Autonomous or C8000V SDWAN (controller) device types. If not provided, tier is defaulted to '2'. */ tier?: pulumi.Input<number>; /** * Device type code. */ typeCode?: pulumi.Input<string>; /** * Device unique identifier. */ uuid?: pulumi.Input<string>; /** * Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress, provisioningKey, ipAddress(applicable for infoblox only), subnetMaskIp(applicable for infoblox only), gatewayIp(applicable for infoblox only)) * * `ssh-key` - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details. */ vendorConfiguration?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * Device software software version. */ version?: pulumi.Input<string>; /** * device interface id picked for WAN */ wanInterfaceId?: pulumi.Input<string>; /** * Device location zone code. */ zoneCode?: pulumi.Input<string>; } /** * The set of arguments for constructing a Device resource. */ export interface DeviceArgs { /** * Billing account number for a device. */ accountNumber: pulumi.Input<string>; /** * Identifier of a WAN interface ACL template that will be applied on the device. */ aclTemplateId?: pulumi.Input<string>; /** * Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps). */ additionalBandwidth?: pulumi.Input<number>; /** * Boolean value that determines device licensing mode, i.e., `bring your own license` or `subscription` (default). */ byol?: pulumi.Input<boolean>; /** *