Commit Graph

230 Commits (6d66b0e965682d27ef861aa1d56326fd79a77c60)

Author SHA1 Message Date
Michael DeHaan 0944e7d56a Make less template calls on playbook objects. 2013-04-12 21:48:01 -04:00
Michael DeHaan 44a9352338 Also template handlers only at the end. 2013-04-12 20:32:35 -04:00
Michael DeHaan e7f5186dec Merge pull request #2623 from willthames/when_set_bug
Prevent premature variable substitution in tasks
2013-04-12 17:19:25 -07:00
Michael DeHaan 3ab0ed5fd4 Allow 'when' and 'with_items' to be applied to roles. 2013-04-12 19:02:56 -04:00
willthames 377bc31311 Prevent premature substitution of variables into tasks
As documented in #2623, early variable substitution causes when_
tests to fail and possibly other side effects.

I can see the reason for this early substitution, likely introduced
in 1dfe60a6, to allow many playbook parameters to be templated.
This is a valid goal, but the recursive nature of the utils.template
function means that it goes too far.

At this point removing tasks from the list of parameters to be
substituted seems sufficient to make my tests pass. It may be the
case that other parameters should be excluded, but I suspect not.

Adding a test case. I would prefer to analyse not just the aggregate
statistics but also whether the results are as expected - I can't
see an easy way to do that with the available callbacks at present.
2013-04-12 09:17:03 +10:00
Michael DeHaan 7931597a6a Fix template call. 2013-04-11 12:15:13 -04:00
Michael DeHaan b09ef21ec9 Add code to flag legacy templating like $foo.{bar} as deprecated in favor of Jinja2 {{ foo.bar }} so we
can remove the legacy system at a later date.
2013-04-10 17:52:35 -04:00
Michael DeHaan 29209c4913 Style fixes so "make pep8" is clean. 2013-04-10 16:37:49 -04:00
Michael DeHaan c5d9823467 Fix some items related to playbook includes and indentation. 2013-04-10 15:04:41 -04:00
Michael DeHaan 290780d13f Playbook + with_items was an undocumented feature that was causing problems because it would
evaluate and replace '$item' with ''.  Really it doesn't make sense to include multiple playbooks
via a loop variable, as you can do this with task + with_items already (and it's a simpler code
path).  Given this is undocumented, this removes that feature, and we'll consider next how to
also add 'with_items' support directly to roles.
2013-04-09 20:13:55 -04:00
Michael DeHaan c64f19dc5f Don't set the item variable as eager template replacement will over-replace the variable as an empty string. 2013-04-09 19:57:53 -04:00
willthames 9d87733f98 Test case and fix for shlex.split unicode bug
When operating on a unicode string in python 2.6, shlex.split returns
a result that does not work with the file constructor.

