Commit Graph

522 Commits (646c34dcded4dd856abaa53ab5f057612bb7878e)

Author SHA1 Message Date
Victor Salgado 54f1560d3e Fix mutable default argument 2015-09-16 16:49:45 -03:00
James Cammarata c8f2483d6d Cleaning up default group creation in inventory parsers 2015-09-16 12:54:54 -04:00
Thomas Quinot c005f75469 Always create 'all' group
Create 'all' even if host_list is empty, as this group needs to exist
when creating the implicit 'localhost' host.

Fixes #12391
2015-09-16 12:24:06 +02:00
Abhijit Menon-Sen 065bb52109 Be systematic about parsing and validating hostnames and addresses
This adds a parse_address(pattern) utility function that returns
(host,port), and uses it wherever where we accept IPv4 and IPv6
addresses and hostnames (or host patterns): the inventory parser
the the add_host action plugin.

It also introduces a more extensive set of unit tests that supersedes
the old add_host unit tests (which didn't actually test add_host, but
only the parsing function).
2015-09-11 21:47:18 +05:30
Toshio Kuratomi fa2edfa1ef * Make sure we don't sometimes get byte strings instead of unicode strings
* Turn strings into byte strings before passing to shlex and turn them
  back into unicode strings after they are retyurned from there

  Fixes #12257
2015-09-09 01:24:11 -07:00
Toshio Kuratomi e67459df86 Fix docstring of parse_value() to be informative 2015-09-09 01:24:11 -07:00
James Cammarata ff9f5d7dc8 Starting to add additional unit tests for VariableManager
Required some rewiring in inventory code to make sure we're using
the DataLoader class for some data file operations, which makes mocking
them much easier.

