Fetching contributors…
Cannot retrieve contributors at this time
576 lines (433 sloc) 20.8 KB
3.3.0 (in development)
New promise types:
- Guest environments promises, which allow to manipulate virtual
machines using libvirt.
- Database promises, which allow to maintain schema of MySQL and
PostgreSQL databases. Database promises are in "technical preview"
status: this promise type is subject to change in future.
- Services promises for Unix, allows abstraction of details
on managing any service
New built-in functions:
- dirname() to complement lastnode()
- lsdir()
- maplist() to apply functions over lists
New features:
- Allow defining arrays from modules.
- Allow both `process_stop' and `signals' constraints in
`processes' promises at the same time.
- cf-promises --gcc-brief-format option to output warnings and
errors in gcc-compatible syntax which to ease use "go to next
error" feature of text editors.
- cf-promises --parse-tree option to parse policy file and dump it
in JSON format
- Services promises for generic/Unix added.
- Iteration over lists is now allowed for qualified (non-local) lists.
New built-in variables and classes (Linux):
- Number of CPUs: $(sys.cpus), 1_cpu, 2_cpus etc
New built-in variables and classes (Unices):
- $(sys.last_policy_update) - timestamp when last policy change was seen by host
- $(sys.hardware_addresses) - list of MAC adresses
- $(sys.ip_addresses) - list of IP addresses
- $(sys.interfaces) - list of network interfaces
- $(sys.hardware_mac[$iface]) - MAC address for network interface
- mac_<mac_address>:: - discovered MAC addresses
- Major cleanup of database handling code. Should radically decrease
amount of database issues experienced under heavy load.
*WARNING*: Berkeley DB and SQLite backends are *removed*, use
Tokyo Cabinet or QDBM instead. Both Tokyo Cabinet and QDBM are
faster than Berkeley DB in typical CFEngine workloads.
Tokyo Cabinet requires C99 environment, so it should be
available on every contemporary operating system.
For the older systems QDBM, which relies only on C89, is a
better replacement, and deemed to be as portable, as Berkeley DB.
- Change of lastseen database schema. Should radically decrease
I/O contention on lasteen database.
*WARNING*: Currently there is no provision for upgrading
existing lastseen databases. Old entries will be just lost.
- Automatic reload of policies by cf-execd.
- Documentation is generated during build, PDF and HTML files are
retired from repository.
- Rarely used feature retired: peer connectivity intermittency calculation.
- Memory and CPU usage improvements.
- Testsuite now uses 'make check' convention and does not need root
privileges anymore.
- cf_promises_validated now filled with timestamp, allows digest-copy
for policy instead of mtime copy which is safer when clocks are unsynchronised
- See the full list of bugfixes at
3.2.4 (Bugfix and Stability release)
Fixed failure in network transfer in case of misbehaving peer
A few tiny memory leaks on error paths fixed
3.2.3 (Bugfix and Stability release)
A few tiny memory leaks fixed
Improved performance of cf-serverd under heavy load with
TokyoCabinet database
Full list of issues fixed is available on
3.2.2 (Bugfix and Stability release)
Enabled compilation in "large files" mode under AIX
Alleviated problem with broken file transfers over unstable
Internet links.
Full list of issues fixed is available on
3.2.1 (Bugfix and Stability release)
Fixed compilation under HP-UX and Solaris
Enabled compilation using HP ANSI C compiler
Full list of issues fixed is available on
New bootstrap method with single-command bootstrapping:
- cf-agent --bootstrap --policy-server 123.456.789.123
- Associated policy template files are added, partially maintained
by CFEngine
Bug fixes for file-editing, package versioning, and embedded
database corruption (We recommend using TokyoCabinet instead of
BerkeleyDB if building from source).
Improved upgrade path for Nova.
Patches for improved run-agent concurrency
Reorganization of documentation and community resources
100% on regression test suite on 3 operating systems
(Ubuntu, Debian, SuSE on x86-64 hardware)
Support for multiple release environments
package_policy update and addupdate now check if user-supplied
version is larger than currently installed - updates only if so
Help text of cf-report -r corrected - a list of key hashes is
required, not ip addresses.
New Emacs mode for CFEngine policy files (thanks to Ted Zlatanov!)
Warnings are on edit_line changes can now give greater degree of information
without spamming promise logs
Class expressions parser accepts '||' as an alias for '|' again.
Invalidation of package list cache on installation/removal of
New option cf-key -r to remove host key by IP or hostname.
Added detection of network interfaces which belong to BSD jails.
Improve robustness of multi-threaded code, in particular fix
problems with spurious acces denials in server and losing of
authentication rules after policy reload.
cf-promises accepts option -b matching cf-agent, which causes it
to do not complain about missing bundlesequence.
New functions and(), not(), or() and concat() to ease use of
ifvarclass() clause.
Full list of issues fixed is available on
New class parser, '||' is no longer allowed in expressions (use '|').
Class setting in the promise types insert_lines, delete_lines,
replace_patterns, field_edits, vars, classes is restored.
suspiciousnames implemented.
New function getvalues().
New functions parse{read,int,string}array to match read{read,int,string}array.
Testsuite added to check for core functionality.
Syslog prefix is fixed to say 'cf3' instead of 'community'.
3.1.4 (Bugfix and Stability release)
Some urgent patches to 3.1.3.
Class validation parse bug fixed.
Global zone handling error for solaris fixed.
Package architectures handled correctly (bug #456).
Reading and writing of key name "" eliminated (bug #442, #453).
cf-serverd crash because of race condition on SERVER_KEYSEEN fixed.
Lock purging to avoid remnant complexity explosion (bug #430).
Some copyright notices added that got lost.
3.1.3 (Stability release)
Major memory leaks in cf-monitord, cf-execd, cf-serverd fixed (bug #427).
The daemons now show no growth even with very complex policies.
cf-serverd crash due to race condition in DeleteScope() fixed (bug #406).
Added 30 second timeout on recv() on Linux.
package_noverify_returncode implemented (bug #256).
A flexible mechanism for setting classes based on return codes of
commands has been introduced. Allows for setting promise kept,
repaired or failed based on any return codes. This is currently
implemented for commands-promises, package-manager commands and
transformer in files. In classes body, see attributes
kept_returncodes, repaired_returncodes, failed_returncodes (bug
#248, #329).
New function ip2host - reverse DNS lookup (bug #146).
3.1.2 (Scalability/efficiency release)
Big efficiency improvements by caching output from
cf-promises. Can also be used for much more efficent policy
deployment (only pull if changed).
Caching state of ps command for greater efficiency. Reloaded for each bundle.
Index class lookup improves efficiency of class evaluation for huge configurations.
Fixed issue where certain promiser strings got corrupted.
Minor memory access issues fixed.
Iterator bug introduced in 3.1.0 fixed
3.1.1 (Bugfix release)
Memory leaks in server tracked down and fixed.
List expansion bug (one list items not executed) fixed.
Security issue introduced by change of runcommand shell policy fixed. If users defined a runcommand for cf-runagent/cf-serverd communication, possible to execute commands.
cf-key -s command for showing key hash/IP address identity pairs
Change in storage of public keys. Cfengine now hashes the public key and uses this
as the keyname. Keys will be converted automatically.
The old dynamic addresses lists are deprecated.
Caching of dns and key information for greater server speed.
Change in last-seen format reflects the public key usage.
New package policy addupdate - installs package if not there and
updates it otherwise.
Support for package_changes => "bulk" in file repository as well.
New special function readstringarrayidx, similar to readstringarray,
but uses integer indeces. Very useful if first row elements are
not good identifiers (e.g. contains spaces, non-unique, etc.).
Change two log formats to use time() instead of date()
- filechanges
- total compliance
Change from using md5 to sha256 as default digest for commercial version,
community retains md5 for compat.
Commands not returning 0 in commands-promises are flagged
as repair_failed.
Adjustable timeout on connect(). Defaults to 10 seconds, adjustable
with default_timeout in agent control.
Redesign of the knowledge map infrastructure.
Now possible to use variables to call methods, e.g
"name $(list)" usebundle => $(list)("abc");
See reference manual notes
Changes to normal ordering to optimize execution.
Increased stability by always initializing Attribute and Promise
When running cf-promises in dry-run mode (-n), the user does not need
to put binaries in WORKDIR/bin. For example, non-privileged users can verify root
Source control revision added in version string if run in verbose mode
(e.g. "cf-promises -vV"). This needs some refining, uses revision of a header now.
New semantics in return values of list functions. Null values are now allowed
and there is no iteration over empty lists. The value "cf_null" is reserved for
use as a null iterator.
Showing paths allowed/denied access to when cf-serverd is run in verbose mode.
Bug in server fixed for dynamic addresses.
File handle closure bugfix - too many open databases.
Seg fault in mount files fix.
Twin used in cf-execd without checking.
Check_root set wrong directory permissions at source not destination.
Error message degraded in body definition.
Undefined body not warned as error.
Various build enahncements.
Package_list_update called only once per manager, and fixed crash.
Version number bug in packages.
Encryption problems fixed - client key buffer was uninitialized.
Classes-promisers are now automatically canonified when class
strings are defined, to simplifying the use of variables in classes.
New scalars sys.cf_version and sys.nova_version that hold Cfengine version information.
Attribute package_delete_convention added, to allow customizable
package name in delete command during update.
package_list_update_ifelapsed limit added.
Private variable $(firstrepo) is available in package_name_convention
and package_delete_convention in order to expand the full path to
a package, which is required by some managers.
Some of the threading code is rewritten and made more robust. This includes
synchronizing access to the lastseen database from the server.
Bad initialization of BSD flags fixed
Multiple variable expansion issues in control fixed for server and agent
Allow ignore_missing_bundles to affect methods: bundles too
Run agent trust dialogue fixed
Bug in CPU monitoring, increasing time scale caused linear decay
of CPU measurement.
Bug in Setuid log storage, fix.
Hooks added for new Nova virtualization promises.
Multithreading mutex failed to collide during cfservd leading to dropped authentication under heavy load.
Class cancellation in promises to create better class feedback,
allows emulation of switch/case semantics etc
Value of SA measurement promises
Special function getenv() which returns the contents of an
environment variable (on all platforms).
New function translatepath for generic Windows
New function escape() to escape literals as regular expressions (like SQL)
New function host2ip for caching IP address lookup
New function regextract for setting variables with backreferences
New variables for the components $(sys.cf_agent), $(sys.cf_know) etc
pointing to the binaries.
More robust integrated database implementation; closing all
handles when receiving signals, self-healing on corruption.
Package installation on localhost without a manager like yum completed,
multiple repositories searched, and universal methods.
Numerous bugfixes
sha256 .. new hashes in openssl included in syntax tree.
End of line autocropping in readfile (hopefully intelligent)
hashmatch function incorrectly implemented - old debugging code left behind. Fix.
sys.crontab variable
Unknown user is now interpretated as "same user", so that we give cfengine a chance to
Unregistered addresses no longer report "(Non registered IP)", but return as the address
itself when doing reverse lookups.
IMPORTANT: Change in normal ordering of editing. replace comes
after insert lines Much testing and minor bug fixing
Memory leaks fixed
Many hooks added for Nova enterprise extensions.
promise_output reports now placed in WORKDIR/reports directory
Initialization correction and self-correx in monitord
Many new body constraints added.
Code readied for enterprise version Nova.
-b option can override the bundlesequence (must not contain parameters yet)
collapse_destination_dir option added to copy so that files can be
aggregated from subdirectories into a single destination.
Preparation for release: x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
First standalone release, independent of cfengine 2
Purge old definitions and check consistency.
NB: changed search_mode to be a list of matching values
Reporting rationalized in cf-promises with -r only to avoid
leaving output files everywhere.
Hooks added for upcoming commerical additions to cfengine.
Added classify() and hostinnetgroup() functions
Added additional change management options for change detection
Package management added - generic mechanisms.
Limits on backgrounding added to avoid resource contention during cfengine runs.
Image type added to cf-know.
New classes for quartly shifts: Morning,Afternoon,Evening,Night
Bug fixes in editfiles - line insertion for multiple line objects
Change the name of the variables and context from the monitord for
better separation of data, and shorter names. sys -> mon
average -> av, stddev -> dev
canonical name for windows changed from "nt" to "windows", also version names
added "vista","xp" etc..
License notices updated for dual license editions.
First release of cfengine 3. Known omissions:
- no support for ACLs
- no support for packages
- no support for interface configuration
These will be added in the next release.