To reproduce this requires a task include that is templated (this is
because the templated string is a unicode result, whereas a non-
templated string is a non-unicode string)

    [will@centos6.3] $ python
    Python 2.6.6 (r266:84292, Sep 11 2012, 08:34:23)
    [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import shlex
    >>> shlex.split(u'abc')
    ['a\x00\x00\x00b\x00\x00\x00c\x00\x00\x00']

    [will@fedora17] $ python
    Python 2.7.3 (default, Jul 24 2012, 10:05:38)
    [GCC 4.7.0 20120507 (Red Hat 4.7.0-5)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import shlex
    >>> shlex.split(u'abc')
    ['abc']

The proposed fix (coercing the include parameters to string before the
shlex.split) may not be ideal but it does fix the bug for my test case.
2013-04-08 14:47:43 +10:00
Michael DeHaan 61f2668b0a Don't include the '.yml' in the path to the retry files. 2013-04-08 12:38:05 -04:00
Michael DeHaan 0d530f3bf0 Change the retry logic to write a limit file, able to source limit from files by indicating with @filename 2013-04-08 12:36:01 -04:00
Michael DeHaan c695aa2d6a When playbooks fail, attempt to create an inventory file in the inventory directory that allows rerunning
of the playbook against only the hosts that failed.
2013-04-07 23:37:10 -04:00
Stoned Elipot 1ed54b9b3a when: condition support for tasks include 2013-04-07 00:43:39 +02:00
Michael DeHaan fffb1a0a9d Loose tasks not in roles get executed after roles. 2013-04-06 18:36:25 -04:00
Michael DeHaan f044fc344b When using roles, or other includes, the path to DWIM inside is the path of the task include
file.
2013-04-06 18:32:36 -04:00
Michael DeHaan 5c4ed72571 Demo of parameterized roles! 2013-04-06 12:51:17 -04:00
Michael DeHaan f308194b9a Added examples of how roles work! 2013-04-06 12:35:35 -04:00
Michael DeHaan 892484812e Much requested feature -- allows relative imports of content within roles or relative to any task or handler include (../templates for template ../files for copy) 2013-04-06 12:13:04 -04:00
Michael DeHaan 95f30f0def Complete streamlining of vars handling in playbooks and how those are templated to avoid
repeat template calls at playbook intialization time.
2013-04-06 10:45:09 -04:00
Michael DeHaan 1dfe60a6ea Allow any parameter in a play to be set by --extra-vars through cleaner use of data structure
templating.
2013-04-06 10:09:16 -04:00
Michael DeHaan f585c4cde7 Upgraded variable support met with upgraded conditional support, see examples/playbooks/upgraded_vars.yml
for details!
2013-04-05 19:10:32 -04:00
Junegunn Choi b874027b36 compare the number of available hosts before and after running each task 2013-03-29 13:13:22 +09:00
Junegunn Choi 20a48c6bdf terminate immediately on a failure 2013-03-28 15:17:01 +09:00
Michael DeHaan 42b0e51223 Upgrade callbacks further, now '.play', '.task', and so on are also available! 2013-03-25 22:56:32 -04:00
Michael DeHaan 0d11f53eff Let the callbacks see the playbook and (current) runner objects. 2013-03-25 22:47:06 -04:00
Michael DeHaan 783a12cc0e Resolve merge commit. 2013-03-25 22:32:01 -04:00
David Hughes c365974117 Added variable expansion to task sudo_user parameter 2013-03-15 11:31:27 -07:00
milan 80dbab3cf0 check type of task explicitly 2013-03-14 13:06:55 +01:00
Seth Vidal 7687c2caf8 add --step option to ansible-playbooks to let people step through a playbook
one by one - asking for confirmation along the way.

also allows to 'continue' after a certain point
2013-03-11 00:39:05 -04:00
Daniel Hokka Zakrisson 297259725a Allow (local_)action: to be a dict
Use the key module: to set which module to invoke.
2013-02-28 14:12:36 +01:00
Daniel Hokka Zakrisson c04d5ba739 Allow specifying args directly to actions using module: syntax
Makes things like
- name: do complex things with complex module
  complex:
    setting_a: true
    setting_b:
    - foo
    - bar
possible.

Fixes #2228.
2013-02-28 13:54:04 +01:00
Daniel Hokka Zakrisson 7e0ee6809c Don't template delegate_to too early, not all vars are available
Fixes using delegate_to: $item within a playbook include.
2013-02-25 22:25:13 +01:00
Michael DeHaan 9cf66f4376 Fixes from 'make pep8'. Partial, more to come. 2013-02-17 19:40:38 -05:00
Michael DeHaan 1ecf4a6943 Working on complex argument support. 2013-02-17 15:01:49 -05:00
Michael DeHaan c8878998d1 update some of many copyright dates but we can just do this when editing each file, not super high priority 2013-02-16 15:32:01 -05:00
Daniel Hokka Zakrisson 57e51f7fdf Clean up some extra_vars redundancy 2013-02-11 23:25:50 +01:00
Michael DeHaan f7497e75e5 Able to use "environment: " on any task to pass proxy details and other useful settings. Can be a variable
or a dictionary.
2013-02-10 13:05:58 -05:00
Michael DeHaan a9162a86f2 Very basic --diff option for showing what happens when templates change.
Probably output is not useful if not used with --limit

Works well with --check mode
2013-02-07 22:52:25 -05:00
Daniel Hokka Zakrisson 98f0a9210e Raise an error when multiple when_* statements are provided
Fixes #1994.
2013-02-07 08:11:30 +01:00
Daniel Hokka Zakrisson d5e63332fe Raise an error if an action doesn't have a string type
Happens with e.g. "command: true" that YAML helpfully converts to a
bool.
2013-02-06 16:41:34 +01:00
Michael DeHaan fed82c2188 This implements a basic --check mode which for now is only implemented on template & copy operations. More detail will be shared with the list
shortly.
2013-02-03 20:34:13 -05:00
Daniel Hokka Zakrisson a025cfcb33 Add on_import_for_host callback from non-list case 2013-02-03 23:37:29 +01:00
Daniel Hokka Zakrisson a79373f6b2 Make template_ds the only templater
Instead of having to remember when to use which one, rename template_ds
to template and move the last bit of code from template to varReplace
(which gets used for all string replacements, in the end).

This means that you can template any data type without worrying about
whether it's a string or not, and the right thing will happen.
2013-02-03 14:01:54 +01:00
Daniel Hokka Zakrisson f7e286cf34 Fix error format for invalid vars_files 2013-01-31 20:25:28 +01:00
Seth Vidal 83b9654c63 stop updating SETUP_CACHE in run_play as per comment on pr 1945 2013-01-31 11:24:22 -05:00
Seth Vidal f649777072 - make extra-vars override all other vars and facts in playbooks 2013-01-30 11:56:04 -05:00
Michael DeHaan 0030a2bd09 Allow handler files to be empty lists. 2013-01-27 10:40:29 -05:00