Has anyone used Net::SSH within a RoR project?
What I’m looking at is to write an internal RoR app whose sole purpose
is to deploy other software to internal servers/systems.
These are not RoR apps to be deployed. They are a wide arrange of
products ranging from Weblogic and Websphere java apps, to C# client
apps, to Vitria BW apps.
Also for auditing reasons only certain users are allow to deploy
software or have access to certain environments like production. They
don’t want developers free access to these areas.
The other major problem is each deployment of the same product is not
always the same. There could be many permitations for one type of
product, but then again for a different product it may always be
delivered the same way. Wish all were this way.
So, I invision a RoR app the will:
Authenticate a user and role they play in the deployment:
Scheduler (aka a manager like a change manager)
Release Manager (aka one that actually has authority to the target
systems and will authorized the deployment)
Observer (aka any user that wish to see the progress or status of a
deployment: developers, PM, key players)
Have Deployment Templates so the Scheduler creates a deployment from
and the RM authorizes and adjusts accordingly. This will contain
various tasks like Serial, Parallel, load ssh keys, transfer files,
execute remote commands, send emails, connect to admin consoles on
remote systems to execute scripts, etc
Obviously a scheduling calendar
bj gem to execute the deployment in the background
There is more to this, but those are the basics.
The guts of this is when it will ssh to remote systems and it will
remote to the weblogic /websphere admin servers.
It looks like I can use Net::SSH. I could store the RM keys and hash
the passphrase in the DB. The RM would supply the passphrase when he/
she authorizes the deployment. I was wondering if I could attach an
ssh-agent to the rails app and add/delete keys as needed. Has anyone
ever done this?
Now for the weblogic and websphere admin scripts: I have searched,
but found no documentation on a Ruby API(gem) for either of these. I
did find a python API supplied by WL. I think I’ll still have to use
ant here and have bj exec a shell command to ant. Both WL and WS
supply java API ant tasks to access the admin servers. Does anyone
know of a better way to access WL and WS admin servers or use java ant
tasks in ruby/jruby?
The company is looking at using BladeLogic to do all this. I have
read some of the documents on it, but could not figure out if it
actually will work. They have a thing call Network Shell for remote
work, but no details on it like: can it do ssh, can it sudo to execute
something as another user? does it have roles? is is fexible enough
for many different various deployments for a product (templates)?
Sorry, this was a little off topic. I just want to know if I’m
wasting my time or has this been tried by someone.