===============================================
Ansible Release Notes for Legacy Versions < 2.0
===============================================

1.9.7 "Dancing in the Street" - TBD
-----------------------------------

-  Fix for lxc\_container backport which was broken because it tried to
   use a feature from ansible-2.x

1.9.6 "Dancing in the Street" - Apr 15, 2016
--------------------------------------------

-  Fix a regression in the loading of inventory variables where they
   were not found when placed inside of an inventory directory.
-  Fix lxc\_container having predictable temp file names. Addresses
   CVE-2016-3096

1.9.5 "Dancing In the Street" - Mar 21, 2016
--------------------------------------------

-  Compatibility fix with docker 1.8.
-  Fix a bug with the crypttab module omitting certain characters from
   the name of the device
-  Fix bug with uri module not handling all binary files
-  Fix bug with ini\_file not removing options set to an empty string
-  Fix bug with script and raw modules not honoring parameters passed
   via yaml dict syntax
-  Fix bug with plugin loading finding the wrong modules because the
   suffix checking was not ordered
-  Fix bug in the literal\_eval module code used when we need python-2.4
   compat
-  Added --ignore-certs, -c option to ansible-galaxy. Allows
   ansible-galaxy to work behind a proxy when the proxy fails to forward
   server certificates.
-  Fixed bug where tasks marked no\_log were showing hidden values in
   output if ansible's --diff option was used.
-  Fix bug with non-english locales in git and apt modules
-  Compatibility fix for using state=absent with the pip ansible module
   and pip-6.1.0+
-  Backported support for ansible\_winrm\_server\_cert\_validation flag
   to disable cert validation on Python 2.7.9+ (and support for other
   passthru args to pywinrm transport).
-  Backported various updates to user module (prevent accidental OS X
   group membership removals, various checkmode fixes).

1.9.4 "Dancing In the Street" - Oct 9, 2015
-------------------------------------------

-  Fixes a bug where yum state=latest would error if there were no
   updates to install.
-  Fixes a bug where yum state=latest did not work with wildcard package
   names.
-  Fixes a bug in lineinfile relating to escape sequences.
-  Fixes a bug where vars\_prompt was not keeping passwords private by
   default.
-  Fix ansible-galaxy and the hipchat callback plugin to check that the
   host it is contacting matches its TLS Certificate.

1.9.3 "Dancing In the Street" - Sep 3, 2015
-------------------------------------------

-  Fixes a bug related to keyczar messing up encodings internally,
   resulting in decrypted messages coming out as empty strings.
-  AES Keys generated for use in accelerated mode are now 256-bit by
   default instead of 128.
-  Fix url fetching for SNI with python-2.7.9 or greater. SNI does not
   work with python < 2.7.9. The best workaround is probably to use the
   command module with curl or wget.
-  Fix url fetching to allow tls-1.1 and tls-1.2 if the system's openssl
   library supports those protocols
-  Fix ec2\_ami\_search module to check TLS Certificates
-  Fix the following extras modules to check TLS Certificates:
-  campfire
-  layman
-  librarto\_annotate
-  twilio
-  typetalk
-  Fix docker module's parsing of docker-py version for dev checkouts
-  Fix docker module to work with docker server api 1.19
-  Change yum module's state=latest feature to update all packages
   specified in a single transaction. This is the same type of fix as
   was made for yum's state=installed in 1.9.2 and both solves the same
   problems and with the same caveats.
-  Fixed a bug where stdout from a module might be blank when there were
   were non-printable ASCII characters contained within it

1.9.2 "Dancing In the Street" - Jun 26, 2015
--------------------------------------------

-  Security fixes to check that hostnames match certificates with https
   urls (CVE-2015-3908)
-  get\_url and uri modules
-  url and etcd lookup plugins
-  Security fixes to the zone (Solaris containers), jail (bsd
   containers), and chroot connection plugins. These plugins can be used
   to connect to their respective container types in leiu of the
   standard ssh connection. Prior to this fix being applied these
   connection plugins didn't properly handle symlinks within the
   containers which could lead to files intended to be written to or
   read from the container being written to or read from the host system
   instead. (CVE pending)
-  Fixed a bug in the service module where init scripts were being
   incorrectly used instead of upstart/systemd.
-  Fixed a bug where sudo/su settings were not inherited from
   ansible.cfg correctly.
-  Fixed a bug in the rds module where a traceback may occur due to an
   unbound variable.
-  Fixed a bug where certain remote file systems where the SELinux
   context was not being properly set.
-  Re-enabled several windows modules which had been partially merged
   (via action plugins):
-  win\_copy.ps1
-  win\_copy.py
-  win\_file.ps1
-  win\_file.py
-  win\_template.py
-  Fix bug using with\_sequence and a count that is zero. Also allows
   counting backwards isntead of forwards
-  Fix get\_url module bug preventing use of custom ports with https
   urls
-  Fix bug disabling repositories in the yum module.
-  Fix giving yum module a url to install a package from on RHEL/CENTOS5
-  Fix bug in dnf module preventing it from working when yum-utils was
   not already installed

1.9.1 "Dancing In the Street" - Apr 27, 2015
--------------------------------------------

-  Fixed a bug related to Kerberos auth when using winrm with a domain
   account.
-  Fixing several bugs in the s3 module.
-  Fixed a bug with upstart service detection in the service module.
-  Fixed several bugs with the user module when used on OSX.
-  Fixed unicode handling in some module situations (assert and
   shell/command execution).
-  Fixed a bug in redhat\_subscription when using the activationkey
   parameter.
-  Fixed a traceback in the gce module on EL6 distros when multiple
   pycrypto installations are available.
-  Added support for PostgreSQL 9.4 in rds\_param\_group
-  Several other minor fixes.

1.9 "Dancing In the Street" - Mar 25, 2015
------------------------------------------

Major changes:

-  Added kerberos support to winrm connection plugin.
-  Tags rehaul: added 'all', 'always', 'untagged' and 'tagged' special
   tags and normalized tag resolution. Added tag information to
   --list-tasks and new --list-tags option.
-  Privilege Escalation generalization, new 'Become' system and
   variables now will handle existing and new methods. Sudo and su have
   been kept for backwards compatibility. New methods pbrun and pfexec
   in 'alpha' state, planned adding 'runas' for winrm connection plugin.
-  Improved ssh connection error reporting, now you get back the
   specific message from ssh.
-  Added facility to document task module return values for registered
   vars, both for ansible-doc and the docsite. Documented copy, stats
   and acl modules, the rest must be updated individually (we will start
   doing so incrementally).
-  Optimize the plugin loader to cache available plugins much more
   efficiently. For some use cases this can lead to dramatic
   improvements in startup time.
-  Overhaul of the checksum system, now supports more systems and more
   cases more reliably and uniformly.
-  Fix skipped tasks to not display their parameters if no\_log is
   specified.
-  Many fixes to unicode support, standarized functions to make it
   easier to add to input/output boundaries.
-  Added travis integration to github for basic tests, this should speed
   up ticket triage and merging.
-  environment: directive now can also be applied to play and is
   inhertited by tasks, which can still override it.
-  expanded facts and OS/distribution support for existing facts and
   improved performance with pypy.
-  new 'wantlist' option to lookups allows for selecting a list typed
   variable vs a comma delimited string as the return.
-  the shared module code for file backups now uses a timestamp
   resolution of seconds (previously minutes).
-  allow for empty inventories, this is now a warning and not an error
   (for those using localhost and cloud modules).
-  sped up YAML parsing in ansible by up to 25% by switching to CParser
   loader.

New Modules:

-  cryptab *-- manages linux encrypted block devices*
-  gce\_img *-- for utilizing GCE image resources*
-  gluster\_volume *-- manage glusterfs volumes*
-  haproxy *-- for the load balancer of same name*
-  known\_hosts *-- manages the ssh known\_hosts file*
-  lxc\_container *-- manage lxc containers*
-  patch *-- allows for patching files on target systems*
-  pkg5 *-- installing and uninstalling packages on Solaris*
-  pkg5\_publisher *-- manages Solaris pkg5 repository configuration*
-  postgresql\_ext *-- manage postgresql extensions*
-  snmp\_facts *-- gather facts via snmp*
-  svc *-- manages daemontools based services*
-  uptimerobot *-- manage monitoring with this service*

New Filters:

-  ternary: allows for trueval/falseval assignment dependent on
   conditional
-  cartesian: returns the Cartesian product of 2 lists
-  to\_uuid: given a string it will return an ansible domain specific
   UUID
-  checksum: uses the ansible internal checksum to return a hash from a
   string
-  hash: get a hash from a string (md5, sha1, etc)
-  password\_hash: get a hash form as string that can be used as a
   password in the user module (and others)
-  A whole set of ip/network manipulation filters:
   ipaddr,ipwrap,ipv4,ipv6ipsubnet,nthhost,hwaddr,macaddr

Other Notable Changes:

-  New lookup plugins:
-  dig: does dns resolution and returns IPs.
-  url: allows pulling data from a url.

-  New callback plugins:
-  syslog\_json: allows logging play output to a syslog network server
   using json format

-  Many new enhancements to the amazon web service modules:
-  ec2 now applies all specified security groups when creating a new
   instance. Previously it was only applying one
-  ec2\_vol gained the ability to specify the EBS volume type
-  ec2\_vol can now detach volumes by specifying instance=None
-  Fix ec2\_group to purge specific grants rather than whole rules
-  Added tenancy support for the ec2 module
-  rds module has gained the ability to manage tags and set charset and
   public accessibility
-  ec2\_snapshot module gained the capability to remove snapshots
-  Add alias support for route53
-  Add private\_zones support to route53
-  ec2\_asg: Add wait\_for\_instances parameter that waits until an
   instance is ready before ending the ansible task
-  Many new docker improvements:
-  restart\_policy parameters to configure when the container
   automatically restarts
-  If the docker client or server doesn't support an option, the task
   will now fail instead of silently ignoring the option
-  Add insecure\_registry parameter for connecting to registries via
   http
-  New parameter to set a container's domain name
-  Undeprecated docker\_image module until there's replacement
   functionality
-  Allow setting the container's pid namespace
-  Add a pull parameter that chooses when ansible will look for more
   recent images in the registry
-  docker module states have been greatly enhanced. The reworked and new
   states are:

   -  present now creates but does not start containers
   -  restarted always restarts a container
   -  reloaded restarts a container if ansible detects that the
      configuration is different than what is specified
   -  reloaded accounts for exposed ports, env vars, and volumes

-  Can now connect to the docker server using TLS
-  Several source control modules had force parameters that defaulted to
   true. These have been changed to default to false so as not to
   accidentally lose work. Playbooks that depended on the former
   behaviour simply need to add force=True to the task that needs it.
   Affected modules:
-  bzr: When local modifications exist in a checkout, the bzr module
   used to default to removing the modifications on any operation. Now
   the module will not remove the modifications unless force=yes is
   specified. Operations that depend on a clean working tree may fail
   unless force=yes is added.
-  git: When local modifications exist in a checkout, the git module
   will now fail unless force is explicitly specified. Specifying
   force=yes will allow the module to revert and overwrite local
   modifications to make git actions succeed.
-  hg: When local modifications exist in a checkout, the hg module used
   to default to removing the modifications on any operation. Now the
   module will not remove the modifications unless force=yes is
   specified.
