CHANGELOG.md 32.4 KB
Newer Older
Michael DeHaan committed
1 2 3
Ansible Changes By Release
==========================

4 5
1.1 "Mean Street" -- Release pending

Michael DeHaan committed
6 7
Core Features

Michael DeHaan committed
8
* added --check option for "dry run" mode
Michael DeHaan committed
9
* added --diff option to show how templates or copied files change, or might change
Michael DeHaan committed
10 11 12 13 14 15 16
* --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
Michael DeHaan committed
17 18
* 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
19
* inventory can now point to a directory containing multiple scripts/hosts files, if using this, put group_vars/host_vars directories inside this directory
Michael DeHaan committed
20 21
* added configurable crypt scheme for 'vars_prompt'
* password generating lookup plugin -- $PASSWORD(path/to/save/data/in)
Michael DeHaan committed
22 23 24 25 26 27

Modules Added:

* rabbit_mq plugin module
* rabbit_mq user module
* rabbit_mq vhost module
28
* rabbit_mq parameter module
Michael DeHaan committed
29 30 31 32
* mongodb_user module
* new uri module -- can get/put/post/etc
* CloudFormation module
* zfs
33 34 35 36
* okg
* macports
* gem
* lvol (LVM logical volumes)
Michael DeHaan committed
37
* django-manage
Michael DeHaan committed
38 39
* openbsd_pkg
* netscaler
Michael DeHaan committed
40 41 42

Bugfixes and Misc Changes:

Michael DeHaan committed
43 44
* stderr shown when commands fail to parse
* uses yaml.safe_dump in filter plugins
Michael DeHaan committed
45
* authentication Q&A no longer happens before --syntax-check, but after
Michael DeHaan committed
46 47 48 49 50
* 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
51
* better error message when your host file can not be found
Michael DeHaan committed
52 53 54 55 56
* 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
57 58 59 60 61
* 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
Michael DeHaan committed
62 63 64

Facts:

65
* block device facts for the setup module
Michael DeHaan committed
66 67
* facts for AIX
* fact detection for OS type on Amazon Linux
Michael DeHaan committed
68 69
* device fact gathering stability improvements
* ansible_os_family fact added
70 71
* user_id (remote user name)
* a whole series of current time information under the 'datetime' hash
Michael DeHaan committed
72 73
* more OS X facts
* support for detecting Alpine Linux
Michael DeHaan committed
74 75 76

Module Changes/Fixes:

Michael DeHaan committed
77 78 79
* 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
Michael DeHaan committed
80 81 82 83 84 85 86
* 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)
Michael DeHaan committed
87 88 89 90
* 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
Michael DeHaan committed
91
* able to specify a different hg repo to pull from than the original set
92 93
* 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
94 95 96 97 98
* 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
Michael DeHaan committed
99
* setup module can take a 'filter=<wildcard>' parameter to just return a few facts (not used by playbooks)
100 101 102 103 104 105
* 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
Michael DeHaan committed
106
* SVN module now works correctly with self signed certs
107
* apt module now has an upgrade parameter (values=yes, no, or 'dist')
Michael DeHaan committed
108 109 110 111 112 113 114
* 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 seperate wait_for call.
* allow regex backreferences in lineinfile
Michael DeHaan committed
115 116 117 118 119

Plugins:

* added 'with_random_choice' filter plugin
* fixed ~ expansion for fileglob
120 121

1.0 "Eruption" -- Feb 1 2013
122

123 124
New modules:

125 126
* new sysctl module
* new pacman module (Arch linux)
127 128 129 130 131 132 133
* new apt_key module
* hg module now in core
* new ec2_facts module
* added pkgin module for Joyent SmartOS

New config settings:

134 135
* sudo_exe parameter can be set in config to use sudo alternatives
* sudo_flags parameter can alter the flags used with sudo
136 137 138

New playbook/language features:

139
* added when_failed and when_changed
140
* task includes can now be of infinite depth
141
* when_set and when_unset can take more than one var (when_set: $a and $b and $c)
142 143 144 145 146
* added the with_sequence lookup plugin
* can override "connection:" on an indvidual 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
Michael DeHaan committed
147
* --extra-vars now has maximum precedence (as intended)
148 149 150 151

Module fixes and new flags:

