1. Packages
  2. Linode Provider
  3. API Docs
  4. Rdns
Linode v4.36.0 published on Thursday, Mar 27, 2025 by Pulumi

linode.Rdns

Explore with Pulumi AI

Provides a Linode RDNS resource. This can be used to create and modify RDNS records.

Linode RDNS names must have a matching address value in an A or AAAA record. This A or AAAA name must be resolvable at the time the RDNS resource is being associated.

For more information, see the Linode APIv4 docs and the Configure your Linode for Reverse DNS guide.

Example Usage

The following example shows how one might use this resource to configure an RDNS address for an IP address.

import * as pulumi from "@pulumi/pulumi";
import * as linode from "@pulumi/linode";

const fooInstance = new linode.Instance("foo", {
    image: "linode/alpine3.19",
    region: "ca-east",
    type: "g6-dedicated-2",
});
const foo = new linode.Rdns("foo", {
    address: fooInstance.ipAddress,
    rdns: pulumi.interpolate`${fooInstance.ipAddress}.nip.io`,
});
Copy
import pulumi
import pulumi_linode as linode

foo_instance = linode.Instance("foo",
    image="linode/alpine3.19",
    region="ca-east",
    type="g6-dedicated-2")
foo = linode.Rdns("foo",
    address=foo_instance.ip_address,
    rdns=foo_instance.ip_address.apply(lambda ip_address: f"{ip_address}.nip.io"))
Copy
package main

import (
	"fmt"

	"github.com/pulumi/pulumi-linode/sdk/v4/go/linode"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		fooInstance, err := linode.NewInstance(ctx, "foo", &linode.InstanceArgs{
			Image:  pulumi.String("linode/alpine3.19"),
			Region: pulumi.String("ca-east"),
			Type:   pulumi.String("g6-dedicated-2"),
		})
		if err != nil {
			return err
		}
		_, err = linode.NewRdns(ctx, "foo", &linode.RdnsArgs{
			Address: fooInstance.IpAddress,
			Rdns: fooInstance.IpAddress.ApplyT(func(ipAddress string) (string, error) {
				return fmt.Sprintf("%v.nip.io", ipAddress), nil
			}).(pulumi.StringOutput),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
Copy
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Linode = Pulumi.Linode;

return await Deployment.RunAsync(() => 
{
    var fooInstance = new Linode.Instance("foo", new()
    {
        Image = "linode/alpine3.19",
        Region = "ca-east",
        Type = "g6-dedicated-2",
    });

    var foo = new Linode.Rdns("foo", new()
    {
        Address = fooInstance.IpAddress,
        RdnsName = fooInstance.IpAddress.Apply(ipAddress => $"{ipAddress}.nip.io"),
    });

});
Copy
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.linode.Instance;
import com.pulumi.linode.InstanceArgs;
import com.pulumi.linode.Rdns;
import com.pulumi.linode.RdnsArgs;
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 fooInstance = new Instance("fooInstance", InstanceArgs.builder()
            .image("linode/alpine3.19")
            .region("ca-east")
            .type("g6-dedicated-2")
            .build());

        var foo = new Rdns("foo", RdnsArgs.builder()
            .address(fooInstance.ipAddress())
            .rdns(fooInstance.ipAddress().applyValue(ipAddress -> String.format("%s.nip.io", ipAddress)))
            .build());

    }
}
Copy
resources:
  foo:
    type: linode:Rdns
    properties:
      address: ${fooInstance.ipAddress}
      rdns: ${fooInstance.ipAddress}.nip.io
  fooInstance:
    type: linode:Instance
    name: foo
    properties:
      image: linode/alpine3.19
      region: ca-east
      type: g6-dedicated-2
Copy

The following example shows how one might use this resource to configure RDNS for multiple IP addresses.

import * as pulumi from "@pulumi/pulumi";
import * as linode from "@pulumi/linode";

const myInstance: linode.Instance[] = [];
for (const range = {value: 0}; range.value < 3; range.value++) {
    myInstance.push(new linode.Instance(`my_instance-${range.value}`, {
        label: `simple_instance-${range.value + 1}`,
        image: "linode/ubuntu22.04",
        region: "us-central",
        type: "g6-standard-1",
        rootPass: "terr4form-test",
    }));
}
const myRdns: linode.Rdns[] = [];
myInstance.length.apply(rangeBody => {
    for (const range = {value: 0}; range.value < rangeBody; range.value++) {
        myRdns.push(new linode.Rdns(`my_rdns-${range.value}`, {
            address: myInstance[range.value].ipAddress,
            rdns: pulumi.interpolate`${myInstance[range.value].ipAddress}.nip.io`,
        }));
    }
});
Copy
import pulumi
import pulumi_linode as linode

my_instance = []
for range in [{"value": i} for i in range(0, 3)]:
    my_instance.append(linode.Instance(f"my_instance-{range['value']}",
        label=f"simple_instance-{range['value'] + 1}",
        image="linode/ubuntu22.04",
        region="us-central",
        type="g6-standard-1",
        root_pass="terr4form-test"))
my_rdns = []
def create_my_rdns(range_body):
    for range in [{"value": i} for i in range(0, range_body)]:
        my_rdns.append(linode.Rdns(f"my_rdns-{range['value']}",
            address=my_instance[range["value"]].ip_address,
            rdns=my_instance[range["value"]].ip_address.apply(lambda ip_address: f"{ip_address}.nip.io")))

(len(my_instance)).apply(create_my_rdns)
Copy
package main

import (
	"fmt"

	"github.com/pulumi/pulumi-linode/sdk/v4/go/linode"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		var myInstance []*linode.Instance
		for index := 0; index < 3; index++ {
			key0 := index
			val0 := index
			__res, err := linode.NewInstance(ctx, fmt.Sprintf("my_instance-%v", key0), &linode.InstanceArgs{
				Label:    pulumi.Sprintf("simple_instance-%v", val0+1),
				Image:    pulumi.String("linode/ubuntu22.04"),
				Region:   pulumi.String("us-central"),
				Type:     pulumi.String("g6-standard-1"),
				RootPass: pulumi.String("terr4form-test"),
			})
			if err != nil {
				return err
			}
			myInstance = append(myInstance, __res)
		}
		var myRdns []*linode.Rdns
		for index := 0; index < int(len(myInstance)); index++ {
			key0 := index
			val0 := index
			__res, err := linode.NewRdns(ctx, fmt.Sprintf("my_rdns-%v", key0), &linode.RdnsArgs{
				Address: myInstance[val0].IpAddress,
				Rdns: pulumi.String(myInstance[val0].IpAddress.ApplyT(func(ipAddress string) (string, error) {
					return fmt.Sprintf("%v.nip.io", ipAddress), nil
				}).(pulumi.StringOutput)),
			})
			if err != nil {
				return err
			}
			myRdns = append(myRdns, __res)
		}
		return nil
	})
}
Copy
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Linode = Pulumi.Linode;

