[Spacewalk-list] How to update running applications?

Adrián Márques amarques at geocom.com.uy
Thu Oct 9 20:01:13 UTC 2008


Thank you Michael for all of your valuable feedback.

Yes, ooffice is not the best example. I just wanted to illustrate that 
operators will be working against a GUI, which can't just restart 
apparently out of its own volition whenever there's an update.

> For starters, RPM is a package format, yum is the updater.     
> Deciding when you want to do updates is a good thing to be thinking 
> about.  
> Configuring spacewalk to /not/ pull down updates automatically is I 
> presume doable (spacewalk folks?), in which case you can just push 
> them out when you want (Spacewalk also have a facility to do this as 
> well and can probably explain better). 

Maybe I wasn't clear with my previous mail. I do understand the 
difference between RPM and YUM. I know that from the spacewalk POV I 
could push the updates at specific times, but to the best of my 
knowledge this gives me no guarantee the updates will be applied to the 
clients at a specific time. Furthermore, I'm thinking of administering 
as much as well over a thousand hosts this way, in an environment were 
mantainance windows could be quite impractical to enforce. Thus I though 
of having the yum-rhn plugin download all rpms in the backgound, while 
the app might be running, and have them installed when I know I can 
restart the app without inconveniences. I'd also have to ensure that the 
app can't be started while an update is taking place.

I hope with this I took care of any preceding ambiguities in my intentions.

So I restate my questions: Do you consider this a terrible solution? Am 
I trying to defeat RPM/YUM/Spacewalk design with this? Is there a better 
alternative?

Thank you all.

Adrián.

Michael DeHaan escribió:
> Adrián Márques wrote:
>> Thanks a lot Michael.
>> I'd never heard of condrestart before and your other suggestions also 
>> seem to be more than worth checking out.
>>
>> If I understood you correctly though, the advice you are giving me is 
>> geared towards updating services and in the process 
>> starting/stopping/restarting them based on conditions (I'll be 
>> looking into the links you provided to verify whether this is right). 
>> The conundrum I'm facing is that this is a desktop app, picture 
>> ooffice as an example, and I can't restart it while the users are 
>> logged in it.
>>
> office doesn't have a backend service, so that may not be the best 
> example.
>
> In either case, you'd want to deploy your new software in a window 
> where it made since to do it.   
>> The hosts were this app will be running will be dedicated, so I'm 
>> leaning towards the idea of hacking the spacewalk client as I 
>> mentioned before (so it won't install the updates until told to) and 
>> periodically install downloaded rpms either at boot time or whenever 
>> I can ensure that no users are logged into this app. Do you consider 
>> this a terrible solution? Am I trying to defeat RPM with this? Is 
>> there a better alternative?
>>
> For starters, RPM is a package format, yum is the updater.     
> Deciding when you want to do updates is a good thing to be thinking 
> about.  
> Configuring spacewalk to /not/ pull down updates automatically is I 
> presume doable (spacewalk folks?), in which case you can just push 
> them out when you want (Spacewalk also have a facility to do this as 
> well and can probably explain better).
>
>
>
>> Thanks.
>>
>> Adrián.
>>
>> Michael DeHaan escribió:
>>> Gerhardus.Geldenhuis at gta-travel.com wrote:
>>>> Hi Adrián,
>>>> The question is probably more suitable on a rpm list.
>>>> We don't distribute our jar's with rpm but I appreciate your dillema.
>>>>
>>>> I don't personnally think that for such complex applications, rpm 
>>>> is the right way to upgrade with. I see rpm has a way to distribute 
>>>> "core" stuff, and not suitable for distributing weird and 
>>>> wonderfull applications that requires restarts and database 
>>>> upgrades etc. There is application servers and frameworks that is 
>>>> better suited for this type of thing and that sits on a logically 
>>>> higher level. JBoss, Wesphere and I think even tomcat has some 
>>>> basic stuff build in.
>>>>
>>>> Regards
>>>>
>>>>   
>>>
>>> This is generally true only for applications that are packaged 
>>> /poorly/.   Properly packaged RPMs can be configured to do 
>>> "condrestart" as needed.
>>>
>>> If you need something more advanced, this is typically where you 
>>> would want to look at something like puppet/cfengine/bcfg2 where you 
>>> can describe the state you want your services to be (and remain) in.
>>>
>>> Also you may be interested in a simple tool such as Func 
>>> (http://fedorahosted.org/func) for restarting services remotely.   
>>> It is in many ways easier to deploy than SSH and also provides you a 
>>> way of defining arbitrary groups of systems to send commands to.
>>>
>>> --Michael
>>>>> -----Original Message-----
>>>>> From: spacewalk-list-bounces at redhat.com 
>>>>> [mailto:spacewalk-list-bounces at redhat.com] On Behalf Of Adrián 
>>>>> Márques
>>>>> Sent: 06 October 2008 18:45
>>>>> To: spacewalk-list at redhat.com
>>>>> Subject: [Spacewalk-list] How to update running applications?
>>>>>
>>>>> Dear all,
>>>>>
>>>>> I'm having a difficult time in finding the correct forum to pose 
>>>>> this question since I guess it's part spacewalk, part RPM, part 
>>>>> basic aplication design.
>>>>>
>>>>> Being an RPM end-user for years I had always assumed that updating 
>>>>> running apps was a piece of cake with RPM. After all, I always did 
>>>>> it and the most I got were occasional messages such as "Firefox 
>>>>> restart required", never encountering other side-effects.
>>>>>
>>>>> However, after reading through the RPM guide, getting my hands 
>>>>> dirty trying to package an app, scouring the internet for info and 
>>>>> asking around in the RPM mailing list, I'm still not sure how to 
>>>>> write my RPM so updating won't be an issue.
>>>>>
>>>>> The scenario is the following: I'd like to use spacewalk to 
>>>>> distribute a custom desktop app. Hence, it's unavoidable that some 
>>>>> users will be working at the time of an update. So far I've 
>>>>> identified two problems with this, 1) If I have to modify the 
>>>>> app's database schema as part of the update, the running app might 
>>>>> break down if it's not aware of the change 2) This happens to be a 
>>>>> java app, so in case a jar gets updated a class might get loaded 
>>>>> that is not compatible with those already loaded by the running app.
>>>>>
>>>>> I understand that what I've explained so far might be outside of 
>>>>> the scope of the subjects treated in this mailing list, if so, 
>>>>> please just treat it as a detailed background problem description.
>>>>>
>>>>> What I would like to know from you guys is whether you've had any 
>>>>> problems when updating apps through Satellite/Spacewalk due to 
>>>>> them being running at the time or what precautions (if any) you 
>>>>> take when doing so.
>>>>>
>>>>> Finally, I suppose that as a last resort I could hack the 
>>>>> spacewalk client to only download updates and not install them 
>>>>> until it is told to do so from the command line. Is this already 
>>>>> possible? If not, where's the place to start with hacking this?
>>>>>
>>>>> I thank you all for your time and attention. It'd be amazing if 
>>>>> you had any comments regarding my background issue, but I'll be 
>>>>> more than satisfied and grateful if you could just provide any 
>>>>> feedback on those questions strictly spacewalk-related.
>>>>>
>>>>> Thanks.
>>>>>
>>>>> Adrián.
>>>>>
>>>
>




More information about the Spacewalk-list mailing list