Project

General

Profile

Actions

User story #8230

closed

Package management issues in Rudder/ncf

Added by Alexis Mousset about 8 years ago. Updated about 2 years ago.

Status:
Rejected
Priority:
N/A
Category:
Techniques
UX impact:
Suggestion strength:
User visibility:
Effort required:
Name check:
Fix check:
Regression:

Description

Status of package management

This table only considers latest versions of techniques and generic methods.

name OS body package list update frequency (yum update, etc.) package list update frequency configurable? handles installing "latest" version available updates list frequency configurable? handles "update or add if not installed" handles "install a specific, not latest version" execution frequency configurable (class persistence)
rpm package installation 7.0 technique RHEL/CentOS/SLES generic_nobulk (in the technique) 30 minutes no yes yes (default is 60 minutes) no no yes (default to 60 minutes)
apt package installation 4.0 technique Ubuntu/Debian apt_nobulk (in the technique) 30 minutes no no no no no no
package_install_* generic methods Debian/Ubuntu apt_get (in cfengine stdlib) 240 minutes no no no yes no no
package_install_* generic methods RHEL/CentOS yum_rpm (in cfengine stdlib) 240 minutes no no no yes no no
package_install_* generic methods SLES ncf_generic (in ncf stdlib) 240 minutes no no no yes yes no
package_{present,absent} generic methods RHEL,Debian/Ubuntu,FreeBSD 240 minutes no yes no yes yes no
Constraints:
  • The addupdate action does not work
  • We need to handle "update to latest version" manually using a list of available updates to call CFEngine with a precise version
  • ncf does not (currently) handles reporting for multiple calls with the same generic method on the same package
  • We have to stay compatible with all current package management methods
Goals:
  • Ability to ensure the package is in "latest" version
  • Ability to update or install if needed in a single action
  • Flexibility on caching/execution frequency to allow:
    • Fast actions (provisioning, security updates, ...)
    • Low overhead on small/embedded devices
  • Fix targeting current versions, at least 3.1

Option 1

Make one configurable package management method working properly and use it everywhere.

  • Use ncf_generic body everywhere in ncf
  • Add available updates list support to package_install_*
    • Move rpm support to the generic method
    • Add apt support
  • Make list update frequency configurable
    • ncf configuration parameter ?
    • Generic method parameter ?
  • Make a new version of RPM and APT package techniques using package_install_
Issues:
  • Some people implemented addupdate using directives with add+update on the same package, which cannot be handled properly with ncf reporting

Option 2

Make one configurable package management method working properly in ncf, and fix packages techniques by handling add + update actions

  • Use ncf_generic body everywhere in ncf
  • Add available updates list support to package_install_*
  • Add support for available updates in apt technique
  • Make list update frequency configurable in ncf (and maybe in the techniques too)
    • ncf configuration parameter ?
    • Generic method parameter ?
Issues:
  • Duplicates a lot of logic in ncf/techniques

Other notes

We should have a plan to migrate to the new CFEngine package promises, which are now the default in 3.9. This should widely simplify our code on new CFEngine version (Rudder 3.2+). We can use if_version macro feature for this, which will be easier if all package operations are done in a single place.


Related issues 7 (0 open7 closed)

Related to Rudder - User story #6994: Technique aptPackageInstallation doesn't update packages if no version is definedRejectedActions
Related to Rudder - User story #8207: Make package_list_update_ifelapsed configurable in rpmPackageInstallationRejectedAlexis MoussetActions
Related to Rudder - Bug #7119: Wrong reporting in rpmPackageInstallation when trying to update a non-existent packageRejectedActions
Related to Rudder - User story #4298: Install / upgrade packagesRejected2013-12-30Actions
Related to Rudder - Bug #8167: package_install_version_cmp_update should handle all needed package operationsRejectedAlexis MoussetActions
Related to Rudder - User story #2221: Check which packages are installed frequencyRejectedActions
Related to Rudder - User story #8952: Add generic methods using new package promisesReleasedJonathan CLARKEActions
Actions

Also available in: Atom PDF