Commit Graph

163 Commits (a5ee6ff1e56ff3abdcb42a9b2ac4518a0eeead13)

Author SHA1 Message Date
Michael DeHaan 0944e7d56a Make less template calls on playbook objects. 13 years ago
Michael DeHaan 44a9352338 Also template handlers only at the end. 13 years ago
Michael DeHaan e7f5186dec Merge pull request #2623 from willthames/when_set_bug
Prevent premature variable substitution in tasks
13 years ago
Michael DeHaan 3ab0ed5fd4 Allow 'when' and 'with_items' to be applied to roles. 13 years ago
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.
13 years ago
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.
13 years ago
Michael DeHaan 29209c4913 Style fixes so "make pep8" is clean. 13 years ago
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.
13 years ago
Stoned Elipot 1ed54b9b3a when: condition support for tasks include 13 years ago
Michael DeHaan fffb1a0a9d Loose tasks not in roles get executed after roles. 13 years ago
Michael DeHaan f044fc344b When using roles, or other includes, the path to DWIM inside is the path of the task include
file.
13 years ago
Michael DeHaan 5c4ed72571 Demo of parameterized roles! 13 years ago
Michael DeHaan f308194b9a Added examples of how roles work! 13 years ago
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) 13 years ago
Michael DeHaan 95f30f0def Complete streamlining of vars handling in playbooks and how those are templated to avoid
repeat template calls at playbook intialization time.
13 years ago
Michael DeHaan 1dfe60a6ea Allow any parameter in a play to be set by --extra-vars through cleaner use of data structure
templating.
13 years ago
George Miroshnykov 6826aa7360 Tweaked merge_hash to also affect Runner behavior 13 years ago
Junegunn Choi 20a48c6bdf terminate immediately on a failure 13 years ago
Michael DeHaan 783a12cc0e Resolve merge commit. 13 years ago
milan 80dbab3cf0 check type of task explicitly 13 years ago
Michael DeHaan 9cf66f4376 Fixes from 'make pep8'. Partial, more to come. 13 years ago
Michael DeHaan c8878998d1 update some of many copyright dates but we can just do this when editing each file, not super high priority 13 years ago
Daniel Hokka Zakrisson 57e51f7fdf Clean up some extra_vars redundancy 13 years ago
Daniel Hokka Zakrisson a025cfcb33 Add on_import_for_host callback from non-list case 13 years ago
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.
13 years ago
Daniel Hokka Zakrisson f7e286cf34 Fix error format for invalid vars_files 13 years ago
Seth Vidal f649777072 - make extra-vars override all other vars and facts in playbooks 13 years ago
Michael DeHaan 0030a2bd09 Allow handler files to be empty lists. 13 years ago
Daniel Hokka Zakrisson 94a1c221bc Update variable precedence section with current rules 13 years ago
Rodney Quillo 395093e0bf Move default arguments to the end of the function call. 13 years ago
Rodney Quillo 7ae100611c Adding default on vars_prompt 13 years ago
Daniel Hokka Zakrisson caee51e90e Allow only_if/when_* on task includes and apply it on all tasks within 13 years ago
Daniel Hokka Zakrisson 07b215d4fa Check for non-accepted arguments combined with task includes
Throw an appropriate error for it.
13 years ago
Daniel Hokka Zakrisson 68f736e8d7 Make inventory variables available to vars_files 13 years ago
Daniel Hokka Zakrisson a1877b2213 Allow infinite depth task includes 13 years ago
Nandor Sivok f31fbdff1f moving int() conversion to the play init 13 years ago
Nandor Sivok e91db5fcdc fixes #1767 parsing serial from extra_vars 13 years ago
Daniel Hokka Zakrisson ebd31af940 Don't prompt for vars in extra-vars
Fixes #1622.
13 years ago
Daniel Hokka Zakrisson 94fc3006e9 Make variables local to the play
Fixes #1677.
13 years ago
Daniel Hokka Zakrisson d1c285b70b Port may be an integer when parsed from the play 13 years ago
Daniel Hokka Zakrisson 3ce63d845e remote_port is None by default 13 years ago
Dag Wieers 8458f53014 Allow the remote port to be templated
This was requested on the mailinglist and seems useful.
13 years ago
Daniel Hokka Zakrisson 0be1f11ed5 Use all available vars for hosts:, user: and sudo_user: 13 years ago
Daniel Hokka Zakrisson 383dc30560 Rename varReplaceWithItems to template_ds 13 years ago
Daniel Hokka Zakrisson e05e514861 Create a plugin loader system 13 years ago
Daniel Hokka Zakrisson c519d5dac0 Add a template lookup plugin
Requires that inject be passed to run
13 years ago
Daniel Hokka Zakrisson 37d9acc097 Make lookup API extensible and allow basedir to be passed
This allows using with_fileglob in play context, e.g.
- include: $item
  with_fileglob: tasks/*.yml
as well as prepares for other data to be passed.
13 years ago
Michael DeHaan c0747b7baa pep8 fixes 13 years ago
Daniel Hokka Zakrisson e72fdccd87 Allow vars_files sequences without a default 13 years ago
Michael DeHaan 6ba30170dd Make group_vars and host_vars available to usr/bin/ansible, and make vars_plugins exist 13 years ago
Daniel Hokka Zakrisson 2f05e95d8a Use lookup plugins for task include with_* 13 years ago
Michael DeHaan 109632e3bc Revert "Vars specified via CLI have the highest priority."
Reverting as this as reported allows some variables to clobber each other.
We'll work on a different fix.

This reverts commit c5469f6367.
13 years ago
Aleksej Romanov c5469f6367 Vars specified via CLI have the highest priority. 13 years ago
Daniel Hokka Zakrisson b8b34b5110 Keep processing the rest of the vars_files even if one has vars 13 years ago
Daniel Hokka Zakrisson 564a212b3c Only gather facts once per node per playbook run
Unless gather_facts: True is on the play
13 years ago
Daniel Hokka Zakrisson 48c5d696d2 Remove debug print statement 13 years ago
Daniel Hokka Zakrisson a83aa1071b Give each task its own module_vars
Otherwise each task will overwrite the previous' items, among
other things.
13 years ago
Michael DeHaan d0eba79760 Template out sudo_user so you can pass in variables using --extra-vars 13 years ago
Daniel Hokka Zakrisson 8a8ffa2342 Allow task includes to work with with_items 13 years ago
Dag Wieers e7af005408 Revert only_if for variables and templating prompt
Since the condition was not templated, it wasn't working.
Only variables in local scope were used, which made this not very practical
13 years ago
Dag Wieers 6b6e3c64c8 Fix a typo in the prompt code
This is unfortunately related to not being able to reuse the same code that was tested.
13 years ago
Michael DeHaan 734db4ffe9 Merge pull request #1080 from dagwieers/prompt-only_if
Add an only_if option to vars_prompt to make prompts conditional
13 years ago
Dag Wieers 4e9a970616 Add an only_if option to vars_prompt to make prompts conditional
Sometimes you may want to allow variables through host_vars or inventory, but prompt for a value if it is not set or if the value does not conform to something specific. This option allows you to specify when you want to offer a prompt.

This patch also moves check_conditional to utils, and adds an is_unset() function which is nicer to read:

    only_if: "not is_set('${var}')"

vs

    only_if: "is_unset('${var}')"
13 years ago
Dag Wieers 069feb5d9c Template the variable prompt to customize the message
We have a password-prompt for a configurable login name. Since we require to ask the password for this specific login, it is important to indicate what password needs to be prov ided on the prompt. So the prompt needs to be templated. That's what this patch does.
13 years ago
Daniel Hokka Zakrisson cc948f339c Allow including files through variables
$FILE{file} will be replaced with the contents of "file"
$PIPE{cat file} will be replaced with the output of "cat file"
13 years ago
Michael DeHaan b8c4bb9e6e Revert "Allow including files through variables"
This reverts commit bf47bb4753.

Conflicts:

	lib/ansible/utils.py
	test/TestUtils.py
13 years ago
Daniel Hokka Zakrisson bf47bb4753 Allow including files through variables
$FILE{file} will be replaced with the contents of "file"
$PIPE{cat file} will be replaced with the output of "cat file"
13 years ago
Lorin Hochstein b9e100a506 Support import of playbooks in other directories
Previously, importing a playbook in a different directory didn't
work because all of the relative paths were resolved relative to
the top-level playbook.

This patch resolves relative paths on a per-play level instead of
relative to the directory of the top-level playbook.

Also removes the dirname argument from the Play._get_vars method
since this argument wasn't used in the metho dbody.
13 years ago
Mark Theunissen 2755602dcb Check to make sure that tags passed as parameters actually exist 13 years ago
Michael DeHaan 2833f48ed3 Make a particular error about an invalid include statement a bit clearer. 13 years ago
Michael DeHaan 898d7676f7 Adds the 'serial' keyword to a playbook which controls how many hosts can be running through a playbook at a single time.
The default is 0, which means all hosts.  If set to 1, each host would run a playbook all the way through before moving
on the next host.  Fact gathering is still parallel, regardless of the serial setting.
13 years ago
Michael DeHaan de221e6b4b Add vars to host_vars to prevent some suprises 14 years ago
Michael DeHaan 6de8c27085 Load parent groups when processing group_vars 14 years ago
Michael DeHaan 72faf8eb0a fix indents 14 years ago
Michael DeHaan 05d6e74cce Merge branch 'vars_prompt_encrypt' of https://github.com/cocoy/ansible into devel 14 years ago
Michael DeHaan 07f459f3b2 Allow user to be passed in via --extra-vars 14 years ago
Michael DeHaan 98a5565106 Fixing up parameterized task includes such that variables can be easily handed to them. 14 years ago
Rodney Quillo d1f821361d vars_prompt encrypt from mgw 14 years ago
Michael DeHaan faed4b5a33 whitespace + remove deprecated YAML parser (migration script lives in examples/scripts and warning was added
in 0.6 release)
14 years ago
Michael DeHaan 86ec639176 add error handling if you try to load files in the wrong data format 14 years ago
Michael DeHaan 08c5fe875b yell if input data for host or group vars are not hashes 14 years ago
Michael DeHaan ee5f12cd40 Slight tweaks on vars_prompt upgrades 14 years ago
Petros Moisiadis c717934b7e Improved 'vars_prompt' syntax to support prompt text and (non-)private input
An example of the new syntax:

vars_prompt:
 - name: 'secret_variable_name"
   prompt: "Enter secret value: "
   private: "yes"
 - name: "nonsecret_variable_name"
   prompt: "Enter non-secret value: "
   private: "no"
14 years ago
Michael DeHaan da4562f495 changes to not clear the setup cache between runs, and also decide to run plays with no tasks
in them if it looks like they are not tagged, because if that is the case, then we may just
be gathering facts about them.
14 years ago
Michael DeHaan 617f9dc942 Added some caching logic to improve external inventory scripts, removed some debug statements. 14 years ago
Michael DeHaan 396b81b647 Remove this check as it wasn't really needed and in recent refinements keeps the group_vars stuff from working
as desired.
14 years ago
Michael DeHaan b574c70006 host and group vars should update the setup cache 14 years ago
Michael DeHaan ba3466af95 The following paths are now implict and optional in vars_files:
./group_vars/groupname.yml (for all groups the host is in)
./host_vars/hostname.yml (for the hostname given in the inventory)

This requires an actual inventory file, not script and the paths are relative
to the directory of the inventory file.
14 years ago
Peter Sankauskas 4b66d98332 Adding missing colon... can't believe I missed that... sorry 14 years ago
Peter Sankauskas 413fb15e0a Conditional Imports should only import the first file in the list, not all of them. This change stops looping through the vars_files list as soon as a file is found. 14 years ago
Michael DeHaan 3c2cbae68e Plays and tasks now yell when they see parameters they do not understand, so that typos like 'var' for 'vars'
don't result in people having to ask questions about what is wrong with their playbook
14 years ago
Michael DeHaan e4a546e8bb Make it possible to use variables from 'vars' in the paths to task level include statements. 14 years ago
Michael DeHaan 5f69c557b9 Fix for the way host variables were being swallowed, plus some overall simplification. Deciding what
dictionary to use for templating now happens in exactly one place (executor_internal) and the "inject"
dictionary is passed to what needs it.
14 years ago
Michael DeHaan 61d8e2e7c7 with_items should be processed inside the task class, also make first_available_file
and with_items incompatible.  Most cases that would need this could be solved
with vars_files.
14 years ago
Michael DeHaan 706cfd9ade Misc cleanup -- moved function out of utils, removed debug statement. 14 years ago
Michael DeHaan 60d64251f8 Allow gather_facts: False in a playbook as a way of disabling the fact step if you know
you aren't going to need it.
14 years ago
Michael DeHaan 64c51ade1e Change the way we do with_items to make them happen next to each other in runner, which eliminates the problem of with_items and vars_files sometimes not playing nice with each other.
(Also a fix for the user module error handling when the user
is not present at the time of the return.  This can only really be caused by multiple ansible executions).
14 years ago
Michael DeHaan 028f216689 Error handling and magic around with_items, to let you know when variables are usable inside it and when not. 14 years ago
Michael DeHaan 102b22be1f Make the logic behind vars_files smarter, so host specific vars go into the setup cache, but other variables
are usable top level.  This allows vars_files data to be used, most of the time, just fine in with_items,
(error handling pending) but is mostly a memory and efficiency thing.
14 years ago
Michael DeHaan 15b2b3a020 Warn if something loaded by vars_files is not a dictionary 14 years ago