Difference between revisions of "Satori/SystemInfoProposal"
Caleb Groom (talk | contribs) m (fixed link) |
Ziad Sawalha (talk | contribs) m (→Command line usage) |
||
(11 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
WORK IN PROGRESS | WORK IN PROGRESS | ||
− | Specification for | + | Specification for https://blueprints.launchpad.net/satori/+spec/poc-system-info |
As Satori gathers information about a network location it accumulates a list of | As Satori gathers information about a network location it accumulates a list of | ||
Line 14: | Line 14: | ||
==== Chef's Ohai ==== | ==== Chef's Ohai ==== | ||
+ | [http://docs.opscode.com/ohai.html Ohai] | ||
==== Puppet's Facter ==== | ==== Puppet's Facter ==== | ||
Line 31: | Line 32: | ||
|Facts | |Facts | ||
|- | |- | ||
− | | | + | |Plugin System |
− | | | + | |Yes |
+ | |Yes | ||
| | | | ||
+ | |Yes | ||
+ | |- | ||
+ | |Standalone app | ||
+ | | Yes | ||
| | | | ||
+ | | Yes | ||
| | | | ||
|- | |- | ||
− | | | + | |Language |
− | | | + | | Ruby |
− | | | + | | Ruby |
− | | | + | | Python |
− | | | + | | Python |
|- | |- | ||
− | | | + | |Active Community |
− | | | + | |Yes |
− | | | + | |Yes |
− | | | + | |No |
− | | | + | |Yes |
|- | |- | ||
− | | | + | |Native Data Format |
− | | | + | |json |
| | | | ||
| | | | ||
| | | | ||
|} | |} | ||
+ | |||
+ | == System Info Plugins == | ||
+ | |||
+ | Satori could provide a plugin structure so that several discovery applications could be supported. | ||
+ | |||
+ | === Proposed Directory Structure === | ||
+ | |||
+ | satori/sysinfo/ | ||
+ | ohai.py | ||
+ | facter.py | ||
+ | blueprint.py | ||
+ | facts.py | ||
+ | |||
+ | === Plugin Structure === | ||
+ | |||
+ | def get_systeminfo(resource, config): | ||
+ | return {} | ||
+ | |||
== Command line usage == | == Command line usage == | ||
− | $ satori https://domain. | + | Key from local disk: |
+ | |||
+ | |||
+ | $ satori https://domain.cqom --system-info=ohai -i /path/to/private.key | ||
+ | |||
+ | |||
+ | Using ssh-style arguments: | ||
+ | |||
+ | $ satori root@10.1.1.45 -i ~/.ssh/id_rsa | ||
+ | |||
+ | $ satori root@10.1.1.45 -i ~/.ssh/id_rsa -o ProxyCommand='ssh -qa bastion.example.com \ | ||
+ | -p "nc -w 3600 server3 22"' | ||
+ | |||
+ | SSH Arguments to reserve: | ||
+ | |||
+ | * o : options. ssh-style. (ProxyCommand, StrictHostKeyChecking) | ||
+ | * i : identify file. ssh-style. by default, when run from the command-file, satori will try ~/.ssh/id_dsa, and ~/.ssh/id_ecdsa and ~/.ssh/id_rsa | ||
+ | * L tunneling. ssh-style. | ||
== Out of Scope == | == Out of Scope == |
Latest revision as of 20:58, 11 March 2014
WORK IN PROGRESS
Specification for https://blueprints.launchpad.net/satori/+spec/poc-system-info
As Satori gathers information about a network location it accumulates a list of resources that are related. That resource list generally includes one or more Nova instances. If the user supplies the credentials to access the server, the discovery process should be extended to include fetching operating system and application-level information. Several open source applications exist today that can catalog this information. Satori should leverage one or more of these applications rather than recreating them.
Contents
Operating System Discovery Tools
Chef's Ohai
Puppet's Facter
Devstructure's Blueprint
Ansible's Facts
System Discovery Feature Comparison
System Discovery Comparison | |||||
---|---|---|---|---|---|
Ohai | Facter | Blueprint | Facts | ||
Plugin System | Yes | Yes | Yes | ||
Standalone app | Yes | Yes | |||
Language | Ruby | Ruby | Python | Python | |
Active Community | Yes | Yes | No | Yes | |
Native Data Format | json |
System Info Plugins
Satori could provide a plugin structure so that several discovery applications could be supported.
Proposed Directory Structure
satori/sysinfo/ ohai.py facter.py blueprint.py facts.py
Plugin Structure
def get_systeminfo(resource, config): return {}
Command line usage
Key from local disk:
$ satori https://domain.cqom --system-info=ohai -i /path/to/private.key
Using ssh-style arguments:
$ satori root@10.1.1.45 -i ~/.ssh/id_rsa
$ satori root@10.1.1.45 -i ~/.ssh/id_rsa -o ProxyCommand='ssh -qa bastion.example.com \ -p "nc -w 3600 server3 22"'
SSH Arguments to reserve:
- o : options. ssh-style. (ProxyCommand, StrictHostKeyChecking)
- i : identify file. ssh-style. by default, when run from the command-file, satori will try ~/.ssh/id_dsa, and ~/.ssh/id_ecdsa and ~/.ssh/id_rsa
- L tunneling. ssh-style.
Out of Scope
Interesting ideas that could follow but won't be implemented first:
- Automatically install the software discovery tool if its missing
Proposed Implementation Plan
- Alter `satori/shell.py main()` to accept a private key
- Extend `satori/discovery.py run()` to attempt to SSH into each server resource, execute the info gathering tool and fetch the results.
- Add the data to the resource record.
- Ensure the data is also opinionated.