-  subversion: When updating a checkout with local modifications, you
   now need to add force=yes so the module will revert the modifications
   before updating.
-  New inventory scripts:
-  vbox: virtualbox
-  consul: use consul as an inventory source
-  gce gained the ip\_forward parameter to forward ip packets
-  disk\_auto\_delete parameter to gce that will remove the boot disk
   after an instance is destroyed
-  gce can now spawn instances with no external ip
-  gce\_pd gained the ability to choose a disk type
-  gce\_net gained target\_tags parameter for creating firewall rules
-  rax module has new parameters for making use of a boot volume
-  Add scheduler\_hints to the nova\_compute module for optional
   parameters
-  vsphere\_guest now supports deploying guests from a template
-  Many fixes for hardlink and softlink handling in file-related modules
-  Implement user, group, mode, and selinux parameters for the unarchive
   module
-  authorized\_keys can now use url as a key source
-  authorized\_keys has a new exclusive parameter that determines if
   keys that weren't specified in the task
-  The selinux module now sets the current running state to permissive
   if state='disabled'
-  Can now set accounts to expire via the user module
-  Overhaul of the service module to make code simpler and behave better
   for systems running several popular init systems
-  yum module now has a parameter to refresh its cache of package
   metadata
-  apt module gained a build\_dep parameter to install a package's build
   dependencies
-  Add parameters to the postgres modules to specify a unix socket to
   connect to the db
-  The mount module now supports bind mounts
-  Add a clone parameter to git module that allows you to get
   information about a remote repo even if it doesn't exist locally.
-  Add a refspec argument to the git module that allows pulling commits
   that aren't part of a branch
-  Many documentation additions and fixes.

1.8.4 "You Really Got Me" - Feb 19, 2015
----------------------------------------

-  Fixed regressions in ec2 and mount modules, introduced in 1.8.3

1.8.3 "You Really Got Me" - Feb 17, 2015
----------------------------------------

-  Fixing a security bug related to the default permissions set on a
   temporary file created when using "ansible-vault view ".
-  Many bug fixes, for both core code and core modules.

1.8.2 "You Really Got Me" - Dec 04, 2014
----------------------------------------

-  Various bug fixes for packaging issues related to modules.
-  Various bug fixes for lookup plugins.
-  Various bug fixes for some modules (continued cleanup of postgresql
   issues, etc.).

-  Add a clone parameter to git module that allows you to get
   information about a remote repo even if it doesn't exist locally.

1.8.1 "You Really Got Me" - Nov 26, 2014
----------------------------------------

-  Various bug fixes in postgresql and mysql modules.
-  Fixed a bug related to lookup plugins used within roles not finding
   files based on the relative paths to the roles files/ directory.
-  Fixed a bug related to vars specified in plays being templated too
   early, resulting in incorrect variable interpolation.
-  Fixed a bug related to git submodules in bare repos.

1.8 "You Really Got Me" - Nov 25, 2014
--------------------------------------

Major changes:

-  fact caching support, pluggable, initially supports Redis (DOCS
   pending)
-  'serial' size in a rolling update can be specified as a percentage
-  added new Jinja2 filters, 'min' and 'max' that take lists
-  new 'ansible\_version' variable available contains a dictionary of
   version info
-  For ec2 dynamic inventory, ec2.ini can has various new configuration
   options
-  'ansible vault view filename.yml' opens filename.yml decrypted in a
   pager.
-  no\_log parameter now surpressess data from callbacks/output as well
   as syslog
-  ansible-galaxy install -f requirements.yml allows advanced options
   and installs from non-galaxy SCM sources and tarballs.
-  command\_warnings feature will warn about when usage of the
   shell/command module can be simplified to use core modules - this can
   be enabled in ansible.cfg
-  new omit value can be used to leave off a parameter when not set,
   like so module\_name: a=1 b={{ c \| default(omit) }}, would not pass
   value for b (not even an empty value) if c was not set.
-  developers: 'baby JSON' in module responses, originally intended for
   writing modules in bash, is removed as a feature to simplify logic,
   script module remains available for running bash scripts.
-  async jobs started in "fire & forget" mode can now be checked on at a
   later time.
-  added ability to subcategorize modules for docs.ansible.com
-  added ability for shipped modules to have aliases with symlinks
-  added ability to deprecate older modules by starting with "\_" and
   including "deprecated: message why" in module docs

New Modules:

-  cloud
-  rax\_cdb *-- manages Rackspace Cloud Database instances*
-  rax\_cdb\_database *-- manages Rackspace Cloud Databases*
-  rax\_cdb\_user *-- manages Rackspace Cloud Database users*
-  monitoring
-  bigpanda *-- support for bigpanda*
-  zabbix\_maintaince *-- handles outage windows with Zabbix*
-  net\_infrastructure
-  a10\_server *-- manages server objects on A10 devices*
-  a10\_service\_group *-- manages service group objects on A10 devices*
-  a10\_virtual\_server *-- manages virtual server objects on A10
   devices*
-  system
-  getent *-- read getent databases*

Some other notable changes:

-  added the ability to set "instance filters" in the ec2.ini to limit
   results from the inventory plugin.
-  upgrades for various variable precedence items and parsing related
   items
-  added a new "follow" parameter to the file and copy modules, which
   allows actions to be taken on the target of a symlink rather than the
   symlink itself.
-  if a module should ever traceback, it will return a standard error,
   catchable by ignore\_errors, versus an 'unreachable'
-  ec2\_lc: added support for multiple new parameters like kernel\_id,
   ramdisk\_id and ebs\_optimized.
-  ec2\_elb\_lb: added support for the connection\_draining\_timeout and
   cross\_az\_load\_balancing options.
-  support for symbolic representations (ie. u+rw) for file permission
   modes (file/copy/template modules etc.).
-  docker: Added support for specifying the net type of the container.
-  docker: support for specifying read-only volumes.
-  docker: support for specifying the API version to use for the remote
   connection.
-  openstack modules: various improvements
-  irc: ssl support for the notification module
-  npm: fix flags passed to package installation
-  windows: improved error handling
-  setup: additional facts on System Z
-  apt\_repository: certificate validation can be disabled if requested
-  pagerduty module: misc improvements
-  ec2\_lc: public\_ip boolean configurable in launch configurations
-  ec2\_asg: fixes related to proper termination of an autoscaling group
-  win\_setup: total memory fact correction
-  ec2\_vol: ability to list existing volumes
-  ec2: can set optimized flag
-  various parser improvements
-  produce a friendly error message if the SSH key is too permissive
-  ec2\_ami\_search: support for SSD and IOPS provisioned EBS images
-  can set ansible\_sudo\_exe as an inventory variable which allows
   specifying a different sudo (or equivalent) command
-  git module: Submodule handling has changed. Previously if you used
   the ``recursive`` parameter to handle submodules, ansible would track
   the submodule upstream's head revision. This has been changed to
   checkout the version of the submodule specified in the superproject's
   git repository. This is inline with what git submodule update does.
   If you want the old behaviour use the new module parameter
   track\_submodules=yes
-  Checksumming of transferred files has been made more portable and now
   uses the sha1 algorithm instead of md5 to be compatible with
   FIPS-140.
-  As a small side effect, the fetch module no longer returns a useful
   value in remote\_md5. If you need a replacement, switch to using
   remote\_checksum which returns the sha1sum of the remote file.
-  ansible-doc CLI tool contains various improvements for working with
   different terminals

And various other bug fixes and improvements ...

1.7.2 "Summer Nights" - Sep 24, 2014
------------------------------------

-  Fixes a bug in accelerate mode which caused a traceback when trying
   to use that connection method.
-  Fixes a bug in vault where the password file option was not being
   used correctly internally.
-  Improved multi-line parsing when using YAML literal blocks (using >
   or \|).
-  Fixed a bug with the file module and the creation of relative
   symlinks.
-  Fixed a bug where checkmode was not being honoured during the
   templating of files.
-  Other various bug fixes.

1.7.1 "Summer Nights" - Aug 14, 2014
------------------------------------

-  Security fix to disallow specifying 'args:' as a string, which could
   allow the insertion of extra module parameters through variables.
-  Performance enhancements related to previous security fixes, which
   could cause slowness when modules returned very large JSON results.
   This specifically impacted the unarchive module frequently, which
   returns the details of all unarchived files in the result.
-  Docker module bug fixes:
-  Fixed support for specifying rw/ro bind modes for volumes
-  Fixed support for allowing the tag in the image parameter
-  Various other bug fixes

1.7 "Summer Nights" - Aug 06, 2014
----------------------------------

Major new features:

-  Windows support (alpha) using native PowerShell remoting
-  Tasks can now specify ``run_once: true``, meaning they will be
   executed exactly once. This can be combined with delegate\_to to
   trigger actions you want done just the one time versus for every host
   in inventory.

New inventory scripts:

-  SoftLayer
-  Windows Azure

New Modules:

-  cloud
-  azure
-  rax\_meta
-  rax\_scaling\_group
-  rax\_scaling\_policy
-  windows
-  *version of setup module*
-  *version of slurp module*
-  win\_feature
-  win\_get\_url
-  win\_group
-  win\_msi
-  win\_ping
-  win\_service
-  win\_user

Other notable changes:

-  Security fixes
-  Prevent the use of lookups when using legacy "{{ }}" syntax around
   variables and with\_\* loops.
-  Remove relative paths in TAR-archived file names used by
   ansible-galaxy.
-  Inventory speed improvements for very large inventories.
-  Vault password files can now be executable, to support scripts that
   fetch the vault password.

1.6.10 "And the Cradle Will Rock" - Jul 25, 2014
------------------------------------------------

-  Fixes an issue with the copy module when copying a directory that
   fails when changing file attributes and the target file already
   exists
-  Improved unicode handling when splitting args

1.6.9 "And the Cradle Will Rock" - Jul 24, 2014
-----------------------------------------------

-  Further improvements to module parameter parsing to address
   additional regressions caused by security fixes

1.6.8 "And the Cradle Will Rock" - Jul 22, 2014
-----------------------------------------------

-  Corrects a regression in the way shell and command parameters were
   being parsed

1.6.7 "And the Cradle Will Rock" - Jul 21, 2014
-----------------------------------------------

-  Security fixes:
-  Strip lookup calls out of inventory variables and clean unsafe data
   returned from lookup plugins (CVE-2014-4966)
-  Make sure vars don't insert extra parameters into module args and
   prevent duplicate params from superseding previous params
   (CVE-2014-4967)

1.6.6 "And the Cradle Will Rock" - Jul 01, 2014
-----------------------------------------------

-  Security updates to further protect against the incorrect execution
   of untrusted data

1.6.4, 1.6.5 "And the Cradle Will Rock" - Jun 25, 2014
------------------------------------------------------

-  Security updates related to evaluation of untrusted remote inputs

1.6.3 "And the Cradle Will Rock" - Jun 09, 2014
-----------------------------------------------

-  Corrects a regression where handlers were run across all hosts, not
   just those that triggered the handler.
-  Fixed a bug in which modules did not support properly moving a file
   atomically when su was in use.
-  Fixed two bugs related to symlinks with directories when using the
   file module.
-  Fixed a bug related to MySQL master replication syntax.
-  Corrects a regression in the order of variable merging done by the
   internal runner code.
-  Various other minor bug fixes.

