Hetzner Cloud

v1.10.1 published on Wednesday, Aug 3, 2022 by Pulumi

LoadBalancer

Provides a Hetzner Cloud Load Balancer to represent a Load Balancer in the Hetzner Cloud.

Example Usage

using Pulumi;
using HCloud = Pulumi.HCloud;

class MyStack : Stack
{
    public MyStack()
    {
        var myserver = new HCloud.Server("myserver", new HCloud.ServerArgs
        {
            ServerType = "cx11",
            Image = "ubuntu-18.04",
        });
        var loadBalancer = new HCloud.LoadBalancer("loadBalancer", new HCloud.LoadBalancerArgs
        {
            LoadBalancerType = "lb11",
            Location = "nbg1",
            Targets = 
            {
                new HCloud.Inputs.LoadBalancerTargetArgs
                {
                    Type = "server",
                    ServerId = myserver.Id,
                },
            },
        });
    }

}
package main

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

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		myserver, err := hcloud.NewServer(ctx, "myserver", &hcloud.ServerArgs{
			ServerType: pulumi.String("cx11"),
			Image:      pulumi.String("ubuntu-18.04"),
		})
		if err != nil {
			return err
		}
		_, err = hcloud.NewLoadBalancer(ctx, "loadBalancer", &hcloud.LoadBalancerArgs{
			LoadBalancerType: pulumi.String("lb11"),
			Location:         pulumi.String("nbg1"),
			Targets: LoadBalancerTargetArray{
				&LoadBalancerTargetArgs{
					Type:     pulumi.String("server"),
					ServerId: myserver.ID(),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import java.util.*;
import java.io.*;
import java.nio.*;
import com.pulumi.*;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var myserver = new Server("myserver", ServerArgs.builder()        
            .serverType("cx11")
            .image("ubuntu-18.04")
            .build());

        var loadBalancer = new LoadBalancer("loadBalancer", LoadBalancerArgs.builder()        
            .loadBalancerType("lb11")
            .location("nbg1")
            .targets(LoadBalancerTargetArgs.builder()
                .type("server")
                .serverId(myserver.id())
                .build())
            .build());

    }
}
import pulumi
import pulumi_hcloud as hcloud

myserver = hcloud.Server("myserver",
    server_type="cx11",
    image="ubuntu-18.04")
load_balancer = hcloud.LoadBalancer("loadBalancer",
    load_balancer_type="lb11",
    location="nbg1",
    targets=[hcloud.LoadBalancerTargetArgs(
        type="server",
        server_id=myserver.id,
    )])
import * as pulumi from "@pulumi/pulumi";
import * as hcloud from "@pulumi/hcloud";

const myserver = new hcloud.Server("myserver", {
    serverType: "cx11",
    image: "ubuntu-18.04",
});
const loadBalancer = new hcloud.LoadBalancer("loadBalancer", {
    loadBalancerType: "lb11",
    location: "nbg1",
    targets: [{
        type: "server",
        serverId: myserver.id,
    }],
});
resources:
  myserver:
    type: hcloud:Server
    properties:
      serverType: cx11
      image: ubuntu-18.04
  loadBalancer:
    type: hcloud:LoadBalancer
    properties:
      loadBalancerType: lb11
      location: nbg1
      targets:
        - type: server
          serverId: ${myserver.id}

Create LoadBalancer Resource

new LoadBalancer(name: string, args: LoadBalancerArgs, opts?: CustomResourceOptions);
@overload
def LoadBalancer(resource_name: str,
                 opts: Optional[ResourceOptions] = None,
                 algorithm: Optional[LoadBalancerAlgorithmArgs] = None,
                 delete_protection: Optional[bool] = None,
                 labels: Optional[Mapping[str, Any]] = None,
                 load_balancer_type: Optional[str] = None,
                 location: Optional[str] = None,
                 name: Optional[str] = None,
                 network_zone: Optional[str] = None,
                 targets: Optional[Sequence[LoadBalancerTargetArgs]] = None)
@overload
def LoadBalancer(resource_name: str,
                 args: LoadBalancerArgs,
                 opts: Optional[ResourceOptions] = None)
func NewLoadBalancer(ctx *Context, name string, args LoadBalancerArgs, opts ...ResourceOption) (*LoadBalancer, error)
public LoadBalancer(string name, LoadBalancerArgs args, CustomResourceOptions? opts = null)
public LoadBalancer(String name, LoadBalancerArgs args)
public LoadBalancer(String name, LoadBalancerArgs args, CustomResourceOptions options)
type: hcloud:LoadBalancer
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.

name string
The unique name of the resource.
args LoadBalancerArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.
resource_name str
The unique name of the resource.
args LoadBalancerArgs
The arguments to resource properties.
opts ResourceOptions
Bag of options to control resource's behavior.
ctx Context
Context object for the current deployment.
name string
The unique name of the resource.
args LoadBalancerArgs
The arguments to resource properties.
opts ResourceOption
Bag of options to control resource's behavior.
name string
The unique name of the resource.
args LoadBalancerArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.
name String
The unique name of the resource.
args LoadBalancerArgs
The arguments to resource properties.
options CustomResourceOptions
Bag of options to control resource's behavior.

LoadBalancer Resource Properties

To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

Inputs

The LoadBalancer resource accepts the following input properties:

LoadBalancerType string

Type of the Load Balancer.

Algorithm Pulumi.HCloud.Inputs.LoadBalancerAlgorithmArgs

Configuration of the algorithm the Load Balancer use.

DeleteProtection bool

Enable or disable delete protection.

Labels Dictionary<string, object>

User-defined labels (key-value pairs) should be created with.

Location string

Location of the Load Balancer. Require when no network_zone is set.

Name string

Name of the Load Balancer.

NetworkZone string

Network Zone of the Load Balancer. Require when no location is set.

Targets List<Pulumi.HCloud.Inputs.LoadBalancerTargetArgs>

Deprecated:

Use hcloud_load_balancer_target resource instead. This allows the full control over the selected targets.

LoadBalancerType string

Type of the Load Balancer.

Algorithm LoadBalancerAlgorithmArgs

Configuration of the algorithm the Load Balancer use.

DeleteProtection bool

Enable or disable delete protection.

Labels map[string]interface{}

User-defined labels (key-value pairs) should be created with.

Location string

Location of the Load Balancer. Require when no network_zone is set.

Name string

Name of the Load Balancer.

NetworkZone string

Network Zone of the Load Balancer. Require when no location is set.

Targets []LoadBalancerTargetTypeArgs

Deprecated:

Use hcloud_load_balancer_target resource instead. This allows the full control over the selected targets.

loadBalancerType String

Type of the Load Balancer.

algorithm LoadBalancerAlgorithmArgs

Configuration of the algorithm the Load Balancer use.

deleteProtection Boolean

Enable or disable delete protection.

labels Map<String,Object>

User-defined labels (key-value pairs) should be created with.

location String

Location of the Load Balancer. Require when no network_zone is set.

name String

Name of the Load Balancer.

networkZone String

Network Zone of the Load Balancer. Require when no location is set.

targets List<LoadBalancerTargetArgs>

Deprecated:

Use hcloud_load_balancer_target resource instead. This allows the full control over the selected targets.

loadBalancerType string

Type of the Load Balancer.

algorithm LoadBalancerAlgorithmArgs

Configuration of the algorithm the Load Balancer use.

deleteProtection boolean

Enable or disable delete protection.

labels {[key: string]: any}

User-defined labels (key-value pairs) should be created with.

location string

Location of the Load Balancer. Require when no network_zone is set.

name string

Name of the Load Balancer.

networkZone string

Network Zone of the Load Balancer. Require when no location is set.

targets LoadBalancerTargetArgs[]

Deprecated:

Use hcloud_load_balancer_target resource instead. This allows the full control over the selected targets.

load_balancer_type str

Type of the Load Balancer.

algorithm LoadBalancerAlgorithmArgs

Configuration of the algorithm the Load Balancer use.

delete_protection bool

Enable or disable delete protection.

labels Mapping[str, Any]

User-defined labels (key-value pairs) should be created with.

location str

Location of the Load Balancer. Require when no network_zone is set.

name str

Name of the Load Balancer.

network_zone str

Network Zone of the Load Balancer. Require when no location is set.

targets Sequence[LoadBalancerTargetArgs]

Deprecated:

Use hcloud_load_balancer_target resource instead. This allows the full control over the selected targets.

loadBalancerType String

Type of the Load Balancer.

algorithm Property Map

Configuration of the algorithm the Load Balancer use.

deleteProtection Boolean

Enable or disable delete protection.

labels Map<Any>

User-defined labels (key-value pairs) should be created with.

location String

Location of the Load Balancer. Require when no network_zone is set.

name String

Name of the Load Balancer.

networkZone String

Network Zone of the Load Balancer. Require when no location is set.

targets List<Property Map>

Deprecated:

Use hcloud_load_balancer_target resource instead. This allows the full control over the selected targets.

Outputs

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

Id string

The provider-assigned unique ID for this managed resource.

Ipv4 string

(string) IPv4 Address of the Load Balancer.

Ipv6 string

(string) IPv6 Address of the Load Balancer.

NetworkId int
NetworkIp string
Id string

The provider-assigned unique ID for this managed resource.

Ipv4 string

(string) IPv4 Address of the Load Balancer.

Ipv6 string

(string) IPv6 Address of the Load Balancer.

NetworkId int
NetworkIp string
id String

The provider-assigned unique ID for this managed resource.

ipv4 String

(string) IPv4 Address of the Load Balancer.

ipv6 String

(string) IPv6 Address of the Load Balancer.

networkId Integer
networkIp String
id string

The provider-assigned unique ID for this managed resource.

ipv4 string

(string) IPv4 Address of the Load Balancer.

ipv6 string

(string) IPv6 Address of the Load Balancer.

networkId number
networkIp string
id str

The provider-assigned unique ID for this managed resource.

ipv4 str

(string) IPv4 Address of the Load Balancer.

ipv6 str

(string) IPv6 Address of the Load Balancer.

network_id int
network_ip str
id String

The provider-assigned unique ID for this managed resource.

ipv4 String

(string) IPv4 Address of the Load Balancer.

ipv6 String

(string) IPv6 Address of the Load Balancer.

networkId Number
networkIp String

Look up Existing LoadBalancer Resource

Get an existing LoadBalancer 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?: LoadBalancerState, opts?: CustomResourceOptions): LoadBalancer
@staticmethod
def get(resource_name: str,
        id: str,
        opts: Optional[ResourceOptions] = None,
        algorithm: Optional[LoadBalancerAlgorithmArgs] = None,
        delete_protection: Optional[bool] = None,
        ipv4: Optional[str] = None,
        ipv6: Optional[str] = None,
        labels: Optional[Mapping[str, Any]] = None,
        load_balancer_type: Optional[str] = None,
        location: Optional[str] = None,
        name: Optional[str] = None,
        network_id: Optional[int] = None,
        network_ip: Optional[str] = None,
        network_zone: Optional[str] = None,
        targets: Optional[Sequence[LoadBalancerTargetArgs]] = None) -> LoadBalancer
func GetLoadBalancer(ctx *Context, name string, id IDInput, state *LoadBalancerState, opts ...ResourceOption) (*LoadBalancer, error)
public static LoadBalancer Get(string name, Input<string> id, LoadBalancerState? state, CustomResourceOptions? opts = null)
public static LoadBalancer get(String name, Output<String> id, LoadBalancerState state, CustomResourceOptions options)
Resource lookup is not supported in YAML
name
The unique name of the resulting resource.
id
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
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
name
The unique name of the resulting resource.
id
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
The unique name of the resulting resource.
id
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
The unique name of the resulting resource.
id
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:
Algorithm Pulumi.HCloud.Inputs.LoadBalancerAlgorithmArgs

Configuration of the algorithm the Load Balancer use.

DeleteProtection bool

Enable or disable delete protection.

Ipv4 string

(string) IPv4 Address of the Load Balancer.

Ipv6 string

(string) IPv6 Address of the Load Balancer.

Labels Dictionary<string, object>

User-defined labels (key-value pairs) should be created with.

LoadBalancerType string

Type of the Load Balancer.

Location string

Location of the Load Balancer. Require when no network_zone is set.

Name string

Name of the Load Balancer.

NetworkId int
NetworkIp string
NetworkZone string

Network Zone of the Load Balancer. Require when no location is set.

Targets List<Pulumi.HCloud.Inputs.LoadBalancerTargetArgs>

Deprecated:

Use hcloud_load_balancer_target resource instead. This allows the full control over the selected targets.

Algorithm LoadBalancerAlgorithmArgs

Configuration of the algorithm the Load Balancer use.

DeleteProtection bool

Enable or disable delete protection.

Ipv4 string

(string) IPv4 Address of the Load Balancer.

Ipv6 string

(string) IPv6 Address of the Load Balancer.

Labels map[string]interface{}

User-defined labels (key-value pairs) should be created with.

LoadBalancerType string

Type of the Load Balancer.

Location string

Location of the Load Balancer. Require when no network_zone is set.

Name string

Name of the Load Balancer.

NetworkId int
NetworkIp string
NetworkZone string

Network Zone of the Load Balancer. Require when no location is set.

Targets []LoadBalancerTargetTypeArgs

Deprecated:

Use hcloud_load_balancer_target resource instead. This allows the full control over the selected targets.

algorithm LoadBalancerAlgorithmArgs

Configuration of the algorithm the Load Balancer use.

deleteProtection Boolean

Enable or disable delete protection.

ipv4 String

(string) IPv4 Address of the Load Balancer.

ipv6 String

(string) IPv6 Address of the Load Balancer.

labels Map<String,Object>

User-defined labels (key-value pairs) should be created with.

loadBalancerType String

Type of the Load Balancer.

location String

Location of the Load Balancer. Require when no network_zone is set.

name String

Name of the Load Balancer.

networkId Integer
networkIp String
networkZone String

Network Zone of the Load Balancer. Require when no location is set.

targets List<LoadBalancerTargetArgs>

Deprecated:

Use hcloud_load_balancer_target resource instead. This allows the full control over the selected targets.

algorithm LoadBalancerAlgorithmArgs

Configuration of the algorithm the Load Balancer use.

deleteProtection boolean

Enable or disable delete protection.

ipv4 string

(string) IPv4 Address of the Load Balancer.

ipv6 string

(string) IPv6 Address of the Load Balancer.

labels {[key: string]: any}

User-defined labels (key-value pairs) should be created with.

loadBalancerType string

Type of the Load Balancer.

location string

Location of the Load Balancer. Require when no network_zone is set.

name string

Name of the Load Balancer.

networkId number
networkIp string
networkZone string

Network Zone of the Load Balancer. Require when no location is set.

targets LoadBalancerTargetArgs[]

Deprecated:

Use hcloud_load_balancer_target resource instead. This allows the full control over the selected targets.

algorithm LoadBalancerAlgorithmArgs

Configuration of the algorithm the Load Balancer use.

delete_protection bool

Enable or disable delete protection.

ipv4 str

(string) IPv4 Address of the Load Balancer.

ipv6 str

(string) IPv6 Address of the Load Balancer.

labels Mapping[str, Any]

User-defined labels (key-value pairs) should be created with.

load_balancer_type str

Type of the Load Balancer.

location str

Location of the Load Balancer. Require when no network_zone is set.

name str

Name of the Load Balancer.

network_id int
network_ip str
network_zone str

Network Zone of the Load Balancer. Require when no location is set.

targets Sequence[LoadBalancerTargetArgs]

Deprecated:

Use hcloud_load_balancer_target resource instead. This allows the full control over the selected targets.

algorithm Property Map

Configuration of the algorithm the Load Balancer use.

deleteProtection Boolean

Enable or disable delete protection.

ipv4 String

(string) IPv4 Address of the Load Balancer.

ipv6 String

(string) IPv6 Address of the Load Balancer.

labels Map<Any>

User-defined labels (key-value pairs) should be created with.

loadBalancerType String

Type of the Load Balancer.

location String

Location of the Load Balancer. Require when no network_zone is set.

name String

Name of the Load Balancer.

networkId Number
networkIp String
networkZone String

Network Zone of the Load Balancer. Require when no location is set.

targets List<Property Map>

Deprecated:

Use hcloud_load_balancer_target resource instead. This allows the full control over the selected targets.

Supporting Types

LoadBalancerAlgorithm

Type string

Type of the Load Balancer Algorithm. round_robin or least_connections

Type string

Type of the Load Balancer Algorithm. round_robin or least_connections

type String

Type of the Load Balancer Algorithm. round_robin or least_connections

type string

Type of the Load Balancer Algorithm. round_robin or least_connections

type str

Type of the Load Balancer Algorithm. round_robin or least_connections

type String

Type of the Load Balancer Algorithm. round_robin or least_connections

LoadBalancerTarget

Type string

Type of the Load Balancer Algorithm. round_robin or least_connections

ServerId int
UsePrivateIp bool

Deprecated:

Does not work. Use the hcloud_load_balancer_target resource instead.

Type string

Type of the Load Balancer Algorithm. round_robin or least_connections

ServerId int
UsePrivateIp bool

Deprecated:

Does not work. Use the hcloud_load_balancer_target resource instead.

type String

Type of the Load Balancer Algorithm. round_robin or least_connections

serverId Integer
usePrivateIp Boolean

Deprecated:

Does not work. Use the hcloud_load_balancer_target resource instead.

type string

Type of the Load Balancer Algorithm. round_robin or least_connections

serverId number
usePrivateIp boolean

Deprecated:

Does not work. Use the hcloud_load_balancer_target resource instead.

type str

Type of the Load Balancer Algorithm. round_robin or least_connections

server_id int
use_private_ip bool

Deprecated:

Does not work. Use the hcloud_load_balancer_target resource instead.

type String

Type of the Load Balancer Algorithm. round_robin or least_connections

serverId Number
usePrivateIp Boolean

Deprecated:

Does not work. Use the hcloud_load_balancer_target resource instead.

Import

Load Balancers can be imported using its id

 $ pulumi import hcloud:index/loadBalancer:LoadBalancer my_load_balancer <id>

Package Details

Repository
https://github.com/pulumi/pulumi-hcloud
License
Apache-2.0
Notes

This Pulumi package is based on the hcloud Terraform Provider.