published on Monday, Mar 30, 2026 by Pulumi
published on Monday, Mar 30, 2026 by Pulumi
consul.Service provides details about a specific Consul service in a
given datacenter. The results include a list of nodes advertising the specified
service, the node’s IP address, port number, node ID, etc. By specifying a
different datacenter in the queryOptions it is possible to retrieve a list of
services from a different WAN-attached Consul datacenter.
This data source is different from the consul.getServices (plural) data
source, which provides a summary of the current Consul services.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as consul from "@pulumi/consul";
import * as example from "@pulumi/example";
import * as std from "@pulumi/std";
const read_consul_dc1 = consul.getService({
name: "consul",
datacenter: "dc1",
});
// Set the description to a whitespace delimited list of the node names
const app = new example.index.Resource("app", {description: std.join({
separator: " ",
input: nodes,
}).result});
import pulumi
import pulumi_consul as consul
import pulumi_example as example
import pulumi_std as std
read_consul_dc1 = consul.get_service(name="consul",
datacenter="dc1")
# Set the description to a whitespace delimited list of the node names
app = example.index.Resource("app", description=std.join(separator= ,
input=nodes).result)
package main
import (
"github.com/pulumi/pulumi-consul/sdk/v3/go/consul"
"github.com/pulumi/pulumi-example/sdk/go/example"
"github.com/pulumi/pulumi-std/sdk/go/std"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := consul.LookupService(ctx, &consul.LookupServiceArgs{
Name: "consul",
Datacenter: pulumi.StringRef("dc1"),
}, nil)
if err != nil {
return err
}
// Set the description to a whitespace delimited list of the node names
_, err = example.NewResource(ctx, "app", &example.ResourceArgs{
Description: std.Join(ctx, &std.JoinArgs{
Separator: " ",
Input: nodes,
}, nil).Result,
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Consul = Pulumi.Consul;
using Example = Pulumi.Example;
using Std = Pulumi.Std;
return await Deployment.RunAsync(() =>
{
var read_consul_dc1 = Consul.GetService.Invoke(new()
{
Name = "consul",
Datacenter = "dc1",
});
// Set the description to a whitespace delimited list of the node names
var app = new Example.Index.Resource("app", new()
{
Description = Std.Join.Invoke(new()
{
Separator = " ",
Input = nodes,
}).Result,
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.consul.ConsulFunctions;
import com.pulumi.consul.inputs.GetServiceArgs;
import com.pulumi.example.Resource;
import com.pulumi.example.ResourceArgs;
import com.pulumi.std.StdFunctions;
import com.pulumi.std.inputs.JoinArgs;
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 read-consul-dc1 = ConsulFunctions.getService(GetServiceArgs.builder()
.name("consul")
.datacenter("dc1")
.build());
// Set the description to a whitespace delimited list of the node names
var app = new Resource("app", ResourceArgs.builder()
.description(StdFunctions.join(JoinArgs.builder()
.separator(" ")
.input(nodes)
.build()).result())
.build());
}
}
resources:
# Set the description to a whitespace delimited list of the node names
app:
type: example:Resource
properties:
description:
fn::invoke:
function: std:join
arguments:
separator: ' '
input: ${nodes}
return: result
variables:
read-consul-dc1:
fn::invoke:
function: consul:getService
arguments:
name: consul
datacenter: dc1
Using getCatalogService
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 getCatalogService(args: GetCatalogServiceArgs, opts?: InvokeOptions): Promise<GetCatalogServiceResult>
function getCatalogServiceOutput(args: GetCatalogServiceOutputArgs, opts?: InvokeOptions): Output<GetCatalogServiceResult>def get_catalog_service(datacenter: Optional[str] = None,
filter: Optional[str] = None,
name: Optional[str] = None,
query_options: Optional[Sequence[GetCatalogServiceQueryOption]] = None,
tag: Optional[str] = None,
opts: Optional[InvokeOptions] = None) -> GetCatalogServiceResult
def get_catalog_service_output(datacenter: pulumi.Input[Optional[str]] = None,
filter: pulumi.Input[Optional[str]] = None,
name: pulumi.Input[Optional[str]] = None,
query_options: pulumi.Input[Optional[Sequence[pulumi.Input[GetCatalogServiceQueryOptionArgs]]]] = None,
tag: pulumi.Input[Optional[str]] = None,
opts: Optional[InvokeOptions] = None) -> Output[GetCatalogServiceResult]func GetCatalogService(ctx *Context, args *GetCatalogServiceArgs, opts ...InvokeOption) (*GetCatalogServiceResult, error)
func GetCatalogServiceOutput(ctx *Context, args *GetCatalogServiceOutputArgs, opts ...InvokeOption) GetCatalogServiceResultOutput> Note: This function is named GetCatalogService in the Go SDK.
public static class GetCatalogService
{
public static Task<GetCatalogServiceResult> InvokeAsync(GetCatalogServiceArgs args, InvokeOptions? opts = null)
public static Output<GetCatalogServiceResult> Invoke(GetCatalogServiceInvokeArgs args, InvokeOptions? opts = null)
}public static CompletableFuture<GetCatalogServiceResult> getCatalogService(GetCatalogServiceArgs args, InvokeOptions options)
public static Output<GetCatalogServiceResult> getCatalogService(GetCatalogServiceArgs args, InvokeOptions options)
fn::invoke:
function: consul:index/getCatalogService:getCatalogService
arguments:
# arguments dictionaryThe following arguments are supported:
- Name string
- The service name to select.
- Datacenter string
- The Consul datacenter to query. Defaults to the
same value found in
queryOptionsparameter specified below, or if that is empty, thedatacentervalue found in the Consul agent that this provider is configured to talk to. - Filter string
- Query
Options List<GetCatalog Service Query Option> - See below.
- Tag string
- A single tag that can be used to filter the list of nodes to return based on a single matching tag..
- Name string
- The service name to select.
- Datacenter string
- The Consul datacenter to query. Defaults to the
same value found in
queryOptionsparameter specified below, or if that is empty, thedatacentervalue found in the Consul agent that this provider is configured to talk to. - Filter string
- Query
Options []GetCatalog Service Query Option - See below.
- Tag string
- A single tag that can be used to filter the list of nodes to return based on a single matching tag..
- name String
- The service name to select.
- datacenter String
- The Consul datacenter to query. Defaults to the
same value found in
queryOptionsparameter specified below, or if that is empty, thedatacentervalue found in the Consul agent that this provider is configured to talk to. - filter String
- query
Options List<GetCatalog Service Query Option> - See below.
- tag String
- A single tag that can be used to filter the list of nodes to return based on a single matching tag..
- name string
- The service name to select.
- datacenter string
- The Consul datacenter to query. Defaults to the
same value found in
queryOptionsparameter specified below, or if that is empty, thedatacentervalue found in the Consul agent that this provider is configured to talk to. - filter string
- query
Options GetCatalog Service Query Option[] - See below.
- tag string
- A single tag that can be used to filter the list of nodes to return based on a single matching tag..
- name str
- The service name to select.
- datacenter str
- The Consul datacenter to query. Defaults to the
same value found in
queryOptionsparameter specified below, or if that is empty, thedatacentervalue found in the Consul agent that this provider is configured to talk to. - filter str
- query_
options Sequence[GetCatalog Service Query Option] - See below.
- tag str
- A single tag that can be used to filter the list of nodes to return based on a single matching tag..
- name String
- The service name to select.
- datacenter String
- The Consul datacenter to query. Defaults to the
same value found in
queryOptionsparameter specified below, or if that is empty, thedatacentervalue found in the Consul agent that this provider is configured to talk to. - filter String
- query
Options List<Property Map> - See below.
- tag String
- A single tag that can be used to filter the list of nodes to return based on a single matching tag..
getCatalogService Result
The following output properties are available:
- Id string
- The provider-assigned unique ID for this managed resource.
- Name string
- The name of the service
- Services
List<Get
Catalog Service Service> - A list of nodes and details about each endpoint advertising a service. Each element in the list is a map of attributes that correspond to each individual node. The list of per-node attributes is detailed below.
- Datacenter string
- The datacenter the keys are being read from to.
- Filter string
- Query
Options List<GetCatalog Service Query Option> - Tag string
- The name of the tag used to filter the list of nodes in
service.
- Id string
- The provider-assigned unique ID for this managed resource.
- Name string
- The name of the service
- Services
[]Get
Catalog Service Service - A list of nodes and details about each endpoint advertising a service. Each element in the list is a map of attributes that correspond to each individual node. The list of per-node attributes is detailed below.
- Datacenter string
- The datacenter the keys are being read from to.
- Filter string
- Query
Options []GetCatalog Service Query Option - Tag string
- The name of the tag used to filter the list of nodes in
service.
- id String
- The provider-assigned unique ID for this managed resource.
- name String
- The name of the service
- services
List<Get
Catalog Service Service> - A list of nodes and details about each endpoint advertising a service. Each element in the list is a map of attributes that correspond to each individual node. The list of per-node attributes is detailed below.
- datacenter String
- The datacenter the keys are being read from to.
- filter String
- query
Options List<GetCatalog Service Query Option> - tag String
- The name of the tag used to filter the list of nodes in
service.
- id string
- The provider-assigned unique ID for this managed resource.
- name string
- The name of the service
- services
Get
Catalog Service Service[] - A list of nodes and details about each endpoint advertising a service. Each element in the list is a map of attributes that correspond to each individual node. The list of per-node attributes is detailed below.
- datacenter string
- The datacenter the keys are being read from to.
- filter string
- query
Options GetCatalog Service Query Option[] - tag string
- The name of the tag used to filter the list of nodes in
service.
- id str
- The provider-assigned unique ID for this managed resource.
- name str
- The name of the service
- services
Sequence[Get
Catalog Service Service] - A list of nodes and details about each endpoint advertising a service. Each element in the list is a map of attributes that correspond to each individual node. The list of per-node attributes is detailed below.
- datacenter str
- The datacenter the keys are being read from to.
- filter str
- query_
options Sequence[GetCatalog Service Query Option] - tag str
- The name of the tag used to filter the list of nodes in
service.
- id String
- The provider-assigned unique ID for this managed resource.
- name String
- The name of the service
- services List<Property Map>
- A list of nodes and details about each endpoint advertising a service. Each element in the list is a map of attributes that correspond to each individual node. The list of per-node attributes is detailed below.
- datacenter String
- The datacenter the keys are being read from to.
- filter String
- query
Options List<Property Map> - tag String
- The name of the tag used to filter the list of nodes in
service.
Supporting Types
GetCatalogServiceQueryOption
- Allow
Stale bool - When
true, the default, allow responses from Consul servers that are followers. - Datacenter string
- The Consul datacenter to query. Defaults to the
same value found in
queryOptionsparameter specified below, or if that is empty, thedatacentervalue found in the Consul agent that this provider is configured to talk to. - Namespace string
- The namespace to lookup the service.
- Near string
- Node
Meta Dictionary<string, string> - Partition string
- Require
Consistent bool - When
trueforce the client to perform a read on at least quorum servers and verify the result is the same. Defaults tofalse. - Token string
- Specify the Consul ACL token to use when performing the
request. This defaults to the same API token configured by the
consulprovider but may be overridden if necessary. - Wait
Index int - Index number used to enable blocking queries.
- Wait
Time string - Max time the client should wait for a blocking query to return.
- Allow
Stale bool - When
true, the default, allow responses from Consul servers that are followers. - Datacenter string
- The Consul datacenter to query. Defaults to the
same value found in
queryOptionsparameter specified below, or if that is empty, thedatacentervalue found in the Consul agent that this provider is configured to talk to. - Namespace string
- The namespace to lookup the service.
- Near string
- Node
Meta map[string]string - Partition string
- Require
Consistent bool - When
trueforce the client to perform a read on at least quorum servers and verify the result is the same. Defaults tofalse. - Token string
- Specify the Consul ACL token to use when performing the
request. This defaults to the same API token configured by the
consulprovider but may be overridden if necessary. - Wait
Index int - Index number used to enable blocking queries.
- Wait
Time string - Max time the client should wait for a blocking query to return.
- allow
Stale Boolean - When
true, the default, allow responses from Consul servers that are followers. - datacenter String
- The Consul datacenter to query. Defaults to the
same value found in
queryOptionsparameter specified below, or if that is empty, thedatacentervalue found in the Consul agent that this provider is configured to talk to. - namespace String
- The namespace to lookup the service.
- near String
- node
Meta Map<String,String> - partition String
- require
Consistent Boolean - When
trueforce the client to perform a read on at least quorum servers and verify the result is the same. Defaults tofalse. - token String
- Specify the Consul ACL token to use when performing the
request. This defaults to the same API token configured by the
consulprovider but may be overridden if necessary. - wait
Index Integer - Index number used to enable blocking queries.
- wait
Time String - Max time the client should wait for a blocking query to return.
- allow
Stale boolean - When
true, the default, allow responses from Consul servers that are followers. - datacenter string
- The Consul datacenter to query. Defaults to the
same value found in
queryOptionsparameter specified below, or if that is empty, thedatacentervalue found in the Consul agent that this provider is configured to talk to. - namespace string
- The namespace to lookup the service.
- near string
- node
Meta {[key: string]: string} - partition string
- require
Consistent boolean - When
trueforce the client to perform a read on at least quorum servers and verify the result is the same. Defaults tofalse. - token string
- Specify the Consul ACL token to use when performing the
request. This defaults to the same API token configured by the
consulprovider but may be overridden if necessary. - wait
Index number - Index number used to enable blocking queries.
- wait
Time string - Max time the client should wait for a blocking query to return.
- allow_
stale bool - When
true, the default, allow responses from Consul servers that are followers. - datacenter str
- The Consul datacenter to query. Defaults to the
same value found in
queryOptionsparameter specified below, or if that is empty, thedatacentervalue found in the Consul agent that this provider is configured to talk to. - namespace str
- The namespace to lookup the service.
- near str
- node_
meta Mapping[str, str] - partition str
- require_
consistent bool - When
trueforce the client to perform a read on at least quorum servers and verify the result is the same. Defaults tofalse. - token str
- Specify the Consul ACL token to use when performing the
request. This defaults to the same API token configured by the
consulprovider but may be overridden if necessary. - wait_
index int - Index number used to enable blocking queries.
- wait_
time str - Max time the client should wait for a blocking query to return.
- allow
Stale Boolean - When
true, the default, allow responses from Consul servers that are followers. - datacenter String
- The Consul datacenter to query. Defaults to the
same value found in
queryOptionsparameter specified below, or if that is empty, thedatacentervalue found in the Consul agent that this provider is configured to talk to. - namespace String
- The namespace to lookup the service.
- near String
- node
Meta Map<String> - partition String
- require
Consistent Boolean - When
trueforce the client to perform a read on at least quorum servers and verify the result is the same. Defaults tofalse. - token String
- Specify the Consul ACL token to use when performing the
request. This defaults to the same API token configured by the
consulprovider but may be overridden if necessary. - wait
Index Number - Index number used to enable blocking queries.
- wait
Time String - Max time the client should wait for a blocking query to return.
GetCatalogServiceService
- Address string
- Create
Index string - Enable
Tag stringOverride - Id string
- Meta Dictionary<string, string>
- Modify
Index string - Name string
- The service name to select.
- Node
Address string - Node
Id string - The Node ID of the Consul agent advertising the service.
nodeMeta- Node meta data tag information, if any.nodeName- The name of the Consul node.address- The IP address of the service. If theServiceAddressin the Consul catalog is empty, this value is automatically populated with thenodeAddress(theAddressin the Consul Catalog).enableTagOverride- Whether service tags can be overridden on this service.id- A unique service instance identifier.name- The name of the service.port- Port number of the service.taggedAddresses- List of explicit LAN and WAN IP addresses for the agent.tags- List of tags for the service.meta- Service meta data tag information, if any.
- Node
Meta Dictionary<string, string> - Node
Name string - Port string
- Tagged
Addresses Dictionary<string, string> - List<string>
- Address string
- Create
Index string - Enable
Tag stringOverride - Id string
- Meta map[string]string
- Modify
Index string - Name string
- The service name to select.
- Node
Address string - Node
Id string - The Node ID of the Consul agent advertising the service.
nodeMeta- Node meta data tag information, if any.nodeName- The name of the Consul node.address- The IP address of the service. If theServiceAddressin the Consul catalog is empty, this value is automatically populated with thenodeAddress(theAddressin the Consul Catalog).enableTagOverride- Whether service tags can be overridden on this service.id- A unique service instance identifier.name- The name of the service.port- Port number of the service.taggedAddresses- List of explicit LAN and WAN IP addresses for the agent.tags- List of tags for the service.meta- Service meta data tag information, if any.
- Node
Meta map[string]string - Node
Name string - Port string
- Tagged
Addresses map[string]string - []string
- address String
- create
Index String - enable
Tag StringOverride - id String
- meta Map<String,String>
- modify
Index String - name String
- The service name to select.
- node
Address String - node
Id String - The Node ID of the Consul agent advertising the service.
nodeMeta- Node meta data tag information, if any.nodeName- The name of the Consul node.address- The IP address of the service. If theServiceAddressin the Consul catalog is empty, this value is automatically populated with thenodeAddress(theAddressin the Consul Catalog).enableTagOverride- Whether service tags can be overridden on this service.id- A unique service instance identifier.name- The name of the service.port- Port number of the service.taggedAddresses- List of explicit LAN and WAN IP addresses for the agent.tags- List of tags for the service.meta- Service meta data tag information, if any.
- node
Meta Map<String,String> - node
Name String - port String
- tagged
Addresses Map<String,String> - List<String>
- address string
- create
Index string - enable
Tag stringOverride - id string
- meta {[key: string]: string}
- modify
Index string - name string
- The service name to select.
- node
Address string - node
Id string - The Node ID of the Consul agent advertising the service.
nodeMeta- Node meta data tag information, if any.nodeName- The name of the Consul node.address- The IP address of the service. If theServiceAddressin the Consul catalog is empty, this value is automatically populated with thenodeAddress(theAddressin the Consul Catalog).enableTagOverride- Whether service tags can be overridden on this service.id- A unique service instance identifier.name- The name of the service.port- Port number of the service.taggedAddresses- List of explicit LAN and WAN IP addresses for the agent.tags- List of tags for the service.meta- Service meta data tag information, if any.
- node
Meta {[key: string]: string} - node
Name string - port string
- tagged
Addresses {[key: string]: string} - string[]
- address str
- create_
index str - enable_
tag_ stroverride - id str
- meta Mapping[str, str]
- modify_
index str - name str
- The service name to select.
- node_
address str - node_
id str - The Node ID of the Consul agent advertising the service.
nodeMeta- Node meta data tag information, if any.nodeName- The name of the Consul node.address- The IP address of the service. If theServiceAddressin the Consul catalog is empty, this value is automatically populated with thenodeAddress(theAddressin the Consul Catalog).enableTagOverride- Whether service tags can be overridden on this service.id- A unique service instance identifier.name- The name of the service.port- Port number of the service.taggedAddresses- List of explicit LAN and WAN IP addresses for the agent.tags- List of tags for the service.meta- Service meta data tag information, if any.
- node_
meta Mapping[str, str] - node_
name str - port str
- tagged_
addresses Mapping[str, str] - Sequence[str]
- address String
- create
Index String - enable
Tag StringOverride - id String
- meta Map<String>
- modify
Index String - name String
- The service name to select.
- node
Address String - node
Id String - The Node ID of the Consul agent advertising the service.
nodeMeta- Node meta data tag information, if any.nodeName- The name of the Consul node.address- The IP address of the service. If theServiceAddressin the Consul catalog is empty, this value is automatically populated with thenodeAddress(theAddressin the Consul Catalog).enableTagOverride- Whether service tags can be overridden on this service.id- A unique service instance identifier.name- The name of the service.port- Port number of the service.taggedAddresses- List of explicit LAN and WAN IP addresses for the agent.tags- List of tags for the service.meta- Service meta data tag information, if any.
- node
Meta Map<String> - node
Name String - port String
- tagged
Addresses Map<String> - List<String>
Package Details
- Repository
- HashiCorp Consul pulumi/pulumi-consul
- License
- Apache-2.0
- Notes
- This Pulumi package is based on the
consulTerraform Provider.
published on Monday, Mar 30, 2026 by Pulumi