1.6.2 "And the Cradle Will Rock" - May 23, 2014
-----------------------------------------------

-  If an improper locale is specified, core modules will now
   automatically revert to using the 'C' locale.
-  Modules using the fetch\_url utility will now obey proxy environment
   variables.
-  The SSL validation step in fetch\_url will likewise obey proxy
   settings, however only proxies using the http protocol are supported.
-  Fixed multiple bugs in docker module related to version changes
   upstream.
-  Fixed a bug in the ec2\_group module where egress rules were lost
   when a VPC was specified.
-  Fixed two bugs in the synchronize module:
-  a trailing slash might be lost when calculating relative paths,
   resulting in an incorrect destination.
-  the sync might use the inventory directory incorrectly instead of the
   playbook or role directory.
-  Files will now only be chown'd on an atomic move if the src/dest
   uid/gid do not match.

1.6.1 "And the Cradle Will Rock" - May 7, 2014
----------------------------------------------

-  Fixed a bug in group\_by, where systems were being grouped
   incorrectly.
-  Fixed a bug where file descriptors may leak to a child process when
   using accelerate.
-  Fixed a bug in apt\_repository triggered when python-apt not being
   installed/available.
-  Fixed a bug in the apache2\_module module, where modules were not
   being disabled correctly.

1.6 "And the Cradle Will Rock" - May 5, 2014
--------------------------------------------

Major features/changes:

-  The deprecated legacy variable templating system has been finally
   removed. Use {{ foo }} always not $foo or ${foo}.
-  Any data file can also be JSON. Use sparingly -- with great power
   comes great responsibility. Starting file with "{" or "[" denotes
   JSON.
-  Added 'gathering' param for ansible.cfg to change the default
   gather\_facts policy.
-  Accelerate improvements:
-  multiple users can connect with different keys, when
   ``accelerate_multi_key = yes`` is specified in the ansible.cfg.
-  daemon lifetime is now based on the time from the last activity, not
   the time from the daemon's launch.
-  ansible-playbook now accepts --force-handlers to run handlers even if
   tasks result in failures.
-  Added VMWare support with the vsphere\_guest module.

New Modules:

-  files
-  replace
-  packaging
-  apt\_rpm
-  composer *(PHP)*
-  cpanm *(Perl)*
-  homebrew\_cask *(OS X)*
-  homebrew\_tap *(OS X)*
-  layman
-  portage
-  monitoring
-  librato\_annotation
-  logentries
-  rollbar\_deployment
-  notification
-  nexmo *(SMS)*
-  slack *(Slack.com)*
-  sns *(Amazon)*
-  twilio *(SMS)*
-  typetalk *(Typetalk.in)*
-  system
-  alternatives
-  capabilities
-  debconf
-  locale\_gen
-  ufw
-  net\_infrastructure
-  bigip\_facts
-  dnssimple
-  lldp
-  web\_infrastructure
-  apache2\_module
-  cloud
-  digital\_ocean\_domain
-  digital\_ocean\_sshkey
-  ec2\_asg *(configure autoscaling groups)*
-  ec2\_metric\_alarm
-  ec2\_scaling\_policy
-  rax\_identity
-  rax\_cbs *(cloud block storage)*
-  rax\_cbs\_attachments
-  vsphere\_guest

Other notable changes:

-  example callback plugin added for hipchat
-  added example inventory plugin for vcenter/vsphere
-  added example inventory plugin for doing really trivial inventory
   from SSH config files
-  libvirt module now supports destroyed and paused as states
-  s3 module can specify metadata
-  security token additions to ec2 modules
-  setup module code moved into module\_utils/, facts now accessible by
   other modules
-  synchronize module sets relative dirs based on inventory or role path
-  misc bugfixes and other parameters
-  the ec2\_key module now has wait/wait\_timeout parameters
-  added version\_compare filter (see docs)
-  added ability for module documentation YAML to utilize shared module
   snippets for common args
-  apt module now accepts "deb" parameter to install local dpkg files
-  regex\_replace filter plugin added
-  added an inventory script for Docker
-  added an inventory script for Abiquo
-  the get\_url module now accepts url\_username and url\_password as
   parameters, so sites which require authentication no longer need to
   have them embedded in the url
-  ... to be filled in from changelogs ...

1.5.5 "Love Walks In" - April 18, 2014
--------------------------------------

-  Security fix for vault, to ensure the umask is set to a restrictive
   mode before creating/editing vault files.
-  Backported apt\_repository security fixes relating to filename/mode
   upon sources list file creation.

1.5.4 "Love Walks In" - April 1, 2014
-------------------------------------

-  Security fix for safe\_eval, which further hardens the checking of
   the evaluation function.
-  Changing order of variable precedence for system facts, to ensure
   that inventory variables take precedence over any facts that may be
   set on a host.

1.5.3 "Love Walks In" - March 13, 2014
--------------------------------------

-  Fix validate\_certs and run\_command errors from previous release
-  Fixes to the git module related to host key checking

1.5.2 "Love Walks In" - March 11, 2014
--------------------------------------

-  Fix module errors in airbrake and apt from previous release

1.5.1 "Love Walks In" - March 10, 2014
--------------------------------------

-  Force command action to not be executed by the shell unless
   specifically enabled.
-  Validate SSL certs accessed through urllib\*.
-  Implement new default cipher class AES256 in ansible-vault.
-  Misc bug fixes.

1.5 "Love Walks In" - February 28, 2014
---------------------------------------

Major features/changes:

-  when\_foo which was previously deprecated is now removed, use "when:"
   instead. Code generates appropriate error suggestion.
-  include + with\_items which was previously deprecated is now removed,
   ditto. Use with\_nested / with\_together, etc.
-  only\_if, which is much older than when\_foo and was deprecated, is
   similarly removed.
-  ssh connection plugin is now more efficient if you add
   'pipelining=True' in ansible.cfg under [ssh\_connection], see
   example.cfg
-  localhost/127.0.0.1 is not required to be in inventory if referenced,
   if not in inventory, it does not implicitly appear in the 'all'
   group.
-  git module has new parameters (accept\_hostkey, key\_file, ssh\_opts)
   to ease the usage of git and ssh protocols.
-  when using accelerate mode, the daemon will now be restarted when
   specifying a different remote\_user between plays.
-  added no\_log: option for tasks. When used, no logging information
   will be sent to syslog during the module execution.
-  acl module now handles 'default' and allows for either shorthand
   entry or specific fields per entry section
-  play\_hosts is a new magic variable to provide a list of hosts in
   scope for the current play.
-  ec2 module now accepts 'exact\_count' and 'count\_tag' as a way to
   enforce a running number of nodes by tags.
-  all ec2 modules that work with Eucalyptus also now support a
   'validate\_certs' option, which can be set to 'off' for installations
   using self-signed certs.
-  Start of new integration test infrastructure (WIP, more details TBD)
-  if repoquery is unavailable, the yum module will automatically
   attempt to install yum-utils
-  ansible-vault: a framework for encrypting your playbooks and variable
   files
-  added support for privilege escalation via 'su' into bin/ansible and
   bin/ansible-playbook and associated keywords 'su', 'su\_user',
   'su\_pass' for tasks/plays

New modules:

-  cloud
-  docker\_image
-  ec2\_elb\_lb
-  ec2\_key
-  ec2\_snapshot
-  rax\_dns
-  rax\_dns\_record
-  rax\_files
-  rax\_files\_objects
-  rax\_keypair
-  rax\_queue
-  messaging
-  rabbitmq\_policy
-  system
-  at
-  utilities
-  assert

Other notable changes (many new module params & bugfixes may not be
listed):

-  no\_reboot is now defaulted to "no" in the ec2\_ami module to ensure
   filesystem consistency in the resulting AMI.
-  sysctl module overhauled
-  authorized\_key module overhauled
-  synchronized module now handles local transport better
-  apt\_key module now ignores case on keys
-  zypper\_repository now skips on check mode
-  file module now responds to force behavior when dealing with
   hardlinks
-  new lookup plugin 'csvfile'
-  fixes to allow hash\_merge behavior to work with dynamic inventory
-  mysql module will use port argument on dump/import
-  subversion module now ignores locale to better intercept status
   messages
-  rax api\_key argument is no longer logged
-  backwards/forwards compatibility for OpenStack modules, 'quantum'
   modules grok neutron renaming
-  hosts properly uniqueified if appearing in redundant groups
-  hostname module support added for ScientificLinux
-  ansible-pull can now show live stdout and pass verbosity levels to
   ansible-playbook
-  ec2 instances can now be stopped or started
-  additional volumes can be created when creating new ec2 instances
-  user module can move a home directory
-  significant enhancement and cleanup of rackspace modules
-  ansible\_ssh\_private\_key\_file can be templated
-  docker module updated to support docker-py 0.3.0
-  various other bug fixes
-  md5 logic improved during sudo operation
-  support for ed25519 keys in authorized\_key module
-  ability to set directory permissions during a recursive copy
   (directory\_mode parameter)

1.4.5 "Could This Be Magic" - February 12, 2014
-----------------------------------------------

-  fixed issue with permissions being incorrect on fireball/accelerate
   keys when the umask setting was too loose.

1.4.4 "Could This Be Magic" - January 6, 2014
---------------------------------------------

-  fixed a minor issue with newer versions of pip dropping the
   "use-mirrors" parameter.

1.4.3 "Could This Be Magic" - December 20, 2013
-----------------------------------------------

-  Fixed role\_path parsing from ansible.cfg
-  Fixed default role templates

1.4.2 "Could This Be Magic" - December 18, 2013
-----------------------------------------------

-  Fixed a few bugs related to unicode
-  Fixed errors in the ssh connection method with large data returns
-  Miscellaneous fixes for a few modules
-  Add the ansible-galaxy command

1.4.1 "Could This Be Magic" - November 27, 2013
-----------------------------------------------

-  Misc fixes to accelerate mode and various modules.

1.4 "Could This Be Magic" - November 21, 2013
---------------------------------------------

Highlighted new features:

-  Added do-until feature, which can be used to retry a failed task a
   specified number of times with a delay in-between the retries.
-  Added failed\_when option for tasks, which can be used to specify
   logical statements that make it easier to determine when a task has
   failed, or to make it easier to ignore certain non-zero return codes
   for some commands.
-  Added the "subelement" lookup plugin, which allows iteration of the
   keys of a dictionary or items in a list.
-  Added the capability to use either paramiko or ssh for the initial
   setup connection of an accelerated playbook.
-  Automatically provide advice on common parser errors users encounter.
-  Deprecation warnings are now shown for legacy features:
   when\_integer/etc, only\_if, include+with\_items, etc. Can be
   disabled in ansible.cfg
-  The system will now provide helpful tips around possible YAML syntax
   errors increasing ease of use for new users.
-  warnings are now shown for using {{ foo }} in loops and conditionals,
   and suggest leaving the variable expressions bare as per docs.
-  The roles search path is now configurable in ansible.cfg.
   'roles\_path' in the config setting.
-  Includes with parameters can now be done like roles for consistency:
   - { include: song.yml, year:1984, song:'jump' }
-  The name of each role is now shown before each task if roles are
   being used
-  Adds a "var=" option to the debug module for debugging variable data.
   "debug: var=hostvars['hostname']" and "debug: var=foo" are all valid
   syntax.
-  Variables in {{ format }} can be used as references even if they are
   structured data
