Contents
http://en.wikipedia.org/wiki/Comparison_of_open_source_configuration_management_software
| mountall | mount filesystems in fstab |
| mountinfo | scan mounted filesystems |
| checktimezone | check timezone |
| netconfig | check net interface config |
| resolve | check resolver setup |
| unmount | unmount any filesystems |
| packages | install/upgrade/remove packages |
| shellcommands | execute shell commands |
| editfiles | edit files |
| addmounts | add new filesystems to system |
| directories | make any directories |
| links | check and maintain links (single and child) |
| mailcheck | check mailserver |
| required | check required filesystems |
| tidy | tidy files |
| disable | disable files |
| files | check file permissions |
| copy | make a copy/image of a master file |
| processes | signal / check processes |
| module:name | execute a user-defined module |
wget -c http://www.cfengine.org/downloads/cfengine-2.2.10.tar.gz tar zxvf cfengine-2.2.10.tar.gz cd cfengine-2.2.10 ./configure LDFLAGS=-ldl make make install
cfengine-2.2.10: /usr/local/lib/libcfengine.a /usr/local/lib/libcfengine.la /usr/local/sbin/cfagent /usr/local/sbin/cfdoc /usr/local/sbin/cfenvd /usr/local/sbin/cfenvgraph /usr/local/sbin/cfetool /usr/local/sbin/cfetoolgraph /usr/local/sbin/cfexecd /usr/local/sbin/cfkey /usr/local/sbin/cfrun /usr/local/sbin/cfservd /usr/local/sbin/cfshow /usr/local/share/cfengine/ChangeLog /usr/local/share/cfengine/INSTALL /usr/local/share/cfengine/NEWS /usr/local/share/cfengine/README /usr/local/share/cfengine/cf.chflags.example /usr/local/share/cfengine/cf.freebsd.example /usr/local/share/cfengine/cf.ftp.example /usr/local/share/cfengine/cf.groups.example /usr/local/share/cfengine/cf.linux.example /usr/local/share/cfengine/cf.main.example /usr/local/share/cfengine/cf.motd.example /usr/local/share/cfengine/cf.preconf.example /usr/local/share/cfengine/cf.services.example /usr/local/share/cfengine/cf.site.example /usr/local/share/cfengine/cf.solaris.example /usr/local/share/cfengine/cf.sun4.example /usr/local/share/cfengine/cf.users.example /usr/local/share/cfengine/cfagent.conf-advanced.example /usr/local/share/cfengine/cfagent.conf.example /usr/local/share/cfengine/cfengine.el /usr/local/share/cfengine/cfrc.example /usr/local/share/cfengine/cfrun.hosts.example /usr/local/share/cfengine/cfservd.conf.example /usr/local/share/cfengine/update.conf.example
cfagent -p -v
Reference time set to Sun May 17 14:08:17 2009 GNU Configuration Engine - 2.2.10 Free Software Foundation 1994- Donated by Mark Burgess, Oslo University College, Norway ------------------------------------------------------------------------ Host name is: xubuntu Operating System Type is linux Operating System Release is 2.6.28-12-generic Architecture = i686 Using internal soft-class linux for host linux The time is now Sun May 17 14:08:17 2009 ------------------------------------------------------------------------ Additional hard class defined as: 32_bit Additional hard class defined as: linux_2_6_28_12_generic Additional hard class defined as: linux_i686 Additional hard class defined as: linux_i686_2_6_28_12_generic Additional hard class defined as: linux_i686_2_6_28_12_generic__43_Ubuntu_SMP_Fri_May_1_19_27_06_UTC_2009 GNU autoconf class from compile time: compiled_on_linux_gnu Address given by nameserver: 127.0.1.1 Interface 1: lo Interface 2: eth0 Trying to locate my IPv6 address Found IPv6 address fe80::215:f2ff:febe:daed Looking for environment from cfenvd... Unable to detect environment from cfenvd cfengine:xubuntu: No preconfiguration file $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ * (Changing context state to: main) * $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Looking for an input file /home/ebal/.cfagent/inputs/cfagent.conf (No file /home/ebal/.cfagent/inputs/cfagent.conf) Finished with /home/ebal/.cfagent/inputs/cfagent.conf Defined Classes = ( 10_10_10 32_bit Day17 GMT_Hr11 Hr14 Hr14_Q1 May Min05_10 Min08 Q1 Sunday Yr2009 any cfengine_2 cfengine_2_2 cfengine_2_2_10 compiled_on_linux_gnu debian debian_5 debian_5_0 fe80__215_f2ff_febe_daed i686 ipv4_10 ipv4_10_10 ipv4_10_10_10 ipv4_10_10_10_118 linux linux_2_6_28_12_generic linux_i686 linux_i686_2_6_28_12_generic linux_i686_2_6_28_12_generic__43_Ubuntu_SMP_Fri_May_1_19_27_06_UTC_2009 lsb_compliant net_iface_eth0 net_iface_lo ubuntu ubuntu_9 ubuntu_9_4 ubuntu_jaunty undefined_domain xubuntu ) Negated Classes = ( ) Installable classes = ( no_default_route ) Global expiry time for locks: 120 minutes Global anti-spam elapse time: 1 minutes Extensions which should not be directories = ( ) Suspicious filenames to be warned about = ( )
mkdir -pv /var/cfengine/bin /var/cfengine/inputs /var/cfengine/outputs cp /usr/local/sbin/cfagent /var/cfengine/bin/ cp /usr/local/sbin/cfdoc /var/cfengine/bin/ cp /usr/local/sbin/cfenvd /var/cfengine/bin/ cp /usr/local/sbin/cfenvgraph /var/cfengine/bin/ cp /usr/local/sbin/cfetool /var/cfengine/bin/ cp /usr/local/sbin/cfetoolgraph /var/cfengine/bin/ cp /usr/local/sbin/cfexecd /var/cfengine/bin/ cp /usr/local/sbin/cfkey /var/cfengine/bin/ cp /usr/local/sbin/cfrun /var/cfengine/bin/ cp /usr/local/sbin/cfservd /var/cfengine/bin/ cp /usr/local/sbin/cfshow /var/cfengine/bin/
cfkey
control:
actionsequence = ( copy processes tidy ) # Keep this simple and constant
domain = ( otenet.gr ) # Needed for remote copy
policyhost = ( xubuntu.otenet.gr )
master_cfinput = ( /var/cfengine/inputs )
AddInstallable = ( new_cfenvd new_cfservd )
workdir = ( /var/cfengine )
cf_install_dir = ( /usr/local/sbin )
copy:
$(master_cfinput) dest=$(workdir)/inputs
r=inf
mode=640
type=binary
exclude=*.svn ## ebal in case of subversion
exclude=*.lst
exclude=*~
exclude=#*
server=$(policyhost)
trustkey=true
$(cf_install_dir)/cfagent dest=$(workdir)/bin/cfagent
mode=755
backup=false
type=checksum
$(cf_install_dir)/cfservd dest=$(workdir)/bin/cfservd
mode=755
backup=false
type=checksum
define=new_cfservd
$(cf_install_dir)/cfexecd dest=$(workdir)/bin/cfexecd
mode=755
backup=false
type=checksum
$(cf_install_dir)/cfenvd dest=$(workdir)/bin/cfenvd
mode=755
backup=false
type=checksum
define=new_cfenvd
tidy:
$(workdir)/outputs pattern=* age=7
processes:
new_cfservd::
"cfservd" signal=term restart /usr/local/sbin/cfservd
new_cfenvd::
"cfenvd" signal=kill restart "/usr/local/sbin/cfenvd -H"control:
domain = ( otenet.gr )
AllowUsers = ( root )
cfrunCommand = ( "/usr/local/sbin/cfagent" )
AllowConnectionsFrom = ( 10.10.10 )
admit: # or grant:
/var/cfengine/inputs *.otenet.gr
/usr/local/sbin/cfagent *.otenet.grcontrol:
actionsequence = ( copy files )
domain = ( otenet.gr )
access = ( root )
smtserver = ( mail.otenet.gr )
sysadm = ( root@otenet.gr )
files:
/etc/passwd mode=644 owner=root action=fixall
/etc/shadow mode=600 owner=root action=fixall
/etc/sudoers mode=0440 owner=root group=root action=fixall
copy:
${master_cfinput}/etc/sudoers
dest=/etc/sudoerscontrol:
actionsequence = ( files )
files:
/etc/sudoers owner=root group=root mode=0440 action=fixallcfagent -f sudoers.conf
control: actionsequence = ( copy files ) working_dir = ( /var/cfengine/inputs ) copy: $(working_dir)/etc/sudoers dest=/etc/sudoers type=checksum files: /etc/sudoers owner=root group=root mode=0440 action=fixall
cfagent -v -f sudoers.conf