cf3> .........................................................cf3> Promise's handle: 'daily_full_filesystem_copy'cf3> Promise made by: '/var/cfengine/inputs'cf3> .........................................................cf3>cf3> Handling file existence constraints on '/var/cfengine/inputs'cf3> Copy file '/var/cfengine/inputs' from '/var/cfengine/masterfiles/generic_cf-agent_policies' checkcf3> GetIdleConnectionToServer: no existing connection to '172.18.41.113' is established...cf3> Set cfengine port number to '5308' = 5308cf3> Set connection timeout to 30cf3> Connect to 'dc5-cfe-test.corp.cfengine.com' = '172.18.41.113' on port '5308'cf3> .....................[.h.a.i.l.].................................cf3> Strong authentication of server 'dc5-cfe-test.corp.cfengine.com' connection confirmedcf3> Public key identity of host '172.18.41.113' is 'MD5=2798e2bf3ff8182ef92b75ea5f835843'cf3> Destination purging enabledcf3> Entering directory '/var/cfengine/masterfiles/generic_cf-agent_policies'cf3> Destination file '/var/cfengine/inputs/cfengine_stdlib.cf' already existscf3> Additional promise info: handle 'daily_full_filesystem_copy' source path '/var/cfengine/inputs/scale_cfengine_data_transfers.cf' at line 262cf3> File permissions on '/var/cfengine/inputs/cfengine_stdlib.cf' as promisedcf3> Additional promise info: handle 'daily_full_filesystem_copy' source path '/var/cfengine/inputs/scale_cfengine_data_transfers.cf' at line 262cf3> File '/var/cfengine/inputs/cfengine_stdlib.cf' is an up to date copy of sourcecf3> Destination file '/var/cfengine/inputs/mps_yum_servers.cf' already existscf3> Additional promise info: handle 'daily_full_filesystem_copy' source path '/var/cfengine/inputs/scale_cfengine_data_transfers.cf' at line 262cf3> File permissions on '/var/cfengine/inputs/mps_yum_servers.cf' as promisedcf3> Additional promise info: handle 'daily_full_filesystem_copy' source path '/var/cfengine/inputs/scale_cfengine_data_transfers.cf' at line 262cf3> File '/var/cfengine/inputs/mps_yum_servers.cf' is an up to date copy of sourcecf3> Destination file '/var/cfengine/inputs/check_splunk_installed.cf' already existscf3> Additional promise info: handle 'daily_full_filesystem_copy' source path '/var/cfengine/inputs/scale_cfengine_data_transfers.cf' at line 262cf3> File permissions on '/var/cfengine/inputs/check_splunk_installed.cf' as promisedcf3> Additional promise info: handle 'daily_full_filesystem_copy' source path '/var/cfengine/inputs/scale_cfengine_data_transfers.cf' at line 262cf3> File '/var/cfengine/inputs/check_splunk_installed.cf' is an up to date copy of sourcecf3> Destination file '/var/cfengine/inputs/manage_root_crontab_entries.cf' already existscf3> Additional promise info: handle 'daily_full_filesystem_copy' source path '/var/cfengine/inputs/scale_cfengine_data_transfers.cf' at line 262cf3> File permissions on '/var/cfengine/inputs/manage_root_crontab_entries.cf' as promisedcf3> Additional promise info: handle 'daily_full_filesystem_copy' source path '/var/cfengine/inputs/scale_cfengine_data_transfers.cf' at line 262cf3> File '/var/cfengine/inputs/manage_root_crontab_entries.cf' is an up to date copy of sourcecf3> Skipping matched excluded directory '/var/cfengine/masterfiles/generic_cf-agent_policies/.svn'cf3> Destination file '/var/cfengine/inputs/mps_bittorrent_tracker.cf' already existscf3> Additional promise info: handle 'daily_full_filesystem_copy' source path '/var/cfengine/inputs/scale_cfengine_data_transfers.cf' at line 262cf3> File permissions on '/var/cfengine/inputs/mps_bittorrent_tracker.cf' as promisedcf3> Additional promise info: handle 'daily_full_filesystem_copy' source path '/var/cfengine/inputs/scale_cfengine_data_transfers.cf' at line 262cf3> File '/var/cfengine/inputs/mps_bittorrent_tracker.cf' is an up to date copy of sourcecf3> Destination file '/var/cfengine/inputs/garbage_collection.cf' already exists......this continues for 1700+ more entries..[msvoboda@dc5-infra01 ~]$ extract_sysops_cache.py --site dc1 --search cm.conf --contents | grep PRIMARY_MPS | sort | uniq -c | grep dc1-core15 1121 PRIMARY_MPS:dc1-core15-mps01.prod.cfengine.com 1172 PRIMARY_MPS:dc1-core15-mps02.prod.cfengine.com 1141 PRIMARY_MPS:dc1-core15-mps03.prod.cfengine.com 1113 PRIMARY_MPS:dc1-core15-mps04.prod.cfengine.com
|
[msvoboda@dc1-app9010 ~]$ cat /etc/cm.conf/etc/cm.conf regnereated at Mon Feb 17 14:42:35 2014PRIMARY_MPS:dc1-core17-mps02.prod.cfengine.comSECONDARY_MPS:dc1-core17-mps03.prod.cfengine.comTHIRD_MPS:dc1-core17-mps04.prod.cfengine.comFORTH_MPS:dc1-core17-mps01.prod.cfengine.comENV_SITE:PROD@dc1MACHINE_TYPE:APP_SERVERACCT_TYPE:app_acctRHEL_LI_RELEASE_VERSION:rh6_release_x86_64_r5LINUX_HARDWARE_PLATFORM:UCSC_C220_M3L
[msvoboda@dc1-app9010 ~]$ whatamiFABRIC_NAME=prod-dc1SITE=dc1USING_DEFAULT_FABRIC=1RANGE_SERVER=dc1-core17-mps02.prod.cfengine.comhttps://groups.google.com/d/msg/help-cfengine/91PCP090ZZw/2mPOBrXP2_cJ
Hi David,
the original idea behind the promises_validated marker was to avoid the need to perform a lengthy server-intensive search for changed
policy files in a large policy file tree.
Suppose you are an organization with thousands of hosts, and possibly hundreds of policy files. If you checked every file for every client on the server every five minutes, that would be computationally very time consuming, as each check would require a contentious server-side search. The result is a scaling bottleneck.
The idea of the validation file was as a server-side certification that there was something worth searching for. By having a single file with known location and name, the search is reduced to a trivial time-stamp "stat" which is hiundreds of times cheaper. That scales easily to thousands of hosts every five mins. Only if the validation "certificate" was changed would the agent bother to perform an update. This can only work if a certain discipline is maintained of course.
https://cfengine.com/archive/manuals/st-scale#Scalable-policy-strategy
This mechanism is what allows CFEngine to roll out changes in under five minues on average in a massive environment without trying to "push". Does this make sense?
In the future, this file could actually contain a list of files that differ. Somehow, this never moved forward,
M