* ability to use raw module without python on remote system
152 153 154
* 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'
155
* various fixes to git module
156 157 158 159 160 161 162 163 164 165 166 167 168 169
* 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" ??
170 171 172
* 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
173
* fix to enable Jinja2 {% include %} to work again in template
174 175
* ec2 module is now powered by Boto
* setup module can now detect if package manager is using pacman
Michael DeHaan committed
176
* fix for yum module with enablerepo in use on EL 6
177

178
Core fixes and new behaviors:
Michael DeHaan committed
179

180 181 182 183 184 185 186 187
* 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
188
* environment variables now available for setting all plugin paths (ANSIBLE_CALLBACK_PLUGINS, etc)
Michael DeHaan committed
189 190 191 192
* 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
193 194 195 196 197 198

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?)
Michael DeHaan committed
199 200

0.9 "Dreams" -- Nov 30 2012
201

Michael DeHaan committed
202 203
Highlighted core changes:

Michael DeHaan committed
204
* various performance tweaks, ansible executes dramatically less SSH ops per unit of work
Michael DeHaan committed
205 206
* close paramiko SFTP connections less often on copy/template operations (speed increase)
* change the way we use multiprocessing (speed/RAM usage improvements)
Michael DeHaan committed
207 208 209 210 211
* 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
Michael DeHaan committed
212
* native ssh connection type (-c ssh) now supports passwords as well as keys
Michael DeHaan committed
213
* ansible-doc program to show details
Michael DeHaan committed
214 215 216 217

Other core changes:

* fix for template calls when last character is '$'
Michael DeHaan committed
218
* if ansible_python_interpreter is set on a delegated host, it now works as intended
Jim Kleckner committed
219
* --limit can now take "," as separator as well as ";" or ":"
Michael DeHaan committed
220
* msg is now displaced with newlines when a task fails
Michael DeHaan committed
221
* if any with_ plugin has no results in a list (empty list for with_items, etc), the task is now skipped
Michael DeHaan committed
222 223 224
* various output formatting fixes/improvements
* fix for Xen dom0/domU detection in default facts
* 'ansible_domain' fact now available (ex value: example.com)
Michael DeHaan committed
225
* configured remote temp file location is now always used even for root
226 227 228 229 230 231
* '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
Michael DeHaan committed
232 233 234 235 236

Playbook changes:

* relative paths now work for 'first_available_file'
* various templating engine fixes
237
* 'when' is an easier form of only if
238 239
* --list-hosts on the playbook command now supports multiple playbooks on the same command line
* playbook includes can now be parameterized
Michael DeHaan committed
240 241 242 243 244 245 246 247 248

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

Michael DeHaan committed
249
Module changes:
Michael DeHaan committed
250 251

* (authorized key) module uses temp file now to prevent failure on full disk
252 253
* (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
Michael DeHaan committed
254 255
* (get_url) thirsty is no longer required for directory destinations
* (git) various git module improvements/tweaks
256
* (group) now subclassed for various platforms, includes SunOS support
Michael DeHaan committed
257
* (lineinfile) create= option on lineinfile can create the file when it does not exist
Michael DeHaan committed
258
* (mysql_db) module takes new grant options
Michael DeHaan committed
259 260 261
* (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)
262
* (service) possible to pass additional arguments to services
Michael DeHaan committed
263 264 265 266 267 268 269 270 271 272
* (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:

Michael DeHaan committed
273 274
* EC2 inventory script now produces nicer failure message if AWS is down (or similar)
* plugin loading code now more streamlined
Michael DeHaan committed
275
* lookup plugins for DNS text records, environment variables, and redis
276
* added a template lookup plugin $TEMPLATE('filename.j2')
Michael DeHaan committed
277 278
* 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)
279

280
0.8 "Cathedral" -- Oct 19, 2012
Michael DeHaan committed
281

Michael DeHaan committed
282
Highlighted Core Changes:
Michael DeHaan committed
283

Michael DeHaan committed
284 285
* 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
Michael DeHaan committed
286
* server side action code (template, etc) are now fully pluggable
287
* ability to write lookup plugins, like the code powering "with_fileglob" (see below)
Michael DeHaan committed
288 289 290

Other Core Changes:

Michael DeHaan committed
291 292 293 294 295 296 297 298 299 300 301 302
* 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
Michael DeHaan committed
303 304 305 306 307 308 309
* 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_FORCECOLOR=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
Michael DeHaan committed
310
* delegate_action to localhost (aka local_action) will always use the local connection type
Michael DeHaan committed
311

Michael DeHaan committed
312
Highlighted playbook changes:
Michael DeHaan committed
313

Michael DeHaan committed
314 315
* 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')
Michael DeHaan committed
316
* playbooks can import playbooks in other directories and then be able to import tasks relative to them
Michael DeHaan committed
317 318
* 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
Michael DeHaan committed
319 320 321 322 323
* 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
Michael DeHaan committed
324
* can set/override sudo and sudo_user on individual tasks in a play, defaults to what is set in the play if not present
325
* ability to use with_fileglob to iterate over local file patterns
Michael DeHaan committed
326 327
* templates now use Jinja2's 'trim_blocks=True' to avoid stray newlines, small changes to templates may
be required in rare cases.
Michael DeHaan committed
328 329 330 331 332 333

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
Michael DeHaan committed
334
* when local_action is used the transport is automatically overridden to the local type
Michael DeHaan committed
335 336 337 338
* 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)
Michael DeHaan committed
339 340 341 342
* 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

