scaleway.getVpcPublicGatewayDhcpReservation
Explore with Pulumi AI
Gets information about a dhcp entries. For further information please check the API documentation
Example Dynamic
import * as pulumi from "@pulumi/pulumi";
import * as scaleway from "@pulumi/scaleway";
import * as scaleway from "@pulumiverse/scaleway";
const mainVpcPrivateNetwork = new scaleway.VpcPrivateNetwork("mainVpcPrivateNetwork", {});
const mainInstanceServer = new scaleway.InstanceServer("mainInstanceServer", {
    image: "ubuntu_jammy",
    type: "DEV1-S",
    zone: "fr-par-1",
});
const mainInstancePrivateNic = new scaleway.InstancePrivateNic("mainInstancePrivateNic", {
    serverId: mainInstanceServer.id,
    privateNetworkId: mainVpcPrivateNetwork.id,
});
const mainVpcPublicGatewayIp = new scaleway.VpcPublicGatewayIp("mainVpcPublicGatewayIp", {});
const mainVpcPublicGatewayDhcp = new scaleway.VpcPublicGatewayDhcp("mainVpcPublicGatewayDhcp", {subnet: "192.168.1.0/24"});
const mainVpcPublicGateway = new scaleway.VpcPublicGateway("mainVpcPublicGateway", {
    type: "VPC-GW-S",
    ipId: mainVpcPublicGatewayIp.id,
});
const mainVpcGatewayNetwork = new scaleway.VpcGatewayNetwork("mainVpcGatewayNetwork", {
    gatewayId: mainVpcPublicGateway.id,
    privateNetworkId: mainVpcPrivateNetwork.id,
    dhcpId: mainVpcPublicGatewayDhcp.id,
    cleanupDhcp: true,
    enableMasquerade: true,
});
//# Retrieve the dynamic entries generated by mac address & gateway network
const byMacAddressAndGwNetwork = scaleway.getVpcPublicGatewayDhcpReservationOutput({
    macAddress: mainInstancePrivateNic.macAddress,
    gatewayNetworkId: mainVpcGatewayNetwork.id,
});
import pulumi
import pulumi_scaleway as scaleway
import pulumiverse_scaleway as scaleway
main_vpc_private_network = scaleway.VpcPrivateNetwork("mainVpcPrivateNetwork")
main_instance_server = scaleway.InstanceServer("mainInstanceServer",
    image="ubuntu_jammy",
    type="DEV1-S",
    zone="fr-par-1")
main_instance_private_nic = scaleway.InstancePrivateNic("mainInstancePrivateNic",
    server_id=main_instance_server.id,
    private_network_id=main_vpc_private_network.id)
main_vpc_public_gateway_ip = scaleway.VpcPublicGatewayIp("mainVpcPublicGatewayIp")
main_vpc_public_gateway_dhcp = scaleway.VpcPublicGatewayDhcp("mainVpcPublicGatewayDhcp", subnet="192.168.1.0/24")
main_vpc_public_gateway = scaleway.VpcPublicGateway("mainVpcPublicGateway",
    type="VPC-GW-S",
    ip_id=main_vpc_public_gateway_ip.id)
main_vpc_gateway_network = scaleway.VpcGatewayNetwork("mainVpcGatewayNetwork",
    gateway_id=main_vpc_public_gateway.id,
    private_network_id=main_vpc_private_network.id,
    dhcp_id=main_vpc_public_gateway_dhcp.id,
    cleanup_dhcp=True,
    enable_masquerade=True)
## Retrieve the dynamic entries generated by mac address & gateway network
by_mac_address_and_gw_network = scaleway.get_vpc_public_gateway_dhcp_reservation_output(mac_address=main_instance_private_nic.mac_address,
    gateway_network_id=main_vpc_gateway_network.id)
