Readme edits

This commit is contained in:
Michael DeHaan 2012-02-23 14:28:39 -05:00
parent 381b3c971a
commit 5170a9fe2c

View file

@ -3,29 +3,33 @@ Ansible
Ansible is a extra-simple Python API for doing 'remote things' over SSH. Ansible is a extra-simple Python API for doing 'remote things' over SSH.
As Func, which I co-wrote, aspired to avoid using SSH and have it's own daemon infrastructure, Ansible aspires to be quite different and more minimal, but still able to grow more modularly over time. While Func, which I co-wrote, aspired to avoid using SSH and have it's own daemon infrastructure, Ansible aspires to be quite different and more minimal, but still able to grow more modularly over time.
Principles Principles
========== ==========
* Dead simple setup * Dead simple setup
* No server or client daemons, uses existing SSHd * No server or client daemons, uses existing SSHd
* Only SSH keys are allowed for authentication * Only SSH keys are allowed for authentication
* usage of ssh-agent is more or less required * usage of ssh-agent is more or less required
* plugins can be written in ANY language * plugins can be written in ANY language
* as with Func, API usage is an equal citizen to CLI usage * as with Func, API usage is an equal citizen to CLI usage
* use Python's multiprocessing capabilities to emulate Func's forkbomb logic
Requirements Requirements
============ ============
* python 2.6 -- or a backport of the multiprocessing module For the server the tool is running from, *only*:
* paramiko
* python 2.6 -- or a backport of the multiprocessing module
* paramiko
Inventory file Inventory file
============== ==============
The default inventory file (-H) is ~/.ansible_hosts and is a list The default inventory file (-H) is ~/.ansible_hosts and is a list
of all hostnames to target with ansible, one per line. of all hostnames to target with ansible, one per line. These
can be hostnames or IPs
This list is further filtered by the pattern wildcard (-P) to target This list is further filtered by the pattern wildcard (-P) to target
specific hosts. specific hosts.
@ -55,7 +59,8 @@ data = runner.run()
} }
Additional options to runner include the number of forks, hostname Additional options to runner include the number of forks, hostname
exclusion pattern, library path, and so on. exclusion pattern, library path, and so on. Read the source, it's not
complicated.
Parallelism Parallelism
=========== ===========
@ -64,27 +69,35 @@ Specify the number of forks to use, to run things in greater parallelism.
ansible -f 10 "*.example.com" -m modName -a "arg1 arg2" ansible -f 10 "*.example.com" -m modName -a "arg1 arg2"
10 forks. The default is 3. 5 is right out.
Bundled Modules Bundled Modules
=============== ===============
See the example library for modules, they can be written in any language See the example library for modules, they can be written in any language
and simply return JSON to stdout. The path to your ansible library is and simply return JSON to stdout. The path to your ansible library is
specified with the "-L" flag should you wish to use a different location specified with the "-L" flag should you wish to use a different location
than "~/ansible". than "~/ansible". There is potential for a sizeable community to build
up around the library scripts.
Features not supported from Func (by design) Features not supported from Func (yet?)
============================================ ============================================
* Delegation for treeish topologies * Delegation for treeish topologies
* Asynchronous modes for long running tasks -- background tasks on your own * Asynchronous modes for polling long running operations
Future plans Future plans
============ ============
* Dead-simple declarative configuration management & facts engine, with * Dead-simple declarative configuration management using
probes implementable in any language. a runbook style recipe file
* facts engine, including exec'ing facter if present
Author Author
====== ======
* Michael DeHaan <michael.dehaan@gmail.com> | http://michaeldehaan.net/ Michael DeHaan <michael.dehaan@gmail.com>
http://michaeldehaan.net/