Macros

Table of Contents

Minimum version

You can conditionally include policy test using the @if macro.

For example, you could say

bundle agent extractor
{
@if minimum_version(3.8)
# the function `new_function_3_8()` was introduced in 3.8
vars: "container" data => new_function_3_8(...);
@endif
}

The text will be inserted verbatim in the policy. This happens before syntax validation, so any version of CFEngine that supports the @if macro will be able to exclude syntax from later, possibly incompatible versions. In CFEngine 3.7, the above text will never be seen by the parser. In 3.8 and later, it will.

@if calls have to match up: you can't nest them and each one requires a matching @endif before the end of the file.

History: This macro was introduced in CFEngine 3.7.0

Features

You can conditionally include policy test using the @if macro.

bundle agent extractor
{
  @if feature(xml)
# the yaml library may not be compiled in
  vars: "container" data => parseyaml(...);
  @endif
}

The text will be inserted verbatim in the policy. This happens before syntax validation, so any CFEngine binary that is not compiled with the feature support macro will be able to exclude syntax from possibly incompatible versions.

Currently available features are : * xml * yaml * curl

History: This macro was introduced in CFEngine 3.8.0