---
name: "Rex::CMDB"
section: "3pm"
platform: "linux"
package: "rex"
version: "1.16.0-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Rex::CMDB"
---

# Rex::CMDB(3pm)

Function to access the CMDB (configuration management database)

## NAME

Rex::CMDB - Function to access the CMDB (configuration management database)

## DESCRIPTION

This module exports a function to access a CMDB via a common interface. When the 0.51 feature flag or later is used, the CMDB is enabled by default with Rex::CMDB::YAML as the default provider.

## SYNOPSIS

```
 use Rex::CMDB;
 set cmdb => {
   type           => 'YAML',
   path           => [ 'cmdb/{hostname}.yml', 'cmdb/default.yml', ],
   merge_behavior => 'LEFT_PRECEDENT',
 };
 task 'prepare', 'server1', sub {
   my %all_information          = get cmdb;
   my $specific_item            = get cmdb('item');
   my $specific_item_for_server = get cmdb( 'item', 'server' );
 };
```

## EXPORTED FUNCTIONS

### set cmdb

```
 set cmdb => {
   type => 'YAML',
   %provider_options,
 };
```

Instantiate a specific `"type"` of CMDB provider with the given options. Returns the provider instance.

Please consult the documentation of the given provider for their supported options.

### cmdb(\[$item, $server\])

Function to query a CMDB.

If called without arguments, it returns the full CMDB data structure for the current connection.

If only a defined `$item` is passed, it returns only the value for the given CMDB item, for the current connection.

If only a defined `$server` is passed, it returns the whole CMDB data structure for the given server.

If both `$item` and `$server` are defined, it returns the given CMDB item for the given server.

The value returned is a Rex::Value, so you may need to use the `"get cmdb(...)"` form if you'd like to assign the result to a Perl variable:

```
 task 'prepare', 'server1', sub {
   my %all_information          = get cmdb;
   my $specific_item            = get cmdb('item');
   my $specific_item_for_server = get cmdb( 'item', 'server' );
 };
```

If caching is enabled, this function caches the full data structure for the given server under the `"cmdb/$CMDB_PROVIDER/$server"` cache key after the first query.
