1. Packages
  2. Datadog Provider
  3. API Docs
  4. TagPipelineRulesets
Datadog v4.63.0 published on Thursday, Jan 22, 2026 by Pulumi
datadog logo
Datadog v4.63.0 published on Thursday, Jan 22, 2026 by Pulumi

    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:

    RulesetIds List<string>
    The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
    OverrideUiDefinedResources bool
    RulesetIds []string
    The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
    OverrideUiDefinedResources bool
    rulesetIds List<String>
    The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
    overrideUiDefinedResources Boolean
    rulesetIds string[]
    The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
    overrideUiDefinedResources boolean
    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_defined_resources bool
    rulesetIds List<String>
    The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
    overrideUiDefinedResources Boolean

    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) -> TagPipelineRulesets
    func 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.
    The following state arguments are supported:
    OverrideUiDefinedResources bool
    RulesetIds List<string>
    The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
    OverrideUiDefinedResources bool
    RulesetIds []string
    The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
    overrideUiDefinedResources Boolean
    rulesetIds List<String>
    The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
    overrideUiDefinedResources boolean
    rulesetIds string[]
    The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
    override_ui_defined_resources bool
    ruleset_ids Sequence[str]
    The list of Tag Pipeline Ruleset IDs, in order. Rulesets are executed in the order specified in this list.
    overrideUiDefinedResources Boolean
    rulesetIds 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 datadog Terraform Provider.
    datadog logo
    Datadog v4.63.0 published on Thursday, Jan 22, 2026 by Pulumi
      Meet Neo: Your AI Platform Teammate