UNPKG

@equinix-labs/pulumi-equinix

Version:

A Pulumi package for creating and managing equinix cloud resources.

147 lines (146 loc) 4.95 kB
import * as pulumi from "@pulumi/pulumi"; /** * Provides a resource to manage BGP sessions in Equinix Metal Host. Refer to [Equinix Metal BGP documentation](https://metal.equinix.com/developers/docs/networking/local-global-bgp/) for more details. * * You need to have BGP config enabled in your project. * * BGP session must be linked to a device running [BIRD](https://bird.network.cz) or other BGP routing daemon which will control route advertisements via the session to Equinix Metal's upstream routers. * * ## Example Usage * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as _null from "@pulumi/null"; * import * as equinix from "@equinix-labs/pulumi-equinix"; * * const bgpPassword = "955dB0b81Ef"; * const projectId = "<UUID_of_your_project>"; * const addr = new equinix.metal.ReservedIpBlock("addr", { * projectId: projectId, * metro: "ny", * quantity: 1, * }); * const interfaceLo0 = pulumi.interpolate`auto lo:0 * iface lo:0 inet static * address ${addr.address} * netmask ${addr.netmask} * `; * const test = new equinix.metal.Device("test", { * hostname: "terraform-test-bgp-sesh", * plan: equinix.metal.Plan.C3SmallX86, * metro: "ny", * operatingSystem: equinix.metal.OperatingSystem.Ubuntu20_04, * billingCycle: equinix.metal.BillingCycle.Hourly, * projectId: projectId, * }); * const birdConf = pulumi.all([addr.address, addr.cidr, test.network, test.network]).apply(([address, cidr, testNetwork, testNetwork1]) => `filter equinix_metal_bgp { * if net = ${address}/${cidr} then accept; * } * router id ${testNetwork[2].address}; * protocol direct { * interface "lo"; * } * protocol kernel { * scan time 10; * persist; * import all; * export all; * } * protocol device { * scan time 10; * } * protocol bgp { * export filter equinix_metal_bgp; * local as 65000; * neighbor ${testNetwork1[2].gateway} as 65530; * password "${bgpPassword}"; * } * `); * const testBgpSession = new equinix.metal.BgpSession("testBgpSession", { * deviceId: test.id, * addressFamily: "ipv4", * }); * const configureBird = new _null.Resource("configureBird", {triggers: { * bird_conf: birdConf, * "interface": interfaceLo0, * }}); * ``` */ export declare class BgpSession extends pulumi.CustomResource { /** * Get an existing BgpSession 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?: BgpSessionState, opts?: pulumi.CustomResourceOptions): BgpSession; /** * Returns true if the given object is an instance of BgpSession. 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 BgpSession; /** * `ipv4` or `ipv6`. */ readonly addressFamily: pulumi.Output<string>; /** * Boolean flag to set the default route policy. False by default. */ readonly defaultRoute: pulumi.Output<boolean | undefined>; /** * ID of device. */ readonly deviceId: pulumi.Output<string>; /** * Status of the session - `up` or `down` */ readonly status: pulumi.Output<string>; /** * Create a BgpSession 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: BgpSessionArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering BgpSession resources. */ export interface BgpSessionState { /** * `ipv4` or `ipv6`. */ addressFamily?: pulumi.Input<string>; /** * Boolean flag to set the default route policy. False by default. */ defaultRoute?: pulumi.Input<boolean>; /** * ID of device. */ deviceId?: pulumi.Input<string>; /** * Status of the session - `up` or `down` */ status?: pulumi.Input<string>; } /** * The set of arguments for constructing a BgpSession resource. */ export interface BgpSessionArgs { /** * `ipv4` or `ipv6`. */ addressFamily: pulumi.Input<string>; /** * Boolean flag to set the default route policy. False by default. */ defaultRoute?: pulumi.Input<boolean>; /** * ID of device. */ deviceId: pulumi.Input<string>; }