Talk to/config your machines. Like a god.
gem install jah
To create a config repo:
jah new <path>
To create a config file for XMPP:
Just run it for the first time to create a config file.
jah install to force the wizard again.
Jah will try to find a
jah.yaml file on ~/.jah or /etc.
- ArchLinux (tested)
- Mac OS X (tested)
- CentOS (tested)
- Debian (tested)
Gems required for config mode:
Gems required for XMPP mode:
Jah has two modes you can use separately:
Jah new will create a tree like this:
|- hosts.yml |- config | |- deploy.rb |- example | |- deploy.rb | |- files/ | |- scripts/
THIS IS ALL SUBJECT TO BIG CHANGE! Some nice DSL coming soon hehe...
In hosts.yml, you inform all your servers and which profiles you want in them.
Config deploy is just a "system wide" place for your custom tasks.
Example is a sample profile: Deploy works as you might expect, you can define tasks and use capistrano syntax all along.
Notification/command dispatch via XMPP!
Chat with your server with your favorite XMPP client (pidgin, adium..) Receive reports and failures realtime! Send commands and
The old school way. Set up a Jah Web Server, and give Jah it`s address. Jah will periodically post info. You can send commands through SSH.
AkA: Security freak. Jah just writes to tmp/ or whatever a dump file, Jah Web securely connects (scp) and downloads the data to parse.
Execute sh commands:
pwd $> /home/jah
Executing ruby statements:
! 2 + 2 => 4 ! def foo; "hi"; end ! foo => "hi"
Execute Jah commands:
cpu? msweet: 0.14, 0.25, 0.14 mem? msweet: 53% net? 7 connections [ips...] ok? [Personalized cool phrase...]
me: ok? msweet: I'm fine, thanks.. ssaint: Kinda busy right now.. naomi: I need you! NOW!
Create a pubsub:
pub create foo jah: Done.
Publish to it:
foo: pubbin and dubbin from jah! jah: Published.
pub mine jah: Pubsubs Owner: foo
pub all jah: All Pubsubs => /foo => /bar
Subscribe to bar:
pub sub bar jah: Done.
Unsubscribe to bar:
pub unsub bar jah:Done.
Destroy a pub:
pub destroy foo jah: Done.
Start, stop, restart, monitor and unmonitor words on the beginning of a phrase will make Jah add a "god" on the front of it, making it trivial to work with your services:
start nginx restart nanites unmonitor postgresql
Note on Patches/Pull Requests
- Fork the project.
- Make your feature addition or bug fix.
- Add tests for it. This is important so I don't break it in a future version unintentionally.
- Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
- Send me a pull request. Bonus points for topic branches.
Copyright (c) 2011 Marcos Piccinini. See LICENSE for details.