Michael DeHaan committed
343 344 345 346 347 348 349 350 351 352
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 outputing 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:
Michael DeHaan committed
353 354 355 356 357 358 359 360 361 362 363 364

* 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
Michael DeHaan committed
365 366 367 368
* 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
Michael DeHaan committed
369
* ignore stop error code failure for service module with state=restarted, always try to start
Michael DeHaan committed
370
* inline documentation for modules allows documentation source to built without pull requests to the ansible-docs project, among other things
Michael DeHaan committed
371 372
* 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
Michael DeHaan committed
373
* mysql module can do dumps and imports
Michael DeHaan committed
374 375
* selinux policy is only required if setting to not disabled
* various fixes for yum module when working with packages not in any present repo
376

Michael DeHaan committed
377
0.7 "Panama" -- Sept 6 2012
378 379

Module changes:
Michael DeHaan committed
380

Michael DeHaan committed
381
* login_unix_socket option for mysql user and database modules (see PR #781 for doc notes)
382 383 384 385
* 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
386
* nicer errors from modules when arguments are not key=value
Michael DeHaan committed
387
* backup option on copy (backup=yes), as well as template, assemble, and lineinfile
Michael DeHaan committed
388 389
* 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
390 391 392 393 394
* 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 paramter to the service module (for init scripts that don't do status, or do poor status)
* various fixes to mysql & postresql modules
395
* added a thirsty= option (boolean, default no) to the get_url module to decide to download the file every time or not
Michael DeHaan committed
396 397 398 399 400 401 402 403 404 405
* 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)
406 407 408 409 410 411 412 413

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)
Michael DeHaan committed
414
* don not pass "--" to sudo to work on older EL5
Michael DeHaan committed
415 416
* make remote_md5 internal function work with non-bash shells
* allow user to be passed in via --extra-vars (regression)
417
* add --limit option, which can be used to further confine the pattern given in ansible-playbooks
418
* adds ranged patterns like dbservers[0-49] for usage with patterns or --limit
Michael DeHaan committed
419
* -u and user: defaults to current user, rather than root, override as before
Michael DeHaan committed
420
* /etc/ansible/ansible.cfg and ~/ansible.cfg now available to set default values and other things
421 422
* (developers) ANSIBLE_KEEP_REMOTE_FILES=1 can be used in debugging (envrionment variable)
* (developers) connection types are now plugins
Michael DeHaan committed
423 424 425 426
* (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
427 428 429 430

Playbooks:

* YAML syntax errors detected and show where the problem is
Michael DeHaan committed
431
* if you ctrl+c a playbook it will not traceback (usually)
432 433 434
* 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)
435
* --list-hosts to show what hosts are included in each play of a playbook
436
* fix a variable ordering issue that could affect vars_files with selective file source lists
437
* adds 'delegate_to' for a task, which can be used to signal outage windows and load balancers on behalf of hosts
438
* adds 'serial' to playbook, allowing you to specify how many hosts can be processing a playbook at one time (default 0=all)
Michael DeHaan committed
439
* adds 'local_action: <action parameters>' as an alias to 'delegate_to: 127.0.0.1'
Michael DeHaan committed
440

Michael DeHaan committed
441
0.6 "Cabo" -- August 6, 2012
442

443 444
playbooks:

Michael DeHaan committed
445
* support to tag tasks and includes and use --tags in playbook CLI
446 447 448 449 450
* 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)
451
* at the top level of a playbook, set 'gather_facts: no' to skip fact gathering
452 453 454 455 456
* 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
457
* ignore_errors: yes on a task can be used to allow a task to fail and not stop the play
458
* with_items with the apt/yum module will install/remove/update everything in a single command
459 460 461