package main
import (
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
	"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		mainVpcPrivateNetwork, err := scaleway.NewVpcPrivateNetwork(ctx, "mainVpcPrivateNetwork", nil)
		if err != nil {
			return err
		}
		mainInstanceServer, err := scaleway.NewInstanceServer(ctx, "mainInstanceServer", &scaleway.InstanceServerArgs{
			Image: pulumi.String("ubuntu_jammy"),
			Type:  pulumi.String("DEV1-S"),
			Zone:  pulumi.String("fr-par-1"),
		})
		if err != nil {
			return err
		}
		mainInstancePrivateNic, err := scaleway.NewInstancePrivateNic(ctx, "mainInstancePrivateNic", &scaleway.InstancePrivateNicArgs{
			ServerId:         mainInstanceServer.ID(),
			PrivateNetworkId: mainVpcPrivateNetwork.ID(),
		})
		if err != nil {
			return err
		}
		mainVpcPublicGatewayIp, err := scaleway.NewVpcPublicGatewayIp(ctx, "mainVpcPublicGatewayIp", nil)
		if err != nil {
			return err
		}
		mainVpcPublicGatewayDhcp, err := scaleway.NewVpcPublicGatewayDhcp(ctx, "mainVpcPublicGatewayDhcp", &scaleway.VpcPublicGatewayDhcpArgs{
			Subnet: pulumi.String("192.168.1.0/24"),
		})
		if err != nil {
			return err
		}
		mainVpcPublicGateway, err := scaleway.NewVpcPublicGateway(ctx, "mainVpcPublicGateway", &scaleway.VpcPublicGatewayArgs{
			Type: pulumi.String("VPC-GW-S"),
			IpId: mainVpcPublicGatewayIp.ID(),
		})
		if err != nil {
			return err
		}
		mainVpcGatewayNetwork, err := scaleway.NewVpcGatewayNetwork(ctx, "mainVpcGatewayNetwork", &scaleway.VpcGatewayNetworkArgs{
			GatewayId:        mainVpcPublicGateway.ID(),
			PrivateNetworkId: mainVpcPrivateNetwork.ID(),
			DhcpId:           mainVpcPublicGatewayDhcp.ID(),
			CleanupDhcp:      pulumi.Bool(true),
			EnableMasquerade: pulumi.Bool(true),
		})
		if err != nil {
			return err
		}
		_ = scaleway.LookupVpcPublicGatewayDhcpReservationOutput(ctx, scaleway.GetVpcPublicGatewayDhcpReservationOutputArgs{
			MacAddress:       mainInstancePrivateNic.MacAddress,
			GatewayNetworkId: mainVpcGatewayNetwork.ID(),
		}, nil)
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Scaleway = Pulumi.Scaleway;
using Scaleway = Pulumiverse.Scaleway;
return await Deployment.RunAsync(() => 
{
    var mainVpcPrivateNetwork = new Scaleway.VpcPrivateNetwork("mainVpcPrivateNetwork");
    var mainInstanceServer = new Scaleway.InstanceServer("mainInstanceServer", new()
    {
        Image = "ubuntu_jammy",
        Type = "DEV1-S",
        Zone = "fr-par-1",
    });
    var mainInstancePrivateNic = new Scaleway.InstancePrivateNic("mainInstancePrivateNic", new()
    {
        ServerId = mainInstanceServer.Id,
        PrivateNetworkId = mainVpcPrivateNetwork.Id,
    });
    var mainVpcPublicGatewayIp = new Scaleway.VpcPublicGatewayIp("mainVpcPublicGatewayIp");
    var mainVpcPublicGatewayDhcp = new Scaleway.VpcPublicGatewayDhcp("mainVpcPublicGatewayDhcp", new()
    {
        Subnet = "192.168.1.0/24",
    });
    var mainVpcPublicGateway = new Scaleway.VpcPublicGateway("mainVpcPublicGateway", new()
    {
        Type = "VPC-GW-S",
        IpId = mainVpcPublicGatewayIp.Id,
    });
    var mainVpcGatewayNetwork = new Scaleway.VpcGatewayNetwork("mainVpcGatewayNetwork", new()
    {
        GatewayId = mainVpcPublicGateway.Id,
        PrivateNetworkId = mainVpcPrivateNetwork.Id,
        DhcpId = mainVpcPublicGatewayDhcp.Id,
        CleanupDhcp = true,
        EnableMasquerade = true,
    });
    //# Retrieve the dynamic entries generated by mac address & gateway network
    var byMacAddressAndGwNetwork = Scaleway.GetVpcPublicGatewayDhcpReservation.Invoke(new()
    {
        MacAddress = mainInstancePrivateNic.MacAddress,
        GatewayNetworkId = mainVpcGatewayNetwork.Id,
    });
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.scaleway.VpcPrivateNetwork;
import com.pulumi.scaleway.InstanceServer;
import com.pulumi.scaleway.InstanceServerArgs;
import com.pulumi.scaleway.InstancePrivateNic;
import com.pulumi.scaleway.InstancePrivateNicArgs;
import com.pulumi.scaleway.VpcPublicGatewayIp;
import com.pulumi.scaleway.VpcPublicGatewayDhcp;
import com.pulumi.scaleway.VpcPublicGatewayDhcpArgs;
import com.pulumi.scaleway.VpcPublicGateway;
import com.pulumi.scaleway.VpcPublicGatewayArgs;
import com.pulumi.scaleway.VpcGatewayNetwork;
import com.pulumi.scaleway.VpcGatewayNetworkArgs;
import com.pulumi.scaleway.ScalewayFunctions;
import com.pulumi.scaleway.inputs.GetVpcPublicGatewayDhcpReservationArgs;
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) {
        var mainVpcPrivateNetwork = new VpcPrivateNetwork("mainVpcPrivateNetwork");
        var mainInstanceServer = new InstanceServer("mainInstanceServer", InstanceServerArgs.builder()        
            .image("ubuntu_jammy")
            .type("DEV1-S")
            .zone("fr-par-1")
            .build());
        var mainInstancePrivateNic = new InstancePrivateNic("mainInstancePrivateNic", InstancePrivateNicArgs.builder()        
            .serverId(mainInstanceServer.id())
            .privateNetworkId(mainVpcPrivateNetwork.id())
            .build());
        var mainVpcPublicGatewayIp = new VpcPublicGatewayIp("mainVpcPublicGatewayIp");
        var mainVpcPublicGatewayDhcp = new VpcPublicGatewayDhcp("mainVpcPublicGatewayDhcp", VpcPublicGatewayDhcpArgs.builder()        
            .subnet("192.168.1.0/24")
            .build());
        var mainVpcPublicGateway = new VpcPublicGateway("mainVpcPublicGateway", VpcPublicGatewayArgs.builder()        
            .type("VPC-GW-S")
            .ipId(mainVpcPublicGatewayIp.id())
            .build());
        var mainVpcGatewayNetwork = new VpcGatewayNetwork("mainVpcGatewayNetwork", VpcGatewayNetworkArgs.builder()        
            .gatewayId(mainVpcPublicGateway.id())
            .privateNetworkId(mainVpcPrivateNetwork.id())
            .dhcpId(mainVpcPublicGatewayDhcp.id())
            .cleanupDhcp(true)
            .enableMasquerade(true)
            .build());
        //# Retrieve the dynamic entries generated by mac address & gateway network
        final var byMacAddressAndGwNetwork = ScalewayFunctions.getVpcPublicGatewayDhcpReservation(GetVpcPublicGatewayDhcpReservationArgs.builder()
            .macAddress(mainInstancePrivateNic.macAddress())
            .gatewayNetworkId(mainVpcGatewayNetwork.id())
            .build());
    }
}
resources:
  mainVpcPrivateNetwork:
    type: scaleway:VpcPrivateNetwork
  mainInstanceServer:
    type: scaleway:InstanceServer
    properties:
      image: ubuntu_jammy
      type: DEV1-S
      zone: fr-par-1
  mainInstancePrivateNic:
    type: scaleway:InstancePrivateNic
    properties:
      serverId: ${mainInstanceServer.id}
      privateNetworkId: ${mainVpcPrivateNetwork.id}
  mainVpcPublicGatewayIp:
    type: scaleway:VpcPublicGatewayIp
  mainVpcPublicGatewayDhcp:
    type: scaleway:VpcPublicGatewayDhcp
    properties:
      subnet: 192.168.1.0/24
  mainVpcPublicGateway:
    type: scaleway:VpcPublicGateway
    properties:
      type: VPC-GW-S
      ipId: ${mainVpcPublicGatewayIp.id}
  mainVpcGatewayNetwork: ## Retrieve the dynamic entries generated by mac address & gateway network
    type: scaleway:VpcGatewayNetwork
    properties:
      gatewayId: ${mainVpcPublicGateway.id}
      privateNetworkId: ${mainVpcPrivateNetwork.id}
      dhcpId: ${mainVpcPublicGatewayDhcp.id}
      cleanupDhcp: true
      enableMasquerade: true
variables:
  byMacAddressAndGwNetwork:
    fn::invoke:
      Function: scaleway:getVpcPublicGatewayDhcpReservation
      Arguments:
        macAddress: ${mainInstancePrivateNic.macAddress}
        gatewayNetworkId: ${mainVpcGatewayNetwork.id}
Example Static and PAT rule
import * as pulumi from "@pulumi/pulumi";
import * as scaleway from "@pulumi/scaleway";
import * as scaleway from "@pulumiverse/scaleway";
const mainVpcPrivateNetwork = new scaleway.VpcPrivateNetwork("mainVpcPrivateNetwork", {});
const mainInstanceSecurityGroup = new scaleway.InstanceSecurityGroup("mainInstanceSecurityGroup", {
    inboundDefaultPolicy: "drop",
    outboundDefaultPolicy: "accept",
    inboundRules: [{
        action: "accept",
        port: 22,
    }],
});
const mainInstanceServer = new scaleway.InstanceServer("mainInstanceServer", {
    image: "ubuntu_jammy",
    type: "DEV1-S",
    zone: "fr-par-1",
    securityGroupId: mainInstanceSecurityGroup.id,
});
const mainInstancePrivateNic = new scaleway.InstancePrivateNic("mainInstancePrivateNic", {
    serverId: mainInstanceServer.id,
    privateNetworkId: mainVpcPrivateNetwork.id,
});
const mainVpcPublicGatewayIp = new scaleway.VpcPublicGatewayIp("mainVpcPublicGatewayIp", {});
const mainVpcPublicGatewayDhcp = new scaleway.VpcPublicGatewayDhcp("mainVpcPublicGatewayDhcp", {subnet: "192.168.1.0/24"});
const mainVpcPublicGateway = new scaleway.VpcPublicGateway("mainVpcPublicGateway", {
    type: "VPC-GW-S",
    ipId: mainVpcPublicGatewayIp.id,
});
const mainVpcGatewayNetwork = new scaleway.VpcGatewayNetwork("mainVpcGatewayNetwork", {
    gatewayId: mainVpcPublicGateway.id,
    privateNetworkId: mainVpcPrivateNetwork.id,
    dhcpId: mainVpcPublicGatewayDhcp.id,
    cleanupDhcp: true,
    enableMasquerade: true,
});
const mainVpcPublicGatewayDhcpReservation = new scaleway.VpcPublicGatewayDhcpReservation("mainVpcPublicGatewayDhcpReservation", {
    gatewayNetworkId: mainVpcGatewayNetwork.id,
    macAddress: mainInstancePrivateNic.macAddress,
    ipAddress: "192.168.1.4",
});
//## VPC PAT RULE
const mainVpcPublicGatewayPatRule = new scaleway.VpcPublicGatewayPatRule("mainVpcPublicGatewayPatRule", {
    gatewayId: mainVpcPublicGateway.id,
    privateIp: mainVpcPublicGatewayDhcpReservation.ipAddress,
    privatePort: 22,
    publicPort: 2222,
    protocol: "tcp",
});
const byId = scaleway.getVpcPublicGatewayDhcpReservationOutput({
    reservationId: mainVpcPublicGatewayDhcpReservation.id,
});
import pulumi
import pulumi_scaleway as scaleway
import pulumiverse_scaleway as scaleway
main_vpc_private_network = scaleway.VpcPrivateNetwork("mainVpcPrivateNetwork")
main_instance_security_group = scaleway.InstanceSecurityGroup("mainInstanceSecurityGroup",
    inbound_default_policy="drop",
    outbound_default_policy="accept",
    inbound_rules=[scaleway.InstanceSecurityGroupInboundRuleArgs(
        action="accept",
        port=22,
    )])
main_instance_server = scaleway.InstanceServer("mainInstanceServer",
    image="ubuntu_jammy",
    type="DEV1-S",
    zone="fr-par-1",
    security_group_id=main_instance_security_group.id)
main_instance_private_nic = scaleway.InstancePrivateNic("mainInstancePrivateNic",
    server_id=main_instance_server.id,
    private_network_id=main_vpc_private_network.id)
main_vpc_public_gateway_ip = scaleway.VpcPublicGatewayIp("mainVpcPublicGatewayIp")
main_vpc_public_gateway_dhcp = scaleway.VpcPublicGatewayDhcp("mainVpcPublicGatewayDhcp", subnet="192.168.1.0/24")
main_vpc_public_gateway = scaleway.VpcPublicGateway("mainVpcPublicGateway",
    type="VPC-GW-S",
    ip_id=main_vpc_public_gateway_ip.id)
main_vpc_gateway_network = scaleway.VpcGatewayNetwork("mainVpcGatewayNetwork",
    gateway_id=main_vpc_public_gateway.id,
    private_network_id=main_vpc_private_network.id,
    dhcp_id=main_vpc_public_gateway_dhcp.id,
    cleanup_dhcp=True,
    enable_masquerade=True)
main_vpc_public_gateway_dhcp_reservation = scaleway.VpcPublicGatewayDhcpReservation("mainVpcPublicGatewayDhcpReservation",
    gateway_network_id=main_vpc_gateway_network.id,
    mac_address=main_instance_private_nic.mac_address,
    ip_address="192.168.1.4")
### VPC PAT RULE
main_vpc_public_gateway_pat_rule = scaleway.VpcPublicGatewayPatRule("mainVpcPublicGatewayPatRule",
    gateway_id=main_vpc_public_gateway.id,
    private_ip=main_vpc_public_gateway_dhcp_reservation.ip_address,
    private_port=22,
    public_port=2222,
    protocol="tcp")
by_id = scaleway.get_vpc_public_gateway_dhcp_reservation_output(reservation_id=main_vpc_public_gateway_dhcp_reservation.id)
package main
import (
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
	"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		mainVpcPrivateNetwork, err := scaleway.NewVpcPrivateNetwork(ctx, "mainVpcPrivateNetwork", nil)
		if err != nil {
			return err
		}
		mainInstanceSecurityGroup, err := scaleway.NewInstanceSecurityGroup(ctx, "mainInstanceSecurityGroup", &scaleway.InstanceSecurityGroupArgs{
			InboundDefaultPolicy:  pulumi.String("drop"),
			OutboundDefaultPolicy: pulumi.String("accept"),
			InboundRules: scaleway.InstanceSecurityGroupInboundRuleArray{
				&scaleway.InstanceSecurityGroupInboundRuleArgs{
					Action: pulumi.String("accept"),
					Port:   pulumi.Int(22),
				},
			},
		})
		if err != nil {
			return err
		}
		mainInstanceServer, err := scaleway.NewInstanceServer(ctx, "mainInstanceServer", &scaleway.InstanceServerArgs{
			Image:           pulumi.String("ubuntu_jammy"),
			Type:            pulumi.String("DEV1-S"),
			Zone:            pulumi.String("fr-par-1"),
			SecurityGroupId: mainInstanceSecurityGroup.ID(),
		})
		if err != nil {
			return err
		}
		mainInstancePrivateNic, err := scaleway.NewInstancePrivateNic(ctx, "mainInstancePrivateNic", &scaleway.InstancePrivateNicArgs{
			ServerId:         mainInstanceServer.ID(),
			PrivateNetworkId: mainVpcPrivateNetwork.ID(),
		})
		if err != nil {
			return err
		}
		mainVpcPublicGatewayIp, err := scaleway.NewVpcPublicGatewayIp(ctx, "mainVpcPublicGatewayIp", nil)
		if err != nil {
			return err
		}
		mainVpcPublicGatewayDhcp, err := scaleway.NewVpcPublicGatewayDhcp(ctx, "mainVpcPublicGatewayDhcp", &scaleway.VpcPublicGatewayDhcpArgs{
			Subnet: pulumi.String("192.168.1.0/24"),
		})
		if err != nil {
			return err
		}
		mainVpcPublicGateway, err := scaleway.NewVpcPublicGateway(ctx, "mainVpcPublicGateway", &scaleway.VpcPublicGatewayArgs{
			Type: pulumi.String("VPC-GW-S"),
			IpId: mainVpcPublicGatewayIp.ID(),
		})
		if err != nil {
			return err
		}
		mainVpcGatewayNetwork, err := scaleway.NewVpcGatewayNetwork(ctx, "mainVpcGatewayNetwork", &scaleway.VpcGatewayNetworkArgs{
			GatewayId:        mainVpcPublicGateway.ID(),
			PrivateNetworkId: mainVpcPrivateNetwork.ID(),
			DhcpId:           mainVpcPublicGatewayDhcp.ID(),
			CleanupDhcp:      pulumi.Bool(true),
			EnableMasquerade: pulumi.Bool(true),
		})
		if err != nil {
			return err
		}
		mainVpcPublicGatewayDhcpReservation, err := scaleway.NewVpcPublicGatewayDhcpReservation(ctx, "mainVpcPublicGatewayDhcpReservation", &scaleway.VpcPublicGatewayDhcpReservationArgs{
			GatewayNetworkId: mainVpcGatewayNetwork.ID(),
			MacAddress:       mainInstancePrivateNic.MacAddress,
			IpAddress:        pulumi.String("192.168.1.4"),
		})
		if err != nil {
			return err
		}
		// ## VPC PAT RULE
		_, err = scaleway.NewVpcPublicGatewayPatRule(ctx, "mainVpcPublicGatewayPatRule", &scaleway.VpcPublicGatewayPatRuleArgs{
			GatewayId:   mainVpcPublicGateway.ID(),
			PrivateIp:   mainVpcPublicGatewayDhcpReservation.IpAddress,
			PrivatePort: pulumi.Int(22),
			PublicPort:  pulumi.Int(2222),
			Protocol:    pulumi.String("tcp"),
		})
		if err != nil {
			return err
		}
		_ = scaleway.LookupVpcPublicGatewayDhcpReservationOutput(ctx, scaleway.GetVpcPublicGatewayDhcpReservationOutputArgs{
			ReservationId: mainVpcPublicGatewayDhcpReservation.ID(),
		}, nil)
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Scaleway = Pulumi.Scaleway;
using Scaleway = Pulumiverse.Scaleway;
return await Deployment.RunAsync(() => 
{
    var mainVpcPrivateNetwork = new Scaleway.VpcPrivateNetwork("mainVpcPrivateNetwork");
    var mainInstanceSecurityGroup = new Scaleway.InstanceSecurityGroup("mainInstanceSecurityGroup", new()
    {
        InboundDefaultPolicy = "drop",
        OutboundDefaultPolicy = "accept",
        InboundRules = new[]
        {
            new Scaleway.Inputs.InstanceSecurityGroupInboundRuleArgs
            {
                Action = "accept",
                Port = 22,
            },
        },
    });
    var mainInstanceServer = new Scaleway.InstanceServer("mainInstanceServer", new()
    {
        Image = "ubuntu_jammy",
        Type = "DEV1-S",
        Zone = "fr-par-1",
        SecurityGroupId = mainInstanceSecurityGroup.Id,
    });
    var mainInstancePrivateNic = new Scaleway.InstancePrivateNic("mainInstancePrivateNic", new()
    {
        ServerId = mainInstanceServer.Id,
        PrivateNetworkId = mainVpcPrivateNetwork.Id,
    });
    var mainVpcPublicGatewayIp = new Scaleway.VpcPublicGatewayIp("mainVpcPublicGatewayIp");
    var mainVpcPublicGatewayDhcp = new Scaleway.VpcPublicGatewayDhcp("mainVpcPublicGatewayDhcp", new()
    {
        Subnet = "192.168.1.0/24",
    });
    var mainVpcPublicGateway = new Scaleway.VpcPublicGateway("mainVpcPublicGateway", new()
    {
        Type = "VPC-GW-S",
        IpId = mainVpcPublicGatewayIp.Id,
    });
    var mainVpcGatewayNetwork = new Scaleway.VpcGatewayNetwork("mainVpcGatewayNetwork", new()
    {
        GatewayId = mainVpcPublicGateway.Id,
        PrivateNetworkId = mainVpcPrivateNetwork.Id,
        DhcpId = mainVpcPublicGatewayDhcp.Id,
        CleanupDhcp = true,
        EnableMasquerade = true,
    });
    var mainVpcPublicGatewayDhcpReservation = new Scaleway.VpcPublicGatewayDhcpReservation("mainVpcPublicGatewayDhcpReservation", new()
    {
        GatewayNetworkId = mainVpcGatewayNetwork.Id,
        MacAddress = mainInstancePrivateNic.MacAddress,
        IpAddress = "192.168.1.4",
    });
    //## VPC PAT RULE
    var mainVpcPublicGatewayPatRule = new Scaleway.VpcPublicGatewayPatRule("mainVpcPublicGatewayPatRule", new()
    {
        GatewayId = mainVpcPublicGateway.Id,
        PrivateIp = mainVpcPublicGatewayDhcpReservation.IpAddress,
        PrivatePort = 22,
        PublicPort = 2222,
        Protocol = "tcp",
    });
    var byId = Scaleway.GetVpcPublicGatewayDhcpReservation.Invoke(new()
    {
        ReservationId = mainVpcPublicGatewayDhcpReservation.Id,
    });
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.scaleway.VpcPrivateNetwork;
import com.pulumi.scaleway.InstanceSecurityGroup;
import com.pulumi.scaleway.InstanceSecurityGroupArgs;
import com.pulumi.scaleway.inputs.InstanceSecurityGroupInboundRuleArgs;
import com.pulumi.scaleway.InstanceServer;
import com.pulumi.scaleway.InstanceServerArgs;
import com.pulumi.scaleway.InstancePrivateNic;
import com.pulumi.scaleway.InstancePrivateNicArgs;
import com.pulumi.scaleway.VpcPublicGatewayIp;
import com.pulumi.scaleway.VpcPublicGatewayDhcp;
import com.pulumi.scaleway.VpcPublicGatewayDhcpArgs;
import com.pulumi.scaleway.VpcPublicGateway;
import com.pulumi.scaleway.VpcPublicGatewayArgs;
import com.pulumi.scaleway.VpcGatewayNetwork;
import com.pulumi.scaleway.VpcGatewayNetworkArgs;
import com.pulumi.scaleway.VpcPublicGatewayDhcpReservation;
import com.pulumi.scaleway.VpcPublicGatewayDhcpReservationArgs;
import com.pulumi.scaleway.VpcPublicGatewayPatRule;
import com.pulumi.scaleway.VpcPublicGatewayPatRuleArgs;
import com.pulumi.scaleway.ScalewayFunctions;
import com.pulumi.scaleway.inputs.GetVpcPublicGatewayDhcpReservationArgs;
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) {
        var mainVpcPrivateNetwork = new VpcPrivateNetwork("mainVpcPrivateNetwork");
        var mainInstanceSecurityGroup = new InstanceSecurityGroup("mainInstanceSecurityGroup", InstanceSecurityGroupArgs.builder()        
            .inboundDefaultPolicy("drop")
            .outboundDefaultPolicy("accept")
            .inboundRules(InstanceSecurityGroupInboundRuleArgs.builder()
                .action("accept")
                .port("22")
                .build())
            .build());
        var mainInstanceServer = new InstanceServer("mainInstanceServer", InstanceServerArgs.builder()        
            .image("ubuntu_jammy")
            .type("DEV1-S")
            .zone("fr-par-1")
            .securityGroupId(mainInstanceSecurityGroup.id())
            .build());
        var mainInstancePrivateNic = new InstancePrivateNic("mainInstancePrivateNic", InstancePrivateNicArgs.builder()        
            .serverId(mainInstanceServer.id())
            .privateNetworkId(mainVpcPrivateNetwork.id())
            .build());
        var mainVpcPublicGatewayIp = new VpcPublicGatewayIp("mainVpcPublicGatewayIp");
        var mainVpcPublicGatewayDhcp = new VpcPublicGatewayDhcp("mainVpcPublicGatewayDhcp", VpcPublicGatewayDhcpArgs.builder()        
            .subnet("192.168.1.0/24")
            .build());
        var mainVpcPublicGateway = new VpcPublicGateway("mainVpcPublicGateway", VpcPublicGatewayArgs.builder()        
            .type("VPC-GW-S")
            .ipId(mainVpcPublicGatewayIp.id())
            .build());
        var mainVpcGatewayNetwork = new VpcGatewayNetwork("mainVpcGatewayNetwork", VpcGatewayNetworkArgs.builder()        
            .gatewayId(mainVpcPublicGateway.id())
            .privateNetworkId(mainVpcPrivateNetwork.id())
            .dhcpId(mainVpcPublicGatewayDhcp.id())
            .cleanupDhcp(true)
            .enableMasquerade(true)
            .build());
        var mainVpcPublicGatewayDhcpReservation = new VpcPublicGatewayDhcpReservation("mainVpcPublicGatewayDhcpReservation", VpcPublicGatewayDhcpReservationArgs.builder()        
            .gatewayNetworkId(mainVpcGatewayNetwork.id())
            .macAddress(mainInstancePrivateNic.macAddress())
            .ipAddress("192.168.1.4")
            .build());
        //## VPC PAT RULE
        var mainVpcPublicGatewayPatRule = new VpcPublicGatewayPatRule("mainVpcPublicGatewayPatRule", VpcPublicGatewayPatRuleArgs.builder()        
            .gatewayId(mainVpcPublicGateway.id())
            .privateIp(mainVpcPublicGatewayDhcpReservation.ipAddress())
            .privatePort(22)
            .publicPort(2222)
            .protocol("tcp")
            .build());
        final var byId = ScalewayFunctions.getVpcPublicGatewayDhcpReservation(GetVpcPublicGatewayDhcpReservationArgs.builder()
            .reservationId(mainVpcPublicGatewayDhcpReservation.id())
            .build());
    }
}
resources:
  mainVpcPrivateNetwork:
    type: scaleway:VpcPrivateNetwork
  mainInstanceSecurityGroup:
    type: scaleway:InstanceSecurityGroup
    properties:
      inboundDefaultPolicy: drop
      outboundDefaultPolicy: accept
      inboundRules:
        - action: accept
          port: '22'
  mainInstanceServer:
    type: scaleway:InstanceServer
    properties:
      image: ubuntu_jammy
      type: DEV1-S
      zone: fr-par-1
      securityGroupId: ${mainInstanceSecurityGroup.id}
  mainInstancePrivateNic:
    type: scaleway:InstancePrivateNic
    properties:
      serverId: ${mainInstanceServer.id}
      privateNetworkId: ${mainVpcPrivateNetwork.id}
  mainVpcPublicGatewayIp:
    type: scaleway:VpcPublicGatewayIp
  mainVpcPublicGatewayDhcp:
    type: scaleway:VpcPublicGatewayDhcp
    properties:
      subnet: 192.168.1.0/24
  mainVpcPublicGateway:
    type: scaleway:VpcPublicGateway
    properties:
      type: VPC-GW-S
      ipId: ${mainVpcPublicGatewayIp.id}
  mainVpcGatewayNetwork:
    type: scaleway:VpcGatewayNetwork
    properties:
      gatewayId: ${mainVpcPublicGateway.id}
      privateNetworkId: ${mainVpcPrivateNetwork.id}
      dhcpId: ${mainVpcPublicGatewayDhcp.id}
      cleanupDhcp: true
      enableMasquerade: true
  mainVpcPublicGatewayDhcpReservation:
    type: scaleway:VpcPublicGatewayDhcpReservation
    properties:
      gatewayNetworkId: ${mainVpcGatewayNetwork.id}
      macAddress: ${mainInstancePrivateNic.macAddress}
      ipAddress: 192.168.1.4
  ### VPC PAT RULE
  mainVpcPublicGatewayPatRule:
    type: scaleway:VpcPublicGatewayPatRule
    properties:
      gatewayId: ${mainVpcPublicGateway.id}
      privateIp: ${mainVpcPublicGatewayDhcpReservation.ipAddress}
      privatePort: 22
      publicPort: 2222
      protocol: tcp
variables:
  byId:
    fn::invoke:
      Function: scaleway:getVpcPublicGatewayDhcpReservation
      Arguments:
        reservationId: ${mainVpcPublicGatewayDhcpReservation.id}
Using getVpcPublicGatewayDhcpReservation
Two invocation forms are available. The direct form accepts plain arguments and either blocks until the result value is available, or returns a Promise-wrapped result. The output form accepts Input-wrapped arguments and returns an Output-wrapped result.
function getVpcPublicGatewayDhcpReservation(args: GetVpcPublicGatewayDhcpReservationArgs, opts?: InvokeOptions): Promise<GetVpcPublicGatewayDhcpReservationResult>
function getVpcPublicGatewayDhcpReservationOutput(args: GetVpcPublicGatewayDhcpReservationOutputArgs, opts?: InvokeOptions): Output<GetVpcPublicGatewayDhcpReservationResult>def get_vpc_public_gateway_dhcp_reservation(gateway_network_id: Optional[str] = None,
                                            mac_address: Optional[str] = None,
                                            reservation_id: Optional[str] = None,
                                            wait_for_dhcp: Optional[bool] = None,
                                            zone: Optional[str] = None,
                                            opts: Optional[InvokeOptions] = None) -> GetVpcPublicGatewayDhcpReservationResult
def get_vpc_public_gateway_dhcp_reservation_output(gateway_network_id: Optional[pulumi.Input[str]] = None,
                                            mac_address: Optional[pulumi.Input[str]] = None,
                                            reservation_id: Optional[pulumi.Input[str]] = None,
                                            wait_for_dhcp: Optional[pulumi.Input[bool]] = None,
                                            zone: Optional[pulumi.Input[str]] = None,
                                            opts: Optional[InvokeOptions] = None) -> Output[GetVpcPublicGatewayDhcpReservationResult]func LookupVpcPublicGatewayDhcpReservation(ctx *Context, args *LookupVpcPublicGatewayDhcpReservationArgs, opts ...InvokeOption) (*LookupVpcPublicGatewayDhcpReservationResult, error)
func LookupVpcPublicGatewayDhcpReservationOutput(ctx *Context, args *LookupVpcPublicGatewayDhcpReservationOutputArgs, opts ...InvokeOption) LookupVpcPublicGatewayDhcpReservationResultOutput> Note: This function is named LookupVpcPublicGatewayDhcpReservation in the Go SDK.
public static class GetVpcPublicGatewayDhcpReservation 
{
    public static Task<GetVpcPublicGatewayDhcpReservationResult> InvokeAsync(GetVpcPublicGatewayDhcpReservationArgs args, InvokeOptions? opts = null)
    public static Output<GetVpcPublicGatewayDhcpReservationResult> Invoke(GetVpcPublicGatewayDhcpReservationInvokeArgs args, InvokeOptions? opts = null)
}public static CompletableFuture<GetVpcPublicGatewayDhcpReservationResult> getVpcPublicGatewayDhcpReservation(GetVpcPublicGatewayDhcpReservationArgs args, InvokeOptions options)
// Output-based functions aren't available in Java yet
fn::invoke:
  function: scaleway:index/getVpcPublicGatewayDhcpReservation:getVpcPublicGatewayDhcpReservation
  arguments:
    # arguments dictionaryThe following arguments are supported:
- Gateway
Network stringId  The ID of the owning GatewayNetwork.
Only one of
reservation_idormac_addresswithgateway_network_idshould be specified.- Mac
Address string - The MAC address of the reservation to retrieve.
 - Reservation
Id string - The ID of the Reservation to retrieve.
 - Wait
For boolDhcp  - Boolean to wait for mac_address to exist in dhcp.
 - Zone string
 zone) The zone in which the image exists.
- Gateway
Network stringId  The ID of the owning GatewayNetwork.
Only one of
reservation_idormac_addresswithgateway_network_idshould be specified.- Mac
Address string - The MAC address of the reservation to retrieve.
 - Reservation
Id string - The ID of the Reservation to retrieve.
 - Wait
For boolDhcp  - Boolean to wait for mac_address to exist in dhcp.
 - Zone string
 zone) The zone in which the image exists.
