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,

simon.oxw...@controlcircle.com <mailto:simon.oxw...@controlcircle.com> 

London, E14 4AB

 

 

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

Reply via email to