Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy. Avoid writing scripts or custom code to deploy and update your applications — automate in a language that approaches plain English, using SSH, with no agents to install on remote systems. https://docs.ansible.com/ansible/
Find a file
Toshio Kuratomi 5e9a8d9202 Fix password lookup py3 plus alikins unittest additions refactoring (#17626)
* Improve unit testing of 'password' lookup

The tests showed some UnicodeErrors for the
cases where the 'chars' param include unicode,
causing the 'getattr(string, c, c)' to fail.
So the candidate char generation code try/excepts
UnicodeErrors there now.

Some refactoring of the password.py module to make
it easier to test, and some new tests that cover more
of the password and salt generation.

* More refactoring and fixes.

* manual merge of text enc fixes from pr17475

* moving methods to module scope

* more refactoring

* A few more text encoding fixes/merges

* remove now unused code

* Add test cases and data for _gen_candidate_chars

* more test coverage for password lookup

* wip

* More text encoding fixes and test coverage

* cleanups

* reenable text_type assert

* Remove unneeded conditional in _random_password

* Add docstring for _gen_candidate_chars

* remove redundant to_text and list comphenesion

* Move set of 'chars' default in _random_password

on py2, C.DEFAULT_PASSWORD_CHARS is a regular str
type, so the assert here fails. Move setting the
default into the method and to_text(DEFAULT_PASSWORD_CHARS)
if it's needed.

* combine _random_password and _gen_password

* s/_create_password_file/_create_password_file_dir

* native strings for exception msgs

* move password to_text to _read_password_file

* move to_bytes(content) to _write_password_file

* add more test assertions about genned pw's

* Some cleanups to alikins and abadger's password lookup refactoring:

* Make DEFAULT_PASSWORD_CHARS into a text string in constants.py
  - Move this into the nonconfigurable section of constants.
* Make utils.encrypt.do_encrypt() return a text string because all the
  hashes in passlib should be returning ascii-only strings and they are
  text strings in python3.
* Make the split up of functions more sane:
   - Don't split such that conditionals have to occur in two separate functions.
   - Don't go overboard: Good to split file system manipulation from parsing
     but we don't need to do every file manipulation in a separate
     function.
  - Don't split so that creation of the password store happens in two
    parts.
  - Don't split in such a way that no decisions are made in run.
* Organize functions by when it gets called from run().
* Run all potential characters through the gen_candidate_chars function
  because it does both normalization and validation.
* docstrings for functions
* Change when we store salt slightly.  Store it whenever it was already
  present in the file as well as when encrypt is requested.  This will
  head of potential idempotence bugs where a user has two playbook tasks
  using the same password and in one they need it encrypted but in the
  other they need it plaintext.
* Reorganize tests to follow the order of the functions so it's easier
  to figure out if/where a function has been tested.
* Add tests for the functions that read and write the password file.
* Add tests of run() when the password has already been created.
* Test coverage currently at 100%
2016-09-19 11:37:57 -07:00
.github Try to avoid module-related tickets in the core Ansible project (#17047) 2016-08-11 10:14:27 -04:00
bin Fixes to the controller text model (#17527) 2016-09-12 12:57:41 -07:00
contrib vmware_inventory: decode strings to ascii if not alphanumeric (#17618) 2016-09-16 17:09:42 -04:00
docs/man added new ksu method to man page 2016-09-13 14:40:41 -04:00
docs-api Change default theme to 'alabaster' 2016-06-30 16:54:21 -04:00
docsite xpace 2016-09-19 14:00:51 -04:00
examples adjust WinRM service configuration message text 2016-09-09 09:47:46 -07:00
hacking Add os_family to test_distribution_version (#17620) 2016-09-17 23:27:35 +02:00
lib/ansible Fix password lookup py3 plus alikins unittest additions refactoring (#17626) 2016-09-19 11:37:57 -07:00
packaging Updating packaging vars for new version 2.1.1 2016-08-03 15:48:14 -05:00
test Fix password lookup py3 plus alikins unittest additions refactoring (#17626) 2016-09-19 11:37:57 -07:00
ticket_stubs Add proposals template (#16654) 2016-07-08 17:04:03 -04:00
.coveragerc Add tox and travis-ci support 2015-03-13 08:20:24 -04:00
.gitattributes updated changelog with 1.8.2-4 content, added .gitattributes 2015-02-23 22:20:33 +00:00
.gitignore Change default theme to 'alabaster' 2016-06-30 16:54:21 -04:00
.gitmodules remove old dead code 2015-08-27 12:27:38 -04:00
.mailmap Add a .mailmap for 'shortlog' (#15588) 2016-04-25 17:18:14 -04:00
.travis.yml We've decided that python-3.5 is the minimum python version (#17270) 2016-08-29 09:12:37 -07:00
.yamllint Fix YAML source and check it on Shippable (#15678) 2016-06-04 10:58:17 -07:00
ansible-core-sitemap.xml Add debug strategy plugin (#15125) 2016-04-08 14:39:08 -04:00
CHANGELOG.md New networking modules in 2.2 2016-09-19 17:02:53 +01:00
CODING_GUIDELINES.md Migrate basestring to a python3 compatible type (#17199) 2016-08-23 13:13:44 -07:00
CONTRIBUTING.md Update CONTRIBUTING.md with more recent developments 2016-03-23 15:32:29 +01:00
COPYING license file should be in source tree 2012-03-15 20:24:22 -04:00
Makefile We've decided that python-3.5 is the minimum python version (#17270) 2016-08-29 09:12:37 -07:00
MANIFEST.in added galaxy data 2016-01-12 16:22:01 +01:00
README.md Remove download stats badge (#16358) 2016-06-20 10:14:37 -04:00
RELEASES.txt s/2015/2016 2016-05-08 00:16:47 +12:00
ROADMAP.rst Update ROADMAP.rst 2016-06-02 16:17:01 -04:00
setup.py Fix ziploader for the cornercase of ansible invoking ansible. 2016-04-29 08:47:49 -07:00
shippable.yml Enable more integration tests for python 3. (#17473) 2016-09-08 18:55:15 -07:00
tox.ini We've decided that python-3.5 is the minimum python version (#17270) 2016-08-29 09:12:37 -07:00
VERSION Version bump to 2.2.0 for devel 2016-04-26 16:29:52 -04:00

PyPI version Build Status

Ansible

Ansible is a radically simple IT automation system. It handles configuration-management, application deployment, cloud provisioning, ad-hoc task-execution, and multinode orchestration - including trivializing things like zero downtime rolling updates with load balancers.

Read the documentation and more at http://ansible.com/

Many users run straight from the development branch (it's generally fine to do so), but you might also wish to consume a release.

You can find instructions here for a variety of platforms. If you decide to go with the development branch, be sure to run git submodule update --init --recursive after doing a checkout.

If you want to download a tarball of a release, go to releases.ansible.com, though most users use yum (using the EPEL instructions linked above), apt (using the PPA instructions linked above), or pip install ansible.

Design Principles

  • Have a dead simple setup process and a minimal learning curve
  • Manage machines very quickly and in parallel
  • Avoid custom-agents and additional open ports, be agentless by leveraging the existing SSH daemon
  • Describe infrastructure in a language that is both machine and human friendly
  • Focus on security and easy auditability/review/rewriting of content
  • Manage new remote machines instantly, without bootstrapping any software
  • Allow module development in any dynamic language, not just Python
  • Be usable as non-root
  • Be the easiest IT automation system to use, ever.

Get Involved

  • Read Community Information for all kinds of ways to contribute to and interact with the project, including mailing list information and how to submit bug reports and code to Ansible.
  • All code submissions are done through pull requests. Take care to make sure no merge commits are in the submission, and use git rebase vs git merge for this reason. If submitting a large code change (other than modules), it's probably a good idea to join ansible-devel and talk about what you would like to do or add first and to avoid duplicate efforts. This not only helps everyone know what's going on, it also helps save time and effort if we decide some changes are needed.
  • Users list: ansible-project
  • Development list: ansible-devel
  • Announcement list: ansible-announce - read only
  • irc.freenode.net: #ansible

Branch Info

  • Releases are named after Led Zeppelin songs. (Releases prior to 2.0 were named after Van Halen songs.)
  • The devel branch corresponds to the release actively under development.
  • As of 1.8, modules are kept in different repos, you'll want to follow core and extras
  • Various release-X.Y branches exist for previous releases.
  • We'd love to have your contributions, read Community Information for notes on how to get started.

Authors

Ansible was created by Michael DeHaan (michael.dehaan/gmail/com) and has contributions from over 1000 users (and growing). Thanks everyone!

Ansible is sponsored by Ansible, Inc