2013-10-07 53 views
0

我在嘗試使用CFENGINE3.5配置某些內容時遇到問題,我創建了一個策略來從源代碼安裝一些包,它從某個url下載tar球,然後解壓縮並進一步挖掘它與make和make install,一切工作正常,除了下載它保存在「/ etc」位置的tar球時,我希望cfengine把這個文件放在/ tmp。自定義CFEngine3臨時下載的文件位置

是否有任何方法來定製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 /命令.cf),也許其中一個可以使用,所以你不必自己寫。請注意,CFEngine已經以root身份執行,因此exec_owner => "root"不是必須的。

+0

完美先生Zamboni :) – Yogi