-  Can force binding of accelerate to ipv6 ports.
-  the apt module will auto-install python-apt if not present rather
   than requiring a manual installation
-  the copy module is now recursive if the local 'src' parameter is a
   directory.
-  syntax checks now scan included task and variable files as well as
   main files

New modules and plugins.

-  cloud
-  docker *- instantiates/removes/manages docker containers*
-  ec2\_eip *-- manage AWS elastic IPs*
-  ec2\_vpc *-- manage ec2 virtual private clouds*
-  elasticcache *-- Manages clusters in Amazon Elasticache*
-  ovirt *-- VM lifecycle controls for ovirt*
-  rax\_network *-- sets up Rackspace networks*
-  rax\_facts *-- retrieve facts about a Rackspace Cloud Server*
-  rax\_clb\_nodes *-- manage Rackspace cloud load balanced nodes*
-  rax\_clb *-- manages Rackspace cloud load balancers*
-  files
-  acl *-- set or get acls on a file*
-  synchronize *-- a useful wrapper around rsyncing trees of files*
-  unarchive *-- pushes and extracts tarballs*
-  system
-  blacklist *-- add or remove modules from the kernel blacklist*
-  firewalld *-- manage the firewalld configuration*
-  hostname *-- sets the systems hostname*
-  modprobe *-- manage kernel modules on systems that support
   modprobe/rmmod*
-  open\_iscsi *-- manage targets on an initiator using open-iscsi*
-  utilities
-  include\_vars *-- dynamically load variables based on conditions.*
-  packaging
-  swdepot *-- a module for working with swdepot*
-  urpmi *-- work with urpmi packages*
-  zypper\_repository *-- adds or removes Zypper repositories*
-  notification
-  grove *-- notifies to Grove hosted IRC channels*
-  web\_infrastructure
-  ejabberd\_user *-- add and remove users to ejabberd*
-  jboss *-- deploys or undeploys apps to jboss*
-  source\_control
-  github\_hooks *-- manages GitHub service hooks*
-  net\_infrastructure
-  bigip\_monitor\_http *-- manages F5 BIG-IP LTM http monitors*
-  bigip\_monitor\_tcp *-- manages F5 BIG-IP LTM TCP monitors*
-  bigip\_node *-- manages F5 BIG-IP LTM nodes*
-  bigip\_pool\_member *-- manages F5 BIG-IP LTM pool members*
-  openvswitch\_port
-  openvswitch\_bridge

Plugins:

-  jail connection module (FreeBSD)
-  lxc connection module
-  added inventory script for listing FreeBSD jails
-  added md5 as a Jinja2 filter: {{ path \| md5 }}
-  added a fileglob filter that will return files matching a glob
   pattern. with\_items: "/foo/pattern/\*.txt \| fileglob"
-  'changed' filter returns whether a previous step was changed easier.
   when: registered\_result \| changed
-  DOCS NEEDED: 'unique' and 'intersect' filters are added for dealing
   with lists.
-  DOCS NEEDED: new lookup plugin added for etcd
-  a 'func' connection type to help people migrating from
   func/certmaster.

Misc changes (all module additions/fixes may not listed):

-  (docs pending) New features for accelerate mode: configurable
   timeouts and a keepalives for long running tasks.
-  Added a ``delimiter`` field to the assemble module.
-  Added ``ansible_env`` to the list of facts returned by the setup
   module.
-  Added ``state=touch`` to the file module, which functions similarly
   to the command-line version of ``touch``.
-  Added a -vvvv level, which will show SSH client debugging information
   in the event of a failure.
-  Includes now support the more standard syntax, similar to that of
   role includes and dependencies.
-  Changed the ``user:`` parameter on plays to ``remote_user:`` to
   prevent confusion with the module of the same name. Still backwards
   compatible on play parameters.
-  Added parameter to allow the fetch module to skip the md5 validation
   step ('validate\_md5=false'). This is useful when fetching files that
   are actively being written to, such as live log files.
-  Inventory hosts are used in the order they appear in the inventory.
-  in hosts: foo[2-5] type syntax, the iterators now are zero indexed
   and the last index is non-inclusive, to match Python standards.
-  There is now a way for a callback plugin to disable itself. See
   osx\_say example code for an example.
-  Many bugfixes to modules of all types.
-  Complex arguments now can be used with async tasks
-  SSH ControlPath is now configurable in ansible.cfg. There is a limit
   to the lengths of these paths, see how to shorten them in
   ansible.cfg.
-  md5sum support on AIX with csum.
-  Extremely large documentation refactor into subchapters
-  Added 'append\_privs' option to the mysql\_user module
-  Can now update (temporarily change) host variables using the
   "add\_host" module for existing hosts.
-  Fixes for IPv6 addresses in inventory text files
-  name of executable can be passed to pip/gem etc, for installing under
   *different* interpreters
-  copy of ./hacking/env-setup added for fish users,
   ./hacking/env-setup.fish
-  file module more tolerant of non-absolute paths in softlinks.
-  miscellaneous fixes/upgrades to async polling logic.
-  conditions on roles now pass to dependent roles
-  ansible\_sudo\_pass can be set in a host variable if desired
-  misc fixes for the pip an easy\_install modules
-  support for running handlers that have parameterized names based on
   role parameters
-  added support for compressing MySQL dumps and extracting during
   import
-  Boto version compatibility fixes for the EC2 inventory script
-  in the EC2 inventory script, a group 'EC2' and 'RDS' contains EC2 and
   RDS hosts.
-  umask is enforced by the cron module
-  apt packages that are not-removed and not-upgraded do not count as
   changes
-  the assemble module can now use src files from the local server and
   copy them over dynamically
-  authorization code has been standardized between Amazon cloud modules
-  the wait\_for module can now also wait for files to exist or a regex
   string to exist in a file
-  leading ranges are now allowed in ranged hostname patterns, ex:
   [000-250].example.com
-  pager support added to ansible-doc (so it will auto-invoke less, etc)
-  misc fixes to the cron module
-  get\_url module now understands content-disposition headers for
   deciding filenames
-  it is possible to have subdirectories in between group\_vars/ and
   host\_vars/ and the final filename, like host\_vars/rack42/asdf for
   the variables for host 'asdf'. The intermediate directories are
   ignored, and do not put a file in there twice.

1.3.4 "Top of the World" (reprise) - October 29, 2013
-----------------------------------------------------

-  Fixed a bug in the copy module, where a filename containing the
   string "raw" was handled incorrectly
-  Fixed a bug in accelerate mode, where copying a zero-length file out
   would fail

1.3.3 "Top of the World" (reprise) - October 9, 2013
----------------------------------------------------

Additional fixes for accelerate mode.

1.3.2 "Top of the World" (reprise) - September 19th, 2013
---------------------------------------------------------

Multiple accelerate mode fixes:

-  Make packet reception less greedy, so multiple frames of data are not
   consumed by one call.
-  Adding two timeout values (one for connection and one for data
   reception timeout).
-  Added keepalive packets, so async mode is no longer required for
   long-running tasks.
-  Modified accelerate daemon to use the verbose logging level of the
   ansible command that started it.
-  Fixed bug where accelerate would not work in check-mode.
-  Added a -vvvv level, which will show SSH client debugging information
   in the event of a failure.
-  Fixed bug in apt\_repository module where the repository cache was
   not being updated.
-  Fixed bug where "too many open files" errors would be encountered due
   to pseudo TTY's not being closed properly.

1.3.1 "Top of the World" (reprise) - September 16th, 2013
---------------------------------------------------------

Fixing a bug in accelerate mode whereby the gather\_facts step would
always be run via sudo regardless of the play settings.

1.3 "Top of the World" - September 13th, 2013
---------------------------------------------

Highlighted new features:

-  accelerated mode: An enhanced fireball mode that requires zero
   bootstrapping and fewer requirements plus adds capabilities like sudo
   commands.
-  role defaults: Allows roles to define a set of variables at the
   lowest priority. These variables can be overridden by any other
   variable.
-  new /etc/ansible/facts.d allows JSON or INI-style facts to be
   provided from the remote node, and supports executable fact programs
   in this dir. Files must end in \*.fact.
-  added the ability to make undefined template variables raise errors
   (see ansible.cfg)
-  (DOCS PENDING) sudo: True/False and sudo\_user: True/False can be set
   at include and role level
-  added changed\_when: (expression) which allows overriding whether a
   result is changed or not and can work with registered expressions
-  --extra-vars can now take a file as input, e.g., "-e @filename" and
   can also be formatted as YAML
-  external inventory scripts may now return host variables in one pass,
   which allows them to be much more efficient for large numbers of
   hosts
-  if --forks exceeds the numbers of hosts, it will be automatically
   reduced. Set forks to 0 and you get "as many forks as I have hosts"
   out of the box.
-  enabled error\_on\_undefined\_vars by default, which will make errors
   in playbooks more obvious
-  role dependencies -- one role can now pull in another, with
   parameters of its own.
-  added the ability to have tasks execute even during a check run
   (always\_run).
-  added the ability to set the maximum failure percentage for a group
   of hosts.

New modules:

-  notifications
-  datadog\_event *-- send data to datadog*
-  cloud
-  digital\_ocean *-- module for DigitalOcean provisioning that also
   includes inventory support*
-  rds *-- Amazon Relational Database Service*
-  linode *-- modules for Linode provisioning that also includes
   inventory support*
-  route53 *-- manage Amazon DNS entries*
-  ec2\_ami *-- manages (and creates!) ec2 AMIs*
-  database
-  mysql\_replication *-- manages mysql replication settings for
   masters/slaves*
-  mysql\_variables *-- manages mysql runtime variables*
-  redis *-- manages redis databases (slave mode and flushing data)*
-  net\_infrastructure
-  arista\_interface
-  arista\_l2interface
-  arista\_lag
-  arista\_vlan
-  dnsmadeeasy *-- manipulate DNS Made Easy records*
-  system
-  stat *-- reports on stat(istics) of remote files, for use with
   'register'*
-  web\_infrastructure
-  htpasswd *-- manipulate htpasswd files*
-  packaging
-  apt\_repository *-- rewritten to remove dependencies*
-  rpm\_key *-- adds or removes RPM signing keys*
-  monitoring
-  boundary\_meter *-- adds or removes boundary.com meters*
-  files
-  xattr *-- manages extended attributes on files*

Misc changes:

-  return 3 when there are hosts that were unreachable during a run
-  the yum module now supports wildcard values for the enablerepo
   argument
-  added an inventory script to pull host information from Zabbix
-  async mode no longer allows with\_\* lookup plugins due to
   incompatibilities
-  Added OpenRC support (Gentoo) to the service module
-  ansible\_ssh\_user value is available to templates
-  added placement\_group parameter to ec2 module
-  new sha256sum parameter added to get\_url module for checksum
   validation
-  search for mount binaries in system path and sbin vs assuming path
-  allowed inventory file to be read from a pipe
-  added Solaris distribution facts
-  fixed bug along error path in quantum\_network module
-  user password update mode is controllable in user module now (at
   creation vs. every time)
-  added check mode support to the OpenBSD package module
-  Fix for MySQL 5.6 compatibility
-  HP UX virtualization facts
-  fixed some executable bits in git
-  made rhn\_register module compatible with EL5
-  fix for setup module epoch time on Solaris
-  sudo\_user is now expanded later, allowing it to be set at inventory
   scope
-  mongodb\_user module changed to also support MongoDB 2.2
-  new state=hard option added to the file module for hardlinks vs
   softlinks
-  fixes to apt module purging option behavior
-  fixes for device facts with multiple PCI domains
-  added "with\_inventory\_hostnames" lookup plugin, which can take a
   pattern and loop over hostnames matching the pattern and is great for
   use with delegate\_to and so on
-  ec2 module supports adding to multiple security groups
-  cloudformation module includes fixes for the error path, and the
   'wait\_for' parameter was removed
-  added --only-if-changed to ansible-pull, which runs only if the repo
   has changes (not default)
-  added 'mandatory', a Jinja2 filter that checks if a variable is
   defined: {{ foo\|mandatory }}
-  added support for multiple size formats to the lvol module
-  timing reporting on wait\_for module now includes the delay time
-  IRC module can now send a server password
-  "~" now expanded on each component of configured plugin paths
-  fix for easy\_install module when dealing with virtualenv
-  rackspace module now explicitly indicates rackspace vs vanilla
   openstack
-  add\_host module does not report changed=True any longer
-  explanatory error message when using fireball with sudo has been
   improved
-  git module now automatically pulls down git submodules
-  negated patterns do not require "all:!foo", you can just say "!foo"
   now to select all not foos
-  fix for Debian services always reporting changed when toggling
   enablement bit
-  roles files now tolerate files named 'main.yaml' and 'main' in
   addition to main.yml
-  some help cleanup to command line flags on scripts
-  force option reinstated for file module so it can create symlinks to
   non-existent files, etc.
-  added termination support to ec2 module
-  --ask-sudo-pass or --sudo-user does not enable all options to use
   sudo in ansible-playbook
-  include/role conditionals are added ahead of task conditionals so
   they can short circuit properly
-  added pipes.quote in various places so paths with spaces are better
   tolerated
-  error handling while executing Jinja2 filters has been improved
-  upgrades to atomic replacement logic when copying files across
   partitions/etc
-  mysql user module can try to login before requiring explicit password
-  various additional options added to supervisorctl module
-  only add non unique parameter on group creation when required
-  allow rabbitmq\_plugin to specify a non-standard RabbitMQ path
-  authentication fixes to keystone\_user module
-  added IAM role support to EC2 module
-  fixes for OpenBSD package module to avoid shell expansion
-  git module upgrades to allow --depth and --version to be used
   together
-  new lookup plugin, "with\_flattened"
-  extra vars (-e) variables can be used in playbook include paths
-  improved reporting for invalid sudo passwords
-  improved reporting for inability to find a suitable tmp location
-  require libselinux-python to perform file operations if SELinux is
   operational
-  ZFS module fixes for byte display constants and handling paths with
   spaces
-  setup module more tolerant of gathering facts against things it does
   not have permission to read
-  can specify name=\* state=latest to update all yum modules
-  major speedups to the yum module for default cases
-  ec2\_facts module will now run in check mode
-  sleep option on service module for sleeping between stop/restart
-  fix for IPv6 facts on BSD
-  added Jinja2 filters: skipped, whether a result was skipped
-  added Jinja2 filters: quote, quotes a string if it needs to be quoted
-  allow force=yes to affect apt upgrades
-  fix for saving conditionals in variable names
-  support for multiple host ranges in INI inventory, e.g.,
   db[01:10:3]node-[01:10]
-  fixes/improvements to cron module
-  add user\_install=no option to gem module to install gems system wide
-  added raw=yes to allow copying without python on remote machines
-  added with\_indexed\_items lookup plugin
-  Linode inventory plugin now significantly faster
-  added recurse=yes parameter to pacman module for package removal
-  apt\_key module can now target specific keyrings (keyring=filename)
-  ec2 module change reporting improved
-  hg module now expands user paths (~)
-  SSH connection type known host checking now can process hashed
   known\_host files
-  lvg module now checks for executables in more correct locations
-  copy module now works correctly with sudo\_user
-  region parameter added to ec2\_elb module
-  better default XMPP module message types
-  fixed conditional tests against raw booleans
-  mysql module grant removal is now smarter
-  apt-remove is now forced to be non-interactive
-  support ; comments in INI file module
-  fixes to callbacks WRT async output (fire and forget tasks now
   trigger callbacks!)
-  folder support for s3 module
-  added new example inventory plugin for Red Hat OpenShift
-  and other misc. bugfixes

1.2.3 "Hear About It Later" (reprise) -- Aug 21, 2013
-----------------------------------------------------

-  Local security fixes for predictable file locations for
   ControlPersist and retry file paths on shared machines on operating
   systems without kernel symlink/hardlink protections.

1.2.2 "Hear About It Later" (reprise) -- July 4, 2013
-----------------------------------------------------

-  Added a configuration file option [paramiko\_connection]
   record\_host\_keys which allows the code that paramiko uses to update
   known\_hosts to be disabled. This is done because paramiko can be
   very slow at doing this if you have a large number of hosts and some
   folks may not want this behavior. This can be toggled independently
   of host key checking and does not affect the ssh transport plugin.
   Use of the ssh transport plugin is preferred if you have
   ControlPersist capability, and Ansible by default in 1.2.1 and later
   will autodetect.

1.2.1 "Hear About It Later" -- July 4, 2013
-------------------------------------------

-  Connection default is now "smart", which discovers if the system
   openssh can support ControlPersist, and uses it if so, if not falls
   back to paramiko.
-  Host key checking is on by default. Disable it if you like by adding
   host\_key\_checking=False in the [default] section of
   /etc/ansible/ansible.cfg or ~/ansible.cfg or by exporting
   ANSIBLE\_HOST\_KEY\_CHECKING=False
-  Paramiko now records host keys it was in contact with host key
   checking is on. It is somewhat sluggish when doing this, so switch to
   the 'ssh' transport if this concerns you.

1.2 "Right Now" -- June 10, 2013
--------------------------------

Core Features:

-  capability to set 'all\_errors\_fatal: True' in a playbook to force
   any error to stop execution versus a whole group or serial block
   needing to fail usable, without breaking the ability to override in
   ansible
-  ability to use variables from {{ }} syntax in mainline playbooks, new
   'when' conditional, as detailed in documentation. Can disable old
   style replacements in ansible.cfg if so desired, but are still active
   by default.
-  can set ansible\_ssh\_private\_key\_file as an inventory variable
   (similar to ansible\_ssh\_host, etc)
-  'when' statement can be affixed to task includes to auto-affix the
   conditional to each task therein
-  cosmetic: "\*\*\*\*\*" banners in ansible-playbook output are now
   constant width
-  --limit can now be given a filename (--limit @filename) to constrain
   a run to a host list on disk
-  failed playbook runs will create a retry file in /var/tmp/ansible
   usable with --limit
-  roles allow easy arrangement of reusable
   tasks/handlers/files/templates
-  pre\_tasks and post\_tasks allow for separating tasks into blocks
   where handlers will fire around them automatically
-  "meta: flush\_handler" task capability added for when you really need
   to force handlers to run
-  new --start-at-task option to ansible playbook allows starting at a
   specific task name in a long playbook
-  added a log file for ansible/ansible-playbook, set 'log\_path' in the
   configuration file or ANSIBLE\_LOG\_PATH in environment
-  debug mode always outputs debug in playbooks, without needing to
   specify -v
-  external inventory script added for Spacewalk / Red Hat Satellite
   servers
-  It is now possible to feed JSON structures to --extra-vars. Pass in a
   JSON dictionary/hash to feed in complex data.
-  group\_vars/ and host\_vars/ directories can now be kept alongside
   the playbook as well as inventory (or both!)
-  more filters: ability to say {{ foo\|success }} and {{ foo\|failed }}
   and when: foo\|success and when: foo\|failed
-  more filters: {{ path\|basename }} and {{ path\|dirname }}
-  lookup plugins now use the basedir of the file they have included
   from, avoiding needs of ../../../ in places and increasing the ease
   at which things can be reorganized.

Modules added:

-  cloud
-  rax *-- module for creating instances in the rackspace cloud (uses
   pyrax)*
-  packages
-  npm *-- node.js package management*
-  pkgng *-- next-gen package manager for FreeBSD*
-  redhat\_subscription *-- manage Red Hat subscription usage*
-  rhn\_register *-- basic RHN registration*
-  zypper *(SuSE)*
-  database
-  postgresql\_priv *-- manages postgresql privileges*
-  networking
-  bigip\_pool *-- load balancing with F5s*
-  ec2\_elb *-- add and remove machines from ec2 elastic load balancers*
-  notification
-  hipchat *-- send notification events to hipchat*
-  flowdock *-- send messages to flowdock during playbook runs*
-  campfire *-- send messages to campfire during playbook runs*
-  mqtt *-- send messages to the Mosquitto message bus*
-  irc *-- send messages to IRC channels*
-  filesystem *-- a wrapper around mkfs*
-  jabber *-- send jabber chat messages*
-  osx\_say *-- make OS X say things out loud*
-  openstack
-  glance\_image
-  nova\_compute
-  nova\_keypair
-  keystone\_user
-  quantum\_floating\_ip
-  quantum\_floating\_ip\_associate
-  quantum\_network
-  quantum\_router
-  quantum\_router\_gateway
-  quantum\_router\_interface
-  quantum\_subnet
-  monitoring
-  airbrake\_deployment *-- notify airbrake of new deployments*
-  monit
-  newrelic\_deployment *-- notifies newrelic of new deployments*
-  pagerduty
-  pingdom
-  utility
-  set\_fact *-- sets a variable, which can be the result of a template
   evaluation*

Modules removed

-  vagrant -- can't be compatible with both versions at once, just run
   things though the vagrant provisioner in vagrant core

Bugfixes and Misc Changes:

-  service module happier if only enabled=yes\|no specified and no state
-  mysql\_db: use --password= instead of -p in dump/import so it doesn't
   go interactive if no pass set
-  when using -c ssh and the ansible user is the current user, don't
   pass a -o to allow SSH config to be
-  overwrite parameter added to the s3 module
-  private\_ip parameter added to the ec2 module
-  $FILE and $PIPE now tolerate unicode
-  various plugin loading operations have been made more efficient
-  hostname now uses platform.node versus socket.gethostname to be more
   consistent with Unix 'hostname'
-  fix for SELinux operations on Unicode path names
-  inventory directory locations now ignore files with .ini extensions,
   making hybrid inventory easier
-  copy module in check-mode now reports back correct changed status
   when used with force=no
-  added avail. zone to ec2 module
-  fixes to the hash variable merging logic if so enabled in the main
   settings file (default is to replace, not merge hashes)
-  group\_vars and host\_vars files can now end in a .yaml or .yml
   extension, (previously required no extension, still favored)
-  ec2vol module improvements
-  if the user module is told to generate the ssh key, the key generated
   is now returned in the results
-  misc fixes to the Riak module
-  make template module slightly more efficient
-  base64encode / decode filters are now available to templates
-  libvirt module can now work with multiple different libvirt
   connection URIs
-  fix for postgresql password escaping
-  unicode fix for shlex.split in some cases
-  apt module upgrade logic improved
-  URI module now can follow redirects
-  yum module can now install off http URLs
-  sudo password now defaults to ssh password if you ask for both and
   just hit enter on the second prompt
-  validate feature on copy and template module, for example, running
   visudo prior to copying the file over
-  network facts upgraded to return advanced configs (bonding, etc)
-  region support added to ec2 module
-  riak module gets a wait for ring option
-  improved check mode support in the file module
-  exception handling added to handle scenario when attempt to log to
   systemd journal fails
-  fix for upstart handling when toggling the enablement and running
   bits at the same time
-  when registering a task with a conditional attached, and the task is
   skipped by the conditional, the variable is still registered for the
   host, with the attribute skipped: True.
-  delegate\_to tasks can look up ansible\_ssh\_private\_key\_file
   variable from inventory correctly now
-  s3 module takes a 'dest' parameter to change the destination for
   uploads
-  apt module gets a cache\_valid\_time option to avoid redundant cache
   updates
-  ec2 module better understands security groups
-  fix for postgresql codec usage
-  setup module now tolerant of OpenVZ interfaces
-  check mode reporting improved for files and directories
-  doc system now reports on module requirements
-  group\_by module can now also make use of globally scoped variables
-  localhost and 127.0.0.1 are now fuzzy matched in inventory (are now
   more or less interchangeable)
-  AIX improvements/fixes for users, groups, facts
-  lineinfile now does atomic file replacements
-  fix to not pass PasswordAuthentication=no in the config file
   unnecessarily for SSH connection type
-  for authorized\_key on Debian Squeeze
-  fixes for apt\_repository module reporting changed incorrectly on
   certain repository types
-  allow the virtualenv argument to the pip module to be a pathname
-  service pattern argument now correctly read for BSD services
-  fetch location can now be controlled more directly via the 'flat'
   parameter.
-  added basename and dirname as Jinja2 filters available to all
   templates
-  pip works better when sudoing from unprivileged users
-  fix for user creation with groups specification reporting 'changed'
   incorrectly in some cases
-  fix for some unicode encoding errors in outputting some data in
   verbose mode
-  improved FreeBSD, NetBSD and Solaris facts
-  debug module always outputs data without having to specify -v
-  fix for sysctl module creating new keys (must specify checks=none)
-  NetBSD and OpenBSD support for the user and groups modules
-  Add encrypted password support to password lookup

1.1 "Mean Street" -- 4/2/2013
-----------------------------

Core Features

-  added --check option for "dry run" mode
-  added --diff option to show how templates or copied files change, or
   might change
-  --list-tasks for the playbook will list the tasks without running
   them
-  able to set the environment by setting "environment:" as a dictionary
   on any task (go proxy support!)
-  added ansible\_ssh\_user and ansible\_ssh\_pass for per-host/group
   username and password
-  jinja2 extensions can now be loaded from the config file
-  support for complex arguments to modules (within reason)
-  can specify ansible\_connection=X to define the connection type in
   inventory variables
-  a new chroot connection type
-  module common code now has basic type checking (and casting)
   capability
-  module common now supports a 'no\_log' attribute to mark a field as
   not to be syslogged
-  inventory can now point to a directory containing multiple
   scripts/hosts files, if using this, put group\_vars/host\_vars
   directories inside this directory
-  added configurable crypt scheme for 'vars\_prompt'
-  password generating lookup plugin -- $PASSWORD(path/to/save/data/in)
-  added --step option to ansible-playbook, works just like Linux
   interactive startup!

Modules Added:

-  bzr *(bazaar version control)*
-  cloudformation
-  django-manage
-  gem *(ruby gems)*
-  homebrew
-  lvg *(logical volume groups)*
-  lvol *(LVM logical volumes)*
-  macports
-  mongodb\_user
-  netscaler
-  okg
-  openbsd\_pkg
-  rabbit\_mq\_parameter
-  rabbit\_mq\_plugin
-  rabbit\_mq\_user
-  rabbit\_mq\_vhost
-  rhn\_channel
-  s3 *-- allows putting file contents in buckets for sharing over s3*
-  uri module *-- can get/put/post/etc*
-  vagrant *-- launching VMs with vagrant, this is different from
   existing vagrant plugin*
-  zfs

Bugfixes and Misc Changes:

-  stderr shown when commands fail to parse
-  uses yaml.safe\_dump in filter plugins
-  authentication Q&A no longer happens before --syntax-check, but after
-  ability to get hostvars data for nodes not in the setup cache yet
-  SSH timeout now correctly passed to native SSH connection plugin
-  raise an error when multiple when\_ statements are provided
-  --list-hosts applies host limit selections better
-  (internals) template engine specifications to use template\_ds
   everywhere
-  better error message when your host file can not be found
-  end of line comments now work in the inventory file
-  directory destinations now work better with remote md5 code
-  lookup plugin macros like $FILE and $ENV now work without returning
   arrays in variable definitions/playbooks
-  uses yaml.safe\_load everywhere
-  able to add EXAMPLES to documentation via EXAMPLES docstring, rather
   than just in main documentation YAML
-  can set ANSIBLE\_COW\_SELECTION to pick other cowsay types (including
   random)
-  to\_nice\_yaml and to\_nice\_json available as Jinja2 filters that
   indent and sort
-  cowsay able to run out of macports (very important!)
-  improved logging for fireball mode
-  nicer error message when talking to an older system that needs a JSON
   module installed
-  'magic' variable 'inventory\_dir' now gives path to inventory file
-  'magic' variable 'vars' works like 'hostvars' but gives global scope
   variables, useful for debugging in templates mostly
-  conditionals can be used on plugins like add\_host
-  developers: all callbacks now have access to a ".runner" and
   ".playbook", ".play", and ".task" object (use getattr, they may not
   always be set!)

Facts:

-  block device facts for the setup module
-  facts for AIX
-  fact detection for OS type on Amazon Linux
-  device fact gathering stability improvements
-  ansible\_os\_family fact added
-  user\_id (remote user name)
-  a whole series of current time information under the 'datetime' hash
-  more OS X facts
-  support for detecting Alpine Linux
-  added facts for OpenBSD

Module Changes/Fixes:

-  ansible module common code (and ONLY that) which is mixed in with
   modules, is now BSD licensed. App remains GPLv3.
-  service code works better on platforms that mix upstart, systemd, and
   system-v
-  service enablement idempotence fixes for systemd and upstart
-  service status 4 is also 'not running'
-  supervisorctl restart fix
-  increased error handling for ec2 module
-  can recursively set permissions on directories
-  ec2: change to the way AMI tags are handled
-  cron module can now also manipulate cron.d files
-  virtualenv module can now inherit system site packages (or not)
-  lineinfile module now has an insertbefore option
-  NetBSD service module support
-  fixes to sysctl module where item has multiple values
-  AIX support for the user and group modules
-  able to specify a different hg repo to pull from than the original
   set
-  add\_host module can set ports and other inventory variables
-  add\_host module can add modules to multiple groups (groups=a,b,c),
   groups now alias for groupname
-  subnet ID can be set on EC2 module
-  MySQL module password handling improvements
-  added new virtualenv flags to pip and easy\_install modules
-  various improvements to lineinfile module, now accepts common
   arguments from file
-  force= now replaces thirsty where used before, thirsty remains an
   alias
-  setup module can take a 'filter=' parameter to just return a few
   facts (not used by playbooks)
-  cron module works even if no crontab is present (for cron.d)
-  security group ID settable on EC2 module
-  misc fixes to sysctl module
-  fix to apt module so packages not in cache are still removable
-  charset fix to mail module
-  postresql db module now does not try to create the 'PUBLIC' user
-  SVN module now works correctly with self signed certs
-  apt module now has an upgrade parameter (values=yes, no, or 'dist')
-  nagios module gets new silence/unsilence commands
-  ability to disable proxy usage in get\_url (use\_proxy=no)
-  more OS X facts
-  added a 'fail\_on\_missing' (default no) option to fetch
-  added timeout to the uri module (default 30 seconds, adjustable)
-  ec2 now has a 'wait' parameter to wait for the instance to be active,
   eliminates need for separate wait\_for call.
-  allow regex backreferences in lineinfile
-  id attribute on ec2 module can be used to set
   idempotent-do-not-recreate launches
-  icinga support for nagios module
-  fix default logins when no my.conf for MySQL module
-  option to create users with non-unique UIDs (user module)
-  macports module can enable/disable packages
-  quotes in my.cnf are stripped by the MySQL modules
-  Solaris Service management added
-  service module will attempt to auto-add unmanaged chkconfig services
   when needed
-  service module supports systemd service unit files

Plugins:

-  added 'with\_random\_choice' filter plugin
-  fixed ~ expansion for fileglob
-  with\_nested allows for nested loops (see examples in
   examples/playbooks)

1.0 "Eruption" -- Feb 1 2013
----------------------------

New modules:

-  apt\_key
-  ec2\_facts
-  hg *(now in core)*
-  pacman *(Arch linux)*
-  pkgin *(Joyent SmartOS)*
-  sysctl

New config settings:

-  sudo\_exe parameter can be set in config to use sudo alternatives
-  sudo\_flags parameter can alter the flags used with sudo

New playbook/language features:

-  added when\_failed and when\_changed
-  task includes can now be of infinite depth
-  when\_set and when\_unset can take more than one var (when\_set: $a
   and $b and $c)
-  added the with\_sequence lookup plugin
-  can override "connection:" on an individual task
-  parameterized playbook includes can now define complex variables (not
   just all on one line)
-  making inventory variables available for use in vars\_files paths
-  messages when skipping plays are now more clear
-  --extra-vars now has maximum precedence (as intended)

Module fixes and new flags:

-  ability to use raw module without python on remote system
-  fix for service status checking on Ubuntu
-  service module now responds to additional exit code for
   SERVICE\_UNAVAILABLE
-  fix for raw module with '-c local'
-  various fixes to git module
-  ec2 module now reports the public DNS name
-  can pass executable= to the raw module to specify alternative shells
-  fix for postgres module when user contains a "-"
-  added additional template variables -- $template\_fullpath and
   $template\_run\_date
-  raise errors on invalid arguments used with a task include statement
-  shell/command module takes a executable= parameter to specify a
   different shell than /bin/sh
-  added return code and error output to the raw module
-  added support for @reboot to the cron module
-  misc fixes to the pip module
-  nagios module can schedule downtime for all services on the host
-  various subversion module improvements
-  various mail module improvements
-  SELinux fix for files created by authorized\_key module
-  "template override" ??
-  get\_url module can now send user/password authorization
-  ec2 module can now deploy multiple simultaneous instances
-  fix for apt\_key modules stalling in some situations
-  fix to enable Jinja2 {% include %} to work again in template
-  ec2 module is now powered by Boto
-  setup module can now detect if package manager is using pacman
-  fix for yum module with enablerepo in use on EL 6

Core fixes and new behaviors:

-  various fixes for variable resolution in playbooks
-  fixes for handling of "~" in some paths
-  various fixes to DWIM'ing of relative paths
-  /bin/ansible now takes a --list-hosts just like ansible-playbook did
-  various patterns can now take a regex vs a glob if they start with
   "~" (need docs on which!) - also /usr/bin/ansible
-  allow intersecting host patterns by using "&"
   ("webservers:!debian:&datacenter1")
-  handle tilde shell character for --private-key
-  hash merging policy is now selectable in the config file, can choose
   to override or merge
-  environment variables now available for setting all plugin paths
   (ANSIBLE\_CALLBACK\_PLUGINS, etc)
