Commit Graph
100 Commits
Author SHA1 Message Date
Serge van GinderachterandGitHub 4187846fe7 Update my github username (#72050) 2020-10-01 11:48:59 +01:00
Serge van GinderachterandGitHub ad37218200 Update my github username (#70005) 2020-06-11 14:29:01 +01:00
Serge van GinderachterandMatt Clay c1fd6c6388 return a proper result set for getmaster/getslave (#2595)
* return a proper result set for getmaster/getslave

when not on a master/slave.
This allows for a cleaner error handling.

* A more uniform return of result keys for getmaster/slave
2016-12-08 11:34:37 -05:00
Serge van GinderachterandMatt Clay 121ef13e47 Exception handling for MySQLdb warnings (#2594)
Do not fail the module for warnings.
Return warnings in the module result set.

Fixes #719
Alternative to #720 and as discuseed over there.
2016-12-08 11:34:37 -05:00
Serge van GinderachterandMatt Clay 14ba9b4b31 open_iscsi: minor PEP8 whitespace fixes 2016-12-08 11:33:06 -05:00
Serge van GinderachterandMatt Clay 21720f6bee Return devicenodes as empty list if no LUN's
got connected. It is possible for an intiator to successfully connect to a
target, whilst getting no LUN's back. If no devicenodes get detected, it makes
more sense to return an empty list than plainly None.

This potentially avoids further tasks to have to check if devicenodes is
iterable.
2016-12-08 11:33:06 -05:00
Serge van Ginderachter 7461ba9998 Inject existing groups at InventoryDir initialization
This fixes a corner case where ini files live in a subdir
of the main inventory directory.

Reproducing the original error:

mkdir -p inventory/ini
cat > inventory/ini/hosts << EOF
[www]
www1
EOF

$ ansible -i inventory/ all -m ping
ERROR! 'all'

(or without the [www] group, it would complain about 'ungrouped')
2015-09-29 18:16:05 +02:00
Serge van Ginderachter 8d1549900c fix AnsibleError object name in subelements plugin
fixes #11624
2015-07-17 17:39:31 +02:00
Serge van Ginderachter d5fb11d89c Use YAML_FILENAME_EXTENSIONS for vars files.
The v2 codebase didn't use this previously introduced constant yet.

C.YAML_FILENAME_EXTENSIONS
2015-07-14 00:23:35 +02:00
Serge van Ginderachter 9c8f0da327 Do not combine group_vars with an empty file
This addresses a specific case with multiple vars files
in a group_vars/${groupname}/ directory where one of those files
is empty, which returns None instead of an empty dict.
2015-07-14 00:14:13 +02:00
Serge van Ginderachter b92d70c5b6 tests files extensions in group/host_vars dir
only files with extensions as per
C.YAML_FILENAME_EXTENSIONS should be parsed
2015-05-23 21:37:12 +02:00
Serge van Ginderachter b6ea8de399 limit extensions for files in group/host_vars dir
inventory vars: make loading from a directory obey the same rules as
when checking the base paths, looking at the file name extensions
as defined in CONSTANTS.YAML_FILENAME_EXTENSIONS

Fixes Github issue #11017
2015-05-23 20:34:08 +02:00
Serge van GinderachterandJames Cammarata 9b646dea41 Add optional 'skip_missing' flag to subelements 2015-05-12 12:52:16 -05:00
Serge van Ginderachter c3614853ee vsphere_guest module doc fix 2014-09-11 15:47:22 +02:00
Serge van Ginderachter 2474ce5819 Exit with rc 1 if role doesn't exist/is not found
fixes #8823
	modified:   bin/ansible-galaxy
2014-09-09 21:57:23 +02: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 ad3d3c7379 Avoid multiple blank lines with --syntax-check
Only print a blank line between plays when also doing --list-hosts and/or
  --list-tasks, otherwise this output just a long list of blank lines, one for
  each play.
2014-08-22 15:32:08 +02:00
Serge van Ginderachter 3a228b9d55 InventoryScript: better syntax checking for json stream 2014-08-21 18:06:07 +02:00
Serge van Ginderachter b8d057296a variable merging: detect if both vars are really dicts when combining/merging dicts 2014-08-21 18:06:02 +02:00
Serge van Ginderachter 7051cdeb57 roles: make role_path (path of current role) available as variable to the task 2014-08-21 11:56:27 +02:00
Serge van GinderachterandJames Cammarata 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 3c06833302 group_by: make sure new group has bigger priority than all group 2014-08-19 16:34:30 +02:00
Serge van Ginderachter a2cfe8770b Inventory: fix logic mistake in loading/retrieving variables for groups 2014-08-19 16:34:26 +02:00
Serge van Ginderachter 7c96f1d803 InventoryDir: fixing yet another corner case 2014-08-08 08:54:11 +02:00
Serge van Ginderachter df8dfdce06 packaging: add short has and branch name in package version for unofficial builds 2014-08-06 15:08:55 +02:00
Serge van Ginderachter 25b696c2d2 execute the mount after path validation
This avoids a stale situation where name/path contains some impossible path,
but gets configured (faultly) in fstab, and the module only fails after that,
when creating that path.
2014-08-06 10:52:08 +02:00
Serge van Ginderachter 8f39c114d8 template Runner.module_vars['delegate_to'] to accommodate callbacks 2014-08-05 15:16:43 +02:00
Serge van Ginderachter 4e9a253bef Load existing group_vars file for new group_by group
if it was not loaded yet, which happens if that group
didn't exist yet in the inventory.

fixes #8159
2014-07-16 21:16:27 +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
Serge van GinderachterandJames Cammarata 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
Serge van Ginderachter ceb1ba1687 bigip_monitor bugfix for check mode
Fixes case where properties are retrieved for a non existent monitor
which happens in check mode.
2014-06-06 16:48:36 +02:00
Serge van Ginderachter 30450f0b23 Merge pull request #2 from taylorbarstow/inventorytree-tests
Adding unit tests for host groups with inventory dir
2014-04-18 09:44:07 +02:00
Serge van Ginderachter d240e2b9fb Introduce an ansible_version dict as runner variable
Given the version:
    "1.6 (ansible_version_var 14499e8bf3) last updated 2014/03/21 17:07:50 (GMT +200)"

  We get the special variable:
    "ansible_version": {
        "full": "1.6",
        "major": 1,
        "minor": 6,
        "revision": 0,
        "string": "1.6 (ansible_version_var 14499e8bf3) last updated 2014/03/21 17:07:50 (GMT +200)"
       }

	modified:   lib/ansible/playbook/__init__.py
	modified:   lib/ansible/runner/__init__.py
	modified:   lib/ansible/utils/__init__.py
2014-04-08 17:14:42 +02:00
Serge van Ginderachter 2dfee9d0a7 lvg module bugfix on vg_options patch
When no vg_options are passed to the module, 'vg_options' still exists
in the module.params dict with a value of None, so the default empty string in
the get method is never used. None cannot be "splitted", which backtraced.
2014-04-04 15:32:35 +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
Serge van Ginderachter b0ff1ea425 performance optimisation in hash merge logic
rewrite deepcopy in util.merge_hash and just iterate
on an inventory with 500 groups and 800 hosts this brings back the
inventory initialisation from 13s to 3s (with hash_behaviour=merge)
2014-03-26 11:37:31 +01: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
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
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
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
Serge van GinderachterandJames Cammarata c85081e9a9 Fixes templating of ansible_ssh_host for delegates 2014-03-10 15:53:36 -05:00
Serge van Ginderachter 9833263417 Fixes templating of ansible_ssh_host for delegates 2014-02-27 18:06:34 +01:00
Serge van Ginderachter 836fb4143c path_dwim: fix when basedir not set 2014-01-08 02:21:10 +01:00
Serge van Ginderachter ad6ffe00d0 bigip_monitor_http: two small bug fixes
- extra properties were not set at creation, only when updating
  which can be overlooked when running the module from more than 1 node...
- fix bas var as time_until_up didn't get used
2013-12-17 23:08:06 +01:00
Serge van Ginderachter 2f9470ec1d synchronize: allow ansible_ssh_host to be templated
This is already enabled in the runner also.
2013-11-25 15:33:04 +01:00
Serge van Ginderachter 80fd22dce6 Check real user's known_hosts when sudo ansible...
closes #4834
2013-11-09 13:29:39 +01:00
Serge van Ginderachter 8faba17b34 bigip tcp monitor: add examples 2013-10-28 17:13:36 +01:00
Serge van Ginderachter 2bd51e506b Fix typo 2013-10-28 16:59:44 +01:00
Serge van Ginderachter 70c677eb8b Implement BIGIP F5 TCP monitor 2013-10-28 16:58:14 +01:00
Serge van Ginderachter 4748329009 clean up comments to show monitor specific code 2013-10-25 22:47:35 +02:00
Serge van Ginderachter 6277e770a1 include basedir as 'playbook_dir' variable
closes #4246
2013-10-25 07:53:52 +02:00
Serge van Ginderachter 7bad73bc50 update version added and add examples 2013-10-21 20:57:22 +02:00
Serge van Ginderachter 6aa3210eb0 add missing defaults 2013-10-21 20:36:25 +02:00
Serge van Ginderachter 7454038d82 improve logic in setting parameters in check mode (monitor might not exist) 2013-10-21 20:36:25 +02:00
Serge van Ginderachter ad5247b82b do not overwrite properties with defaults 2013-10-21 20:36:25 +02:00
Serge van Ginderachter f79c9fb6ce improve changed result for race conditions 2013-10-21 20:36:25 +02:00
Serge van Ginderachter 0c2e376d5e adds receive_disable and time_until_up and some bugfixes 2013-10-21 20:36:25 +02:00
Serge van Ginderachter d9bb38f7c7 bigip_monitor_http: add support for hardcoded properties 2013-10-21 20:36:25 +02:00
Serge van Ginderachter 940419d085 some fixes and cleanup per feedback from Matt Hite 2013-10-21 20:36:25 +02:00
Serge van Ginderachter 2005332e7b initial beta version of bigip_monitor_http module 2013-10-21 20:36:25 +02:00
Serge van Ginderachter c4d20094b4 make changed filter understand results lists 2013-10-10 22:08:38 +02:00
Serge van Ginderachter e5d45311f9 Implement a |changed filter plugin 2013-10-10 21:34:37 +02: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
Serge van Ginderachter 4f9af7efad subelements lookup plugin 2013-09-09 23:45:55 +02:00
Serge van Ginderachter 1de6094d22 fix flattened plugin name in changelog 2013-09-04 09:10:23 +02:00
Serge van Ginderachter a351c25c59 Introduce open-iscsi module to manage targets on the initiator. 2013-09-03 13:31:28 +02:00
Serge van Ginderachter 8abb49bd78 fix debian release version 2013-09-02 21:32:16 +02:00
Serge van Ginderachter faae84bf0e bigip_node: additional code
- checks if address already assigned to other node name
- add description for node
- check for node addres changes
- add missing code "node exists, potentially modify attributes"
2013-09-02 16:10:09 +02:00
Serge van Ginderachter a311ee35b3 Fix bug in uri where redirect check fails.
When the redirect check fails, the 'status' key is not set in
resp_redir, so we need to check this.
2013-08-29 15:58:01 +02:00
Serge van Ginderachter 173586b871 Ensure plugin_loader.all() only loads one instance
by ensuring all basedirs, plugin paths and extra
paths are handled as absolute paths and are checked
to not add any doubles.

This fixes the corner case where e.g. the user has
an additional plugin path configured to a dir
relative to his playbooks or inventory location,
which also matches the  _plugin subdir relative to
one of the basedirs in the play.

For most plugins this doesn't show as an obvious issue
except for callback_plugins, which might fire more
than once. Other plugins (inventory and template
plugins) might unnecessarily be ran twice.

e.g. ansible.cfg has
callback_plugins   = ./plays/callback_plugins
and plays/ contains a playbook file:
.
├── ansible.cfg
├── inventory
└── plays
    ├── callback_plugins
    │   └── timestamp.py
    └── site.yml

modified:   lib/ansible/utils/plugins.py
2013-08-12 22:17:53 +02:00
Serge van GinderachterandMichael DeHaan 9991a530ab fix an encoding bug in copy content = lookup plugin
closes #3518
2013-08-10 17:37:04 -04:00
Serge van GinderachterandJames Cammarata 1a4e6e415e Check for ansible_facts in results for with_ tasks
that loop over a lookup plugin. Fixes #3704 and #3735
2013-08-08 12:30:32 -05: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
Serge van Ginderachter b40295910d also rename plugin name in error message 2013-07-22 16:47:36 +02:00
Serge van Ginderachter 730b368259 Introduce flat_list lookup plugin
- hosts: localhost
    gather_facts: False
    tasks:
    - debug: msg="{{item}}"
      with_flat_list:
      - a
      - - b
        - c
        - d
        - - e
        - f
        - - g
          - h
      - i
      - j
      - - k
        - l

  # note: main list or list (sub)items can also be set as a variable

  TASK: [debug msg="{{item}}"] **************************************************
  ok: [localhost] => (item=a) => {"item": "a", "msg": "a"}
  ok: [localhost] => (item=b) => {"item": "b", "msg": "b"}
  ok: [localhost] => (item=c) => {"item": "c", "msg": "c"}
  ok: [localhost] => (item=d) => {"item": "d", "msg": "d"}
  ok: [localhost] => (item=e) => {"item": "e", "msg": "e"}
  ok: [localhost] => (item=f) => {"item": "f", "msg": "f"}
  ok: [localhost] => (item=g) => {"item": "g", "msg": "g"}
  ok: [localhost] => (item=h) => {"item": "h", "msg": "h"}
  ok: [localhost] => (item=i) => {"item": "i", "msg": "i"}
  ok: [localhost] => (item=j) => {"item": "j", "msg": "j"}
  ok: [localhost] => (item=k) => {"item": "k", "msg": "k"}
  ok: [localhost] => (item=l) => {"item": "l", "msg": "l"}
2013-07-17 13:59:41 +02:00
Serge van Ginderachter 129c7522d9 allow ansible_ssh_host to be templated
Use case: e.g. dual homed hosts on production en management network

The inventory_hostname is the regular host name and matches the
dns name on the production network; ansible connects to the host
through a management network; the dns name on the management network
is standardized and equals ${inventory_hostname}-mgt.mynetwork.com

Now this can be configured as the default in group_vars/all:

   ansible_ssh_host: {{ inventory_hostname + '-mgt.mynetwork.com' }}
2013-07-05 18:05:26 +02:00
Serge van Ginderachter f000dcd526 add more support for different size formats 2013-06-24 22:37:31 +02:00
Serge van Ginderachter 8b188429c7 docfix on file module, aliases for path parameter 2013-06-14 20:45:58 +02:00
Serge van Ginderachter 2a7f9df109 add support for callback_plugins/ relative to playbook 2013-06-12 23:54:00 +02:00
Serge van Ginderachter f1cf81b086 optimization when adding child groups 2013-06-04 11:25:59 +02:00
Serge van Ginderachter 18e7974021 add mention of github.com/ginsys/ansible-plugins in contrib.rst 2013-06-02 17:56:12 +02: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
Serge van Ginderachter dd9919342b hide magic variables used bin/ansible output
'verbose_override' and 'verbose_always'
2013-05-27 14:42:55 +02:00
Serge van Ginderachter 5859af7285 script support for roles: use the files/ directory
instead of an additional scripts/ directory
2013-05-25 16:51:59 +02:00
Serge van Ginderachter 94028852d9 Make debug module always verbose in playbooks
Created a new flag 'verbose_always' handled by
on_ok callback, similar to the 'verbose_override'
flag used by the setup module.
2013-05-25 00:27:23 +02:00
Serge van Ginderachter 0224dc464d roles/x/scripts support: update docs
also added example on where regular tasks fit in
2013-05-24 22:42:24 +02:00