Настройте местоположение временных загружаемых файлов CFEngine3

Я столкнулся с проблемой, пытаясь настроить что-то с помощью CFENGINE3.5, я создал политику для установки некоторого пакета из исходного кода, который загружает tar-шарики из некоторого URL-адреса, а затем распаковывает их и копает их с помощью make и make install, все работает нормально кроме того, что пока он загружает tar-шары, он хранится в папке "/ etc", я хочу, чтобы cfengine поместил этот файл в /tmp.

Есть ли способ настроить это поведение cfengine по умолчанию, чтобы все временные загруженные файлы сохранялись в /tmp, а не в / etc?

Вот фрагмент политики:

bundle agent install
{
  vars:
      "packages" slist => {
                            "Algorithm-Diff-1.1902",
                            "Apache-DB-0.13",
                            "Apache-DBI-1.06",
                            "Apache-Session-1.83",
                            "Apache-SessionX-2.01",
                            "AppConfig-1.65",
                            "Archive-Tar-1.32",
      };

  commands:
      "/usr/bin/wget http://10.X.X.X/downloads/perl-modules/$(packages).tar.gz;
/usr/bin/gunzip $(packages).tar.gz;
tar -xf $(packages).tar;
cd $(packages);
/usr/bin/perl Makefile.PL;
/usr/bin/make;
/usr/bin/make install;"
        contain =>  standard,
        classes => satisfied(canonify("$(packages)-installed"));
}

body contain standard
{
        useshell => "true";
        exec_owner => "root";
} 

Заранее спасибо.

1 ответ

Решение

Вы можете добавить каталог, в котором должны выполняться команды, к contain кузов, вот так:

body contain standard
{
  useshell => "true";
  exec_owner => "root";
  chdir => "/tmp";
}

Обратите внимание, что уже есть несколько contain Тела в стандартной библиотеке (lib/3.5/commands.cf), возможно, один из них можно использовать, чтобы вам не приходилось писать свои собственные. Обратите внимание, что CFEngine уже выполняется от имени пользователя root, поэтому exec_owner => "root" не является строго необходимым.

Другие вопросы по тегам