- gateway
Network StringId  The ID of the owning GatewayNetwork.
Only one of
reservation_idormac_addresswithgateway_network_idshould be specified.- mac
Address String - The MAC address of the reservation to retrieve.
 - reservation
Id String - The ID of the Reservation to retrieve.
 - wait
For BooleanDhcp  - Boolean to wait for mac_address to exist in dhcp.
 - zone String
 zone) The zone in which the image exists.
- gateway
Network stringId  The ID of the owning GatewayNetwork.
Only one of
reservation_idormac_addresswithgateway_network_idshould be specified.- mac
Address string - The MAC address of the reservation to retrieve.
 - reservation
Id string - The ID of the Reservation to retrieve.
 - wait
For booleanDhcp  - Boolean to wait for mac_address to exist in dhcp.
 - zone string
 zone) The zone in which the image exists.
- gateway_
network_ strid  The ID of the owning GatewayNetwork.
Only one of
reservation_idormac_addresswithgateway_network_idshould be specified.- mac_
address str - The MAC address of the reservation to retrieve.
 - reservation_
id str - The ID of the Reservation to retrieve.
 - wait_
for_ booldhcp  - Boolean to wait for mac_address to exist in dhcp.
 - zone str
 zone) The zone in which the image exists.
- gateway
Network StringId  The ID of the owning GatewayNetwork.
Only one of
reservation_idormac_addresswithgateway_network_idshould be specified.- mac
Address String - The MAC address of the reservation to retrieve.
 - reservation
