Skip to content

Instantly share code, notes, and snippets.

@nickanderson
Created February 22, 2012 06:43
Show Gist options
  • Save nickanderson/1882511 to your computer and use it in GitHub Desktop.
Save nickanderson/1882511 to your computer and use it in GitHub Desktop.
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";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment