Koma is an inventory monitoring tool that doesn’t require agent installation on the sever side.
Installation
Add the following line to your application's Gemfile:
gem 'koma'And then execute:
$ bundleOr install it yourself as:
$ gem install komaUsage
Gather remote host inventory
If you login remote server via ssh example.com, you can execute:
$ koma ssh example.comAnd gather host inventory stdout like this.
Gather local host inventory
$ koma execGather host inventory from multiple hosts
$ koma ssh example.com,example.jp
{
"example.com": {
...
},
"example.jp": {
...
}
}Pro Tip: Gather host inventory from multiple hosts with ssh_config
$ cat <<EOF > ssh_config_tmp
Host example_com
User k1low
Hostname example.com
PreferredAuthentications publickey
IdentityFile /path/to/example_rsa
Host example_jp
User someone
Hostname example.jp
PreferredAuthentications publickey
IdentityFile /path/to/more/example_jp_rsa
EOF
$ cat ssh_config_tmp | koma ssh --key platform,platform_versionUse sconb to filter ~/.ssh/config.
$ sconb dump example_* | sconb restore | koma ssh --key platform,platform_versionGather vagrant host inventory.
$ vagrant ssh-config | koma ssh --key cpu,kernelRun command on remote hosts
$ koma run-command example.com,example.jp uptime
{
"example.com": {
"uptime": {
"exit_signal": null,
"exit_status": 0,
"stderr": "",
"stdout": " 00:18:10 up 337 days, 4:51, 1 user, load average: 0.08, 0.02, 0.01\n"
}
},
"example.jp": {
"uptime": {
"exit_signal": null,
"exit_status": 0,
"stderr": "",
"stdout": " 00:10:09 up 182 days, 7:34, 1 user, load average: 0.07, 0.03, 0.01\n"
}
}
}Host inventory keys
$ koma keys
memory
ec2 (disabled)
hostname
domain
fqdn
platform
platform_version
filesystem
cpu
virtualization
kernel
block_device
package
user
group
serviceContribution
- Fork it ( https://github.com/k1LoW/koma/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request