Id String - The ID of the Reservation to retrieve.
 - wait
For BooleanDhcp  - Boolean to wait for mac_address to exist in dhcp.
 - zone String
 zone) The zone in which the image exists.
getVpcPublicGatewayDhcpReservation Result
The following output properties are available:
- Created
At string - Hostname string
 - Id string
 - The provider-assigned unique ID for this managed resource.
 - Ip
Address string - Type string
 - Updated
At string - Gateway
Network stringId  - Mac
Address string - Reservation
Id string - Wait
For boolDhcp  - Zone string
 
- Created
At string - Hostname string
 - Id string
 - The provider-assigned unique ID for this managed resource.
 - Ip
Address string - Type string
 - Updated
At string - Gateway
Network stringId  - Mac
Address string - Reservation
Id string - Wait
For boolDhcp  - Zone string
 
- created
At String - hostname String
 - id String
 - The provider-assigned unique ID for this managed resource.
 - ip
Address String - type String
 - updated
At String - gateway
Network StringId  - mac
Address String - reservation
Id String - wait
For BooleanDhcp  - zone String
 
- created
At string - hostname string
 - id string
 - The provider-assigned unique ID for this managed resource.
 - ip
Address string - type string
 - updated
At string - gateway
Network stringId  - mac
Address string - reservation
Id string - wait
For booleanDhcp  - zone string
 
- created_
at str - hostname str
 - id str
 - The provider-assigned unique ID for this managed resource.
 - ip_
address str - type str
 - updated_
at str - gateway_
network_ strid  - mac_
address str - reservation_
id str - wait_
for_ booldhcp  - zone str
 
- created
At String - hostname String
 - id String
 - The provider-assigned unique ID for this managed resource.
 - ip
Address String - type String
 - updated
At String - gateway
Network StringId  - mac
Address String - reservation
Id String - wait
For BooleanDhcp  - zone String
 
Package Details
- Repository
 - scaleway pulumiverse/pulumi-scaleway
 - License
 - Apache-2.0
 - Notes
 - This Pulumi package is based on the 
scalewayTerraform Provider.