Назад | Перейти на главную страницу

CfEngine - вызов переменных и классов из разных CF или promises.cf

Я хочу поставить body package_method и некоторые переменные в promises.cf или в другом файле, и я должен иметь возможность вызывать его из любых новых файлов CF, которые я пишу.

Это возможно? Ничего, связанного с такими методами, в документации найти не удалось.

Я думал о создании нового файла в /var/cfengine/masterfiles/ а затем отредактируйте /var/cfengine/promises.cf и вставьте новый файл как inputs но не вышло.

Вот то, что я хочу поместить (возможно, в новый файл), который должен быть доступен глобально.

bundle common variables
{
   vars:
          "global_var_1" string  => "value_var_1";
}

и

body package_method yum
{
   any::
   package_changes => "bulk";
   package_list_command => "/usr/bin/yum list installed";
   package_list_name_regex => "([^.]+).*";
   package_list_version_regex => "[^\s]\s+([^\s]+).*";
   package_list_arch_regex => "[^.]+\.([^\s]+).*";
   package_installed_regex => ".*installed.*";
   package_name_convention => "$(name).$(arch)";

   package_name_regex => "amanda-client";
   package_arch_regex => "x86_64";
   package_add_command => "/usr/bin/yum -y install";
   package_delete_command => "/bin/rpm -e";
   package_verify_command => "/bin/rpm -V";
}

Тогда я смогу назвать это в любом новом CF как:

"${variables.global_var_1}"

и

bundle agent packages
{
   packages:
           "wget"
                   package_policy => "add",
                   package_method => yum;
}

Решено.

Чтобы создать глобальные переменные:

Создать variables.cf и в этот файл вставьте следующие строки.

bundle common variables
{
   vars:
          "global_var_1" string  => "value_var_1";
 }

Затем создайте любой CF, но под body common control - введите variables.cf файл.

body common control
{
bundlesequence => { "myclasses" };
inputs => { "variables.cf" };
}

Затем вы можете назвать переменные как "${variables.global_var_1}".

Звонить package_method глобально:

Под любой новый CF body common control введите файл /var/cfengine/masterfiles/lib/packages.cf

body common control
{
bundlesequence => { "myclasses", "packages_to_install" };
inputs => { "/var/cfengine/masterfiles/lib/packages.cf" };
}

Затем вы можете добавить такие пакеты, как

bundle agent packages_to_install
{
packages:
          "wget"
                 package_policy => "add",
                  package_method => yum;
}