Hi all,
I've seen solutions on this list in the past about installing packages
in Solaris via cfengine, and I working through the document and some
examples I have a structure that works very well for installing packages
where none exist (hooray!), but I'm now up to the point where I need to
update said packages with a new one.
So far, I haven't been able to get anything to work.
So, for example:
bundle agent pkg_cfengine3 {
vars:
"master_servers" slist => { "cfpolicyhost" };
"package_location" string => "/u01/packages/sparc";
"solaris_packages[CCcfengine3]" string =>
"cfengine-3.0.5p1-sol10-sparc-opt-cctools";
"solaris_package_versions[CCcfengine3]" string => "3.0.5p1";
"admin_file" string => "cfengine_admin_file";
# manually create pkgnames to preserve order
"package_names" slist => { "CCcfengine3" };
files:
"/var/tmp/$(admin_file)"
create => "true",
edit_defaults => empty,
edit_line => create_admin_file;
"/u01/pkgs/sparc/$(solaris_packages[$(package_names)])"
perms => m("700"),
copy_from =>
mycopy("$(package_location)/$(solaris_packages[$(package_names)])",
@(master_servers)),
action => immediate;
packages:
"$(package_names)"
package_policy => "add",
package_method => cc_solaris("$(package_names)",
"$(solaris_packages[$(package_names)])", "/u01/pkgs/sparc",
"$(admin_file)"),
package_version =>
"$(solaris_package_versions[$(package_names)])",
package_select => ">";
}
###
body package_method cc_solaris (pkgname, spoolfile, spooldir, adminfile)
{
package_changes => "individual";
package_list_command => "/usr/bin/pkginfo -l";
package_multiline_start => "\s*PKGINST:\s+[^\s]+";
package_list_name_regex => "\s*PKGINST:\s+([^\s]+)";
package_list_version_regex => "\s*VERSION:\s+([^\s]+)";
package_list_arch_regex => "\s*ARCH:\s+([^\s]+)";
package_installed_regex =>
"\s*STATUS:\s*(completely|partially)\s+installed.*";
package_name_convention => "$(name)";
package_add_command => "/usr/sbin/pkgadd -n -a /var/tmp/$(adminfile)
-d $(spooldir)/$(spoolfile)";
package_delete_command => "/usr/sbin/pkgrm -n -a
/var/tmp/$(adminfile)";
}
###
bundle edit_line create_admin_file
{
insert_lines:
"mail=
instance=unique
partial=nocheck
runlevel=nocheck
idepend=nocheck
rdepend=nocheck
space=nocheck
setuid=nocheck
conflict=nocheck
action=nocheck
networktimeout=60
networkretries=3
authentication=quit
keystore=/var/sadm/security
proxy=
basedir=default";
}
I've tried a package_policy of 'update', but there's no method defined,
and solaris doesn't really have an update method, and the package_policy
'reinstall' seems ideal as it deletes and then installs a package, but
it doesn't seem to work as expected across package version numbers.
Does anyone have a working solution that still uses cfengine's package
management bits?
Simon
--
Simon Oxwell
ControlCircle
Senior Server Engineer
The Datacentre People
0044 (0)20 7517 6594
Hertsmere House, 2 Hertsmere Road,
[email protected] <mailto:[email protected]>
London, E14 4AB
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine