Forum: Cfengine Help
Subject: Re: How to make a policy server watch a subversion server for changes?
Author: danders5
Link to topic: https://cfengine.com/forum/read.php?3,17833,17834#msg-17834
I use a cfengine policy to update my subversion... Below is basically what I
have.
then I use a exec_command like the following for policy server machines.
my subversion repository
/trunk is the development repository
/tags/production is the tag that 99% of the systems use.
So when I update trunk it immediately goes out to test systems, and then once
up roll the changes up to the production tag the real systems get it.
exec_command => "/usr/sbin/cf-agent -f failsafe.cf; /usr/sbin/cf-agent -f
policy_svn.cf; /usr/sbin/cf-agent";
Below is my svn update policy file. It has my cfengine2 and cfengine3 policy
in seperate directories.
##policy_svn.cf
#
# Special cfengine policy set for updating the policy from the svn server
#
body common control
{
inputs => { "classes.cf", "cfengine_stdlib.cf" };
policy_servers::
bundlesequence => { "svn_package", "svn_checkout", "svn_update" };
!policy_servers::
bundlesequence => { "svn_not_policyhost" };
}
bundle common defaults
{
vars:
"dcs_repos_base" string => "/usr/dcs/cfengine";
"repos_base" string => "/usr/engr/cfengine";
"svn_account" string => "svc-cfengine";
"svn_password" string => "intentionallyblank";
"svn_options" string => "--username=$(svn_account)
--password=$(svn_password) --no-auth-cache --non-interactive";
"svn_url" string => "https://subversion.cs.illinois.edu/svn/cfengine3";
"dcs_svn_url" string =>
"https://subversion.cs.illinois.edu/svn/cfengine";
classes:
"has_repos_base" expression => isdir("$(defaults.repos_base)");
"need_devel_repos" not => isdir("$(defaults.repos_base)/development");
"need_prod_repos" not => isdir("$(defaults.repos_base)/production");
"has_dcs_repos_base" expression => isdir("$(defaults.dcs_repos_base)");
"need_dcs_devel_repos" not =>
isdir("$(defaults.dcs_repos_base)/development");
"need_dcs_prod_repos" not =>
isdir("$(defaults.dcs_repos_base)/production");
}
bundle agent svn_not_policyhost
{
reports:
!policy_servers::
"This is not a policy host system and shouldn't execute this
policy";
}
bundle agent svn_package
{
packages:
linux::
"subversion"
package_policy => "add",
package_method => generic;
}
bundle agent svn_checkout
{
commands:
#
# Engineering CFEngine 3 repository - /usr/engr/cfengine
#
need_devel_repos.has_repos_base.linux::
"/usr/bin/svn co $(defaults.svn_options) $(defaults.svn_url)/trunk
development"
contain => in_dir("$(defaults.repos_base)");
need_prod_repos.has_repos_base.linux::
"/usr/bin/svn co $(defaults.svn_options)
$(defaults.svn_url)/tags/production production"
contain => in_dir("$(defaults.repos_base)");
#
# DCS cfengine 2 repository - /usr/dcs/cfengine
#
need_dcs_devel_repos.has_dcs_repos_base.linux::
"/usr/bin/svn co $(defaults.svn_options)
$(defaults.dcs_svn_url)/trunk development"
contain => in_dir("$(defaults.dcs_repos_base)");
need_dcs_prod_repos.has_dcs_repos_base.linux::
"/usr/bin/svn co $(defaults.svn_options)
$(defaults.dcs_svn_url)/tags/production production"
contain => in_dir("$(defaults.dcs_repos_base)");
}
bundle agent svn_update
{
commands:
#
# Engineering CFengine3 repository - /usr/engr/cfengine
#
!need_devel_repos.has_repos_base.linux::
"/usr/bin/svn $(defaults.svn_options) update"
contain => in_dir("$(defaults.repos_base)/development");
!need_prod_repos.has_repos_base.linux::
"/usr/bin/svn $(defaults.svn_options) update"
contain => in_dir("$(defaults.repos_base)/production");
#
# DCS CFEngine 2 repository - /usr/dcs/cfengine
#
!need_dcs_devel_repos.has_dcs_repos_base.linux::
"/usr/bin/svn $(defaults.svn_options) update"
contain => in_dir("$(defaults.dcs_repos_base)/development");
!need_dcs_prod_repos.has_dcs_repos_base.linux::
"/usr/bin/svn $(defaults.svn_options) update"
contain => in_dir("$(defaults.dcs_repos_base)/production");
}
- Show quoted text -
--
David Anderson
[email protected]
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine