Настройте местоположение временных загружаемых файлов 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"
не является строго необходимым.