bionic (3) Rex::CMDB.3pm.gz

Provided by: rex_1.6.0-1_all bug

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.

SYNOPSIS

        use Rex::CMDB;

        set cmdb => {
            type => 'YAML',
            path => [
                'cmdb/{hostname}.yml',
                'cmdb/default.yml',
            ],
            merge_behavior => 'LEFT_PRECEDENT',
        };

        task "prepare", "server1", sub {
          my $virtual_host = cmdb("vhost");
          my %all_information = cmdb;
        };

EXPORTED FUNCTIONS

   set cmdb
       CMDB is enabled by default, with Rex::CMDB::YAML as default provider.

       The path option specifies an ordered list of places to look for CMDB information. The path specification
       supports any Rex::Hardware variable as macros, when enclosed within curly braces. Macros are dynamically
       expanded during runtime. The default path settings is:

        [qw(
            cmdb/{operatingsystem}/{hostname}.yml
            cmdb/{operatingsystem}/default.yml
            cmdb/{environment}/{hostname}.yml
            cmdb/{environment}/default.yml
            cmdb/{hostname}.yml
            cmdb/default.yml
        )]

       Please note that the default environment is, well, "default".

       You can define additional CMDB paths via the `-O` command line option by using a semicolon-separated list
       of `cmdb_path=path` key-value pairs:

        rex -O 'cmdb_path=cmdb/{domain}.yml;cmdb_path=cmdb/{domain}/{hostname}.yml;' taskname

       Those additional paths will be prepended to the current list of CMDB paths (so the last one specified
       will get on top, and thus checked first).

       The CMDB module looks up the specified files in order and then returns the requested data. If multiple
       files specify the same data for a given case, then the first instance of the data will be returned by
       default.

       Rex uses Hash::Merge internally to merge the data found on different levels of the CMDB hierarchy. Any
       merge strategy supported by that module can be specified to override the default one. For example one of
       the built-in strategies:

        merge_behavior => 'LEFT_PRECEDENT'

       Or even custom ones:

        merge_behavior => {
            SCALAR => { ... },
            ARRAY  => { ... },
            HASH   => { ... },
        }

       For full list of options, please see the documentation of Hash::Merge.

   cmdb([$item, $server])
       Function to query a CMDB. If this function is called without $item it should return a hash containing all
       the information for the requested server. If $item is given it should return only the value for $item.

        task "prepare", "server1", sub {
          my $virtual_host = cmdb("vhost");
          my %all_information = cmdb;
        };