On Mon, 18 Jun 2012 18:26:48 +0200 (CEST) msvob...@linkedin.com wrote: Hi Mike,
that was a very interesting and useful post. I wanted to bring up a tool I wrote on my own recently, and it's not CFEngine-specific (although it can produce a CFEngine config, it can also produce JSON and eventually YAML). https://github.com/tzz/jim It lets you do the kind of structured assignments you show in the vars: section using a purely data-driven structure. n> 7 vars: n> 8 PROD:: n> 9 "environment" string => "PROD"; ... n> 30 ################################################### dc1 ################################################################## n> 31 (dc1|dc5):: n> 32 "mps1" string => "dc1-cage1-mps01.corp.cfengine.com", n> 33 policy => "free"; ... n> 127 "master_policy_servers" or => { n> 128 "dc3_cage6_mps01_prod_cfengine_com", n> 129 "dc3_cage6_mps02_prod_cfengine_com", n> 130 "dc3_cage7_mps01_prod_cfengine_com", n> 131 "dc3_cage7_mps02_prod_cfengine_com", n> 132 "dc3_cage9_mps01_prod_cfengine_com", n> 133 "dc3_cage9_mps02_prod_cfengine_com", n> 134 "dc1_cage1_mps01_corp_cfengine_com", n> 135 "dc1_cage1_mps02_corp_cfengine_com", n> 136 "dc2_cage1_mps01_prod_cfengine_com", n> 137 "dc2_cage1_mps02_prod_cfengine_com", n> 138 "dc2_cage5_mps01_prod_cfengine_com", n> 139 "dc2_cage5_mps02_prod_cfengine_com", n> 140 "dc2_cage2_mps01_prod_cfengine_com", n> 141 "dc2_cage2_mps02_prod_cfengine_com", n> 142 "dc2_cage4_mps01_prod_cfengine_com", n> 143 "dc2_cage4_mps02_prod_cfengine_com", n> 144 "dc4_cage10_mps01_corp_cfengine_com", n> 145 "dc4_cage10_mps02_corp_cfengine_com", n> 146 "dc6_cage11_mps01_prod_cfengine_com", n> 147 "dc6_cage11_mps02_prod_cfengine_com", }; ... n> 285 "CORP" xor => {"dc4_corp_cfengine_com", "dc5_corp_cfengine_com", "dc1_corp_cfengine_com", "dc6_corp_cfengine_com", }; ... n> 7 PROD.dc1:: n> 8 "site_specific_policy_location" string => "/var/cfengine/masterfiles/PROD/dc1/cf-agent"; The last one, especially, where you repeatedly define the masterfiles location based on some classes, can be greatly simplified through jim. Let me know if the README.md for jim makes sense, and if you are interested in how it could handle your use case. I can write out an example. Thanks Ted _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine