RETIRED, Configuration Discovery
Go to file
Ryan Walker fd350f7f1c Refactor Popen usage to allow overrides
* Add subprocess.Popen wrapper in common
* Change bash.py and smb.py to use wrapper.

Because subprocess.Popen uses os.fork() to spawn child processes, it may
be desirable for a calling application to override subprocess.Popen with
a custom class that implements a different spawning method - such as
posix_spawn. With large-memory applications, posix_spawn may be more
desirable than os.fork() due to memory allocation behavior. This change
allows Satori to be compatible with such a workflow.

Change-Id: Ia60adea27d1a6cbf28341ea3aece5ee604a94583
Closes-Bug: #1412485
2015-01-21 10:32:31 -06:00
doc Implement New Discovery Schema 2014-05-07 15:25:05 -05:00
satori Refactor Popen usage to allow overrides 2015-01-21 10:32:31 -06:00
tools Add virtual env, testing tools, and blank tests 2014-01-28 16:19:40 -06:00
.coveragerc Update tests and testing requirements 2014-03-14 16:47:40 -05:00
.gitignore Update tests and testing requirements 2014-03-14 16:47:40 -05:00
.gitreview Add git-review config file 2014-03-05 21:11:11 +00:00
.testr.conf Update tests and testing requirements 2014-03-14 16:47:40 -05:00
HACKING.rst Add HACKING.rst 2014-01-28 16:15:10 -06:00
LICENSE Initial commit 2014-01-27 11:45:28 -08:00
MANIFEST.in Update tests and testing requirements 2014-03-14 16:47:40 -05:00
README.rst Cleanup for another release 2014-03-24 17:02:47 -05:00
pylintrc Adds Windows Support to satori discovery 2014-07-29 03:14:22 -05:00
requirements-py3.txt Update pythonwhois to py3 compatible version 2014-04-03 11:17:24 -05:00
requirements.txt Move serviceinstall to satori 2014-08-01 17:29:34 +01:00
run_tests.sh Fixes to Tests 2014-02-25 17:19:56 -06:00
setup.cfg Update tests and testing requirements 2014-03-14 16:47:40 -05:00
setup.py Add main module, setup, and requirements 2014-01-28 16:17:19 -06:00
test-requirements.txt fix tests and test requirements 2014-07-22 23:07:38 +00:00
tox.ini Refactor Popen usage to allow overrides 2015-01-21 10:32:31 -06:00

README.rst

Satori - Configuration Discovery

Satori provides configuration discovery for existing infrastructure. It is a related OpenStack project.

The charter for the project is to focus narrowly on discovering pre-existing infrastructure and installed or running software. For example, given a URL and some credentials, discover which resources (load balancer and servers) the URL is hosted on and what software is running on those servers.

Configuration discovery output could be used for:

  • Configuration analysis (ex. compared against a library of best practices)
  • Configuration monitoring (ex. has the configuration changed?)
  • Troubleshooting
  • Heat Template generation
  • Solum Application creation/import
  • Creation of Chef recipes/cookbooks, Puppet modules, Ansible playbooks, setup scripts, etc..

Getting Started

Run discovery on the local system:

$ pip install satori

$ satori localhost --system-info=ohai-solo -F json
# Installs and runs ohai-solo, outputs the data as JSON

Run against a URL with OpenStack credentials:

$ pip install satori

$ satori https://www.foo.com
 Address:
     www.foo.com resolves to IPv4 address 192.0.2.24
 Domain: foo.com
     Registrar: TUCOWS, INC.
 Nameservers: NS1.DIGIMEDIA.COM, NS2.DIGIMEDIA.COM
     Expires: 457 days
 Host not found

Deeper discovery is available if the network location (IP or hostname) is hosted on an OpenStack cloud tenant that Satori can access.

Cloud settings can be passed in on the command line or via OpenStack tenant environment variables.

Run with OpenStack credentials:

$ satori 192.0.2.24 --os-username yourname --os-password yadayadayada --os-tenant-name myproject --os-auth-url http://...

Or:

$ export OS_USERNAME=yourname
$ export OS_PASSWORD=yadayadayada
$ export OS_TENANT_NAME=myproject
$ export OS_AUTH_URL=http://...
$ satori foo.com

Notice the discovery result now contains a Host section:

$ satori 192.0.2.24 --os-username yourname --os-password yadayadayada --os-tenant-name myproject --os-auth-url http://...
Host:
  192.0.2.24 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
          192.0.2.24
      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

Documentation

Additional documentation is located in the doc/ directory and is hosted at http://satori.readthedocs.org/.

Start Hacking

We recommend using a virtualenv to install the client. This description uses the install virtualenv script to create the virtualenv:

$ python tools/install_venv.py
$ source .venv/bin/activate
$ python setup.py develop

Unit tests can be ran simply by running:

$ tox

# or, just style checks
$ tox -e pep8

# or, just python 2.7 checks
$ tox -e py27

Checking test coverage:

# Run tests with coverage
$ tox -ecover

# generate the report
$ coverage html -d covhtml -i

# open it in a broweser
$ open covhtml/index.html