Hello,
so far, I've seen systems like 'yum' being used for single systems.
Do you know of any update manager (or some approach), that takes into
account package dependendies and functional dependencies across hosts?
Here's a short example to show what I mean:
--------------------------------------------------------------------
Imagine the following three-tier application running on 5 servers:
S1 is a database server with a DBMS V3.4
S2 is a backup database server serving as cold standy server
DBMS versions on S1 and S2 should be sync'ed
S3+4 are app servers that run a web application with a database client,
which accesses the database server
S5 is a web server, that forwards incoming requests to the app
servers, while serving some static content
---------------------------------------------------------------------
I now would like to run some "dist-yum update" on one of the machines,
which does the following:
1) find out there is a new version 4.0 of the database on S1
-> schedule update ( S1, DB V3.4, DB 4.0)
2) see that S2 is the backup server (this is modelled or configured
somewhere by the admin)
-> schedule update ( S2, DB V3.4, DB 4.0)
3) see that DB 4.0 requires to update the db clients
-> the system finds out, that the client software need to be updated
-> it finds the hosts, which run the clients, that access the database
-> schedule update ( S3, DBClient V3.4, DB 4.0)
-> schedule update ( S4, DBClient V3.4, DB 4.0)
4) see, that server 5 is not affected
5) do all the updates in some sequential or parallel style (the system
can use some predefined key-based authentication and authorization to
run jobs at the other hosts)
6) run predefined distributed tests (coming with the packages)
7) if all tests are ok: perfect
if tests fail : rollback all updates on all hosts
-------------------------------------------------------------------
I kept the inter-host dependencies simple in this example, you can
probably imagine more complex scenarios, where this system would be
really helpful. The aim is to have support for the *coordinated* update
of multiple hosts in distributed systems. The whole update (DB clients +
DB server) should be regarded as one transaction, which either completes
successfully or leaves the hosts in their original state.
I know that Auto-RPM can come close: By assigning a certain repository
to S1-S5, that you as an admin can control, you can (for example) load
DB 4.0 and DBClient 4.0 into it at a certain date, and the servers will
install the software at the next update cycle. But this is no
distributed transaction. In addition, no tests are run, whether the
pieces fit together.
Once again the question: Do you know of any update manager (or some
approach), that takes into account package dependendies and functional
dependencies across hosts?
This scenario is especially applicable to virtual servers or clusters.
Ralf
PS: If you know of a news group or mailing list where this question is
more relevant, please let me know.