@pulumi/f5bigip
Version:
A Pulumi package for creating and managing F5 BigIP resources.
347 lines • 13.5 kB
JavaScript
;
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GtmServer = void 0;
const pulumi = __importStar(require("@pulumi/pulumi"));
const utilities = __importStar(require("./utilities"));
/**
* ## # f5bigip.GtmServer
*
* Manages F5 BIG-IP GTM (Global Traffic Manager) Server resources.
*
* A GTM server represents a BIG-IP system, a host, or a server that hosts applications. Servers are identified by their addresses and are organized within datacenters. GTM servers enable GTM to perform load balancing and provide health monitoring for distributed applications.
*
* ## Example Usage
*
* ### Basic GTM Server (BIG-IP)
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as f5bigip from "@pulumi/f5bigip";
*
* const dc1 = new f5bigip.GtmDatacenter("dc1", {name: "datacenter1"});
* const server1 = new f5bigip.GtmServer("server1", {
* name: "bigip_server1",
* datacenter: dc1.name,
* product: "bigip",
* addresses: [{
* name: "10.1.1.1",
* }],
* monitor: "/Common/bigip",
* virtualServerDiscovery: "true",
* linkDiscovery: "disabled",
* });
* ```
*
* ### GTM Server with Multiple Addresses
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as f5bigip from "@pulumi/f5bigip";
*
* const dc1 = new f5bigip.GtmDatacenter("dc1", {name: "datacenter1"});
* const multiAddressServer = new f5bigip.GtmServer("multi_address_server", {
* name: "multi_server",
* datacenter: dc1.name,
* product: "bigip",
* addresses: [
* {
* name: "10.1.1.1",
* deviceName: "/Common/bigip1.example.com",
* translation: "none",
* },
* {
* name: "10.1.1.2",
* deviceName: "/Common/bigip2.example.com",
* translation: "none",
* },
* ],
* monitor: "/Common/bigip",
* virtualServerDiscovery: "true",
* });
* ```
*
* ### GTM Server with Address Translation
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as f5bigip from "@pulumi/f5bigip";
*
* const dc1 = new f5bigip.GtmDatacenter("dc1", {name: "datacenter1"});
* const natServer = new f5bigip.GtmServer("nat_server", {
* name: "nat_server",
* datacenter: dc1.name,
* product: "bigip",
* addresses: [{
* name: "10.10.10.10",
* deviceName: "/Common/server.example.com",
* translation: "192.168.1.10",
* }],
* monitor: "/Common/bigip",
* virtualServerDiscovery: "true",
* });
* ```
*
* ### Generic Host Server
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as f5bigip from "@pulumi/f5bigip";
*
* const dc1 = new f5bigip.GtmDatacenter("dc1", {name: "datacenter1"});
* const genericHost = new f5bigip.GtmServer("generic_host", {
* name: "generic_server",
* datacenter: dc1.name,
* product: "generic-host",
* addresses: [{
* name: "10.20.20.20",
* }],
* monitor: "/Common/tcp",
* virtualServerDiscovery: "false",
* linkDiscovery: "disabled",
* });
* ```
*
* ### Generic Host Server with Virtual Servers
*
* For generic-host servers that don't support virtual server discovery, you can manually define virtual servers:
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as f5bigip from "@pulumi/f5bigip";
*
* const dc1 = new f5bigip.GtmDatacenter("dc1", {name: "datacenter1"});
* const genericWithVs = new f5bigip.GtmServer("generic_with_vs", {
* name: "generic_app_server",
* datacenter: dc1.name,
* product: "generic-host",
* addresses: [{
* name: "192.168.10.100",
* }],
* virtualServerDiscovery: "disabled",
* linkDiscovery: "disabled",
* virtualServers: [
* {
* name: "vs_http",
* destination: "192.168.10.100:80",
* enabled: true,
* },
* {
* name: "vs_https",
* destination: "192.168.10.100:443",
* enabled: true,
* },
* {
* name: "vs_api",
* destination: "192.168.10.100:8080",
* enabled: true,
* translationAddress: "none",
* translationPort: 0,
* },
* ],
* enabled: true,
* });
* ```
*
* ### GTM Server with Prober Settings
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as f5bigip from "@pulumi/f5bigip";
*
* const dc1 = new f5bigip.GtmDatacenter("dc1", {name: "datacenter1"});
* const proberServer = new f5bigip.GtmServer("prober_server", {
* name: "prober_configured_server",
* datacenter: dc1.name,
* product: "bigip",
* addresses: [{
* name: "10.30.30.30",
* }],
* monitor: "/Common/bigip",
* virtualServerDiscovery: "true",
* proberPreference: "inside-datacenter",
* proberFallback: "any-available",
* iqAllowPath: true,
* iqAllowServiceCheck: true,
* iqAllowSnmp: true,
* });
* ```
*
* ### GTM Server with Resource Limits
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as f5bigip from "@pulumi/f5bigip";
*
* const dc1 = new f5bigip.GtmDatacenter("dc1", {name: "datacenter1"});
* const limitedServer = new f5bigip.GtmServer("limited_server", {
* name: "resource_limited_server",
* datacenter: dc1.name,
* product: "bigip",
* addresses: [{
* name: "10.40.40.40",
* }],
* monitor: "/Common/bigip",
* virtualServerDiscovery: "true",
* limitMaxConnections: 10000,
* limitMaxBps: 1000000,
* limitMaxPps: 50000,
* limitCpuUsage: 80,
* limitMemAvail: 1024,
* });
* ```
*
* ## Notes
*
* * When creating a GTM server of type `bigip`, ensure that the BIG-IP device is accessible and properly configured for GTM communication.
*
* * Virtual server discovery requires proper iQuery communication between GTM systems.
*
* * Address translation is useful when servers are behind NAT.
*
* * Multiple addresses can be specified for servers with multiple network interfaces or for redundancy.
*
* * Resource limits help prevent a single server from consuming all available capacity in load balancing decisions.
*
* * Prober settings control how GTM monitors server health from different network locations.
*
* ## Import
*
* GTM servers can be imported using the server name or full path:
*
* ```sh
* $ pulumi import f5bigip:index/gtmServer:GtmServer example /Common/server1
* ```
*
* or
*
* ```sh
* $ pulumi import f5bigip:index/gtmServer:GtmServer example server1
* ```
*/
class GtmServer extends pulumi.CustomResource {
/**
* Get an existing GtmServer 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, id, state, opts) {
return new GtmServer(name, state, { ...opts, id: id });
}
/** @internal */
static __pulumiType = 'f5bigip:index/gtmServer:GtmServer';
/**
* Returns true if the given object is an instance of GtmServer. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
static isInstance(obj) {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === GtmServer.__pulumiType;
}
constructor(name, argsOrState, opts) {
let resourceInputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState;
resourceInputs["addresses"] = state?.addresses;
resourceInputs["datacenter"] = state?.datacenter;
resourceInputs["description"] = state?.description;
resourceInputs["enabled"] = state?.enabled;
resourceInputs["exposeRouteDomains"] = state?.exposeRouteDomains;
resourceInputs["iqAllowPath"] = state?.iqAllowPath;
resourceInputs["iqAllowServiceCheck"] = state?.iqAllowServiceCheck;
resourceInputs["iqAllowSnmp"] = state?.iqAllowSnmp;
resourceInputs["limitCpuUsage"] = state?.limitCpuUsage;
resourceInputs["limitCpuUsageStatus"] = state?.limitCpuUsageStatus;
resourceInputs["limitMaxBps"] = state?.limitMaxBps;
resourceInputs["limitMaxBpsStatus"] = state?.limitMaxBpsStatus;
resourceInputs["limitMaxConnections"] = state?.limitMaxConnections;
resourceInputs["limitMaxConnectionsStatus"] = state?.limitMaxConnectionsStatus;
resourceInputs["limitMaxPps"] = state?.limitMaxPps;
resourceInputs["limitMaxPpsStatus"] = state?.limitMaxPpsStatus;
resourceInputs["limitMemAvail"] = state?.limitMemAvail;
resourceInputs["limitMemAvailStatus"] = state?.limitMemAvailStatus;
resourceInputs["linkDiscovery"] = state?.linkDiscovery;
resourceInputs["monitor"] = state?.monitor;
resourceInputs["name"] = state?.name;
resourceInputs["partition"] = state?.partition;
resourceInputs["proberFallback"] = state?.proberFallback;
resourceInputs["proberPool"] = state?.proberPool;
resourceInputs["proberPreference"] = state?.proberPreference;
resourceInputs["product"] = state?.product;
resourceInputs["virtualServerDiscovery"] = state?.virtualServerDiscovery;
resourceInputs["virtualServers"] = state?.virtualServers;
}
else {
const args = argsOrState;
if (args?.datacenter === undefined && !opts.urn) {
throw new Error("Missing required property 'datacenter'");
}
if (args?.name === undefined && !opts.urn) {
throw new Error("Missing required property 'name'");
}
resourceInputs["addresses"] = args?.addresses;
resourceInputs["datacenter"] = args?.datacenter;
resourceInputs["description"] = args?.description;
resourceInputs["enabled"] = args?.enabled;
resourceInputs["exposeRouteDomains"] = args?.exposeRouteDomains;
resourceInputs["iqAllowPath"] = args?.iqAllowPath;
resourceInputs["iqAllowServiceCheck"] = args?.iqAllowServiceCheck;
resourceInputs["iqAllowSnmp"] = args?.iqAllowSnmp;
resourceInputs["limitCpuUsage"] = args?.limitCpuUsage;
resourceInputs["limitCpuUsageStatus"] = args?.limitCpuUsageStatus;
resourceInputs["limitMaxBps"] = args?.limitMaxBps;
resourceInputs["limitMaxBpsStatus"] = args?.limitMaxBpsStatus;
resourceInputs["limitMaxConnections"] = args?.limitMaxConnections;
resourceInputs["limitMaxConnectionsStatus"] = args?.limitMaxConnectionsStatus;
resourceInputs["limitMaxPps"] = args?.limitMaxPps;
resourceInputs["limitMaxPpsStatus"] = args?.limitMaxPpsStatus;
resourceInputs["limitMemAvail"] = args?.limitMemAvail;
resourceInputs["limitMemAvailStatus"] = args?.limitMemAvailStatus;
resourceInputs["linkDiscovery"] = args?.linkDiscovery;
resourceInputs["monitor"] = args?.monitor;
resourceInputs["name"] = args?.name;
resourceInputs["partition"] = args?.partition;
resourceInputs["proberFallback"] = args?.proberFallback;
resourceInputs["proberPool"] = args?.proberPool;
resourceInputs["proberPreference"] = args?.proberPreference;
resourceInputs["product"] = args?.product;
resourceInputs["virtualServerDiscovery"] = args?.virtualServerDiscovery;
resourceInputs["virtualServers"] = args?.virtualServers;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
super(GtmServer.__pulumiType, name, resourceInputs, opts);
}
}
exports.GtmServer = GtmServer;
//# sourceMappingURL=gtmServer.js.map