自定义CFEngine3临时下载文件的位置

时间:2013-10-07 08:32:16

标签: linux cfengine

我在尝试使用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";
} 

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以将执行命令的目录添加到contain正文中,如下所示:

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

请注意,标准库(lib / 3.5 / commands.cf)中已经有一些contain个主体,可能会使用其中一个,因此您不必编写自己的主体。请注意,CFEngine已经以root身份执行,因此exec_owner => "root"并非绝对必要。