我在尝试使用CFENGINE3.5进行配置时遇到了一个问题,我已经创建了一个策略来从源代码安装一些软件包,从一些URL下载tar ball然后解压缩它并进一步使用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";
}
提前致谢。
答案 0 :(得分:1)
您可以将执行命令的目录添加到contain
正文中,如下所示:
body contain standard
{
useshell => "true";
exec_owner => "root";
chdir => "/tmp";
}
请注意,标准库(lib / 3.5 / commands.cf)中已经有一些contain
个主体,可能会使用其中一个,因此您不必编写自己的主体。请注意,CFEngine已经以root身份执行,因此exec_owner => "root"
并非绝对必要。