return await Deployment.RunAsync(() => 
{
    var myInstance = new List<Linode.Instance>();
    for (var rangeIndex = 0; rangeIndex < 3; rangeIndex++)
    {
        var range = new { Value = rangeIndex };
        myInstance.Add(new Linode.Instance($"my_instance-{range.Value}", new()
        {
            Label = $"simple_instance-{range.Value + 1}",
            Image = "linode/ubuntu22.04",
            Region = "us-central",
            Type = "g6-standard-1",
            RootPass = "terr4form-test",
        }));
    }
    var myRdns = new List<Linode.Rdns>();
    for (var rangeIndex = 0; rangeIndex < myInstance.Length; rangeIndex++)
    {
        var range = new { Value = rangeIndex };
        myRdns.Add(new Linode.Rdns($"my_rdns-{range.Value}", new()
        {
            Address = myInstance[range.Value].IpAddress,
            RdnsName = myInstance[range.Value].IpAddress.Apply(ipAddress => $"{ipAddress}.nip.io"),
        }));
    }
});
Copy
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.linode.Instance;
import com.pulumi.linode.InstanceArgs;
import com.pulumi.linode.Rdns;
import com.pulumi.linode.RdnsArgs;
import com.pulumi.codegen.internal.KeyedValue;
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) {
        for (var i = 0; i < 3; i++) {
            new Instance("myInstance-" + i, InstanceArgs.builder()
                .label(String.format("simple_instance-%s", range.value() + 1))
                .image("linode/ubuntu22.04")
                .region("us-central")
                .type("g6-standard-1")
                .rootPass("terr4form-test")
                .build());

        
}
        for (var i = 0; i < myInstance.length(); i++) {
            new Rdns("myRdns-" + i, RdnsArgs.builder()
                .address(myInstance[range.value()].ipAddress())
                .rdns(myInstance[range.value()].ipAddress().applyValue(ipAddress -> String.format("%s.nip.io", ipAddress)))
                .build());

        
}
    }
}
Copy
Coming soon!

