Provides a Datadog Tag Pipeline Ruleset Order resource that can be used to manage the order of Tag Pipeline Rulesets.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as datadog from "@pulumi/datadog";
// ============================================================================
// Example 1: Basic Usage - Manage the order of tag pipeline rulesets
// ============================================================================
// This example shows the default behavior where UI-defined rulesets that are
// not in Terraform will be preserved at the end of the order.
const first = new datadog.TagPipelineRuleset("first", {
name: "Standardize Environment Tags",
enabled: true,
rules: [{
name: "map-env",
enabled: true,
mapping: [{
destinationKey: "env",
ifNotExists: true,
sourceKeys: [
"environment",
"stage",
],
}],
}],
});
const second = new datadog.TagPipelineRuleset("second", {
name: "Assign Team Tags",
enabled: true,
rules: [{
name: "assign-team",
enabled: true,
query: [{
query: "service:web* OR service:api*",
ifNotExists: false,
addition: [{
key: "team",
value: "backend",
}],
}],
}],
});
const third = new datadog.TagPipelineRuleset("third", {
name: "Enrich Service Metadata",
enabled: true,
rules: [{
name: "lookup-service",
enabled: true,
referenceTable: [{
tableName: "service_catalog",
caseInsensitivity: true,
ifNotExists: true,
sourceKeys: ["service"],
fieldPairs: [{
inputColumn: "owner_team",
outputKey: "owner",
}],
}],
}],
});
// Manage the order of tag pipeline rulesets
// Rulesets are executed in the order specified in ruleset_ids
// UI-defined rulesets not in this list will be preserved at the end
const order = new datadog.TagPipelineRulesets("order", {rulesetIds: [
first.id,
second.id,
third.id,
]});
// ============================================================================
// Example 2: Override UI-defined rulesets (override_ui_defined_resources = true)
// ============================================================================
// When set to true, any rulesets created via the UI that are not defined in Terraform
// will be automatically deleted during pulumi up.
const managedFirst = new datadog.TagPipelineRuleset("managed_first", {
name: "Standardize Environment Tags",
enabled: true,
rules: [{
name: "map-env",
enabled: true,
mapping: [{
destinationKey: "env",
ifNotExists: true,
sourceKeys: [
"environment",
"stage",
],
}],
}],
});
const managedSecond = new datadog.TagPipelineRuleset("managed_second", {
name: "Assign Team Tags",
enabled: true,
rules: [{
name: "assign-team",
enabled: true,
query: [{
query: "service:web*",
ifNotExists: false,
addition: [{
key: "team",
value: "frontend",
}],
}],
}],
});
// Manage order with override_ui_defined_resources = true
// This will delete any rulesets created via the UI that are not in this list
const orderOverride = new datadog.TagPipelineRulesets("order_override", {
overrideUiDefinedResources: true,
rulesetIds: [
managedFirst.id,
managedSecond.id,
],
});
// ============================================================================
// Example 3: Preserve UI-defined rulesets (override_ui_defined_resources = false)
// ============================================================================
// When set to false (default), UI-defined rulesets that are not in Terraform
// will be preserved at the end of the order. However, if unmanaged rulesets
// are in the middle of the order, Terraform will error and require you to either:
// 1. Import the unmanaged rulesets
// 2. Set override_ui_defined_resources = true
// 3. Manually reorder or delete them in the Datadog UI
const preserveFirst = new datadog.TagPipelineRuleset("preserve_first", {
name: "Standardize Environment Tags",
enabled: true,
rules: [{
name: "map-env",
enabled: true,
mapping: [{
destinationKey: "env",
ifNotExists: true,
sourceKeys: [
"environment",
"stage",
],
}],
}],
});
const preserveSecond = new datadog.TagPipelineRuleset("preserve_second", {
name: "Assign Team Tags",
enabled: true,
rules: [{
name: "assign-team",
enabled: true,
query: [{
query: "service:web*",
ifNotExists: false,
addition: [{
key: "team",
value: "frontend",
}],
}],
}],
});
// Manage order with override_ui_defined_resources = false (default)
// UI-defined rulesets will be preserved at the end of the order
// Terraform will warn if unmanaged rulesets exist at the end
// Terraform will error if unmanaged rulesets are in the middle
const orderPreserve = new datadog.TagPipelineRulesets("order_preserve", {
overrideUiDefinedResources: false,
rulesetIds: [
preserveFirst.id,
preserveSecond.id,
],
});
import pulumi
import pulumi_datadog as datadog
# ============================================================================
# Example 1: Basic Usage - Manage the order of tag pipeline rulesets
# ============================================================================
# This example shows the default behavior where UI-defined rulesets that are
# not in Terraform will be preserved at the end of the order.
first = datadog.TagPipelineRuleset("first",
name="Standardize Environment Tags",
enabled=True,
rules=[{
"name": "map-env",
"enabled": True,
"mapping": [{
"destinationKey": "env",
"ifNotExists": True,
"sourceKeys": [
"environment",
"stage",
],
}],
}])
second = datadog.TagPipelineRuleset("second",
name="Assign Team Tags",
enabled=True,
rules=[{
"name": "assign-team",
"enabled": True,
"query": [{
"query": "service:web* OR service:api*",
"ifNotExists": False,
"addition": [{
"key": "team",
"value": "backend",
}],
}],
}])
third = datadog.TagPipelineRuleset("third",
name="Enrich Service Metadata",
enabled=True,
rules=[{
"name": "lookup-service",
"enabled": True,
"reference_table": [{
"tableName": "service_catalog",
"caseInsensitivity": True,
"ifNotExists": True,
"sourceKeys": ["service"],
"fieldPairs": [{
"inputColumn": "owner_team",
"outputKey": "owner",
}],
}],
}])
# Manage the order of tag pipeline rulesets
# Rulesets are executed in the order specified in ruleset_ids
# UI-defined rulesets not in this list will be preserved at the end
order = datadog.TagPipelineRulesets("order", ruleset_ids=[
first.id,
second.id,
third.id,
])
# ============================================================================
# Example 2: Override UI-defined rulesets (override_ui_defined_resources = true)
# ============================================================================
# When set to true, any rulesets created via the UI that are not defined in Terraform
# will be automatically deleted during pulumi up.
managed_first = datadog.TagPipelineRuleset("managed_first",
name="Standardize Environment Tags",
enabled=True,
rules=[{
"name": "map-env",
"enabled": True,
"mapping": [{
"destinationKey": "env",
"ifNotExists": True,
"sourceKeys": [
"environment",
"stage",
],
}],
}])
managed_second = datadog.TagPipelineRuleset("managed_second",
name="Assign Team Tags",
enabled=True,
rules=[{
"name": "assign-team",
"enabled": True,
"query": [{
"query": "service:web*",
"ifNotExists": False,
"addition": [{
"key": "team",
"value": "frontend",
}],
}],
}])
# Manage order with override_ui_defined_resources = true
# This will delete any rulesets created via the UI that are not in this list
order_override = datadog.TagPipelineRulesets("order_override",
override_ui_defined_resources=True,
ruleset_ids=[
managed_first.id,
managed_second.id,
])
# ============================================================================
# Example 3: Preserve UI-defined rulesets (override_ui_defined_resources = false)
# ============================================================================
# When set to false (default), UI-defined rulesets that are not in Terraform
# will be preserved at the end of the order. However, if unmanaged rulesets
# are in the middle of the order, Terraform will error and require you to either:
# 1. Import the unmanaged rulesets
# 2. Set override_ui_defined_resources = true
# 3. Manually reorder or delete them in the Datadog UI
preserve_first = datadog.TagPipelineRuleset("preserve_first",
name="Standardize Environment Tags",
enabled=True,
rules=[{
"name": "map-env",
"enabled": True,
"mapping": [{
"destinationKey": "env",
"ifNotExists": True,
"sourceKeys": [
"environment",
"stage",
],
}],
}])
preserve_second = datadog.TagPipelineRuleset("preserve_second",
name="Assign Team Tags",
enabled=True,
rules=[{
"name": "assign-team",
"enabled": True,
"query": [{
"query": "service:web*",
"ifNotExists": False,
"addition": [{
"key": "team",
"value": "frontend",
}],
}],
}])
# Manage order with override_ui_defined_resources = false (default)
# UI-defined rulesets will be preserved at the end of the order
# Terraform will warn if unmanaged rulesets exist at the end
# Terraform will error if unmanaged rulesets are in the middle
order_preserve = datadog.TagPipelineRulesets("order_preserve",
override_ui_defined_resources=False,
ruleset_ids=[
preserve_first.id,
preserve_second.id,
])
package main
import (
"github.com/pulumi/pulumi-datadog/sdk/v4/go/datadog"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// ============================================================================
// Example 1: Basic Usage - Manage the order of tag pipeline rulesets
// ============================================================================
// This example shows the default behavior where UI-defined rulesets that are
// not in Terraform will be preserved at the end of the order.
first, err := datadog.NewTagPipelineRuleset(ctx, "first", &datadog.TagPipelineRulesetArgs{
Name: pulumi.String("Standardize Environment Tags"),
Enabled: pulumi.Bool(true),
Rules: datadog.TagPipelineRulesetRuleArray{
&datadog.TagPipelineRulesetRuleArgs{
Name: pulumi.String("map-env"),
Enabled: pulumi.Bool(true),
Mapping: datadog.TagPipelineRulesetRuleMappingArgs{
map[string]interface{}{
"destinationKey": "env",
"ifNotExists": true,
"sourceKeys": []string{
"environment",
"stage",
},
},
},
},
},
})
if err != nil {
return err
}
second, err := datadog.NewTagPipelineRuleset(ctx, "second", &datadog.TagPipelineRulesetArgs{
Name: pulumi.String("Assign Team Tags"),
Enabled: pulumi.Bool(true),
Rules: datadog.TagPipelineRulesetRuleArray{
&datadog.TagPipelineRulesetRuleArgs{
Name: pulumi.String("assign-team"),
Enabled: pulumi.Bool(true),
Query: datadog.TagPipelineRulesetRuleQueryArgs{
map[string]interface{}{
"query": "service:web* OR service:api*",
"ifNotExists": false,
"addition": []map[string]interface{}{
map[string]interface{}{
"key": "team",
"value": "backend",
},
},
},
},
},
},
})
if err != nil {
return err
}
third, err := datadog.NewTagPipelineRuleset(ctx, "third", &datadog.TagPipelineRulesetArgs{
Name: pulumi.String("Enrich Service Metadata"),
Enabled: pulumi.Bool(true),
Rules: datadog.TagPipelineRulesetRuleArray{
&datadog.TagPipelineRulesetRuleArgs{
Name: pulumi.String("lookup-service"),
Enabled: pulumi.Bool(true),
ReferenceTable: datadog.TagPipelineRulesetRuleReferenceTableArgs{
map[string]interface{}{
"tableName": "service_catalog",
"caseInsensitivity": true,
"ifNotExists": true,
"sourceKeys": []string{
"service",
},
"fieldPairs": []map[string]interface{}{
map[string]interface{}{
"inputColumn": "owner_team",
"outputKey": "owner",
},
},
},
},
},
},
})
if err != nil {
return err
}
// Manage the order of tag pipeline rulesets
// Rulesets are executed in the order specified in ruleset_ids
// UI-defined rulesets not in this list will be preserved at the end
_, err = datadog.NewTagPipelineRulesets(ctx, "order", &datadog.TagPipelineRulesetsArgs{
RulesetIds: pulumi.StringArray{
first.ID(),
second.ID(),
third.ID(),
},
})
if err != nil {
return err
}
// ============================================================================
// Example 2: Override UI-defined rulesets (override_ui_defined_resources = true)
// ============================================================================
// When set to true, any rulesets created via the UI that are not defined in Terraform
// will be automatically deleted during pulumi up.
managedFirst, err := datadog.NewTagPipelineRuleset(ctx, "managed_first", &datadog.TagPipelineRulesetArgs{
Name: pulumi.String("Standardize Environment Tags"),
Enabled: pulumi.Bool(true),
Rules: datadog.TagPipelineRulesetRuleArray{
&datadog.TagPipelineRulesetRuleArgs{
Name: pulumi.String("map-env"),
Enabled: pulumi.Bool(true),
Mapping: datadog.TagPipelineRulesetRuleMappingArgs{
map[string]interface{}{
"destinationKey": "env",
"ifNotExists": true,
"sourceKeys": []string{
"environment",
"stage",
},
},
},
},
},
})
if err != nil {
return err
}
managedSecond, err := datadog.NewTagPipelineRuleset(ctx, "managed_second", &datadog.TagPipelineRulesetArgs{
Name: pulumi.String("Assign Team Tags"),
Enabled: pulumi.Bool(true),
Rules: datadog.TagPipelineRulesetRuleArray{
&datadog.TagPipelineRulesetRuleArgs{
Name: pulumi.String("assign-team"),
Enabled: pulumi.Bool(true),
Query: datadog.TagPipelineRulesetRuleQueryArgs{
map[string]interface{}{
"query": "service:web*",
"ifNotExists": false,
"addition": []map[string]interface{}{
map[string]interface{}{
"key": "team",
"value": "frontend",
},
},
},
},
},
},
})
if err != nil {
return err
}
// Manage order with override_ui_defined_resources = true
// This will delete any rulesets created via the UI that are not in this list
_, err = datadog.NewTagPipelineRulesets(ctx, "order_override", &datadog.TagPipelineRulesetsArgs{
OverrideUiDefinedResources: pulumi.Bool(true),
RulesetIds: pulumi.StringArray{
managedFirst.ID(),
managedSecond.ID(),
},
})
if err != nil {
return err
}
// ============================================================================
// Example 3: Preserve UI-defined rulesets (override_ui_defined_resources = false)
// ============================================================================
// When set to false (default), UI-defined rulesets that are not in Terraform
// will be preserved at the end of the order. However, if unmanaged rulesets
// are in the middle of the order, Terraform will error and require you to either:
// 1. Import the unmanaged rulesets
// 2. Set override_ui_defined_resources = true
// 3. Manually reorder or delete them in the Datadog UI
preserveFirst, err := datadog.NewTagPipelineRuleset(ctx, "preserve_first", &datadog.TagPipelineRulesetArgs{
Name: pulumi.String("Standardize Environment Tags"),
Enabled: pulumi.Bool(true),
Rules: datadog.TagPipelineRulesetRuleArray{
&datadog.TagPipelineRulesetRuleArgs{
Name: pulumi.String("map-env"),
Enabled: pulumi.Bool(true),
Mapping: datadog.TagPipelineRulesetRuleMappingArgs{
map[string]interface{}{
"destinationKey": "env",
"ifNotExists": true,
"sourceKeys": []string{
"environment",
"stage",
},
},
},
},
},
})
if err != nil {
return err
}
preserveSecond, err := datadog.NewTagPipelineRuleset(ctx, "preserve_second", &datadog.TagPipelineRulesetArgs{
Name: pulumi.String("Assign Team Tags"),
Enabled: pulumi.Bool(true),
Rules: datadog.TagPipelineRulesetRuleArray{
&datadog.TagPipelineRulesetRuleArgs{
Name: pulumi.String("assign-team"),
Enabled: pulumi.Bool(true),
Query: datadog.TagPipelineRulesetRuleQueryArgs{
map[string]interface{}{
"query": "service:web*",
"ifNotExists": false,
"addition": []map[string]interface{}{
map[string]interface{}{
"key": "team",
"value": "frontend",
},
},
},
},
},
},
})
if err != nil {
return err
}
// Manage order with override_ui_defined_resources = false (default)
// UI-defined rulesets will be preserved at the end of the order
// Terraform will warn if unmanaged rulesets exist at the end
// Terraform will error if unmanaged rulesets are in the middle
_, err = datadog.NewTagPipelineRulesets(ctx, "order_preserve", &datadog.TagPipelineRulesetsArgs{
OverrideUiDefinedResources: pulumi.Bool(false),
RulesetIds: pulumi.StringArray{
preserveFirst.ID(),
preserveSecond.ID(),
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Datadog = Pulumi.Datadog;
return await Deployment.RunAsync(() =>
{
// ============================================================================
// Example 1: Basic Usage - Manage the order of tag pipeline rulesets
// ============================================================================
// This example shows the default behavior where UI-defined rulesets that are
// not in Terraform will be preserved at the end of the order.
var first = new Datadog.TagPipelineRuleset("first", new()
{
Name = "Standardize Environment Tags",
Enabled = true,
Rules = new[]
{
new Datadog.Inputs.TagPipelineRulesetRuleArgs
{
Name = "map-env",
Enabled = true,
Mapping = new[]
{
{
{ "destinationKey", "env" },
{ "ifNotExists", true },
{ "sourceKeys", new[]
{
"environment",
"stage",
} },
},
},
},
},
});
var second = new Datadog.TagPipelineRuleset("second", new()
{
Name = "Assign Team Tags",
Enabled = true,
Rules = new[]
{
new Datadog.Inputs.TagPipelineRulesetRuleArgs
{
Name = "assign-team",
Enabled = true,
Query = new[]
{
{
{ "query", "service:web* OR service:api*" },
{ "ifNotExists", false },
{ "addition", new[]
{
{
{ "key", "team" },
{ "value", "backend" },
},
} },
},
},
},
},
});
var third = new Datadog.TagPipelineRuleset("third", new()
{
Name = "Enrich Service Metadata",
Enabled = true,
Rules = new[]
{
new Datadog.Inputs.TagPipelineRulesetRuleArgs
{
Name = "lookup-service",
Enabled = true,
ReferenceTable = new[]
{
{
{ "tableName", "service_catalog" },
{ "caseInsensitivity", true },
{ "ifNotExists", true },
{ "sourceKeys", new[]
{
"service",
} },
{ "fieldPairs", new[]
{
{
{ "inputColumn", "owner_team" },
{ "outputKey", "owner" },
},
} },
},
},
},
},
});
// Manage the order of tag pipeline rulesets
// Rulesets are executed in the order specified in ruleset_ids
// UI-defined rulesets not in this list will be preserved at the end
var order = new Datadog.TagPipelineRulesets("order", new()
{
RulesetIds = new[]
{
first.Id,
second.Id,
third.Id,
},
});
// ============================================================================
// Example 2: Override UI-defined rulesets (override_ui_defined_resources = true)
// ============================================================================
// When set to true, any rulesets created via the UI that are not defined in Terraform
// will be automatically deleted during pulumi up.
var managedFirst = new Datadog.TagPipelineRuleset("managed_first", new()
{
Name = "Standardize Environment Tags",
Enabled = true,
Rules = new[]
{
new Datadog.Inputs.TagPipelineRulesetRuleArgs
{
Name = "map-env",
Enabled = true,
Mapping = new[]
{
{
{ "destinationKey", "env" },
{ "ifNotExists", true },
{ "sourceKeys", new[]
{
"environment",
"stage",
} },
},
},
},
},
});
var managedSecond = new Datadog.TagPipelineRuleset("managed_second", new()
{
Name = "Assign Team Tags",
Enabled = true,
Rules = new[]
{
new Datadog.Inputs.TagPipelineRulesetRuleArgs
{
Name = "assign-team",
Enabled = true,
Query = new[]
{
{
{ "query", "service:web*" },
{ "ifNotExists", false },
{ "addition", new[]
{
{
{ "key", "team" },
{ "value", "frontend" },
},
} },
},
},
},
},
});
// Manage order with override_ui_defined_resources = true
// This will delete any rulesets created via the UI that are not in this list
var orderOverride = new Datadog.TagPipelineRulesets("order_override", new()
{
OverrideUiDefinedResources = true,
RulesetIds = new[]
{
managedFirst.Id,
managedSecond.Id,
},
});
// ============================================================================
// Example 3: Preserve UI-defined rulesets (override_ui_defined_resources = false)
// ============================================================================
// When set to false (default), UI-defined rulesets that are not in Terraform
// will be preserved at the end of the order. However, if unmanaged rulesets
// are in the middle of the order, Terraform will error and require you to either:
// 1. Import the unmanaged rulesets
// 2. Set override_ui_defined_resources = true
// 3. Manually reorder or delete them in the Datadog UI
var preserveFirst = new Datadog.TagPipelineRuleset("preserve_first", new()
{
Name = "Standardize Environment Tags",
Enabled = true,
Rules = new[]
{
new Datadog.Inputs.TagPipelineRulesetRuleArgs
{
Name = "map-env",
Enabled = true,
Mapping = new[]
{
{
{ "destinationKey", "env" },
{ "ifNotExists", true },
{ "sourceKeys", new[]
{
"environment",
"stage",
} },
},
},
},
},
});
var preserveSecond = new Datadog.TagPipelineRuleset("preserve_second", new()
{
Name = "Assign Team Tags",
Enabled = true,
Rules = new[]
{
new Datadog.Inputs.TagPipelineRulesetRuleArgs
{
Name = "assign-team",
Enabled = true,
Query = new[]
{
{
{ "query", "service:web*" },
{ "ifNotExists", false },
{ "addition", new[]
{
{
{ "key", "team" },
{ "value", "frontend" },
},
} },
},
},
},
},
});
// Manage order with override_ui_defined_resources = false (default)
// UI-defined rulesets will be preserved at the end of the order
// Terraform will warn if unmanaged rulesets exist at the end
// Terraform will error if unmanaged rulesets are in the middle
var orderPreserve = new Datadog.TagPipelineRulesets("order_preserve", new()
{
OverrideUiDefinedResources = false,
RulesetIds = new[]
{
preserveFirst.Id,
preserveSecond.Id,
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.datadog.TagPipelineRuleset;
import com.pulumi.datadog.TagPipelineRulesetArgs;
import com.pulumi.datadog.inputs.TagPipelineRulesetRuleArgs;
import com.pulumi.datadog.TagPipelineRulesets;
import com.pulumi.datadog.TagPipelineRulesetsArgs;
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) {
// ============================================================================
// Example 1: Basic Usage - Manage the order of tag pipeline rulesets
// ============================================================================
// This example shows the default behavior where UI-defined rulesets that are
// not in Terraform will be preserved at the end of the order.
var first = new TagPipelineRuleset("first", TagPipelineRulesetArgs.builder()
.name("Standardize Environment Tags")
.enabled(true)
.rules(TagPipelineRulesetRuleArgs.builder()
.name("map-env")
.enabled(true)
.mapping(TagPipelineRulesetRuleMappingArgs.builder()
.destinationKey("env")
.ifNotExists(true)
.sourceKeys(
"environment",
"stage")
.build())
.build())
.build());
var second = new TagPipelineRuleset("second", TagPipelineRulesetArgs.builder()
.name("Assign Team Tags")
.enabled(true)
.rules(TagPipelineRulesetRuleArgs.builder()
.name("assign-team")
.enabled(true)
.query(TagPipelineRulesetRuleQueryArgs.builder()
.query("service:web* OR service:api*")
.ifNotExists(false)
.addition(TagPipelineRulesetRuleQueryAdditionArgs.builder()
.key("team")
.value("backend")
.build())
.build())
.build())
.build());
var third = new TagPipelineRuleset("third", TagPipelineRulesetArgs.builder()
.name("Enrich Service Metadata")
.enabled(true)
.rules(TagPipelineRulesetRuleArgs.builder()
.name("lookup-service")
.enabled(true)
.referenceTable(TagPipelineRulesetRuleReferenceTableArgs.builder()
.tableName("service_catalog")
.caseInsensitivity(true)
.ifNotExists(true)
.sourceKeys("service")
.fieldPairs(TagPipelineRulesetRuleReferenceTableFieldPairArgs.builder()
.inputColumn("owner_team")
.outputKey("owner")
.build())
.build())
.build())
.build());
// Manage the order of tag pipeline rulesets
// Rulesets are executed in the order specified in ruleset_ids
// UI-defined rulesets not in this list will be preserved at the end
var order = new TagPipelineRulesets("order", TagPipelineRulesetsArgs.builder()
.rulesetIds(
first.id(),
second.id(),
third.id())
.build());
// ============================================================================
// Example 2: Override UI-defined rulesets (override_ui_defined_resources = true)
// ============================================================================
// When set to true, any rulesets created via the UI that are not defined in Terraform
// will be automatically deleted during pulumi up.
var managedFirst = new TagPipelineRuleset("managedFirst", TagPipelineRulesetArgs.builder()
.name("Standardize Environment Tags")
.enabled(true)
.rules(TagPipelineRulesetRuleArgs.builder()
.name("map-env")
.enabled(true)
.mapping(TagPipelineRulesetRuleMappingArgs.builder()
.destinationKey("env")
.ifNotExists(true)
.sourceKeys(
"environment",
"stage")
.build())
.build())
.build());
var managedSecond = new TagPipelineRuleset("managedSecond", TagPipelineRulesetArgs.builder()
.name("Assign Team Tags")
.enabled(true)
.rules(TagPipelineRulesetRuleArgs.builder()
.name("assign-team")
.enabled(true)
.query(TagPipelineRulesetRuleQueryArgs.builder()
.query("service:web*")
.ifNotExists(false)
.addition(TagPipelineRulesetRuleQueryAdditionArgs.builder()
.key("team")
.value("frontend")
.build())
.build())
.build())
.build());
// Manage order with override_ui_defined_resources = true
// This will delete any rulesets created via the UI that are not in this list
var orderOverride = new TagPipelineRulesets("orderOverride", TagPipelineRulesetsArgs.builder()
.overrideUiDefinedResources(true)
.rulesetIds(
managedFirst.id(),
managedSecond.id())
.build());
// ============================================================================
// Example 3: Preserve UI-defined rulesets (override_ui_defined_resources = false)
// ============================================================================
// When set to false (default), UI-defined rulesets that are not in Terraform
// will be preserved at the end of the order. However, if unmanaged rulesets
// are in the middle of the order, Terraform will error and require you to either:
// 1. Import the unmanaged rulesets
// 2. Set override_ui_defined_resources = true
// 3. Manually reorder or delete them in the Datadog UI
var preserveFirst = new TagPipelineRuleset("preserveFirst", TagPipelineRulesetArgs.builder()
.name("Standardize Environment Tags")
.enabled(true)
.rules(TagPipelineRulesetRuleArgs.builder()
.name("map-env")
.enabled(true)
.mapping(TagPipelineRulesetRuleMappingArgs.builder()
.destinationKey("env")
.ifNotExists(true)
.sourceKeys(
"environment",
"stage")
.build())
.build())
.build());
var preserveSecond = new TagPipelineRuleset("preserveSecond", TagPipelineRulesetArgs.builder()
.name("Assign Team Tags")
.enabled(true)
.rules(TagPipelineRulesetRuleArgs.builder()
.name("assign-team")
.enabled(true)
.query(TagPipelineRulesetRuleQueryArgs.builder()
.query("service:web*")
.ifNotExists(false)
.addition(TagPipelineRulesetRuleQueryAdditionArgs.builder()
.key("team")
.value("frontend")
.build())
.build())
.build())
.build());
// Manage order with override_ui_defined_resources = false (default)
// UI-defined rulesets will be preserved at the end of the order
// Terraform will warn if unmanaged rulesets exist at the end
// Terraform will error if unmanaged rulesets are in the middle
var orderPreserve = new TagPipelineRulesets("orderPreserve", TagPipelineRulesetsArgs.builder()
.overrideUiDefinedResources(false)
.rulesetIds(
preserveFirst.id(),
preserveSecond.id())
.build());
}
}
resources:
# ============================================================================
# Example 1: Basic Usage - Manage the order of tag pipeline rulesets
# ============================================================================
# This example shows the default behavior where UI-defined rulesets that are
# not in Terraform will be preserved at the end of the order.
first:
type: datadog:TagPipelineRuleset
properties:
name: Standardize Environment Tags
enabled: true
rules:
- name: map-env
enabled: true
mapping:
- destinationKey: env
ifNotExists: true
sourceKeys:
- environment
- stage
second:
type: datadog:TagPipelineRuleset
properties:
name: Assign Team Tags
enabled: true
rules:
- name: assign-team
enabled: true
query:
- query: service:web* OR service:api*
ifNotExists: false
addition:
- key: team
value: backend
third:
type: datadog:TagPipelineRuleset
properties:
name: Enrich Service Metadata
enabled: true
rules:
- name: lookup-service
enabled: true
referenceTable:
- tableName: service_catalog
caseInsensitivity: true
ifNotExists: true
sourceKeys:
- service
fieldPairs:
- inputColumn: owner_team
outputKey: owner
# Manage the order of tag pipeline rulesets
# Rulesets are executed in the order specified in ruleset_ids
# UI-defined rulesets not in this list will be preserved at the end
order:
type: datadog:TagPipelineRulesets
properties:
rulesetIds:
- ${first.id}
- ${second.id}
- ${third.id}
# ============================================================================
# Example 2: Override UI-defined rulesets (override_ui_defined_resources = true)
# ============================================================================
# When set to true, any rulesets created via the UI that are not defined in Terraform
# will be automatically deleted during pulumi up.
managedFirst:
type: datadog:TagPipelineRuleset
name: managed_first
properties:
name: Standardize Environment Tags
enabled: true
rules:
- name: map-env
enabled: true
mapping:
- destinationKey: env
ifNotExists: true
sourceKeys:
- environment
- stage
managedSecond:
type: datadog:TagPipelineRuleset
name: managed_second
properties:
name: Assign Team Tags
enabled: true
rules:
- name: assign-team
enabled: true
query:
- query: service:web*
ifNotExists: false
addition:
- key: team
value: frontend
# Manage order with override_ui_defined_resources = true
# This will delete any rulesets created via the UI that are not in this list
orderOverride:
type: datadog:TagPipelineRulesets
name: order_override
properties:
overrideUiDefinedResources: true
rulesetIds:
- ${managedFirst.id}
- ${managedSecond.id}
# ============================================================================
# Example 3: Preserve UI-defined rulesets (override_ui_defined_resources = false)
# ============================================================================
# When set to false (default), UI-defined rulesets that are not in Terraform
# will be preserved at the end of the order. However, if unmanaged rulesets
# are in the middle of the order, Terraform will error and require you to either:
# 1. Import the unmanaged rulesets
# 2. Set override_ui_defined_resources = true
# 3. Manually reorder or delete them in the Datadog UI
preserveFirst:
type: datadog:TagPipelineRuleset
name: preserve_first
properties:
name: Standardize Environment Tags
enabled: true
rules:
- name: map-env
enabled: true
mapping:
- destinationKey: env
ifNotExists: true
sourceKeys:
- environment
- stage
preserveSecond:
type: datadog:TagPipelineRuleset
name: preserve_second
properties:
name: Assign Team Tags
enabled: true
rules:
- name: assign-team
enabled: true
query:
- query: service:web*
ifNotExists: false
addition:
- key: team
value: frontend
# Manage order with override_ui_defined_resources = false (default)
# UI-defined rulesets will be preserved at the end of the order
# Terraform will warn if unmanaged rulesets exist at the end
# Terraform will error if unmanaged rulesets are in the middle
orderPreserve:
type: datadog:TagPipelineRulesets
name: order_preserve
properties:
overrideUiDefinedResources: false
rulesetIds:
- ${preserveFirst.id}
- ${preserveSecond.id}
Create TagPipelineRulesets Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new TagPipelineRulesets(name: string, args: TagPipelineRulesetsArgs, opts?: CustomResourceOptions);@overload
def TagPipelineRulesets(resource_name: str,
args: TagPipelineRulesetsArgs,
opts: Optional[ResourceOptions] = None)
@overload
def TagPipelineRulesets(resource_name: str,
opts: Optional[ResourceOptions] = None,
ruleset_ids: Optional[Sequence[str]] = None,
override_ui_defined_resources: Optional[bool] = None)func NewTagPipelineRulesets(ctx *Context, name string, args TagPipelineRulesetsArgs, opts ...ResourceOption) (*TagPipelineRulesets, error)public TagPipelineRulesets(string name, TagPipelineRulesetsArgs args, CustomResourceOptions? opts = null)
public TagPipelineRulesets(String name, TagPipelineRulesetsArgs args)
public TagPipelineRulesets(String name, TagPipelineRulesetsArgs args, CustomResourceOptions options)
type: datadog:TagPipelineRulesets
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
Parameters
- name string
- The unique name of the resource.
- args TagPipelineRulesetsArgs
- 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 TagPipelineRulesetsArgs
- 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 TagPipelineRulesetsArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args TagPipelineRulesetsArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args TagPipelineRulesetsArgs
- 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 tagPipelineRulesetsResource = new Datadog.TagPipelineRulesets("tagPipelineRulesetsResource", new()
{
RulesetIds = new[]
{
"string",
},
OverrideUiDefinedResources = false,
});
example, err := datadog.NewTagPipelineRulesets(ctx, "tagPipelineRulesetsResource", &datadog.TagPipelineRulesetsArgs{
RulesetIds: pulumi.StringArray{
pulumi.String("string"),
},
OverrideUiDefinedResources: pulumi.Bool(false),
})
var tagPipelineRulesetsResource = new TagPipelineRulesets("tagPipelineRulesetsResource", TagPipelineRulesetsArgs.builder()
.rulesetIds("string")
.overrideUiDefinedResources(false)
.build());
tag_pipeline_rulesets_resource = datadog.TagPipelineRulesets("tagPipelineRulesetsResource",
ruleset_ids=["string"],
override_ui_defined_resources=False)
const tagPipelineRulesetsResource = new datadog.TagPipelineRulesets("tagPipelineRulesetsResource", {
rulesetIds: ["string"],
overrideUiDefinedResources: false,
});
type: datadog:TagPipelineRulesets
properties:
overrideUiDefinedResources: false
rulesetIds:
- string
TagPipelineRulesets 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 TagPipelineRulesets resource accepts the following input properties:
- Ruleset
Ids List<string> - The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
- Override
Ui boolDefined Resources
- Ruleset
Ids []string - The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
- Override
Ui boolDefined Resources
- ruleset
Ids List<String> - The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
- override
Ui BooleanDefined Resources
- ruleset
Ids string[] - The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
- override
Ui booleanDefined Resources
- ruleset_
ids Sequence[str] - The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
- override_
ui_ booldefined_ resources
- ruleset
Ids List<String> - The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
- override
Ui BooleanDefined Resources
Outputs
All input properties are implicitly available as output properties. Additionally, the TagPipelineRulesets 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 TagPipelineRulesets Resource
Get an existing TagPipelineRulesets 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?: TagPipelineRulesetsState, opts?: CustomResourceOptions): TagPipelineRulesets@staticmethod
def get(resource_name: str,
id: str,
opts: Optional[ResourceOptions] = None,
override_ui_defined_resources: Optional[bool] = None,
ruleset_ids: Optional[Sequence[str]] = None) -> TagPipelineRulesetsfunc GetTagPipelineRulesets(ctx *Context, name string, id IDInput, state *TagPipelineRulesetsState, opts ...ResourceOption) (*TagPipelineRulesets, error)public static TagPipelineRulesets Get(string name, Input<string> id, TagPipelineRulesetsState? state, CustomResourceOptions? opts = null)public static TagPipelineRulesets get(String name, Output<String> id, TagPipelineRulesetsState state, CustomResourceOptions options)resources: _: type: datadog:TagPipelineRulesets get: id: ${id}- 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.
- Override
Ui boolDefined Resources - Ruleset
Ids List<string> - The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
- Override
Ui boolDefined Resources - Ruleset
Ids []string - The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
- override
Ui BooleanDefined Resources - ruleset
Ids List<String> - The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
- override
Ui booleanDefined Resources - ruleset
Ids string[] - The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
- override_
ui_ booldefined_ resources - ruleset_
ids Sequence[str] - The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
- override
Ui BooleanDefined Resources - ruleset
Ids List<String> - The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
Import
The pulumi import command can be used, for example:
$ pulumi import datadog:index/tagPipelineRulesets:TagPipelineRulesets my_rulesets order
To learn more about importing existing cloud resources, see Importing resources.
Package Details
- Repository
- Datadog pulumi/pulumi-datadog
- License
- Apache-2.0
- Notes
- This Pulumi package is based on the
datadogTerraform Provider.
