OpenStack Configuration Discovery

Satori is a configuration discovery tool for OpenStack and OpenStack tenant hosted applications.

Contributing

Satori’s code is hosted on GitHub. Our development process follows the OpenStack Gerrit workflow which is much different than most projects on Github.

If you find a problem, please file a bug. Feature additions and design discussions are taking place in blueprints. Reviewing code is an easy way to start contributing.

Release Notes

0.1.4 (20 Mar 2014)

  • Data plane discovery (logs on to machines)
  • Localhost discovery
  • SSH module
  • Templated output
  • Bug fixes

0.1.3 (18 Feb 2014)

  • Bug fixes
  • DNS added among other things

0.1.0 (28 Jan 2014)

  • Project setup

Terminology

Opinions

Opinions are being discussed at https://wiki.openstack.org/wiki/Satori/OpinionsProposal.

Control Plane Discovery

Control plane discovery is the process of making API calls to management systems like OpenStack or IT asset management systems. An external management system can show relationships between resources that can further improve the discovery process. For example, a data plane discovery of a single server will reveal that a server has a storage device attached to it. Control plane discovery using an OpenStack plugin can reveal the details of the Cinder volume.

Satori can load plugins that enable these systems to be queried.

Data Plane Discovery

Data plane discovery is the process of connecting to a resource and using native tools to extract information. For example, it can provide information about the user list, installed software and processes that are running.

Satori can load plugins that enable data plane discovery.

Schema

The following list of fields describes the data returned from Satori.

Target

Target contains the address suplplied to run the discovery.

Found

All data items discovered are returned under the found key. Keys to resources discovered are also added under found, but the actual resources are stored under the resources key.

Resources

All resources (servers, load balancers, DNS domains, etc...) are stored under the resources key.

Each resource contains the following keys:

  • key: a globally unique identifier for the resource (could be a URI)
  • id: the id in the system that hosts the resource
  • type: the resource type using Heat or Heat-like resource types
  • data: any additional fields for that resource

Get Satori

Satori is distributed as a Python package. The pip command will install the latest version.

$ pip install satori

If you want to install from the latest source code, these commands will fetch the code and install it.

$ git clone https://github.com/stackforge/satori.git
$ cd satori
$ pip install -r requirements.txt
$ sudo python setup.py install

Use Satori

$ satori www.foo.com
Domain: foo.com
  Registered at TUCOWS DOMAINS INC.
  Expires in 475 days.
  Name servers:
      DNS1.STABLETRANSIT.COM
      DNS2.STABLETRANSIT.COM
Address:
  www.foo.com resolves to IPv4 address 4.4.4.4
Host:
  4.4.4.4 (www.foo.com) is hosted on a Nova Instance
  Instance Information:
      URI: https://nova.api.somecloud.com/v2/111222/servers/d9119040
      Name: sampleserver01.foo.com
      ID: d9119040-f767-4141-95a4-d4dbf452363a
  ip-addresses:
      public:
          ::ffff:404:404
          4.4.4.4
      private:
          10.1.1.156
 Listening Services:
     0.0.0.0:6082  varnishd
     127.0.0.1:8080  apache2
     127.0.0.1:3306  mysqld
 Talking to:
     10.1.1.71 on 27017