Node:Options, Next:Invoking cfengine, Previous:Program structure, Up:Getting started
Cfengine doesn't do anything unless you ask it to. When you run a cfengine program it generates no output unless it finds something it believes to be wrong. It does not carry out any actions unless they are declared in the action sequence.
If you like, though, you can make cfengine positively chatty. Cfengine can be
run with a number of command line options (see the reference manual). If
you run the program with the -v
or --verbose
options, it
will supply you cheerily with a resume of what it is doing. Certain
warning messages also get printed in verbose mode, so it is a useful debugging tool.
You can ask cfengine to check lots of things - the timezone for
instance, or the domain name. In order for it to check these things, it
needs some information from you. All of the switches and options which
change the way in which cfengine behaves get specified either on the
command line or in the control:
section of the control file.
Some special control variables are used for this purpose. Here is a
short example:
control: domain = ( mydomain.no ) netmask = ( 255.255.255.0 ) timezone = ( MET CET ) mountpattern = ( /mydomain/mountpoint ) actionsequence = ( checktimezone # check time zone netconfig # includes check netmask resolve # includes domain mountinfo # look for mounted disks under mountpattern )
To get verbose output you must run cfengine with the appropriate command
line option --verbose
or -v
.
Notice that setting values has a special kind of syntax: a variable name, an equals sign and a value in parentheses. This tells you that the quantity of the left hand side assumes the value on the right hand side. There are lots of questions you might ask at this point. The answers to these will be covered as we go along and in the next chapter.
Before leaving this brief advertisement for control parameters, it is
worth noting the definition of mountpattern
above. This declares
a directory in which cfengine expects to find mounted disks. It will be
explained in detail later, for now notice that this definition looks
rather stupid and inflexible. It would be much better if we could use
some kind of variables to define where to look for mounted filesystems.
And of course you can...
Having briefly scraped the surface of what cfengine can do, turn to the example and take a look at what a complete program can look like, (see the reference manual). If you understand it, you might like to skip through the rest of the manual until you find what you are looking for. If it looks mysterious, then the next chapter should answer some questions in more depth.