CFE语法错误

时间:2016-04-19 20:35:19

标签: syntax cfengine

尝试编写一个cfengine3承诺,它将占用整个目录并将其向下移动一级。

我已经使用我的政策中心来分发承诺,但我还没有把它折叠成我的主动承诺。

这是承诺:

body common control

{

        bundlesequence => { dirstructure };
}


#Find out by existance of directories if filesystem is old structure or new
#Set classes for each instance. If old, copy down one level.
#If new file system already, pat yourself on the back

bundle agent dirstructure
{     
classes:

    "oldFILEstructure"expression => isdir("/old/dir/structure/");
    "newFILEstructure" expression => isdir("/new/dir/structure/");


reports:

    oldFILEstructure::
        "system has old file structure..";
    newFILEstructure::
        "system has new file structure..";

methods:
    oldFILEstructure::
        "migratedirectories" usebundle => movedirectories
}

bundle agent movedirectories

{
files:
        "/new/dir/"

        copy_from => local_cp ("/old/dir/structure/.");
        depth_search => recurse ("inf");
}

我已经使用this "isdir"来源和this example来获取local_cp,这两者都是来自CFE的承诺。 调用时,我得到以下错误输出,我试图找出原因。

:/var/cfengine/inputs/standalone# cf-agent --no-lock --inform --file ./file_structure.cf
./file_structure.cf:41:12: error: syntax error
depth_search => recurse ("inf");
           ^
./file_structure.cf:41:12: error: Expected promiser string, got 'depth_search'
depth_search => recurse ("inf");
           ^
./file_structure.cf:41:15: error: Expected ';', got '=>'
depth_search => recurse ("inf");
              ^
./file_structure.cf:41:23: error: Expected promiser string, got 'recurse'
depth_search => recurse ("inf");
                      ^
./file_structure.cf:41:25: error: Expected ';', got '('
depth_search => recurse ("inf");
                        ^
./file_structure.cf:41:31: error: Expected ';', got ')'
depth_search => recurse ("inf");
                              ^
./file_structure.cf:41:32: error: Expected promiser string, got ';'
depth_search => recurse ("inf");
                               ^
./file_structure.cf:42:1: error: Expected ';', got '}'
}

1 个答案:

答案 0 :(得分:2)

files:
        "/new/dir/"

        copy_from => local_cp ("/old/dir/structure/.");
        depth_search => recurse ("inf");
}

你在copy_from行的末尾有一个额外的分号。

分号;标识承诺的结束。尝试将copy_from行末尾的分号切换为逗号,

files:
        "/new/dir/"

        copy_from => local_cp ("/old/dir/structure/."),
        depth_search => recurse ("inf");
}

此外,您可能需要查看transformer属性。 它可能会或可能不适合您的情况。\

bundle agent example
{
    files:
      "/old/dir/structure" -> { "jira:EXAMPLE-1234" }
        transformer => "/bin/mv /old/dir/structure /new/dir/structure",
        comment => "The standard is to use the new location because x, y, z. Bad thing Q or U might happen if this is not managed properly.";
}