-  added packaging file for macports (not upstreamed yet)
-  hacking/test-module script now uses /usr/bin/env properly
-  fixed error formatting for certain classes of playbook syntax errors
-  fix for processing returns with large volumes of output

Inventory files/scripts:

-  hostname patterns in the inventory file can now use alphabetic ranges
-  whitespace is now allowed around group variables in the inventory
   file
-  inventory scripts can now define groups of groups and group vars
   (need example for docs?)

0.9 "Dreams" -- Nov 30 2012
---------------------------

Highlighted core changes:

-  various performance tweaks, ansible executes dramatically less SSH
   ops per unit of work
-  close paramiko SFTP connections less often on copy/template
   operations (speed increase)
-  change the way we use multiprocessing (speed/RAM usage improvements)
-  able to set default for asking password & sudo password in config
   file
-  ansible now installs nicely if running inside a virtualenv
-  flag to allow SSH connection to move files by scp vs sftp (in config
   file)
-  additional RPM subpackages for easily installing fireball mode deps
   (server and node)
-  group\_vars/host\_vars now available to ansible, not just playbooks
-  native ssh connection type (-c ssh) now supports passwords as well as
   keys
-  ansible-doc program to show details

Other core changes:

-  fix for template calls when last character is '$'
-  if ansible\_python\_interpreter is set on a delegated host, it now
   works as intended
-  --limit can now take "," as separator as well as ";" or ":"
-  msg is now displaced with newlines when a task fails
-  if any with\_ plugin has no results in a list (empty list for
   with\_items, etc), the task is now skipped
-  various output formatting fixes/improvements
-  fix for Xen dom0/domU detection in default facts
-  'ansible\_domain' fact now available (ex value: example.com)
-  configured remote temp file location is now always used even for root
-  'register'-ed variables are not recorded for skipped hosts (for
   example, using only\_if/when)
-  duplicate host records for the same host can no longer result when a
   host is listed in multiple groups
-  ansible-pull now passes --limit to prevent running on multiple hosts
   when used with generic playbooks
-  remote md5sum check fixes for Solaris 10
-  ability to configure syslog facility used by remote module calls
-  in templating, stray '$' characters are now handled more correctly

Playbook changes:

-  relative paths now work for 'first\_available\_file'
-  various templating engine fixes
-  'when' is an easier form of only if
-  --list-hosts on the playbook command now supports multiple playbooks
   on the same command line
-  playbook includes can now be parameterized

Module additions:

-  (addhost) new module for adding a temporary host record (used for
   creating new guests)
-  (group\_by) module allows partitioning hosts based on group data
-  (ec2) new module for creating ec2 hosts
-  (script) added 'script' module for pushing and running self-deleting
   remote scripts
-  (svr4pkg) solaris svr4pkg module

Module changes:

-  (authorized key) module uses temp file now to prevent failure on full
   disk
-  (fetch) now uses the 'slurp' internal code to work as you would
   expect under sudo'ed accounts
-  (fetch) internal usage of md5 sums fixed for BSD
-  (get\_url) thirsty is no longer required for directory destinations
-  (git) various git module improvements/tweaks
-  (group) now subclassed for various platforms, includes SunOS support
-  (lineinfile) create= option on lineinfile can create the file when it
   does not exist
-  (mysql\_db) module takes new grant options
-  (postgresql\_db) module now takes role\_attr\_flags
-  (service) further upgrades to service module service status reporting
-  (service) tweaks to get service module to play nice with BSD style
   service systems (rc.conf)
-  (service) possible to pass additional arguments to services
-  (shell) and command module now take an 'executable=' flag for
   specifying an alternate shell than /bin/sh
-  (user) ability to create SSH keys for users when using user module to
   create users
-  (user) atomic replacement of files preserves permissions of original
   file
-  (user) module can create SSH keys
-  (user) module now does Solaris and BSD
-  (yum) module takes enablerepo= and disablerepo=
-  (yum) misc yum module fixing for various corner cases

Plugin changes:

-  EC2 inventory script now produces nicer failure message if AWS is
   down (or similar)
-  plugin loading code now more streamlined
-  lookup plugins for DNS text records, environment variables, and redis
-  added a template lookup plugin $TEMPLATE('filename.j2')
-  various tweaks to the EC2 inventory plugin
-  jinja2 filters are now pluggable so it's easy to write your own
   (to\_json/etc, are now impl. as such)

0.8 "Cathedral" -- Oct 19, 2012
-------------------------------

Highlighted Core Changes:

-  fireball mode -- ansible can bootstrap a ephemeral 0mq (zeromq)
   daemon that runs as a given user and expires after X period of time.
   It is very fast.
-  playbooks with errors now return 2 on failure. 1 indicates a more
   fatal syntax error. Similar for /usr/bin/ansible
-  server side action code (template, etc) are now fully pluggable
-  ability to write lookup plugins, like the code powering
   "with\_fileglob" (see below)

Other Core Changes:

-  ansible config file can also go in 'ansible.cfg' in cwd in addition
   to ~/.ansible.cfg and /etc/ansible/ansible.cfg
-  fix for inventory hosts at API level when hosts spec is a list and
   not a colon delimited string
-  ansible-pull example now sets up logrotate for the ansible-pull cron
   job log
-  negative host matching (!hosts) fixed for external inventory script
   usage
-  internals: os.executable check replaced with utils function so it
   plays nice on AIX
-  Debian packaging now includes ansible-pull manpage
-  magic variable 'ansible\_ssh\_host' can override the hostname (great
   for usage with tunnels)
-  date command usage in build scripts fixed for OS X
-  don't use SSH agent with paramiko if a password is specified
-  make output be cleaner on multi-line command/shell errors
-  /usr/bin/ansible now prints things when tasks are skipped, like when
   creates= is used with -m command and /usr/bin/ansible
-  when trying to async a module that is not a 'normal' asyncable
   module, ansible will now let you know
-  ability to access inventory variables via 'hostvars' for hosts not
   yet included in any play, using on demand lookups
-  merged ansible-plugins, ansible-resources, and ansible-docs into the
   main project
-  you can set ANSIBLE\_NOCOWS=1 if you want to disable cowsay if it is
   installed. Though no one should ever want to do this! Cows are great!
-  you can set ANSIBLE\_FORCE\_COLOR=1 to force color mode even when
   running without a TTY
-  fatal errors are now properly colored red.
-  skipped messages are now cyan, to differentiate them from unchanged
   messages.
-  extensive documentation upgrades
-  delegate\_action to localhost (aka local\_action) will always use the
   local connection type

Highlighted playbook changes:

-  is\_set is available for use inside of an only\_if expression:
   is\_set('ansible\_eth0'). We intend to further upgrade this with a
   'when' keyword providing better options to 'only\_if' in the next
   release. Also is\_unset('ansible\_eth0')
-  playbooks can import playbooks in other directories and then be able
   to import tasks relative to them
-  FILE($path) now allows access of contents of file in a path, very
   good for use with SSH keys
-  similarly PIPE($command) will run a local command and return the
   results of executing this command
-  if all hosts in a play fail, stop the playbook, rather than letting
   the console log spool on by
-  only\_if using register variables that are booleans now works in a
   boolean way like you'd expect
-  task includes now work with with\_items (such as: include:
   path/to/wordpress.yml user=$item)
-  when using a $list variable with $var or ${var} syntax it will
   automatically join with commas
-  setup is not run more than once when we know it is has already been
   run in a play that included another play, etc
-  can set/override sudo and sudo\_user on individual tasks in a play,
   defaults to what is set in the play if not present
-  ability to use with\_fileglob to iterate over local file patterns
-  templates now use Jinja2's 'trim\_blocks=True' to avoid stray
   newlines, small changes to templates may be required in rare cases.

Other playbook changes:

-  to\_yaml and from\_yaml are available as Jinja2 filters
-  $group and $group\_names are now accessible in with\_items
-  where 'stdout' is provided a new 'stdout\_lines' variable (type ==
   list) is now generated and usable with with\_items
-  when local\_action is used the transport is automatically overridden
   to the local type
-  output on failed playbook commands is now nicely split for
   stderr/stdout and syntax errors
-  if local\_action is not used and delegate\_to was 127.0.0.1 or
   localhost, use local connection regardless
-  when running a playbook, and the statement has changed, prints
   'changed:' now versus 'ok:' so it is obvious without colored mode
-  variables now usable within vars\_prompt (just not host/group vars)
-  setup facts are now retained across plays (dictionary just gets
   updated as needed)
-  --sudo-user now works with --extra-vars
-  fix for multi\_line strings with only\_if

New Modules:

-  ini\_file module for manipulating INI files
-  new LSB facts (release, distro, etc)
-  pause module -- (pause seconds=10) (pause minutes=1) (pause
   prompt=foo) -- it's an action plugin
-  a module for adding entries to the main crontab (though you may still
   wish to just drop template files into cron.d)
-  debug module can be used for outputting messages without using 'shell
   echo'
-  a fail module is now available for causing errors, you might want to
   use it with only\_if to fail in certain conditions

Other module Changes, Upgrades, and Fixes:

-  removes= exists on command just like creates=
-  postgresql modules now take an optional port= parameter
-  /proc/cmdline info is now available in Linux facts
-  public host key detection for OS X
-  lineinfile module now uses 'search' not exact 'match' in regexes,
   making it much more intuitive and not needing regex syntax most of
   the time
-  added force=yes\|no (default no) option for file module, which allows
   transition between files to directories and so on
-  additional facts for SunOS virtualization
-  copy module is now atomic when used across volumes
-  url\_get module now returns 'dest' with the location of the file
   saved
-  fix for yum module when using local RPMs vs downloading
-  cleaner error messages with copy if destination directory does not
   exist
-  setup module now still works if PATH is not set
-  service module status now correct for services with 'subsys locked'
   status
-  misc fixes/upgrades to the wait\_for module
-  git module now expands any "~" in provided destination paths
-  ignore stop error code failure for service module with
   state=restarted, always try to start
-  inline documentation for modules allows documentation source to built
   without pull requests to the ansible-docs project, among other things
-  variable '$ansible\_managed' is now great to include at the top of
   your templates and includes useful information and a warning that it
   will be replaced
-  "~" now expanded in command module when using creates/removes
-  mysql module can do dumps and imports
-  selinux policy is only required if setting to not disabled
-  various fixes for yum module when working with packages not in any
   present repo

0.7 "Panama" -- Sept 6 2012
---------------------------

Module changes:

