Cloudflare

v4.13.0 published on Monday, Nov 28, 2022 by Pulumi

getIpRanges

Use this data source to get the IP ranges of Cloudflare edge nodes.

Example Usage

using System.Collections.Generic;
using Pulumi;
using Cloudflare = Pulumi.Cloudflare;
using Gcp = Pulumi.Gcp;

return await Deployment.RunAsync(() => 
{
    var cloudflare = Cloudflare.GetIpRanges.Invoke();

    var allowCloudflareIngress = new Gcp.Compute.Firewall("allowCloudflareIngress", new()
    {
        Network = "default",
        SourceRanges = cloudflare.Apply(getIpRangesResult => getIpRangesResult.Ipv4CidrBlocks),
        Allows = new[]
        {
            new Gcp.Compute.Inputs.FirewallAllowArgs
            {
                Ports = "443",
                Protocol = "tcp",
            },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare"
	"github.com/pulumi/pulumi-gcp/sdk/v5/go/gcp/compute"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		cloudflare, err := cloudflare.GetIpRanges(ctx, nil, nil)
		if err != nil {
			return err
		}
		_, err = compute.NewFirewall(ctx, "allowCloudflareIngress", &compute.FirewallArgs{
			Network:      pulumi.String("default"),
			SourceRanges: interface{}(cloudflare.Ipv4CidrBlocks),
			Allows: compute.FirewallAllowArray{
				&compute.FirewallAllowArgs{
					Ports:    pulumi.StringArray("443"),
					Protocol: pulumi.String("tcp"),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.cloudflare.CloudflareFunctions;
import com.pulumi.gcp.compute.Firewall;
import com.pulumi.gcp.compute.FirewallArgs;
import com.pulumi.gcp.compute.inputs.FirewallAllowArgs;
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 cloudflare = CloudflareFunctions.getIpRanges();

        var allowCloudflareIngress = new Firewall("allowCloudflareIngress", FirewallArgs.builder()        
            .network("default")
            .sourceRanges(cloudflare.applyValue(getIpRangesResult -> getIpRangesResult.ipv4CidrBlocks()))
            .allows(FirewallAllowArgs.builder()
                .ports("443")
                .protocol("tcp")
                .build())
            .build());

    }
}
import pulumi
import pulumi_cloudflare as cloudflare
import pulumi_gcp as gcp

cloudflare = cloudflare.get_ip_ranges()
allow_cloudflare_ingress = gcp.compute.Firewall("allowCloudflareIngress",
    network="default",
    source_ranges=cloudflare.ipv4_cidr_blocks,
    allows=[gcp.compute.FirewallAllowArgs(
        ports="443",
        protocol="tcp",
    )])
import * as pulumi from "@pulumi/pulumi";
import * as cloudflare from "@pulumi/cloudflare";
import * as gcp from "@pulumi/gcp";

const cloudflare = cloudflare.getIpRanges({});
const allowCloudflareIngress = new gcp.compute.Firewall("allowCloudflareIngress", {
    network: "default",
    sourceRanges: cloudflare.then(cloudflare => cloudflare.ipv4CidrBlocks),
    allows: [{
        ports: "443",
        protocol: "tcp",
    }],
});
resources:
  allowCloudflareIngress:
    type: gcp:compute:Firewall
    properties:
      network: default
      sourceRanges: ${cloudflare.ipv4CidrBlocks}
      allows:
        - ports: '443'
          protocol: tcp
variables:
  cloudflare:
    fn::invoke:
      Function: cloudflare:getIpRanges
      Arguments: {}

Using getIpRanges

function getIpRanges(opts?: InvokeOptions): Promise<GetIpRangesResult>
def get_ip_ranges(opts: Optional[InvokeOptions] = None) -> GetIpRangesResult
func GetIpRanges(ctx *Context, opts ...InvokeOption) (*GetIpRangesResult, error)

> Note: This function is named GetIpRanges in the Go SDK.

public static class GetIpRanges 
{
    public static Task<GetIpRangesResult> InvokeAsync(InvokeOptions? opts = null)
}
public static CompletableFuture<GetIpRangesResult> getIpRanges(InvokeOptions options)
// Output-based functions aren't available in Java yet
fn::invoke:
  function: cloudflare:index/getIpRanges:getIpRanges
  arguments:
    # arguments dictionary

getIpRanges Result

The following output properties are available:

ChinaIpv4CidrBlocks List<string>

The lexically ordered list of only the IPv4 China CIDR blocks.

ChinaIpv6CidrBlocks List<string>

The lexically ordered list of only the IPv6 China CIDR blocks.

CidrBlocks List<string>

The lexically ordered list of all non-China CIDR blocks.

Id string

The provider-assigned unique ID for this managed resource.

Ipv4CidrBlocks List<string>

The lexically ordered list of only the IPv4 CIDR blocks.

Ipv6CidrBlocks List<string>

The lexically ordered list of only the IPv6 CIDR blocks.

ChinaIpv4CidrBlocks []string

The lexically ordered list of only the IPv4 China CIDR blocks.

ChinaIpv6CidrBlocks []string

The lexically ordered list of only the IPv6 China CIDR blocks.

CidrBlocks []string

The lexically ordered list of all non-China CIDR blocks.

Id string

The provider-assigned unique ID for this managed resource.

Ipv4CidrBlocks []string

The lexically ordered list of only the IPv4 CIDR blocks.

Ipv6CidrBlocks []string

The lexically ordered list of only the IPv6 CIDR blocks.

chinaIpv4CidrBlocks List<String>

The lexically ordered list of only the IPv4 China CIDR blocks.

chinaIpv6CidrBlocks List<String>

The lexically ordered list of only the IPv6 China CIDR blocks.

cidrBlocks List<String>

The lexically ordered list of all non-China CIDR blocks.

id String

The provider-assigned unique ID for this managed resource.

ipv4CidrBlocks List<String>

The lexically ordered list of only the IPv4 CIDR blocks.

ipv6CidrBlocks List<String>

The lexically ordered list of only the IPv6 CIDR blocks.

chinaIpv4CidrBlocks string[]

The lexically ordered list of only the IPv4 China CIDR blocks.

chinaIpv6CidrBlocks string[]

The lexically ordered list of only the IPv6 China CIDR blocks.

cidrBlocks string[]

The lexically ordered list of all non-China CIDR blocks.

id string

The provider-assigned unique ID for this managed resource.

ipv4CidrBlocks string[]

The lexically ordered list of only the IPv4 CIDR blocks.

ipv6CidrBlocks string[]

The lexically ordered list of only the IPv6 CIDR blocks.

china_ipv4_cidr_blocks Sequence[str]

The lexically ordered list of only the IPv4 China CIDR blocks.

china_ipv6_cidr_blocks Sequence[str]

The lexically ordered list of only the IPv6 China CIDR blocks.

cidr_blocks Sequence[str]

The lexically ordered list of all non-China CIDR blocks.

id str

The provider-assigned unique ID for this managed resource.

ipv4_cidr_blocks Sequence[str]

The lexically ordered list of only the IPv4 CIDR blocks.

ipv6_cidr_blocks Sequence[str]

The lexically ordered list of only the IPv6 CIDR blocks.

chinaIpv4CidrBlocks List<String>

The lexically ordered list of only the IPv4 China CIDR blocks.

chinaIpv6CidrBlocks List<String>

The lexically ordered list of only the IPv6 China CIDR blocks.

cidrBlocks List<String>

The lexically ordered list of all non-China CIDR blocks.

id String

The provider-assigned unique ID for this managed resource.

ipv4CidrBlocks List<String>

The lexically ordered list of only the IPv4 CIDR blocks.

ipv6CidrBlocks List<String>

The lexically ordered list of only the IPv6 CIDR blocks.

Package Details

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

This Pulumi package is based on the cloudflare Terraform Provider.