10 KiB
Ansible Changes By Release
0.7 "Panama" -- release pending
-
I can barely see the roadmap from the heat coming off of it.
-
login_unix_socket option for mysql user and database modules (see PR #781 for doc notes)
-
new modules -- pip, easy_install, apt_repository, supervisorctl
-
ansible --version will now give branch/SHA information if running from git
-
error handling for setup module when SELinux is in a weird state
-
misc yum module fixes
-
better sudo permissions when encountering different umasks
-
YAML syntax errors detected and show where the problem is
-
better changed=True/False detection in user module on older Linux distros
-
when using paramiko and SFTP is not accessible, do not traceback, but return a nice human readable msg
-
nicer errors from modules when arguments are not key=value
-
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)
-
if you ctrl+c a playbook it won't traceback
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: False' 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: True 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 seperated with the OS path seperator
- 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