Bigip Provider
Installation
The bigip provider is available as a package in all Pulumi languages:
- JavaScript/TypeScript:
@pulumi/bigip
- Python:
pulumi-bigip
- Go:
github.com/pulumi/pulumi-f5bigip/sdk/v3/go/f5bigip
- .NET:
Pulumi.Bigip
- Java:
com.pulumi/bigip
Overview
Use the F5 BIG-IP Pulumi Provider to manage and provision your BIG-IP configurations in Pulumi. Using BIG-IP Provider you can manage LTM(Local Traffic Manager),Network,System objects and it also supports AS3/DO integration.
Requirements
This provider uses the iControlREST API. All the resources are validated with BigIP v12.1.1 and above.
NOTE For AWAF resources, F5 BIG-IP version should be > v16.x , and ASM need to be provisioned.
Example Usage
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: nodejs
config:
bigip:address:
value: 'TODO: var.hostname'
bigip:password:
value: 'TODO: var.password'
bigip:username:
value: 'TODO: var.username'
import * as pulumi from "@pulumi/pulumi";
const config = new pulumi.Config();
const hostname = config.requireObject("hostname");
const username = config.requireObject("username");
const password = config.requireObject("password");
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: python
config:
bigip:address:
value: 'TODO: var.hostname'
bigip:password:
value: 'TODO: var.password'
bigip:username:
value: 'TODO: var.username'
import pulumi
config = pulumi.Config()
hostname = config.require_object("hostname")
username = config.require_object("username")
password = config.require_object("password")
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: dotnet
config:
bigip:address:
value: 'TODO: var.hostname'
bigip:password:
value: 'TODO: var.password'
bigip:username:
value: 'TODO: var.username'
using System.Collections.Generic;
using System.Linq;
using Pulumi;
return await Deployment.RunAsync(() =>
{
var config = new Config();
var hostname = config.RequireObject<dynamic>("hostname");
var username = config.RequireObject<dynamic>("username");
var password = config.RequireObject<dynamic>("password");
});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: go
config:
bigip:address:
value: 'TODO: var.hostname'
bigip:password:
value: 'TODO: var.password'
bigip:username:
value: 'TODO: var.username'
package main
import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
cfg := config.New(ctx, "")
hostname := cfg.RequireObject("hostname")
username := cfg.RequireObject("username")
password := cfg.RequireObject("password")
return nil
})
}
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: yaml
config:
bigip:address:
value: 'TODO: var.hostname'
bigip:password:
value: 'TODO: var.password'
bigip:username:
value: 'TODO: var.username'
configuration:
hostname:
type: dynamic
username:
type: dynamic
password:
type: dynamic
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: java
config:
bigip:address:
value: 'TODO: var.hostname'
bigip:password:
value: 'TODO: var.password'
bigip:username:
value: 'TODO: var.username'
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
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) {
final var config = ctx.config();
final var hostname = config.get("hostname");
final var username = config.get("username");
final var password = config.get("password");
}
}
Configuration Reference
address
- (typestring
) Domain name or IP address of the BIG-IP. Can be set via theBIGIP_HOST
environment variable.username
- (typestring
) BIG-IP Username for authentication. Can be set via theBIGIP_USER
environment variable.password
- (typestring
) BIG-IP Password for authentication. Can be set via theBIGIP_PASSWORD
environment variable.tokenAuth
- (Optional, Defaulttrue
) Enable to use token authentication. Can be set via theBIGIP_TOKEN_AUTH
environment variable.tokenValue
- (Optional) A token generated outside the provider, in place of passwordapiTimeout
- (Optional, typeint
) A timeout for AS3 requests, represented as a number of seconds.tokenTimeout
- (Optional, typeint
) A lifespan to request for the AS3 auth token, represented as a number of seconds.apiRetries
- (Optional, typeint
) Amount of times to retry AS3 API requests.loginRef
- (Optional,Defaulttmos
) Login reference for token authentication (see BIG-IP REST docs for details). May be set via theBIGIP_LOGIN_REF
environment variable.port
- (Optional) Management Port to connect to BIG-IP,this is mainly required if we have single nic BIG-IP in AWS/Azure/GCP (or) Management port other than443
. Can be set viaBIGIP_PORT
environment variable.validateCertsDisable
- (Optional, Defaulttrue
) If set to true, Disables TLS certificate check on BIG-IP. Can be set via theBIGIP_VERIFY_CERT_DISABLE
environment variable.trustedCertPath
- (typestring
) Provides Certificate Path to be used TLS Validate.It will be required only ifvalidateCertsDisable
set tofalse
.Can be set via theBIGIP_TRUSTED_CERT_PATH
environment variable.
Note For BIG-IQ resources these provider credentials
address
,username
,password
can be set to BIG-IQ credentials.
Note The F5 BIG-IP provider gathers non-identifiable usage data for the purposes of improving the product as outlined in the end user license agreement for BIG-IP. To opt out of data collection, use the following :
export TEEM_DISABLE=true