CFEngine很棒,但我不知道如何将策略服务器上定义的模板复制到相关主机。
例如,我要部署一个nginx.conf,我在主服务器上制定了一个策略:
bundle agent loadbalancers{
files:
ubuntu::
"/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,
}
');
}
但是很明显,CFEngine在所有其他客户端上都找不到/tmp/nginx.conf.template ...
看起来模板没有从服务器复制到客户端,我错过了什么?我想我很想念...
文档中没有说明如何传播模板文件,所以希望您能为我提供帮助,谢谢!
答案 0 :(得分:1)
很高兴您喜欢CFEngine。如果您希望一个文件成为另一个文件的副本,则可以使用copy_from正文来 指定其来源。
例如:
$results
有些人安排将其模板复制为正常情况的一部分 政策更新,那么仅引用模板关联内容就非常方便 到您的策略文件。
例如,假设您的政策在
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
。然后,如果那个tempalte是
作为常规策略更新的一部分进行更新,您不必保证单独进行
文件副本,而只需引用与模板相关的模板的路径
政策文件。
services/my_nginx_app/templates/nginx.conf.mustache
将模板作为您的一部分发送到所有主机并不总是合适的 主要策略集,它实际上取决于您环境的需求。