OpenStack Configuration Discovery
The charter for the project is focused narrowly on discovering pre-existing infrastructure and installed or running software. For example, given a URL and some credentials, discover which server(s) the URL is hosted on, the topology of the infrastructure and what software is running on each server, as well as, pertinent settings for commonly encountered software like apache, varnish, and mysql.
- Source code https://github.com/stackforge/satori
- Feature tracker https://blueprints.launchpad.net/satori
- Bug tracker https://bugs.launchpad.net/satori/
- Developer doc http://satori.readthedocs.org/en/latest/
We expect that the output of a configuration discovery tool could be used for:
- Troubleshooting unfamiliar environments
- Configuration analysis (compare the discovered state vs a library of best practices)
- System State Verification
- Detecting configuration changes over time
- Heat Template generation
- Solum Application creation/import
- Creation of Chef recipes/cookbooks, Puppet modules, Ansible playbooks, setup scripts, etc.
The project will begin with a simple command-line tool so that new users can discover a configuration without needing to setup additional infrastructure. A mockup for the output is listed below:
$ satori www.foo.com
Address: www.foo.com resolves to IPv4 address 184.108.40.206 Domain: foo.com Registered at TUCOWS DOMAINS INC. Expires in 475 days. Name servers: DNS1.STABLETRANSIT.COM DNS2.STABLETRANSIT.COM Host: 220.127.116.11 (www.foo.com) is hosted on a Nova Instance Instance Information: URI: https://nova.api.somecloud.com/v2/111222/servers/d9119040-f767-414 1-95a4-d4dbf452363a Name: sampleserver01.foo.com ID: d9119040-f767-4141-95a4-d4dbf452363a ip-addresses: public: ::ffff:404:404 18.104.22.168 private: 10.1.1.156 System Information: Ubuntu 12.04 installed Server was rebooted 11 days, 22 hours ago /dev/xvda1 is using 9% of its inodes. Running Services: httpd on 127.0.0.1:8080 varnishd on 0.0.0.0:80 sshd on 0.0.0.0:22 httpd: Using 7 of 100 MaxClients
Initial Design Ideas
Though not yet proposed in Blueprints, these are some of the initial thoughts for the project to help guide discussion:
- A pluggable implementation to allow discovering:
- OpenStack infrastructure (instances, networks, et al.)
- Non-OpenStack Infrastructure (APIs for other clouds, nodes in a Chef server, vendor management interfaces)
- External infrastructure: DNS ownership and configuration, SSL Certificate validity, etc.
- Operating system and application configuration (See: Related Work)
- Runtime information such as active processes and connections between systems.
- An API service for tenants to make discovery requests.
- A backend datastore to record the results of discoveries.