Я рад, что вам нравится CFEngine. Если вы хотите, чтобы один файл был копией другого файла, используйте тело copy_from для
укажите его источник.
Например:
bundle agent loadbalancers{
files:
ubuntu::
"/tmp/nginx.conf.template"
comment => "We want to be sure and have an up to date template",
copy_from => remote_dcp( "/var/cfengine/masterfiles/templates/nginx.conf.mustache",
$(sys.policy_hub));
"/etc/nginx/nginx.conf"
create => "true",
edit_template => "/tmp/nginx.conf.template",
template_method => "mustache",
template_data => parsejson('
{
"worker_processes": "auto",
"worker_rlimit_nofile": 32768,
"worker_connections": 16384,
}
');
}
Некоторые люди организуют копирование своих шаблонов как часть их обычного
обновления политики, тогда очень удобно просто ссылаться на шаблон
в файл политики.
Например, допустим, ваша политика
services/my_nginx_app/policy/loadbalancers.cf
, и ваш шаблон
services/my_nginx_app/templates/nginx.conf.mustache
. Затем, если это tempalte
обновляется как часть обычного обновления политики, вам не нужно обещать отдельное
скопируйте файл, вместо этого просто укажите путь к шаблону, относитесь к
файл политики.
bundle agent loadbalancers{
files:
ubuntu::
"/etc/nginx/nginx.conf"
create => "true",
edit_template => "$(this.promise_dirname)/../templates/nginx.conf.mustache",
template_method => "mustache",
template_data => parsejson('
{
"worker_processes": "auto",
"worker_rlimit_nofile": 32768,
"worker_connections": 16384,
}
');
}
Не всегда целесообразно отправлять ваши шаблоны всем хостам как часть вашего
Основной набор политики, это действительно зависит от потребностей вашей среды.