# # Make list of hosts available to all clients, and use it on clients # in order to configure a sample monitoring application that checks # health of all clients. # # Sample application configuration file contents below, put this in # /var/cfengine/masterfiles/template_monitoring on the hub. # # --- # #monitor_hosts = $(orchestration_hostlist_use.host_string) # # --- # # Note that your copy_from statement in failsafe.cf or update.cf must # copy this file also (e.g. not only copy *.cf files in any file_select) body common control { inputs => { "$(sys.libdir)/stdlib.cf" }; bundlesequence => { "orchestration_hostlist_update", "orchestration_hostlist_use"}; } bundle agent orchestration_hostlist_update { vars: am_policy_hub:: "host_list" slist => hostsseen("inf", "lastseen", "address"); files: am_policy_hub:: "$(sys.workdir)/masterfiles/host_list" comment => "Write the addresses of all hosts to a file", handle => "orchestration_hostlit_update_files_host_list_write", edit_line => insert_lines( "@(orchestration_hostlist_update.host_list)" ), create => "true", edit_defaults => empty; } bundle agent orchestration_hostlist_use { vars: "host_list" slist => readstringlist("$(sys.workdir)/inputs/host_list", "#.*", "\n", 1000, 40000); "host_string" string => join(", ", "host_list"); files: "/tmp/monitoring" comment => "Update application configuration to reflect all hosts on this hub", handle => "orchestration_read_files_host_list_configuration", edit_line => expand_template("$(sys.workdir)/inputs/template_monitoring"), create => "true", edit_defaults => empty; }