[Soc-coordination] Aptitude GTK Remote Host Management Proposal

Sagie sagiea at bgu.ac.il
Thu Apr 2 01:38:35 UTC 2009


Bellow is the gist of my proposal. Any and all feedback much
appreciated. 

--- Synopsis ---
Add remote host package management through Aptitude GTK. The current
local interaction with apt will be extended to span across SSH
connections to remote hosts. In addition, the UI will be extended to
incorporate a comparison view similar in nature to SVN code merge views.
This will list differences in package configurations & versions between
hosts while allowing to selectively synchronize differences. Design will
aim at allowing future non GTK front-end developers to reuse
functionality.

--- Benefits to Debian ---
   - Apt is already a 'killer-feature' of Debian. The proposed addition
will make it an even more appealing
     candidate for network deployments by offering easier, centralized
network package administration
   - Code re-usability : core functionality will be available to non GTK
+ front-end developers
   - Security : easier management of security network patch deployment
   - UI accessibility will lower the adoption barrier for users
accustomed to GUI tools

--- Project details ---
With networks comprised of multi apt based hosts becoming larger & more
common, the need for a tool capable of coordinating package management
at the network scale becomes essential. The aptitude GTK initiative is a
step in the right direction, but it is currently limited to local host
operations. This project aims to build on top of the effort put into
apt-gtk by enabling it to manage hosts remotely. The fact that
operations are taking place remotely should be as transparent as
possible. Although UI augmentation is one of this project's objectives,
core functionality is regarded as more important. Design should aim at
enabling future UI front-ends to reuse core functionality.

Remote package management may prove useful to several user groups : 
- by offering users who alternat between several apt based machines the
ability to install new packages a single time easily on all the systems
they use.
- by offering network administrators an easy way to deploy network
installations / custom packages.
- by enabling developers of network monitoring tools to use the remote
module to as a standalone component and channel it's output to non GTK
front-ends such as QT & HTML.


--- Sought Features & Implementation ---
Basically the idea is simple : abstract the fact we are administering
apt remotely - this will be achieved by generating an interface
containing a most of the functionality present in 'apt.cc' which
'local_apt' & 'remote_apt' classes will implement. All remote apt
functions will be piped through the SSH channel.

[-] modular design
All functionality related to package configuration comparison will be
extracted to a separate module, possible compiled as a standalone
library. This may be used by network management tools such as nagios.

[-] SSH communication channels with remote apt hosts
SSH interaction may use pssh, openssh or similar. Although ultimately
apt would adopt a full client-server model this is beyond the scope of
this project. I am still investigating the applicability of using RPC to
remotely invoke libapt. Output parsing is another option, though one
which should be avoided if possible. Establishing exactly which files
should be imported via the network is to be established after consulting
the Debian community.

[-] diff style comparisons of apt configurations
given a packages configurations of hosts A & B, generate A/B, B/A, &
intersection outputs along with package version comparison. This would
be later on used by the merge view when synchronizing apt
configurations.

[-] batch operations
ability to install / remove / ... a package 'network wide'. This will
save the need to install a newly adopted package repeatedly on each
host. Later on this would be linked to the UI as a context-menu option.

[-] UI integration
Once these capabilities are implemented at the core level linking them
into the UI should be relatively straightforward. this will take place
in the form of a dedicated tab for each host being administered -
current 'Dashboard' tab will be renamed to indicate the currently
managed host.

--- Current Tools ---
'check_apt' is a nagios plugin which checks for software updates through
apt-get written in c. The main problems here are that it requires the
installation of nagios & the face it is narrowly targeted at automatic
update retrieval. It uses a basic command line remote control model.

'cron-apt' / apticron are all narrowly aimed at updates

These tools lack can't be used interactively & offer limited
scalability.

--- Deliverables ---
   1. SSH based communication with remote apt based hosts, preferable as
a standalone library
   2. An abstraction layer between local & remote apt instances
   3. Comparison functionality between apt configurations :
      - present local packages absent remotely & vice versa
      - version differences
      - outstanding remote security updates
   4. Network wide installs / removals etc.
   5. UI configuration merge view
   6. Per host configuration inspection view




More information about the Soc-coordination mailing list