Create Rdns Resource

Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

Constructor syntax

new Rdns(name: string, args: RdnsArgs, opts?: CustomResourceOptions);
@overload
def Rdns(resource_name: str,
         args: RdnsArgs,
         opts: Optional[ResourceOptions] = None)

@overload
def Rdns(resource_name: str,
         opts: Optional[ResourceOptions] = None,
         address: Optional[str] = None,
         rdns: Optional[str] = None,
         timeouts: Optional[RdnsTimeoutsArgs] = None,
         wait_for_available: Optional[bool] = None)
func NewRdns(ctx *Context, name string, args RdnsArgs, opts ...ResourceOption) (*Rdns, error)
public Rdns(string name, RdnsArgs args, CustomResourceOptions? opts = null)
public Rdns(String name, RdnsArgs args)
public Rdns(String name, RdnsArgs args, CustomResourceOptions options)
type: linode:Rdns
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.

Parameters

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

Constructor example

The following reference example uses placeholder values for all input properties.

var rdnsResource = new Linode.Rdns("rdnsResource", new()
{
    Address = "string",
    RdnsName = "string",
    Timeouts = new Linode.Inputs.RdnsTimeoutsArgs
    {
        Create = "string",
        Update = "string",
    },
    WaitForAvailable = false,
});
Copy
example, err := linode.NewRdns(ctx, "rdnsResource", &linode.RdnsArgs{
	Address: pulumi.String("string"),
	Rdns:    pulumi.String("string"),
	Timeouts: &linode.RdnsTimeoutsArgs{
		Create: pulumi.String("string"),
		Update: pulumi.String("string"),
	},
	WaitForAvailable: pulumi.Bool(false),
})
Copy
var rdnsResource = new Rdns("rdnsResource", RdnsArgs.builder()
    .address("string")
    .rdns("string")
    .timeouts(RdnsTimeoutsArgs.builder()
        .create("string")
        .update("string")
        .build())
    .waitForAvailable(false)
    .build());
Copy
rdns_resource = linode.Rdns("rdnsResource",
    address="string",
    rdns="string",
    timeouts={
        "create": "string",
        "update": "string",
    },
    wait_for_available=False)
Copy
const rdnsResource = new linode.Rdns("rdnsResource", {
    address: "string",
    rdns: "string",
    timeouts: {
        create: "string",
        update: "string",
    },
    waitForAvailable: false,
});
Copy
type: linode:Rdns
properties:
    address: string
    rdns: string
    timeouts:
        create: string
        update: string
    waitForAvailable: false
Copy

Rdns Resource Properties

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

Inputs

In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

The Rdns resource accepts the following input properties:

Address This property is required. string
The Public IPv4 or IPv6 address that will receive the PTR record. A matching A or AAAA record must exist.
RdnsName This property is required. string
The name of the RDNS address.
Timeouts RdnsTimeouts
WaitForAvailable bool
If true, the RDNS assignment will be retried within the operation timeout period.
Address This property is required. string
The Public IPv4 or IPv6 address that will receive the PTR record. A matching A or AAAA record must exist.
Rdns This property is required. string
The name of the RDNS address.
Timeouts RdnsTimeoutsArgs
WaitForAvailable bool
If true, the RDNS assignment will be retried within the operation timeout period.
address This property is required. String
The Public IPv4 or IPv6 address that will receive the PTR record. A matching A or AAAA record must exist.
rdns This property is required. String
The name of the RDNS address.
timeouts RdnsTimeouts
waitForAvailable Boolean
If true, the RDNS assignment will be retried within the operation timeout period.
address This property is required. string
The Public IPv4 or IPv6 address that will receive the PTR record. A matching A or AAAA record must exist.
rdns This property is required. string
The name of the RDNS address.
timeouts RdnsTimeouts
waitForAvailable boolean
If true, the RDNS assignment will be retried within the operation timeout period.
address This property is required. str
The Public IPv4 or IPv6 address that will receive the PTR record. A matching A or AAAA record must exist.
rdns This property is required. str
The name of the RDNS address.
timeouts RdnsTimeoutsArgs
wait_for_available bool
If true, the RDNS assignment will be retried within the operation timeout period.
address This property is required. String
The Public IPv4 or IPv6 address that will receive the PTR record. A matching A or AAAA record must exist.
rdns This property is required. String
The name of the RDNS address.
timeouts Property Map
waitForAvailable Boolean
If true, the RDNS assignment will be retried within the operation timeout period.

