Cfengine 3 example unit_definitions.html

# Copyright (C) Cfengine AS # This file is part of Cfengine 3 - written and maintained by Cfengine AS. # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; version 3. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA # To the extent this program is licensed as part of the Enterprise # versions of Cfengine, the applicable Commerical Open Source License # (COSL) may apply to this file if you as a licensee so wish it. See # included file COSL.txt. # # Testing some variable/class definitions - note scope # # Use browser -f promise_output_agent.html to view # body common control { bundlesequence => { "mycommon", "assign" }; } ########################################################### bundle common mycommon { classes: "global_class" expression => "any"; "another_global" xor => { "any", "linux", "solaris"}; } ########################################################### bundle agent assign { vars: "scalar" int => "16k"; # "xxx" string => readfile( "/home/mark/tmp/testfile" , "33" ); "ran" int => randomint(4,88); # "yyy" slist => { readstringlist("/home/mark/tmp/testlist","#[a-zA-Z0-9 ]*","[^a-zA-Z0-9]",15,4000) }; # "zzz" slist => { readstringlist("/home/mark/tmp/testlist2","#[^\n]*",",",5,4000) }; # "aaa" ilist => { readintlist("/home/mark/tmp/testilist","#[a-zA-Z0-9 ]*",",",10,4000) }; "dim_array" int => readstringarray("array_name","/etc/passwd","#[^\n]*",":",10,4000); classes: # Standard aliasing "myclass" or => { "solaris", "linux" }; # got_array is a class that says whether the read was successful # array_name[] is the lval # Create a distribution "my_dist" dist => { "10", "20", "30", "40" }; # # Now like "alerts" in cf2 # reports: linux:: "Dimension of passwd array $(dim_array)"; "Read item from list: $(yyy)"; # Any kind of rule can define classes on exit "Read this file: [$(xxx)] ..." classes => persist("alertclass","20"); } ###################################################################### body classes persist(class,time) { promise_repaired => { "$(class)" }; persist_time => "$(time)"; timer_policy => "absolute"; }