CFEngine 3.12: как распространять шаблоны на хосты? - PullRequest
0 голосов
/ 01 ноября 2018

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 на всех других клиентах ...

Похоже, шаблоны не копируются с сервера на клиенты, что я пропустил? Наверное, я что-то упустил понял ...

Документация не объясняет, как распространять файлы шаблонов, поэтому я надеюсь, что вы мне поможете, спасибо!

1 Ответ

0 голосов
/ 05 ноября 2018

Я рад, что вам нравится 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,
       }
    ');

}

Не всегда целесообразно отправлять ваши шаблоны всем хостам как часть вашего Основной набор политики, это действительно зависит от потребностей вашей среды.

...