Outputs

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

Id string
The provider-assigned unique ID for this managed resource.
Id string
The provider-assigned unique ID for this managed resource.
id String
The provider-assigned unique ID for this managed resource.
id string
The provider-assigned unique ID for this managed resource.
id str
The provider-assigned unique ID for this managed resource.
id String
The provider-assigned unique ID for this managed resource.

Look up Existing Rdns Resource

Get an existing Rdns 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?: RdnsState, opts?: CustomResourceOptions): Rdns
@staticmethod
def get(resource_name: str,
        id: str,
        opts: Optional[ResourceOptions] = None,
        address: Optional[str] = None,
        rdns: Optional[str] = None,
        timeouts: Optional[RdnsTimeoutsArgs] = None,
        wait_for_available: Optional[bool] = None) -> Rdns
func GetRdns(ctx *Context, name string, id IDInput, state *RdnsState, opts ...ResourceOption) (*Rdns, error)
public static Rdns Get(string name, Input<string> id, RdnsState? state, CustomResourceOptions? opts = null)
public static Rdns get(String name, Output<String> id, RdnsState state, CustomResourceOptions options)
resources:  _:    type: linode:Rdns    get:      id: ${id}
name This property is required.
The unique name of the resulting resource.
id This property is required.
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 This property is required.
The unique name of the resulting resource.
id This property is required.
The unique provider ID of the resource to lookup.
name This property is required.
The unique name of the resulting resource.
id This property is required.
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 This property is required.
The unique name of the resulting resource.
id This property is required.
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 This property is required.
The unique name of the resulting resource.
id This property is required.
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:
Address string
The Public IPv4 or IPv6 address that will receive the PTR record. A matching A or AAAA record must exist.
RdnsName string
The name of the RDNS address.
Timeouts RdnsTimeouts
WaitForAvailable bool
If true, the RDNS assignment will be retried within the operation timeout period.
Address string
The Public IPv4 or IPv6 address that will receive the PTR record. A matching A or AAAA record must exist.
Rdns string
The name of the RDNS address.
Timeouts RdnsTimeoutsArgs
WaitForAvailable bool
If true, the RDNS assignment will be retried within the operation timeout period.
address String
The Public IPv4 or IPv6 address that will receive the PTR record. A matching A or AAAA record must exist.
rdns String
The name of the RDNS address.
timeouts RdnsTimeouts
waitForAvailable Boolean
If true, the RDNS assignment will be retried within the operation timeout period.
address string
The Public IPv4 or IPv6 address that will receive the PTR record. A matching A or AAAA record must exist.
rdns string
The name of the RDNS address.
timeouts RdnsTimeouts
waitForAvailable boolean
If true, the RDNS assignment will be retried within the operation timeout period.
address str
The Public IPv4 or IPv6 address that will receive the PTR record. A matching A or AAAA record must exist.
rdns str
The name of the RDNS address.
timeouts RdnsTimeoutsArgs
wait_for_available bool
If true, the RDNS assignment will be retried within the operation timeout period.
address String
The Public IPv4 or IPv6 address that will receive the PTR record. A matching A or AAAA record must exist.
rdns String
The name of the RDNS address.
timeouts Property Map
waitForAvailable Boolean
If true, the RDNS assignment will be retried within the operation timeout period.

Supporting Types

RdnsTimeouts
, RdnsTimeoutsArgs

Create string
A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
Update string
A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
Create string
A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
Update string
A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
create String
A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
update String
A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
create string
A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
update string
A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
create str
A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
update str
A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
create String
A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
update String
A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).

Import

Linodes RDNS resources can be imported using the address as the id.

$ pulumi import linode:index/rdns:Rdns foo 123.123.123.123
Copy

To learn more about importing existing cloud resources, see Importing resources.

Package Details

Repository
Linode pulumi/pulumi-linode
License
Apache-2.0
Notes
This Pulumi package is based on the linode Terraform Provider.