On 02/21/2012 09:22 AM, no-re...@cfengine.com wrote:
> Forum: CFEngine Help
> Subject: Re: Divide Repository
> Author: rsdejo...@gmail.com
> Link to topic: https://cfengine.com/forum/read.php?3,24964,24967#msg-24967
> 
> Thanks , this is exacly what I was looking for thanks very much
> Grz rob

There is nothing wrong with using copy_from, but if you want to do it
with edit_lines instead you can look at config_yum_client_repos from

https://github.com/nickanderson/nickanderson-cfengine-library/blob/master/lib_rh.cf

Here is an example.

-- 
Nick Anderson <n...@cmdln.org>

body common control {

bundlesequence => {
"main",
};

inputs => {
"cfengine_stdlib.cf",
};
}

bundle agent main {

vars:
        # config_yum_clinet_repos will create /etc/yum.repos.d/baseline.repo 
based on the settings provided
        redhat_5_7::
            "setrepo[baseline][name]"         string => "RedHat 5.7 Release 
Base OS";
            "setrepo[baseline][baseurl]"      string => 
"http://192.0.2.1/cobbler/ks_mirror/rhel-5.7-x86_64/Server";;
            "setrepo[baseline][enabled]"      string => "0";
            "setrepo[baseline][gpgcheck]"     string => "no";

        redhat_5_5::
            "setrepo[baseline][name]"         string => "RedHat 5.5 Release 
Base OS";
            "setrepo[baseline][baseurl]"      string => 
"http://192.0.2.1/cobbler/ks_mirror/rhel-5.5-x86_64/Server";;
            "setrepo[baseline][enabled]"      string => "0";
            "setrepo[baseline][gpgcheck]"     string => "no";

methods:

    "yum" usebundle => config_yum_client_repos("main.setrepo");

}

bundle agent config_yum_client_repos(config){
# Expects array with yum repo configurations
# vars:
# "setrepo[repositoryid][name]" string => "RedHat 5 Updates";
# "setrepo[repositoryid][baseurl]" string => 
"url://server1/path/to/repository/";
# "setrepo[repositoryid][metalink]" string => "";
# "setrepo[repositoryid][mirrorlist]" string => "";
# "setrepo[repositoryid][enabled]" string => "";
# "setrepo[repositoryid][gpgcheck]" string => "";
# "setrepo[repositoryid][repo_gpgcheck]" string => "";
# "setrepo[repositoryid][gpgkey]" string => "";
# "setrepo[repositoryid][gpgcakey]" string => "";
# "setrepo[repositoryid][exclude]" string => "";
# "setrepo[repositoryid][includepkgs]" string => "";
# "setrepo[repositoryid][enablegroups]" string => "";
# "setrepo[repositoryid][failovermethod]" string => "";
# "setrepo[repositoryid][keepalive]" string => "";
# "setrepo[repositoryid][timeout]" string => "";
# "setrepo[repositoryid][http_caching]" string => "";
# "setrepo[repositoryid][retries]" string => "";
# "setrepo[repositoryid][throttle]" string => "";
# "setrepo[repositoryid][bandwidth]" string => "";
# "setrepo[repositoryid][sslcacert]" string => "";
# "setrepo[repositoryid][sslverify]" string => "";
# "setrepo[repositoryid][sslclientcert]" string => "";
# "setrepo[repositoryid][metadata_expire]" string => "";
# "setrepo[repositoryid][mirrorlist_expire]" string => "";
# "setrepo[repositoryid][proxy]" string => "";
# "setrepo[repositoryid][proxy_username]" string => "";
# "setrepo[repositoryid][proxy_password]" string => "";
# "setrepo[repositoryid][username]" string => "";
# "setrepo[repositoryid][password]" string => "";
# "setrepo[repositoryid][cost]" string => "";
# "setrepo[repositoryid][skip_if_unavailable]" string => "";
#
# methods:
# "any" usebundle => config_yum_client_repos("context.setrepo");

    vars:
        # Hopefully someday getindices will support multidimensional arrays and 
we
        # can get rid of this valid_entries list.
        "valid_entries" slist => { "name", "baseurl", "metalink", "mirrorlist",
                                    "enabled", "gpgcheck", "repo_gpgcheck",
                                    "gpgkey", "gpgcakey", "exclude",
                                    "includepkgs", "enablegroups", 
"failovermethod",
                                    "keepalive", "timeout", "http_caching", 
"retries",
                                    "throttle", "bandwidth", "sslcacert", 
"sslverify",
                                    "sslclientcert", "metadata_expire", 
"mirrorlist_expire",
                                    "proxy", "proxy_username", "username", 
"password", "cost",
                                    "skip_if_unavailable", };

        "repoids" slist => getindices("$(config)");

    files:
        "/etc/yum.repos.d/$(repoids).repo"
            create => "true",
            edit_line => prepend_if_no_line("[$(repoids)]");

        # Using replace_or_add instead of set_variable_values2 here because we
        # need to loop on the second dimension of the array and getindices does
        # not currently support that, we use the valid_entries list instead.
        "/etc/yum.repos.d/$(repoids).repo"
            create => "true",
            edit_line => replace_or_add("$(valid_entries)=.*", 
"$(valid_entries)=$($(config)[$(repoids)][$(valid_entries)])"),
            comment => "Completely manage specific repo settings";

}
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to