General Examples

Table of Contents

Basic Example

To get started with CFEngine, you can imagine the following template for entering examples. This part of the code is common to all the examples.

body common control
{
      bundlesequence => { "main" };
      inputs => { "$(sys.libdir)/stdlib.cf" };
}

bundle agent main
{
      # example
}

The general pattern

The general pattern of the syntax is like this (colors in html version: red, CFEngine word; blue, user-defined word):

bundle component name(parameters)
{
what_type:
 where_when::

  # Traditional comment


  "promiser" -> { "promisee1", "promisee2" },
        comment => "The intention ...",
         handle => "unique_id_label",
    attribute_1 => body_or_value1,
    attribute_2 => body_or_value2;
}

Hello world

body common control
{
      bundlesequence => { "hello" };
}

bundle agent hello
{
  reports:
    linux::
      "Hello world!";
}

Array example

body common control
{
      bundlesequence => { "array" };
}

bundle common g
{
  vars:
      "array[1]" string => "one";
      "array[2]" string => "two";
}

bundle agent array
{
  vars:
      "localarray[1]" string => "one";
      "localarray[2]" string => "two";
  reports:
    linux::
      "Global $(g.array[1]) and $(localarray[2])";
}