inventory:

Michael DeHaan committed
462
* groups variable available as a hash to return the hosts in each group name
463 464 465
* 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
466
* support ranges of hosts in the host file, like www[001-100].example.com (supports leading zeros and also not)
467 468 469

modules:

Michael DeHaan committed
470
* fetch module now does not fail a system when requesting file paths (ex: logs) that don't exist
Michael DeHaan committed
471 472
* apt module now takes an optional install-recommends=yes|no (default yes)
* fixes to the return codes of the copy module
Michael DeHaan committed
473
* copy module takes a remote md5sum to avoid large file transfer
Michael DeHaan committed
474 475 476
* 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
Michael DeHaan committed
477
* fetch module fixes for SSH connection type
478
* modules now consistently all take yes/no for boolean parameters (and DWIM on true/false/1/0/y/n/etc)
479
* setup module no longer saves to disk, template module now only used in playbooks
480
* setup module no longer needs to run twice per playbook
Michael DeHaan committed
481
* apt module now passes DEBIAN_FRONTEND=noninteractive
482
* mount module (manages active mounts + fstab)
Michael DeHaan committed
483
* setup module fixes if no ipv6 support
Michael DeHaan committed
484
* internals: template in common module boilerplate, also causes less SSH operations when used
Michael DeHaan committed
485
* git module fixes
Michael DeHaan committed
486
* setup module overhaul, more modular
Michael DeHaan committed
487
* minor caching logic added to inventory to reduce hammering of inventory scripts.
Michael DeHaan committed
488 489
* MySQL and PostgreSQL modules for user and db management
* vars_prompt now supports private password entry (see examples/playbooks/prompts.yml)
490
* yum module modified to be more tolerant of plugins spewing random console messages (ex: RHN)
491 492 493 494 495 496 497 498

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
Michael DeHaan committed
499
* sudoing to a user other than root now works more seamlessly (uses /tmp, avoids umask issues)
Michael DeHaan committed
500

501
0.5 "Amsterdam" ------- July 04, 2012
502 503 504 505 506 507 508 509 510 511 512 513 514 515

* 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
Jim Kleckner committed
516
* --module-path parameter can support multiple directories separated with the OS path separator
517 518 519 520 521 522
* 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
Michael DeHaan committed
523 524
* removed module debug option -D
* added --verbose, which shows output from successful playbook operations
525
* print the output of the raw command inside /usr/bin/ansible as with command/shell
526 527
* basic setup module support for Solaris
* ./library relative to the playbook is always in path so modules can be included in tarballs with playbooks
528

529
0.4 "Unchained" ------- May 23, 2012
Michael DeHaan committed
530

531 532 533 534
Internals/Core
* internal inventory API now more object oriented, parsers decoupled
* async handling improvements
* misc fixes for running ansible on OS X (overlord only)
535
* sudo improvements, now works much more smoothly
536 537 538 539 540 541 542
* 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)
543
* list of hosts in playbooks can be expressed as a YAML list in addition to ; delimited
544 545 546 547 548 549 550 551 552

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
553
* first_available_file feature, see selective_file_sources.yml in examples/playbooks for info
Michael DeHaan committed
554
* --extra-vars="a=2 b=3" etc, now available to inject parameters into playbooks from CLI
555 556 557 558

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")
Michael DeHaan committed
559
* modules can no longer include stderr output (paramiko limitation from sudo)
560 561 562 563 564

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
565 566
* fix for symlink handling in the file module
* service takes an enable=yes|no which works with chkconfig or updates-rc.d as appropriate
Michael DeHaan committed
567 568
* service module works better on Ubuntu
* git module now does resets and such to work more smoothly on updates
Michael DeHaan committed
569
* modules all now log to syslog
570
* enabled=yes|no on a service can be used to toggle chkconfig & updates-rc.d states
571 572 573 574 575 576 577 578 579
* 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
580
* variables with mixed case now legal
581 582
* fix to internals of hacking/test-module development script

Michael DeHaan committed
583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611

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
Michael DeHaan committed
612
* command task supports creates=foo for idempotent semantics, won't run if file foo already exists
Michael DeHaan committed
613 614 615 616 617

0.0.2 and 0.0.1

* Initial stages of project