|
NAMERex::CMDB::YAML - YAML-based CMDB provider for RexDESCRIPTIONThis module collects and merges data from a set of YAML files to provide configuration management database for Rex.SYNOPSISuse 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' ); }; CONFIGURATION AND ENVIRONMENTpathThe path used to look for CMDB files. It supports various use cases depending on the type of data passed to it.
When the 0.51 feature flag or later is used, the default value of the "path" option is: [qw( cmdb/{operatingsystem}/{hostname}.yml cmdb/{operatingsystem}/default.yml cmdb/{environment}/{hostname}.yml cmdb/{environment}/default.yml cmdb/{hostname}.yml cmdb/default.yml )] The path specification supports macros enclosed within curly braces, which are dynamically expanded during runtime. By default, the valid macros are Rex::Hardware variables, "{server}" for the server name of the current connection, and "{environment}" for the current environment. 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). merge_behaviorThis CMDB provider looks up the specified files in order, and returns the requested data. If multiple files specify the same data for a given item, 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: set cmdb => { type => 'YAML', path => 'cmdb', merge_behavior => 'LEFT_PRECEDENT', }; Or even custom ones: set cmdb => { type => 'YAML', path => 'cmdb', merge_behavior => { SCALAR => sub {}, ARRAY => sub {}, HASH => sub {}, }; For the full list of options, please see the documentation of Hash::Merge.
Visit the GSP FreeBSD Man Page Interface. |