layout | title | categories | published | alias | tags | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
default |
sys |
|
true |
reference-special-variables-context-sys.html |
|
System variables are derived from CFEngine's automated discovery of system values. They are provided as variables in order to make automatically adaptive rules for configuration.
files:
"$(sys.resolv)"
create => "true",
edit_line => doresolv("@(this.list1)","@(this.list2)"),
edit_defaults => reconstruct;
The variable gives the kernel's short architecture description.
# arch = x86_64
The date of the system in canonical form, i.e. in the form of a class, from when the agent initialized.
# cdate = Sun_Dec__7_10_39_53_2008_
A variable containing the path to the CFEngine syntax analyzer
cf-promises
on the platform you are using.
classes:
"syntax_ok" expression => returnszero("$(sys.cf_promises)");
The variable gives the version of the running CFEngine Core.
# cf_version = 3.0.5
The variable gives the major version of the running CFEngine Core.
# cf_version = 3.0.5
# cf_version_major = 3
History: Was introduced in 3.5.1, Enterprise 3.5.1.
The variable gives the minor version of the running CFEngine Core.
# cf_version = 3.0.5
# cf_version_minor = 0
History: Was introduced in 3.5.1, Enterprise 3.5.1.
The variable gives the patch version of the running CFEngine Core.
# cf_version = 3.0.5
# cf_version_patch = 5
History: Was introduced in 3.5.1, Enterprise 3.5.1.
This variable contains the name of the hard-class category for this host (i.e. its top level operating system type classification).
# class = linux
See also: [sys.os
][sys#sys.os]
A variable containing the number of CPU cores detected. On systems which
provide virtual cores, it is set to the total number of virtual, not
physical, cores. In addition, on a single-core system the class 1_cpu
is set, and on multi-core systems the class n_cpus
is set, where
n is the number of cores identified.
reports:
"Number of CPUS = $(sys.cpus)";
8_cpus::
"This system has 8 processors.";
History: Was introduced in 3.3.0, Enterprise 2.2.0 (2012)
The variable gives the location of the current users's master crontab directory.
# crontab = /var/spool/crontab/root
The date of the system as a text string, from when the agent initialized.
# date = Sun Dec 7 10:39:53 2008
A scalar variable containing the default path for the document root of the standard web server package.
History: Was introduced in 3.1.0, Enterprise 2.0.
The domain name as discovered by CFEngine. If the DNS is in use, it could
be possible to derive the domain name from its DNS registration, but in
general there is no way to discover this value automatically. The
common control
body permits the ultimate specification of this value.
# domain = example.org
The variable gives the version of the running CFEngine Enterprise Edition.
# enterprise_version = 3.0.0
History: Was introduced in 3.5.0, Enterprise 3.0.0
reports:
enterprise::
"License expires $(sys.expires)";
The location of the system NFS exports file.
# exports = /etc/exports
# exports = /etc/dfs/dfstab
A variable containing an operating system identification string that is used to determine the current release of the operating system in a form that can be used as a label in naming. This is used, for instance, to detect which package name to choose when updating software binaries for CFEngine.
These two variables are synonyms for each other.
History: Was introduced in 3.2.0, Enterprise 2.0
See also: [sys.ostype
][sys#sys.ostype]
The fully qualified name of the host. In order to compute this value properly, the domain name must be defined.
# fqhost = host.example.org
See also: [sys.uqhost
][sys#sys.uqhost]
The location of the system filesystem (mount) table.
# fstab = /etc/fstab
This is a list variable containing a list of all known MAC addresses for system interfaces.
History: Was introduced in 3.3.0, Enterprise 2.2.0 (2011)
This contains the MAC address of the named interface. For example:
reports:
"Tell me $(harware_mac[eth0])";
History: Was introduced in 3.3.0, Enterprise 2.2.0 (2011)
The name of the current host, according to the kernel. It is undefined whether this is qualified or unqualified with a domain name.
# host = myhost
The assumed (default) name of the main system interface on this host.
# interface = eth0
Displays a system list of configured interfaces currently active in use by the system. This list is detected at runtime and it passed in the variables report to the CFEngine Enterprise Database.
To use this list in a policy, you will need a local copy since only local variables can be iterated.
bundle agent test
{
vars:
# To iterate, we need a local copy
"i1" slist => { @(sys.ip_addresses)} ;
"i2" slist => { @(sys.interfaces)} ;
reports:
"Addresses: $(i1)";
"Interfaces: $(i2)";
"Addresses of the interfaces: $(sys.ipv4[$(i2)])";
}
History: Was introduced in 3.3.0, Enterprise 2.2.0 (2011)
Contains a space separated list of the flags of the named interface. e.g.
reports:
"eth0 flags: $(sys.interface_flags[eth0])";
Outputs:
R: eth0 flags: up broadcast running multicast
The following device flags are supported:
- up
- broadcast
- debug
- loopback
- pointopoint
- notrailers
- running
- noarp
- promisc
- allmulti
- multicast
History: Was introduced in 3.5.0 (2013)
Displays a system list of IP addresses currently in use by the system. This list is detected at runtime and passed in the variables report to the CFEngine Enterprise Database.
To use this list in a policy, you will need a local copy since only local variables can be iterated.
bundle agent test
{
vars:
# To iterate, we need a local copy
"i1" slist => { @(sys.ip_addresses)} ;
"i2" slist => { @(sys.interfaces)} ;
reports:
"Addresses: $(i1)";
"Interfaces: $(i2)";
"Addresses of the interfaces: $(sys.ipv4[$(i2)])";
}
History: Was introduced in 3.3.0, Enterprise 2.2.0 (2011)
All four octets of the IPv4 address of the first system interface.
Note:
If your system has a single ethernet interface, $(sys.ipv4)
will contain
your IPv4 address. However, if your system has multiple interfaces, then
$(sys.ipv4)
will simply be the IPv4 address of the first interface in the
list that has an assigned address, Use $(sys.ipv4[interface_name])
for
details on obtaining the IPv4 addresses of all interfaces on a system.
The full IPv4 address of the system interface named as the associative
array index, e.g. $(ipv4[le0])
or $(ipv4[xr1])
.
# If the IPv4 address on the interfaces are
# le0 = 192.168.1.101
# xr1 = 10.12.7.254
#
# Then the octets of all interfaces are accessible as an associative array
# ipv4_1[le0] = 192
# ipv4_2[le0] = 192.168
# ipv4_3[le0] = 192.168.1
# ipv4[le0] = 192.168.1.101
# ipv4_1[xr1] = 10
# ipv4_2[xr1] = 10.12
# ipv4_3[xr1] = 10.12.7
# ipv4[xr1] = 10.12.7.254
Note:
The list of interfaces may be acquired with getindices("sys.ipv4")
(or
from any of the other associative arrays). Only those interfaces which
are marked as "up" and have an IP address will be listed.
The first octet of the IPv4 address of the system interface named as the
associative array index, e.g. $(ipv4_1[le0])
or $(ipv4_1[xr1])
.
The first two octets of the IPv4 address of the system interface named as the associative array index, e.g. $(ipv4_2[le0])
or $(ipv4_2[xr1])
.
The first three octets of the IPv4 address of the system interface named as the associative array index, e.g. $(ipv4_3[le0])
or $(ipv4_3[xr1])
.
Timestamp when last policy change was seen by host
reports:
enterprise::
"This version of CFEngine is licensed to $(sys.license_owner)";
History: Was introduced in version 3.1.4,Enterprise 2.0.2 (2011)
reports:
enterprise::
"There are $(sys.licenses_granted) licenses granted for use";
History: Was introduced in version 3.1.4,Enterprise 2.0.2 (2011)
The long architecture name for this system kernel. This name is sometimes quite unwieldy but can be useful for logging purposes.
# long_arch = linux_x86_64_2_6_22_19_0_1_default__1_SMP_2008_10_14_22_17_43__0200
See also: [sys.ostype
][sys#sys.ostype]
The name of the system email spool directory.
# maildir = /var/spool/mail
The name of the operating system according to the kernel.
# os = linux
See also: [sys.ostype
][sys#sys.ostype]
Another name for the operating system.
# ostype = linux_x86_64
See also: [sys.class
][sys#sys.class]
Hostname of the machine acting as the policy server. This value is set during bootstrap. In case bootstrap was not performed, it is set to undefined.
reports:
"Policy hub is $(sys.policy_hub)";
History: Was introduced in version 3.1.0b1,Enterprise 2.0.0b1 (2010). Available in Community since 3.2.0
The kernel release of the operating system.
# release = 2.6.22.19-0.1-default
The location of the system resolver file.
# resolv = /etc/resolv.conf
The unqualified name of the current host.
# uqhost = myhost
See also: [sys.fqhost
][sys#sys.fqhost]
The version of the running kernel. On Linux, this corresponds to the
output of uname -v
.
# version = #55-Ubuntu SMP Mon Jan 10 23:42:43 UTC 2011
History: Was introduced in version 3.1.4,Enterprise 2.0.2 (2011)
On the Windows version of CFEngine Enterprise, this is the path to the Windows directory of this system.
# windir = C:\WINDOWS
On the Windows version of CFEngine Enterprise, this is the path to the program files directory of the system.
# winprogdir = C:\Program Files
On 64 bit Windows versions of CFEngine Enterprise, this is the path to the 32 bit (x86) program files directory of the system.
# winprogdir86 = C:\Program Files (x86)
On the Windows version of CFEngine Enterprise, this is the path to the Windows system directory.
# winsysdir = C:\WINDOWS\system32
The location of the CFEngine [work directory][The CFEngine Components#The Working Directory] and cache. For the system privileged user this is normally:
# workdir = /var/cfengine
For non-privileged users it is in the user's home directory:
# workdir = /home/user/.cfagent
On the Windows version of CFEngine Enterprise, it is normally under program files (the directory name may change with the language of Windows):
# workdir = C:\Program Files\CFEngine