-  login\_unix\_socket option for mysql user and database modules (see
   PR #781 for doc notes)
-  new modules -- pip, easy\_install, apt\_repository, supervisorctl
-  error handling for setup module when SELinux is in a weird state
-  misc yum module fixes
-  better changed=True/False detection in user module on older Linux
   distros
-  nicer errors from modules when arguments are not key=value
-  backup option on copy (backup=yes), as well as template, assemble,
   and lineinfile
-  file module will not recurse on directory properties
-  yum module now workable without having repoquery installed, but
   doesn't support comparisons or list= if so
-  setup module now detects interfaces with aliases
-  better handling of VM guest type detection in setup module
-  new module boilerplate code to check for mutually required arguments,
   arguments required together, exclusive args
-  add pattern= as a parameter to the service module (for init scripts
   that don't do status, or do poor status)
-  various fixes to mysql & postresql modules
-  added a thirsty= option (boolean, default no) to the get\_url module
   to decide to download the file every time or not
-  added a wait\_for module to poll for ports being open
-  added a nagios module for controlling outage windows and alert
   statuses
-  added a seboolean module for getsebool/setsebool type operations
-  added a selinux module for controlling overall SELinux policy
-  added a subversion module
-  added lineinfile for adding and removing lines from basic files
-  added facts for ARM-based CPUs
-  support for systemd in the service module
-  git moduleforce reset behavior is now controllable
-  file module can now operate on special files (block devices, etc)

Core changes:

-  ansible --version will now give branch/SHA information if running
   from git
-  better sudo permissions when encountering different umasks
-  when using paramiko and SFTP is not accessible, do not traceback, but
   return a nice human readable msg
-  use -vvv for extreme debug levels. -v gives more playbook output as
   before
-  -vv shows module arguments to all module calls (and maybe some other
   things later)
-  don not pass "--" to sudo to work on older EL5
-  make remote\_md5 internal function work with non-bash shells
-  allow user to be passed in via --extra-vars (regression)
-  add --limit option, which can be used to further confine the pattern
   given in ansible-playbooks
-  adds ranged patterns like dbservers[0-49] for usage with patterns or
   --limit
-  -u and user: defaults to current user, rather than root, override as
   before
-  /etc/ansible/ansible.cfg and ~/ansible.cfg now available to set
   default values and other things
-  (developers) ANSIBLE\_KEEP\_REMOTE\_FILES=1 can be used in debugging
   (envrionment variable)
-  (developers) connection types are now plugins
-  (developers) callbacks can now be extended via plugins
-  added FreeBSD ports packaging scripts
-  check for terminal properties prior to engaging color modes
-  explicitly disable password auth with -c ssh, as it is not used
   anyway

Playbooks:

-  YAML syntax errors detected and show where the problem is
-  if you ctrl+c a playbook it will not traceback (usually)
-  vars\_prompt now has encryption options (see
   examples/playbooks/prompts.yml)
-  allow variables in parameterized task include parameters (regression)
-  add ability to store the result of any command in a register (see
   examples/playbooks/register\_logic.yml)
-  --list-hosts to show what hosts are included in each play of a
   playbook
-  fix a variable ordering issue that could affect vars\_files with
   selective file source lists
-  adds 'delegate\_to' for a task, which can be used to signal outage
   windows and load balancers on behalf of hosts
-  adds 'serial' to playbook, allowing you to specify how many hosts can
   be processing a playbook at one time (default 0=all)
-  adds 'local\_action: ' as an alias to 'delegate\_to: 127.0.0.1'

0.6 "Cabo" -- August 6, 2012
----------------------------

playbooks:

-  support to tag tasks and includes and use --tags in playbook CLI
-  playbooks can now include other playbooks
   (example/playbooks/nested\_playbooks.yml)
-  vars\_files now usable with with\_items, provided file paths don't
   contain host specific facts
-  error reporting if with\_items value is unbound
-  with\_items no longer creates lots of tasks, creates one task that
   makes multiple calls
-  can use host\_specific facts inside with\_items (see above)
-  at the top level of a playbook, set 'gather\_facts: no' to skip fact
   gathering
-  first\_available\_file and with\_items used together will now raise
   an error
-  to catch typos, like 'var' for 'vars', playbooks and tasks now yell
   on invalid parameters
-  automatically load
   (directory\_of\_inventory\_file)/group\_vars/groupname and
   /host\_vars/hostname in vars\_files
-  playbook is now colorized, set ANSIBLE\_NOCOLOR=1 if you do not like
   this, does not colorize if not a TTY
-  hostvars now preserved between plays (regression in 0.5 from 0.4),
   useful for sharing vars in multinode configs
-  ignore\_errors: yes on a task can be used to allow a task to fail and
   not stop the play
-  with\_items with the apt/yum module will install/remove/update
   everything in a single command

inventory:

-  groups variable available as a hash to return the hosts in each group
   name
-  in YAML inventory, hosts can list their groups in inverted order now
   also (see tests/yaml\_hosts)
-  YAML inventory is deprecated and will be removed in 0.7
-  ec2 inventory script
-  support ranges of hosts in the host file, like
   www[001-100].example.com (supports leading zeros and also not)

modules:

-  fetch module now does not fail a system when requesting file paths
   (ex: logs) that don't exist
-  apt module now takes an optional install-recommends=yes\|no (default
   yes)
-  fixes to the return codes of the copy module
-  copy module takes a remote md5sum to avoid large file transfer
-  various user and group module fixes (error handling, etc)
-  apt module now takes an optional force parameter
-  slightly better psychic service status handling for the service
   module
-  fetch module fixes for SSH connection type
-  modules now consistently all take yes/no for boolean parameters (and
   DWIM on true/false/1/0/y/n/etc)
-  setup module no longer saves to disk, template module now only used
   in playbooks
-  setup module no longer needs to run twice per playbook
-  apt module now passes DEBIAN\_FRONTEND=noninteractive
-  mount module (manages active mounts + fstab)
-  setup module fixes if no ipv6 support
-  internals: template in common module boilerplate, also causes less
   SSH operations when used
-  git module fixes
-  setup module overhaul, more modular
-  minor caching logic added to inventory to reduce hammering of
   inventory scripts.
-  MySQL and PostgreSQL modules for user and db management
-  vars\_prompt now supports private password entry (see
   examples/playbooks/prompts.yml)
-  yum module modified to be more tolerant of plugins spewing random
   console messages (ex: RHN)

internals:

-  when sudoing to root, still use /etc/ansible/setup as the metadata
   path, as if root
-  paramiko is now only imported if needed when running from source
   checkout
-  cowsay support on Ubuntu
-  various ssh connection fixes for old Ubuntu clients
-  ./hacking/test-module now supports options like ansible takes and has
   a debugger mode
-  sudoing to a user other than root now works more seamlessly (uses
   /tmp, avoids umask issues)

0.5 "Amsterdam" ------- July 04, 2012
-------------------------------------

-  Service module gets more accurate service states when running with
   upstart
-  Jinja2 usage in playbooks (not templates), reinstated, supports
   %include directive
-  support for --connection ssh (supports Kerberos, bastion hosts, etc),
   requires ControlMaster
-  misc tracebacks replaced with error messages
-  various API/internals refactoring
-  vars can be built from other variables
-  support for exclusion of hosts/groups with "!groupname"
-  various changes to support md5 tool differences for FreeBSD nodes &
   OS X clients
-  "unparseable" command output shows in command output for easier
   debugging
-  mktemp is no longer required on remotes (not available on BSD)
-  support for older versions of python-apt in the apt module
-  a new "assemble" module, for constructing files from pieces of files
   (inspired by Puppet "fragments" idiom)
-  ability to override most default values with ANSIBLE\_FOO environment
   variables
-  --module-path parameter can support multiple directories separated
   with the OS path separator
-  with\_items can take a variable of type list
-  ansible\_python\_interpreter variable available for systems with more
   than one Python
-  BIOS and VMware "fact" upgrades
-  cowsay is used by ansible-playbook if installed to improve output
   legibility (try installing it)
-  authorized\_key module
-  SELinux facts now sourced from the python selinux library
-  removed module debug option -D
-  added --verbose, which shows output from successful playbook
   operations
-  print the output of the raw command inside /usr/bin/ansible as with
   command/shell
-  basic setup module support for Solaris
-  ./library relative to the playbook is always in path so modules can
   be included in tarballs with playbooks

0.4 "Unchained" ------- May 23, 2012
------------------------------------

Internals/Core \* internal inventory API now more object oriented,
parsers decoupled \* async handling improvements \* misc fixes for
running ansible on OS X (overlord only) \* sudo improvements, now works
much more smoothly \* sudo to a particular user with -U/--sudo-user, or
using 'sudo\_user: foo' in a playbook \* --private-key CLI option to
work with pem files

Inventory \* can use -i host1,host2,host3:port to specify hosts not in
inventory (replaces --override-hosts) \* ansible INI style format can do
groups of groups [groupname:children] and group vars [groupname:vars] \*
groups and users module takes an optional system=yes\|no on creation
(default no) \* list of hosts in playbooks can be expressed as a YAML
list in addition to ; delimited

Playbooks \* variables can be replaced like
${foo.nested\_hash\_key.nested\_subkey[array\_index]} \* unicode now ok
in templates (assumes utf8) \* able to pass host specifier or group name
in to "hosts:" with --extra-vars \* ansible-pull script and example
playbook (extreme scaling, remediation) \* inventory\_hostname variable
available that contains the value of the host as ansible knows it \*
variables in the 'all' section can be used to define other variables
based on those values \* 'group\_names' is now a variable made available
to templates \* first\_available\_file feature, see
selective\_file\_sources.yml in examples/playbooks for info \*
--extra-vars="a=2 b=3" etc, now available to inject parameters into
playbooks from CLI

Incompatible Changes \* jinja2 is only usable in templates, not
playbooks, use $foo instead \* --override-hosts removed, can use -i with
comma notation (-i "ahost,bhost") \* modules can no longer include
stderr output (paramiko limitation from sudo)

Module Changes \* tweaks to SELinux implementation for file module \*
fixes for yum module corner cases on EL5 \* file module now correctly
returns the mode in octal \* fix for symlink handling in the file module
\* service takes an enable=yes\|no which works with chkconfig or
updates-rc.d as appropriate \* service module works better on Ubuntu \*
git module now does resets and such to work more smoothly on updates \*
modules all now log to syslog \* enabled=yes\|no on a service can be
used to toggle chkconfig & updates-rc.d states \* git module supports
branch= \* service fixes to better detect status using return codes of
the service script \* custom facts provided by the setup module mean no
dependency on Ruby, facter, or ohai \* service now has a state=reloaded
\* raw module for bootstrapping and talking to routers w/o Python, etc

Misc Bugfixes \* fixes for variable parsing in only\_if lines \* misc
fixes to key=value parsing \* variables with mixed case now legal \* fix
to internals of hacking/test-module development script

0.3 "Baluchitherium" -- April 23, 2012
--------------------------------------

-  Packaging for Debian, Gentoo, and Arch
-  Improvements to the apt and yum modules
-  A virt module
-  SELinux support for the file module
-  Ability to use facts from other systems in templates (aka exported
   resources like support)
-  Built in Ansible facts so you don't need ohai, facter, or Ruby
-  tempdir selections that work with noexec mounted /tmp
-  templates happen locally, not remotely, so no dependency on
   python-jinja2 for remote computers
-  advanced inventory format in YAML allows more control over variables
   per host and per group
-  variables in playbooks can be structured/nested versus just a flat
   namespace
-  manpage upgrades (docs)
-  various bugfixes
-  can specify a default --user for playbooks rather than specifying it
   in the playbook file
-  able to specify ansible port in ansible host file (see docs)
-  refactored Inventory API to make it easier to write scripts using
   Ansible
-  looping capability for playbooks (with\_items)
-  support for using sudo with a password
-  module arguments can be unicode
-  A local connection type, --connection=local, for use with cron or in
   kickstarts
-  better module debugging with -D
-  fetch module for pulling in files from remote hosts
-  command task supports creates=foo for idempotent semantics, won't run
   if file foo already exists

0.0.2 and 0.0.1
---------------

-  Initial stages of project