Also identified two corner cases not currently handled by the code, related
to inventory variable sources and which one "wins". Also noticed we weren't
properly merging variables from multiple group/host_var file locations
(inventory directory vs. playbook directory locations) so fixed as well.
2015-09-04 16:41:38 -04:00
Marius Gedminas 823677b490 Replace .iteritems() with six.iteritems()
Replace .iteritems() with six.iteritems() everywhere except in
module_utils (because there's no 'six' on the remote host).  And except
in lib/ansible/galaxy/data/metadata_template.j2, because I'm not sure
six is available there.
2015-09-03 09:23:27 +03:00
Abhijit Menon-Sen 147b04b682 Remove duplicated function definition (fallout from earlier repeated merge) 2015-09-02 07:47:48 +05:30
Brian Coca b525eedb8e less misleading message for when someone looks up vars for a host not in inventory 2015-08-30 12:41:21 -04:00
James Cammarata 4c65306e73 Merge branch 'hostrange' of https://github.com/amenonsen/ansible into amenonsen-hostrange 2015-08-28 13:48:25 -04:00
Brian Coca 514fa73fcd galaxy fixes 2015-08-28 12:32:50 -04:00
Marius Gedminas 0c6ce31f76 Use 'except ... as' syntax
This syntax works on Python 2.6 through 3.x.  lib/ansible/module_utils
(and lib/ansible/modules) need to support Python 2.4, so I didn't touch
those.
2015-08-27 22:15:04 +03:00
Ilya Epifanov 81bf88b6e0 fixed hostvars access in conjunction with --limit usage 2015-08-27 00:15:26 +03:00
Brian Coca b2ae6945c4 always load vars plugins
fixes #12104
2015-08-26 11:40:53 -04:00
Brian Coca 82603bb2a0 avoids running abspath on None 2015-08-26 09:28:23 -04:00
Abhijit Menon-Sen 8bf0dbb7a9 Use [x:y] host ranges instead of [x-y]
This commit deprecates the earlier groupname[x-y] syntax in favour of
the inclusive groupname[x:y] syntax. It also makes the subscripting
code simpler and adds explanatory comments.

One problem addressed by the cleanup is that _enumeration_info used to
be called twice, and its results discarded the first time because of the
convoluted control flow.
2015-08-25 21:17:24 +05:30
Abhijit Menon-Sen 73f10de386 Document the behaviour of _match_one_pattern in some detail
The possibilities are complicated enough that I didn't want to make
changes without having a complete description of what it actually
accepts/matches. Note that this text documents current behaviour, not
necessarily the behaviour we want. Some of this is undocumented and may
not be intended.
2015-08-25 21:17:24 +05:30
Abhijit Menon-Sen fa6ffa1dbd Remove & and ! pattern prefixes as early as possible
Now everything under _match_one_pattern can ignore them. This also means
that we can use the cache to return the same results for 'foo' and '!foo'.
2015-08-25 21:17:24 +05:30
Abhijit Menon-Sen 704c3815d3 Reorder functions into a logical sequence based on usage
There are no code changes; this is committed separately so as to make
the subsequent "real" diffs easier to read.
2015-08-25 21:17:24 +05:30
Brian Coca f1b8323b62 fixed host/group var loading when inventory is a directory 2015-08-23 17:51:47 -04:00
James Cammarata e282309f6d Make sure the inventory restriction is not None 2015-08-21 16:08:21 -04:00
Abhijit Menon-Sen 745ecd4845 Sanitize IPv6 hostname/port handling
Now we accept IPv6 addresses _with port numbers_ only in the standard
[xxx]:NN notation (though bare IPv6 addresses may be given, as before,
and non-IPv6 addresses may also be placed in square brackets), and any
other host identifiers (IPv4/hostname/host pattern) as before, with an
optional :NN suffix.
2015-08-20 22:06:44 +05:30
Abhijit Menon-Sen 74aab6f726 Use a self._raise_error helper and avoid passing the lineno around
Based on a patch by @Richard2ndQuadrant.
2015-08-20 22:05:17 +05:30
Abhijit Menon-Sen 9133cd409c Make _parse take an array of input lines as an argument
(There's no compelling reason to do this right now, but should be parser
need to be called multiple times in future, this makes it easier.)
2015-08-20 22:05:17 +05:30
Abhijit Menon-Sen 98a1905796 Rename 'section' to 'groupname' to better reflect its purpose 2015-08-20 22:05:17 +05:30
Abhijit Menon-Sen 1284c49bd7 Rewrite the INI InventoryParser
The new code parses INI-format inventory files in a single pass using a
well-documented state machine that reports precise errors and eliminates
the duplications and inconsistencies and outright errors in the earlier
three-phase parsing code (e.g. three ways to skip comments). It is also
much easier now to follow what decisions are being taken on the basis of
the parsed data. The comments point out various potential improvements,
particularly in the area of consistent IPv6 handling.

On the ornate marble tombstone of the old code, the following
inscription is one last baffling memento from a bygone age:

-    def _before_comment(self, msg):
-        ''' what's the part of a string before a comment? '''
-        msg = msg.replace("\#","**NOT_A_COMMENT**")
-        msg = msg.split("#")[0]
-        msg = msg.replace("**NOT_A_COMMENT**","#")
-        return msg
2015-08-20 22:05:17 +05:30
Brian Coca 961bee00d5 centralized the definition of 'localhost' 2015-08-19 15:49:37 -04:00
Abhijit Menon-Sen 2641f70e47 Reset self._groups_cache in refresh_inventory 2015-08-19 11:35:27 +05:30
Harald Laabs 73d6da757f Make get_group run in O(n*log(n)) instead of O(n^2) by using a cache 2015-08-19 11:35:27 +05:30
Will West b8865314ec improve ansible start up time for very large inventory
first off, we add an oddly slow basic test of 10k item inventory

Before:
```
Ran 229 tests in 13.214s

OK

real    0m13.403s
user    0m12.106s
sys 0m1.155s
```

After:
```
Ran 230 tests in 21.328s

OK

real    0m21.516s
user    0m20.099s
sys 0m1.275s
```

since that seems like a bit long for the test to add to runtime, lets profile

`python -m cProfile -s time ./bin/ansible all -i test/units/inventory_test_data/huge_range --list-hosts`

Before:
```
         1272607 function calls (1259689 primitive calls) in 8.497 seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    10000    4.393    0.000    4.396    0.000 __init__.py:395(_get_host)
    20000    2.695    0.000    2.697    0.000 __init__.py:341(__append_host_to_results)
    40369    0.113    0.000    0.113    0.000 {posix.lstat}
    50006    0.102    0.000    0.153    0.000 __init__.py:1490(combine_vars)
    40008    0.089    0.000    0.202    0.000 __init__.py:1546(_load_vars_from_path)
    20195    0.088    0.000    0.088    0.000 {posix.stat}
    10011    0.087    0.000    0.087    0.000 {posix.getcwd}
```

The top two lines are promising optimization targets

- populate Inventory's host cache more in _get_host, as we are looping
  over all the groups anyways.

- eliminate duplicate check of whether we've already included a host
  in the construction around __append_host_to_results we can infer
  presence of a host in the results list implies the presence of its
  name in the hostnames set, allowing us to only to the less expensive
  of the two checks

After:
```
         1252610 function calls (1239692 primitive calls) in 1.320 seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    40369    0.105    0.000    0.105    0.000 {posix.lstat}
    50006    0.094    0.000    0.141    0.000 __init__.py:1490(combine_vars)
    40008    0.081    0.000    0.184    0.000 __init__.py:1546(_load_vars_from_path)
    10011    0.080    0.000    0.080    0.000 {posix.getcwd}
    20195    0.074    0.000    0.074    0.000 {posix.stat}
    10002    0.069    0.000    0.261    0.000 __init__.py:1517(load_vars)
```
2015-08-19 09:45:02 +05:30
Abhijit Menon-Sen 8f231ec469 Tweak deprecation warning, and apply it to --limit also 2015-08-14 10:55:13 +05:30
James Cammarata 4dba30ccd0 Cleanup missed merge conflict sections 2015-08-13 15:05:58 -04:00
Abhijit Menon-Sen d41db8edd6 Don't accept undocumented "p1;p2" patterns; note in changelog
The correct (and now only) way to say p1 OR p2 is "p1:p2".
2015-08-13 14:54:12 -04:00
Abhijit Menon-Sen 1437b8e120 Introduce _split_pattern to parse an "x:y:z" pattern
This function takes a string like 'foo:bar[1:2]:baz[x:y]-quux' and
returns a list of patterns ['foo', 'bar[1:2]', 'baz[x:y]-quux'], i.e.
splits the string on colons that are not part of a range specification.
2015-08-13 14:54:12 -04:00
James Cammarata 32034feec5 Add deprecation warning regarding host patterns 2015-08-13 14:51:08 -04:00
Abhijit Menon-Sen 6bf6b9fdbb Rename some internal functions, clarify what they do
get_hosts → used externally, not changed
_get_hosts → _evaluate_patterns (takes a list, evaluates ! and &)
__get_hosts → _match_one_pattern (takes one pattern only, ignores !&)
2015-08-13 14:51:08 -04:00
Abhijit Menon-Sen eff33bac49 Don't accept undocumented "p1;p2" patterns; note in changelog
The correct (and now only) way to say p1 OR p2 is "p1:p2".
2015-08-13 14:51:08 -04:00
Abhijit Menon-Sen 8aaa06dd50 Introduce _split_pattern to parse an "x:y:z" pattern
This function takes a string like 'foo:bar[1:2]:baz[x:y]-quux' and
returns a list of patterns ['foo', 'bar[1:2]', 'baz[x:y]-quux'], i.e.
splits the string on colons that are not part of a range specification.
2015-08-13 14:51:08 -04:00
Abhijit Menon-Sen baf637b9ae Remove dead code: Inventory.also_restrict_to/lift_also_restriction
This was used earlier to implement serial, but that's now done using
restrict_to_hosts() (whose docstring is also suitably adjusted here)
and there are no more callers.
2015-08-13 14:51:08 -04:00
Brian Coca b905f51341 fixed typo 2015-08-13 11:05:20 -04:00
Brian Coca fbc7224066 Merge pull request #11643 from bcoca/meta_inventory_and_fixes
Meta inventory and fixes
2015-08-13 10:36:57 -04:00
Brian Coca 5fec11f513 capture parsing exceptions and give nice error and location 2015-08-12 23:27:00 -04:00
Brian Coca 49d88cef9c meta: refresh_inventory and several inventory fixes 2015-08-12 10:35:12 -04:00
Brian Coca 8e30e3791e Merge pull request #11811 from amenonsen/fixme-range
FIXME in host range parsing
2015-08-12 09:06:39 -04:00
James Cammarata 26d5a17b59 Make sure inventory loads files with non-relative paths
This is a slightly different fix than we originally committed, but fixes
the problem in a less invasive way (and I believe it's generally better
that we don't deal with relative paths internally past this point)

Fixes #11789
2015-08-06 10:18:58 -04:00
Brian Coca b9433650d1 Revert "Path of group_vars and host_vars were getting the basedir added twice."
in view of simpler solution incomming from james
This reverts commit bae7a02be5.
2015-08-06 10:09:43 -04:00
Toshio Kuratomi bae7a02be5 Path of group_vars and host_vars were getting the basedir added twice.
Fix inventory so this won't happen and fix DataLoader so that it will
test relative paths relative to self._basedir

Fixes #11789
2015-08-05 17:41:17 -07:00
Toshio Kuratomi f0431eaea9 Make ansible_python_interpreter work with synchronize
Fixes #11836
2015-08-03 13:32:24 -07:00
Abhijit Menon-Sen 7d9689c1c5 Slice ascii_letters directly instead of using 'for x in range()' 2015-08-02 23:47:18 +05:30
Abhijit Menon-Sen bfe708a189 Make host range parsing errors issue better messages
Now we always say "host range must …specific thing…"
2015-08-02 23:47:18 +05:30
Abhijit Menon-Sen 1413496292 Implement step for alphabetic ranges: [a:e:2] => a,c,e 2015-08-02 23:47:18 +05:30
Brian Coca f16b745f17 now properly uses default port if defined 2015-07-31 12:01:58 -04:00
Abhijit Menon-Sen 845784b572 Remove outdated FIXMEs; all use combine_vars already 2015-07-30 23:47:41 +05:30
Brian Coca 77fc3ce759 removed unused import 2015-07-28 08:28:52 -04:00
James Cammarata 49a6601856 Further cleanup of internal use of ansible_ssh_host 2015-07-27 10:42:39 -04:00
James Cammarata a1a8997e89 Merge pull request #11663 from whereismyjetpack/fix_ansible_ssh_host
only set ansible_ssh_host if not already set
2015-07-26 23:46:21 -04:00
James Cammarata 65ae9780fa Merge pull request #11079 from amegianeg/fix_broad_except_in_inventory
Avoid too broad except in Inventory
2015-07-23 13:36:02 -04:00
Dann Bohn 3e79bfa2d6 only set ansible_ssh_host if not already set 2015-07-20 15:43:55 -04:00
Gerard Lynch d23ab261e1 fixes 11607, allows ansible_ssh_port to be overridden from group or host_vars 2015-07-16 23:00:17 +01:00
James Cammarata 4e94bb64d8 Fix group/host var loading relative to playbook basedir 2015-07-14 09:26:24 -04:00
James Cammarata a9712bb0fb Fixing some delegate_to bugs
* Moving connection creation until after the task is post_validated,
  to make sure all fields are properly templated (#11230)
* Fixing problems related to the connection method and remote address
  lookup on the delegated-to host

Fixes #11230
2015-07-09 08:25:08 -04:00
James Cammarata ff251a0dcc Catch runtime errors due to recursion when calculating group depth
Fixes #7708
2015-06-22 02:06:07 -04:00
Benno Joy f17bdc4d61 Set the ansible_ssh_port variable instead of saving it internally for Host
Fixes #11330
2015-06-22 00:38:41 -04:00
James Cammarata 87ca475704 Exclude the all/ungrouped groups from pattern matching results
Fixes #5375
2015-06-17 16:25:58 -04:00
James Cammarata 90445ee67d Add ::1 where we see 127.0.0.1, for better ipv6 support
Fixes #5764
2015-06-17 16:03:19 -04:00
Marc Abramowitz a385744426 Add inventory file to "Unable to find" error msg
E.g.:

    $ ansible gabriel -m ping -i ssh_config.py
    ERROR! Unable to find an inventory file (ssh_config.py), specify one with -i ?
2015-06-17 11:00:13 -07:00
James Cammarata 30c1a2d861 Have group/host var file loading check for YAML extensions too
Fixes #11132
2015-06-16 11:55:56 -04:00
Toshio Kuratomi f9b56a5d7c Fix raising AnsibleError 2015-06-05 11:41:23 -07:00
Toshio Kuratomi 96836412aa Make error messages tell which inventory script the error came from 2015-06-03 11:51:33 -07:00
Toshio Kuratomi 1c8527044b Fix error handling when pasing output from dynamic inventory 2015-06-03 11:29:20 -07:00
James Cammarata 620fad9f8d Fixing an oops in inventory/__init__.py where the slots are incorrect 2015-06-01 20:02:15 -05:00
James Cammarata fe41f109a9 Merge branch 'v2_final' into devel_switch_v2 2015-06-01 16:42:59 -05:00
James Cammarata 4bc7703db3 Fixing some small bugs related to integration tests (v2) 2015-06-01 16:42:10 -05:00
James Cammarata 2bad888f28 Merge branch 'v2_final' into devel_switch_v2
Conflicts:
	lib/ansible/inventory/__init__.py
	lib/ansible/modules/core
	lib/ansible/utils/__init__.py
	lib/ansible/utils/module_docs.py
2015-05-28 15:26:03 -05:00
alberto 37ae5aab31 Capture only IOError when reading shebang from inventory file, to avoid ignoring other possible exceptions like timeouts from a task 2015-05-28 12:19:32 +02:00
Brian Coca 0913b8263c made special treatment of certain filesystem for selinux configurable 2015-05-15 13:52:27 -04:00
Brian Coca e2de336a23 made special treatment of certain filesystem for selinux configurable 2015-05-15 13:19:15 -04:00
James Cammarata ce3ef7f4c1 Making the switch to v2 2015-05-03 21:47:26 -05:00
Brian Coca c3d34a5386 Merge pull request #8936 from srvg/inventoryscript_onlychildren
Allow InventoryScript JSON with childgroups only
2015-03-05 17:11:04 -05:00
Toshio Kuratomi 084fbbdea9 Reverse the conditional so there's one less return from this function 2015-02-26 22:50:11 -08:00
Alvaro Lopez Ortega 2e929cf0ce Fixes bug #10281 - Trailing zeros were truncated from strings 2015-02-21 19:54:38 +01:00
Alvaro Lopez Ortega a14248ffe1 Fixes bug #10281 - Trailing zeros were truncated from strings 2015-02-21 16:40:50 +01:00
Brian Coca 751701c6f2 Merge pull request #9672 from quinot/topic/lineno-in-inventory-err
Report location (filename and line number) for inventory syntax errors
2015-01-29 12:36:30 -05:00
Toshio Kuratomi a63e4c595f Another place that needs to be json_dict_bytes_to_unicode 2015-01-26 22:04:51 -08:00
Toshio Kuratomi 0f6b87d33e Revert "Fix import statements" -- those impotrt statements were right
before... something else is fishy

This reverts commit 8ab536fbf2.
2015-01-26 22:01:52 -08:00
Toshio Kuratomi 8ab536fbf2 Fix import statements 2015-01-26 21:49:09 -08:00
Toshio Kuratomi 915d232d5f jinja2 cannot handle byte strs with non-ascii. So we need to transform potential byte str into unicode type. This fix is for dynamic inventory.
Fixes #10007
2015-01-26 20:39:09 -08:00
Brian Coca 2ef5d6be1e Merge pull request #9702 from bcoca/better_errors_on_delegate
better exception handling with delegated hosts
2015-01-19 15:25:01 -05:00
Brian Coca 6b3d0f4788 now captures returncode errors on inventory scripts 2015-01-15 13:38:25 -05:00
Brian Coca 61a30e5f49 better exception handling with delegated hosts 2014-12-03 07:26:42 -05:00
Thomas Quinot 23d959db71 Report location (filename and line number) for inventory syntax errors
When AnsibleError is raised for a syntax error in an inventory file,
report filename and line number to help pinpointing the error.
2014-11-30 10:41:09 +01:00
James Cammarata d19fe8d95d Fetch vars for host directly when calculating the delegated user
This fixes the case in which the delegated to host may not be in the
specified hosts list, in which cases facts/vars for the host were
not available in the injected hostvars.

This also fixes the inventory variable fetching function, so that an
unknown host raises a proper error as opposed to a NoneType exception.

Fixes #8224
2014-10-10 01:18:18 -05:00
Toshio Kuratomi a10d10f647 Workaround more python-2.6 shlex not being able to handle unicode strings 2014-10-08 14:30:36 -04:00
Toshio Kuratomi cef2a8795f Make dynamic inventory return byte str, not unicode 2014-10-02 20:27:06 -04:00
Michael DeHaan 26cdddaebf Tracebacks are now catchable with ignore_errors and have streamlined output. Also removes 'baby-JSON' for bash modules. 2014-09-11 12:27:21 -04:00
Serge van Ginderachter 69740b86e8 Allow InventoryScript JSON with childgroups only
and without hosts and vars

Without this patch, the simplified syntax is triggered when a group
is defined like this:

    "platforms": {
        "children": [
            "cloudstack"
        ]
    }

Which results in a group 'platforms' with 1 host 'platforms'.

	modified:   lib/ansible/inventory/script.py
2014-09-09 11:37:54 +02:00
Serge van Ginderachter 3a228b9d55 InventoryScript: better syntax checking for json stream 2014-08-21 18:06:07 +02:00
Serge van Ginderachter a1f09bd89f Merge variables for hosts instead of updating in get_variables() 2014-08-20 01:54:46 -05:00
Serge van Ginderachter 0ab721d51e better logic for all-group variables for implicit localhost 2014-08-19 16:41:51 +02:00
Serge van Ginderachter a2cfe8770b Inventory: fix logic mistake in loading/retrieving variables for groups 2014-08-19 16:34:26 +02:00
James Cammarata e3895840d1 Make sure group_vars/all is loaded for ungrouped hosts
Fixes #6563
2014-08-18 12:29:46 -05:00
James Cammarata b4476c238f Use match() instead of search() for pattern matching
Also related to f48fa3, fix for #8614
2014-08-14 12:26:52 -05:00
James Cammarata f48fa3759a Fix host pattern matching and enhance error detection
Fixes #8614
2014-08-14 12:13:40 -05:00
James Cammarata bea0845322 Fix vault_password positional args error 2014-08-14 10:28:08 -05:00
Michael DeHaan 8c4161d4a1 Merge branch 'retf_py' of git://github.com/berendt/ansible into devel
Conflicts:
	lib/ansible/inventory/vars_plugins/group_vars.py
	plugins/callbacks/mail.py
2014-08-08 12:17:37 -04:00
Serge van Ginderachter 7c96f1d803 InventoryDir: fixing yet another corner case 2014-08-08 08:54:11 +02:00
Serge van Ginderachter e8b45a9ef7 Invalidate host/group variables cache when loading
extra varsiables based on playbook basedir.
2014-07-14 15:21:33 +02:00
Serge van Ginderachter d39ff55688 Fix logic bug when loading vars for a new playbook basedir. 2014-07-14 15:12:53 +02:00
James Cammarata 4e5eb7559e Merge branch 'svg_and_inventory_refactor' into devel 2014-07-10 14:43:07 -05:00
Dan Slimmon 307a3e8a9c Fixed regex square-bracket bug.
Regexes were being parsed like ordinary ansible host patterns, so
square-bracket groups were getting interpolated wrongly.
2014-07-10 00:08:12 +00:00
James Cammarata aa261bdd14 Optimizing groups_for_host() lookup in inventory 2014-07-07 21:08:39 -05:00
James Cammarata fe892fccb1 Merge remote-tracking branch 'svg/varsplugins_refactor' into svg_and_inventory_refactor 2014-07-07 14:16:37 -05:00
James Cammarata 11a5fc85f4 Merge branch 'inventory_refactoring' into svg_and_inventory_refactor 2014-07-07 13:11:58 -05:00
James Cammarata bcf83cbc24 Merge branch 'sergevanginderachter-inventorytree' into svg_and_inventory_refactor 2014-07-07 13:11:52 -05:00
Serge van Ginderachter ff4119adc0 Performance optimization in resolving host patterns
Avoid resolving a pattern that is a plain host. When matching a hostname in the
hosts_cache, just use the host object from there.

When running a task on say 750 hosts, this yields a huge improvement.
2014-07-07 12:50:50 -05:00
James Cammarata ff04b2b532 Allow empty yaml vars files
Fixes #7843
2014-07-04 23:10:32 -05:00
Michael DeHaan c2ac8fda1e Data from inventory scripts should be able to use nested Jinja2 expressions. 2014-07-03 16:11:14 -04:00
James Cammarata 8ed6350e65 When parsing json from untrusted sources, remove templating tags 2014-07-01 14:14:14 -05:00
James Cammarata 539426f612 Performance tuning inventory functions for large inventories 2014-06-26 23:15:39 -05:00
James Cammarata d8a7b49b59 Merge branch 'inventorytree' of https://github.com/sergevanginderachter/ansible into sergevanginderachter-inventorytree 2014-06-24 15:21:08 -05:00
Kevin Bell 92bd755b47 Fixed extension filtering in InventoryDirectory 2014-05-14 23:43:14 -07:00
James Cammarata 393124e462 Add pyc/pyo to ignore list for inventory directories
Fixes #7308
2014-05-07 09:59:13 -05:00
Christian Berendt 6676720ce5 fixed typos found by RETF rules in PY files
rules are avaialble at https://en.wikipedia.org/wiki/Wikipedia:AutoWikiBrowser/Typos
2014-05-03 18:40:05 +02:00
Serge van Ginderachter e36e2d38fe InventoryDir: another fix for the host.groups list
In some cases, where a host is mentioned in multiple groups, and those
groups are referenced in multiple ini files, a group could still contain
multiple instances of a group in its host,groups list, where only one of them
is the right group, that exists in the inventory.
2014-04-04 09:27:44 +02:00
Cristian Ciupitu 96ff1444f0 Micro-optimization: replace s.find(x)==0 with s.startswith(x)
timeit shows a speedup of ~1.4x on Python 2.7.5 x86_64.
It also makes the code a bit shorter.
2014-03-27 20:35:20 +02:00
Serge van Ginderachter d4634983f0 Move group/host_vars parsing into core inventory
modified:   lib/ansible/inventory/__init__.py
	deleted:    lib/ansible/inventory/vars_plugins/group_vars.py
	modified:   lib/ansible/utils/__init__.py
2014-03-26 11:37:26 +01:00
Serge van Ginderachter f8ea93c732 Move inventory.set_playbook_basedir from ansible-playbook to playbook constructor 2014-03-25 22:12:01 +01:00
Serge van Ginderachter cc28fd891b Introduce noop vars plugin.
In preparation to move the group_vars plugin code into core.

	new file:   lib/ansible/inventory/vars_plugins/noop.py
2014-03-25 22:12:01 +01:00
Serge van Ginderachter f6a55a3552 Refactor vars_plugins (host/group_vars)
Split out parsing of vars files to per host and per group
parsing, instead of reparsing all groups for each host. This enhances
performance.

Extend vars_plugins' API with two new methods:
* get host variables: only parses host_vars
* get group variables: only parses group_vars for specific group
The initial run method is still used for backward compatibility.

Parse all vars_plugins at inventory initialisation, instead of
per host when touched first by runner. Here we can also loop through
all groups once easily, then parse them.
This also centralizes all parsing in the inventory constructor.

	modified:   bin/ansible
	modified:   bin/ansible-playbook
	modified:   lib/ansible/inventory/__init__.py
	modified:   lib/ansible/inventory/vars_plugins/group_vars.py
2014-03-25 22:12:01 +01:00
James Cammarata 846933dd53 Make inventory parsing error detection smarter
If something is executable but doesn't look like it should be, or if
something is NOT executable and DOES looks like it should, show a
more apropos error with a hint on correcting the problem

Fixes #5113
2014-03-25 11:41:00 -05:00
Serge van Ginderachter d3eaa1b79e InventoryDir: refactor logic
Make sure all hosts and groups are unique objects
and that those are referenced uniquely everywhere.
Also fixes test_dir_inventory unit tests which were broken after previous
patches.

	modified:   lib/ansible/inventory/dir.py
2014-03-25 12:45:00 +01:00
Serge van Ginderachter 188375171e Inventory: raise error when adding a group that already exists.
The parsers check if a group already exists.
2014-03-25 12:45:00 +01:00
Serge van Ginderachter be58808fe4 inventory script parser: do not add all the groups to *all* group 2014-03-25 12:45:00 +01:00
Serge van Ginderachter 0ceefbbf29 inventory ini parser: do not add all the groups to *all* group
but only those with lowest depth, so we keep a proper tree structure
2014-03-25 12:45:00 +01:00
Serge van Ginderachter cc8efb4aab inventory groups: make sure group.depth is updated on all grandchildren 2014-03-25 12:45:00 +01:00
Serge van Ginderachter 1c86909875 inventory group: add groups to parent_groups only once 2014-03-25 12:45:00 +01:00
Serge van Ginderachter 36f55d3549 inventory directory parser: add host to group only once 2014-03-25 12:45:00 +01:00
Serge van Ginderachter 8b215149d4 inventory directory parser: add groups to parent_groups non-recursively 2014-03-25 12:45:00 +01:00
Serge van Ginderachter 262ba0460a inventory directory parser: add hosts to group non-recursively 2014-03-25 12:45:00 +01:00
Michael DeHaan 9da26da335 Merge branch 'ini_vars' of git://github.com/dmage/ansible into devel 2014-03-17 17:37:57 -04:00
Serge van Ginderachter 280498a7e5 Pass through vault_password when parsing host/group vars as directories.
Fixes a bug where vault_password parameter was not passed through in
_load_vars_from_folder()

modified:   lib/ansible/inventory/vars_plugins/group_vars.py
2014-03-17 10:51:04 +01:00
Michael DeHaan b41541c62a Merge conflict. 2014-03-16 16:48:03 -04:00
Michael DeHaan 4a06954a13 Merge pull request #6390 from sergevanginderachter/group-varsdirs-svn
group_vars plugin: do not parse hidden files in subfolders
2014-03-16 14:44:17 -05:00
Oleg Bulatov f6a4c20cc0 Make parsing variables for hosts and groups more consistent
This commit allows to specify arrays in [group:vars] block.

Signed-off-by: Oleg Bulatov <oleg@bulatov.me>
2014-03-16 21:47:26 +04:00
Michael DeHaan d5856bd475 Merge pull request #6391 from sergevanginderachter/hashmerge_inventoryscripts
Allow hash_behaviour=merge to be respected in core inventory
2014-03-16 12:42:35 -05:00
Cristian Ciupitu 0749112286 Micro-optimization: replace s.find(x)!=-1 with x in s
timeit shows a speedup of ~3x on Python 2.7.5 x86_64.
It also makes the code a bit shorter.
2014-03-16 13:10:28 -04:00
Cristian Ciupitu a7da5d8702 Micro-optimization of inventory.expand_hosts.detect_range 2014-03-16 13:10:28 -04:00
Serge van Ginderachter 6b1cb22fc3 Allow hash_behaviour=merge to be respected in core inventory
(For now, this means, enable it also for inventory scripts)
2014-03-11 12:49:54 +01:00
Serge van Ginderachter 29c60bdaff group_vars plugin: do not parse hidden files in subfolders, e.g. avoid .svn/ 2014-03-11 12:20:58 +01:00
James Cammarata e3b887f770 Fix range issue in inventory and add additional error checking
Fixes #6331
2014-03-07 16:34:04 -06:00
Richard C Isaacson 16fe09eef8 Fixes related to uncommenting test_dir_inventory in TestInventory.
0. Uncomment the test.
1. Test fails.
2. Make vars unique per file in test inventory files.
3. Modify token addition to not ast.literal_eval(v) a variable containing a hash.
4. Modify vars to have an escape in test inventory file.
5. Catch exceptions explicitly. Any unknown exceptions should be a bug.
6. Test passes.
2014-03-06 12:09:53 -06:00
Michael DeHaan 94a7fb60fe Allow escaped comments in inventory files. 2014-03-05 20:10:25 -05:00
Richard C Isaacson b41d8106ff Revert "Merge pull request #6287 from risaacson/fix_hash_in_var"
This reverts commit a808287451, reversing
changes made to 6129ea7566.
2014-03-05 14:49:30 -06:00
Richard C Isaacson 38abd5e20e Break this out into a reusable function and document regex shortcomings. 2014-03-05 10:50:58 -06:00
Richard C Isaacson 49bd8b0b35 Fix inventory for test_dir_inventory
It came up that fixing this unit test may relate to another ticket that is open. This work allows us to uncomment this unit test by fixing how we pars variables allowing a quoted variable to contain a '#'.

Work also went into cleaning up some of the test data to clarify what was working.

Lastly work went into cleaning up formatting so that the code is easily read.
2014-03-04 18:31:49 -06:00
Jesse Keating 0c2c37a47a Avoid range selection on empty groups
This prevents a traceback when the group is empty.
Fixes #6258
2014-03-03 13:23:27 -08:00
James Cammarata f23ccebbdc Merge branch 'issue_4620' of https://github.com/jimi-c/ansible into jimi-c-issue_4620 2014-02-24 20:30:25 -06:00
James Tanner 427b8dc78d Ansible vault: a framework for encrypting any playbook or var file. 2014-02-18 15:35:12 -05:00
Ilya Kuznetsov 0658847ea6 Allow equal sign in single-line ini variables 2014-02-14 20:04:23 +07:00
James Cammarata ca0ec800d8 Revising method for parsing ranges from --limit subsets
Also added a new test (test_subset_range) for future validation.

Fixes #4620
2014-02-05 13:58:03 -06:00
jctanner a0f91f2aaa Merge pull request #5576 from xyrix/symlink-bug-fix
fixed bug causing symlinks to fail in the host_vars, group_vars etc dire...
2014-02-04 11:39:54 -08:00
James Cammarata f955d9db6a Handle implicit localhost when using '-i host,' syntax
Fixes #5820
2014-01-30 12:46:02 -06:00
Rob Smith 761fe8cc04 Fix an issue where git-pull fails with AttributeError
As part of 94f3b9bfab the code was changed to support dynamically adding localhost to the inventory. This change introduced an crash when run via ansible-pull

```
Starting ansible-pull at 2014-01-20 23:09:57
Traceback (most recent call last):
  File "/tmp/ansible/bin/ansible", line 157, in <module>
    (runner, results) = cli.run(options, args)
  File "/tmp/ansible/bin/ansible", line 82, in run
    hosts = inventory_manager.list_hosts(pattern)
  File "/tmp/ansible/lib/ansible/inventory/__init__.py", line 372, in list_hosts
    result = [ h.name for h in self.get_hosts(pattern) ]
  File "/tmp/ansible/lib/ansible/inventory/__init__.py", line 136, in get_hosts
    subset = self._get_hosts(self._subset)
  File "/tmp/ansible/lib/ansible/inventory/__init__.py", line 177, in _get_hosts
    that = self.__get_hosts(p)
  File "/tmp/ansible/lib/ansible/inventory/__init__.py", line 198, in __get_hosts
    hpat = self._hosts_in_unenumerated_pattern(name)
  File "/tmp/ansible/lib/ansible/inventory/__init__.py", line 275, in _hosts_in_unenumerated_pattern
    ungrouped.add_host(new_host)
AttributeError: 'NoneType' object has no attribute 'add_host'
```

The root cause is there is no group for the host to be added to. I fixed this case by creating the ungrouped group when it doesn't exist and then adding the host to the newly added group. This fixes the regression for me.
2014-01-20 20:10:47 -08:00
James Tanner 94f3b9bfab Fixes #3129 Do not require localhost to be in inventory 2014-01-20 18:26:14 -05:00
James Tanner 559e89036b Fixes #5631 Return a unique list of hosts when joining groups 2014-01-16 14:24:11 -05:00
jctanner 59d99c17b3 Merge pull request #5337 from bob-smith/bugfixFQDNParsing
Fix inventory parsing so that FQDN can be parsed without throwing ssh port error
2014-01-14 08:28:38 -08:00
jctanner a6bc63512e Merge pull request #5308 from zecrazytux/fix/hash_merge_dynamic_inventory
Let merge hash_bahaviour work with dynamic inventory
2014-01-14 07:58:25 -08:00
jay e1f5b801cf fixed bug causing symlinks to fail in the host_vars, group_vars etc directories 2014-01-10 16:32:41 +00:00
jctanner 21b4212ff5 Merge pull request #5517 from lichesser/fix_set_depreciation_warning
Fixes #5513. set is built-in since 2.4 and deprecated since 2.6
2014-01-07 15:48:27 -05:00
James Tanner ab51bd23a2 Fixes #5196 return a unique list of hostnames for a single host pattern 2014-01-06 14:19:20 -05:00
Michael DeHaan 227e8e31c9 Merge branch 'use_comps' of git://github.com/j2sol/ansible into devel 2014-01-04 13:36:40 -05:00
Michael DeHaan 10350d1639 Update various copyrights. Not complete, but sufficient. 2014-01-04 13:32:04 -05:00
Jesse Keating 23720ff19d Use list comprehensions for efficiency
For loops can be inefficient, particularly when doing a dot command with
them. https://wiki.python.org/moin/PythonSpeed/PerformanceTips#Loops and
https://wiki.python.org/moin/PythonSpeed/PerformanceTips#Avoiding_dots...

This patch makes use of list comprehensions to be as efficient as
possible while still retaining order. Efficiency was lost a bit when
switching away from sets() but this gains some of it back.
2014-01-03 18:07:00 -08:00
John Barker 4bf9f714d0 Fix inventory parsing so that FQDN can be parsed without throwing ssh
port parsing errors
Fixes problesm introduced by 948d019fef
Adds testcases to defend
2013-12-18 21:33:05 +00:00
Sébastien Bocahu c8d5846ab9 Let merge hash_bahaviour work with dynamic inventory 2013-12-16 19:55:20 +01:00
Stoned Elipot b00bf02129 Improve Group.get_hosts() performance.
- reduce hosts group list to unique elements faster
- add a cache of already computed hosts group list
2013-11-18 03:48:55 +01:00
jctanner 0f0a89b34e Merge pull request #4758 from alanfairless/group-host-var-dirs
Support organizing group and host variables across multiple files in a directory
2013-11-14 11:57:11 -08:00
jctanner 9a7765daf7 Merge pull request #4351 from 2m/leading-range-fix
Allow leading ranges in the inventory host entries.
2013-11-13 10:48:57 -08:00
jctanner 0c29807ba3 Merge pull request #3993 from stoned/inventory-script-all-group-fix
Avoid duplicates of the 'all' group when using inventory script.
2013-11-11 10:42:00 -08:00
Alan Fairless 65e5331079 Allow organizing host/group vars in a directory
So instead of having:
 group_vars/production.yml

A user could chose to reorganize to:
 group_vars/production/staff.yml
 group_vars/production/networks.yml
 group_vars/production/dns.yml

(Backwards compatible.)
2013-10-31 12:22:46 -05:00
Alan Fairless babde9a84c refactor to catch edge cases, remove repeated code
- Move all the supported YAML file extensions into a constant
- Use helper functions to avoid duplicate code for group/host vars
- Catch and disallow some confusing situations, such as the presence of
  multiple group/host vars files for the same group/host, but with
  different extensions.  For example having both group_vars/all.yml and
  group_vars/all.yaml.
- Catch and report file system permission issues, symlink errors,
  unexpected file system objects
- Trivial performance improvement from making fewer stat system calls
- Restructuring that makes it easy for a following patch to support
  directory recursion
2013-10-31 12:18:17 -05:00
Michael DeHaan b5c9d5a59b Inventory directory should always be absolute. Fixes #4535. 2013-10-30 20:48:53 -04:00
Michael DeHaan c933a4c59a Fix indentation depth. 2013-10-19 13:03:14 -04:00
Martynas Mickevicius 7ecb5fbc9c Handle comment on inventory group line. 2013-10-17 13:16:35 +03:00
Martynas Mickevicius 44279ce34f Allow leading ranges in the inventory host entries. 2013-10-17 13:16:35 +03:00
Michael DeHaan 1b2d4c328c Cache patterns a bit higher up to make things a little more efficient. See #4469. 2013-10-11 22:24:37 -04:00
Michael DeHaan 41aaad69aa Make add_host clear the inventory pattern cache, add some more aliases. Fixes #4442. 2013-10-11 16:37:10 -04:00
Serge van Ginderachter c2e5f783da Add caching to pattern enumeration
Inventory._hosts_in_unenumerated_pattern()

Was TODO: cache this logic so if called a second time the result is not
recalculated
2013-10-10 15:41:48 +02:00
James Cammarata 948d019fef Detect IPv6 addresses in INI inventory
Prevents parts of the IPv6 address from being interpreted as a port
(for example, :80).

Fixes #3888
2013-10-09 11:11:09 -05:00
Michael DeHaan 8fc46a3a5a Return inventory objects in the order they are presented. Additionally, fix host slicing such that it works on Python terms with
zero indexed lists and a non-inclusive final element.
2013-10-07 15:06:15 -04:00
James Cammarata bff47df5ff Fix issue with ast evaluation of strings 2013-10-01 09:20:48 -05:00
Brian Coca 771435deb4 now ini vars are typed
Signed-off-by: Brian Coca <briancoca+dev@gmail.com>
2013-09-26 18:29:17 -04:00
Jasper Capel d4dec5f577 Allow creating empty inventory
Instantiating the Inventory class with host_list=None now results in an
empty inventory instead of an error.
2013-09-25 15:00:35 +02:00
Stoned Elipot 6cbd94dfae Avoid duplicates of the 'all' group when using inventory script.
Do not recreate an 'all' group when it is in the inventory script's
output, but use the one created upfront.
2013-09-02 12:26:02 +02:00
James Cammarata 39628d012d Minor fix to ipv6 detection for inventory with -i
For link-local addresses, it is sometimes necessary to append the
interface to use for the ipv6 address. This patch extends the ipv6
regex to allow for '%ifnameX' at the end.

See https://bugzilla.redhat.com/show_bug.cgi?id=136852 for more info
2013-08-19 15:27:21 -05:00
Michael Scherer c9d28e10ad add support for using a ipv6 in -i
testing with a ipv6 :
  ansible -u misc -i  '[2002::c23e]:22,' '*' -m ping

fail due to parsing of ':' as a separator of port/ip with ipv4.
This commit add support for properly parsing 2002::c23 and the
bracket notation [2002::ce]:2222
2013-08-19 15:27:20 -05:00
Matt Saunders 9fd1b174f5 Fixed tiny bug with _meta handling in external inventory scripts 2013-08-19 18:54:30 +01:00
ftao 51a180b150 fix inventory.basedir is not absolute path when hostfile is startswith "./" 2013-08-11 10:50:47 +08:00
Michael DeHaan ee11d69697 Merge branch 'better_ini_errors2' of git://github.com/bcoca/ansible into devel 2013-08-10 18:01:17 -04:00
René Moser e8272e365d
implemented 'inventory_file' variable. Closes GH-3789. 2013-08-10 13:04:56 +02:00
Serge van Ginderachter 40e60c947d Host specifiers should be sorted
to ensure consistent behavior, hosts should look like this:

    hosts: webservers:&boston:!rack42

So when applying the host selectors, run those without the "&" first,
then the &s, then the !s.

Closes #3500
2013-08-08 18:32:24 +02:00
Brian Coca a937a6a66d now bad ini entries will throw friendlier error
Signed-off-by: Brian Coca <briancoca+dev@gmail.com>
2013-08-07 12:49:12 -04:00
rishid d18c90ed8f Add support for INI comments that begin with '#' or ';'
Ini file format does not have a standard but ';' is used more often than '#' for comments
2013-08-06 11:41:07 -04:00
Michael DeHaan 8955ac1eda If the result of a dynamic inventory script contains a "_meta" hash at top level
and the _meta hash contains a "hostvars", don't call --host hostname for any elements
and just serve them directly for performance enhancements with the external inventory
script and a large number of hosts.
2013-08-04 11:34:42 -04:00
Michael DeHaan 0335d05f43 Check against None around playbook basedir 2013-08-01 20:44:19 -04:00
Jonas Eriksson 16efb45735 Fix playbook-local host_vars when running from .
Since ansible 1.2, it became possible to place a host_vars
directory in the same directory as a playbook, making it possible
to keep host_vars local to that playbook there. However, due to
python's os.path.dirname, a action such as:

 $ ansible-playbook pb.yml

..would not pick up the host_vars as os.path.dirname("pb.yml")
returns "", unlike the unix command dirname that would return
".". Substituting "pb.yml" on the command line with "./pb.yml"
would do the trick, but is not always intuitive. This patch
solves the problem until python solves issue18547 [1].

[1] http://bugs.python.org/issue18547
2013-07-24 18:33:06 +02:00
Michael DeHaan 3baa55a314 Merge branch 'devel' of git://github.com/sjmudd/ansible into sjmudd_ranges 2013-07-21 09:31:46 -04:00
martin f. krafft fd02443d42 Enable negated patterns
A host pattern of the form '!foo' by itself does not work, but
'all:!foo' does. If the first pattern is a negation, this commit
automatically prepends 'all'.

Signed-off-by: martin f. krafft <madduck@madduck.net>
2013-06-20 07:55:35 +02:00
Rike-Benjamin Schuppner 71afb9e432 Use with guard for file reads. 2013-06-10 17:16:31 +02:00
Rike-Benjamin Schuppner deaf499ba1 Remove duplicate host file reads by removing a legacy check.
This allows using a form such as

    ansible -i <( arbitrary command ) all -m ping
2013-06-10 17:15:12 +02:00
Simon J Mudd 25822330a2 Add support for multiple ranges in a host
e.g.  db[01:10:3]node-[01:10]

- to do this we split off at the first [...] set, getting the list
  of hosts and then repeat until none left.
- also add an optional third parameter which contains the step. (Default: 1)
  so range can be [01:10:2] -> 01 03 05 07 09
2013-06-06 22:27:30 +02:00
Chris Jacobs 588d4080df don't want to ignore explicit cwd 2013-06-04 21:06:49 -07:00
Chris Jacobs 69db160e2f Skip dotfile in hosts dirs 2013-06-04 18:16:09 -07:00
Serge van Ginderachter f1cf81b086 optimization when adding child groups 2013-06-04 11:25:59 +02:00
Michael DeHaan c52abd40b0 Fix for the directory inventory source where depth information on the group was being discarded
due to initial copy.  New model will reuse the first object and copy attributes on the second.
2013-06-03 11:41:56 -04:00
Darryl Stoflet c0baf10845 Support for all:vars in script inventories 2013-06-02 14:54:29 -07:00
Michael DeHaan 1f7c197a9d os.path.dirname returns '' not None in some cases, handle this so inventory can be specified with ./ 2013-06-02 16:01:09 -04:00
Michael DeHaan 6cd3ba5b06 Allow the group_vars and host_vars directories to be stored alongside the playbook as well as inventory. 2013-06-01 10:38:16 -04:00
Pol Llovet 4432c01ceb Handle '#' in var strings by splitting on ' #'
If someone has a " #" in a quoted var string, it
will interpret that as a comment and refuse to
load the inventory file due to an unbalanced
quote. Noisy failure > unexpected behavior.
2013-05-31 12:34:45 -06:00
Pol Llovet ba78360c52 Remove inline comments from inventory tokenizing. 2013-05-30 14:12:23 -06:00
Serge van Ginderachter 0c0d6c0b4e performance optimization in inventory.groups_list()
don't calculate all hosts for every parent group of every group
when that parent group was already in the cache
2013-05-28 12:53:51 +02:00
Nicolas Grilly 7aee588918 Idiomatic Python: use in operator instead of method find 2013-05-23 20:12:43 +02:00
Nicolas Grilly 7babd30cf7 Idiomatic Python: use isinstance instead of type 2013-05-23 20:12:43 +02:00
Serge van Ginderachter a6b827ca07 don't parse subdirs in host/group_vars
as those are not supported in
core vars_plugins/group_vars.py
but might be used by other vars_plugins
2013-05-13 11:04:49 +02:00
Michael DeHaan 50586928b2 No need for trailing semicolon. 2013-05-11 17:25:05 -04:00
Michael DeHaan e4e6616169 Merge pull request #2872 from tima/fuzzy-match-localhost-127
Adds fuzzy matching of localhost to 127.0.0.1 host entries and vice versa
2013-05-11 11:15:49 -07:00
Timothy Appnel 20bf5f130d Adds fuzzy matching of localhost to 127.0.0.1 host entries and vice versa. 2013-05-08 14:11:40 -04:00
Timothy Appnel b15cc3e2b4 Fixed bug where a host entry in the inventory represented as a dict w/o a hosts or vars key was treated as a group and its vars essentially ignored. 2013-05-08 13:55:50 -04:00
Michael DeHaan 5a8dff5bce Instantiate inventory plugins only once for efficiency reasons. 2013-04-20 09:59:40 -04:00
Michael DeHaan 87788b1d17 Ignore inventory config files when using an inventory directory. 2013-04-20 09:10:19 -04:00
Michael DeHaan d8bf87b008 (A) include errors in inventory scripts should they occur.
(B) allow registration with ignore_errors: True
2013-04-17 22:27:00 -04:00
Michael DeHaan 7c6341718e Merge branch 'combine_vars' of git://github.com/laggyluke/ansible into exp
Conflicts:
	lib/ansible/inventory/vars_plugins/group_vars.py
	lib/ansible/runner/__init__.py
	lib/ansible/utils/__init__.py
	test/TestPlayBook.py
2013-04-16 20:06:06 -04:00
C. Morgan Hamill 863cb50530 Allow '.yml'/'.yaml' extension on group_vars files.
Look for a file with the base name of the group/host, first without
a file extension, then with a '.yml' extension, and, finally, with
a '.yaml' extension, loading vars from only the first one found.
2013-04-16 19:59:23 -04:00
Michael DeHaan 29209c4913 Style fixes so "make pep8" is clean. 2013-04-10 16:37:49 -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
George Miroshnykov 6826aa7360 Tweaked merge_hash to also affect Runner behavior 2013-04-06 13:06:38 +03:00
Blair Zajac 36b3fc3acf Fix for inventory scripts with no path prefix that are in CWD.
Without this, using '-i ec2.py' will not work if '.' is not in PATH.
2013-04-05 20:52:59 -07:00
Seth Vidal 2796b5ee2a simple fix for issue 2564
when we encounter a group we've not seen before - we need
to make sure we make it a subgroup of 'all', no matter what
2013-04-04 12:44:39 -04:00
Stoned Elipot 86995d7786 Fix pathnames in comments 2013-03-22 02:11:58 +01:00
Rob Parrott 149f1f9f3c invalidate group cache so that a group added by the add_host module will be relfected in the groups variable in later plays. 2013-03-19 13:57:45 -04:00
Daniel Hokka Zakrisson 1784fd80cc When a host list is used, no parser is present 2013-03-04 12:37:15 +01:00
Daniel Hokka Zakrisson 2ff2f05a0f host.get_variables includes too many variables, use host.vars instead
Not quite as attractive, but allows variable precedence and lazy
resolution to work as intended, rather than resolving them on a
per-inventory basis.
2013-03-02 10:26:26 +01:00
Daniel Hokka Zakrisson f1eb195ff5 vars_loader should get the path to the inventory + vars_plugins 2013-03-01 23:22:52 +01:00
Daniel Hokka Zakrisson ad08995989 Make inventory basedir for directory based inventory be the directory
This puts host_vars and group_vars inside of the directory, allowing you
to target a single inventory but still have access to the variables.
2013-03-01 23:22:52 +01:00
Daniel Hokka Zakrisson d9c6b60b24 Allow inventory to be a directory containing other inventories 2013-03-01 23:22:52 +01:00
Daniel Hokka Zakrisson 647cd0141c Move all inventory script code into the script parser 2013-03-01 23:22:52 +01:00
Nigel Metheringham c0e28762f0 Allow end of line comments in inventory file
See github issue 2702
https://github.com/ansible/ansible/issues/2072
2013-02-13 14:15:22 +00:00
Michael DeHaan 0ad6ac4086 Fix group depth for nested groups 2013-02-09 22:52:35 -05:00