Commit Graph

27881 Commits (513466d309599cf1fd43223fe5dbafbc090362e5)
 

Author SHA1 Message Date
Matthew Gamble f24ab68f04 Improve and optimise pacman package installation
Previously, packages were installed one at a time in a loop. This caused
a couple of problems.

First, it was a performance issue - pacman would have to perform all of
its checks once per package. This is unnecessarily costly, especially
when you're trying to install several related packages at the same time.

Second, if a package you're trying to install depends on a virtual
package that is provided by several different packages (such as the
"libgl" package on Arch) and you aren't also installing something that
provides that virtual package at the same time, pacman will produce an
interactive prompt to allow the user to select a relevant package. This
is obviously incompatible with how ansible operates. Yes, this problem
could be avoided by installing packages in a different order, but the
order of installation shouldn't matter, and there may be situations
where it is not possible to control the order of installation.

With this refactoring, all of the above problems are avoided. The code
will now work out all of the packages that need to be installed from any
configured repositories and any packages that need to be installed from
local files, and then install all the repository packages in one go and
then all of the local file packages in one go.
8 years ago
Dag Wieers 93cfe73a76 Report detailed error when internal remote functions fail
This is a redesign in how plugins call _remote_checksum().

- _remote_stat() has been modified to report the real error as
  AnsiblError
- Action plugin **unarchive** calls _remote_stat() directly instead of
   _remote_checksum()
- Action plugin **unarchive** also handles the exceptions directly
- Ensure get_exception() returns native text

Two other action plugins, **template** and **fetch**, also do a remote checksum.
In **template** we already call _remote_stat(), just like we now do for
unarchive, in **fetch** we do call _remote_checksum() and we make the
exact same mistake as the unarchive plugin. So that one could use a
redesign as well.

This fixes #19494

Before:
```
[dag@moria ansible.testing]$ ansible-playbook -v test137.yml
Using /home/dag/home-made/ansible.testing/ansible.cfg as config file

PLAY [localhost]
******************************************************************************************************

TASK [unarchive]
******************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg":
"python isn't present on the system.  Unable to compute checksum"}

PLAY RECAP
******************************************************************************************************
localhost                  : ok=0    changed=0    unreachable=0
failed=1
```

After:
```
[dag@moria ansible.testing]$ ansible-playbook -v test137.yml
Using /home/dag/home-made/ansible.testing/ansible.cfg as config file

PLAY [localhost]
*************************************************************************************************************

TASK [unarchive]
*************************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg":
"Failed to get information on remote file (/tmp/): sudo: unknown user:
foobar\nsudo: unable to initialize policy plugin\n"}

PLAY RECAP
*******************************************************************************************************************
localhost                  : ok=0    changed=0    unreachable=0
failed=1
```
8 years ago
Adrian Likins 2597c1236d Better error msg for basic.get_bin_path()
Include the searched paths in the error message.
8 years ago
Adrian Likins 35fef6fb84 Better error message for module unsupported params
Keep track of all the unsupported parameters, and include
all of them in the error message as well as a list of the
supported params.
8 years ago
Matt Clay cdd74b2b84 Fix foreman compile skip path. 8 years ago
Fabio Alessandro Locati 06abeea5ad Improve YAML examples - windows/win_package.py (#19407)
* Improve YAML examples - windows/win_package.py

* Fix quote

* Fix typo
8 years ago
Fabio Alessandro Locati 3c64ccd6e1 Make examples in YAML format - windows/win_acl.py (#18836)
* Make examples in YAML format - windows/win_acl.py

* Raw string
8 years ago
Peter Sprygada c546c12b60 fixes incorrect module name for action plugin (#19535)
This fixes a bug introduced in the action plugin for setting the
module name value for logging
8 years ago
Rezart Qelibari 507b96ff30 user: make system=yes work on Darwin systems. (#19464)
* Update system/user.py module.

Add ability to add real system users with next free system uid (< 500) on macOS.

* Improve syntax in system/user.py module.

Remove complex if else line and replace by simple comparison which yields the same boolean value.

* Remove "True" comparison of user.py.

Remove comparison to true, as it is not pep8 conform.
8 years ago
Chris Houseknecht 71685b3258 Update module_args['rsync_opts'] when connection type is docker (#19531) 8 years ago
Brian Coca 9816addcdc removed too generic 'infrastructure' 8 years ago
Brian Coca e542976bb7 removed redundant else/return 8 years ago
Brian Coca cb55e74487 added update to ansible-doc as minor feature 8 years ago
Toshio Kuratomi 226124956c Allow timeout decorator to handle @timeout as well as @timeout() 8 years ago
Brian Coca b4bd6c80de fixes to facts timeout
also now handle timeout exception correctly everywhere
8 years ago
Brian Coca f533f6603c show filename for module 8 years ago
Toshio Kuratomi c46ef98496 Replace the old ansible.module_utils best practices with the new ones. 8 years ago
Rob cfa8ce767b Add new parameters to taskdefinition module - network_mode and task_r… (#19493)
* Add new parameters to taskdefinition module - network_mode and task_role_arn

* Add version_added field for doco

* Change version_added parameter to 2.3
8 years ago
Fabio Alessandro Locati a080d44a47 Improve YAML examples - system/solaris_zone.py (#19410) 8 years ago
Peter Sprygada 7814546735 cast injected json string to bytes in local modules (#19519)
this change will cast the locally injected ansible args to bytes
from string
8 years ago
Peter Sprygada 2a5a2773c8 adds new module net_command for network devices (#19468)
* new module net_command for sending a command to a network device
* adds unit test cases for module
* only works with connection=network_cli
8 years ago
Rob b77ab1a6c9 Add support to ec2_eip to associate with a secondary ip address (#19484) 8 years ago
Ken Evensen 58b067532f gconftool2 module (#19461)
* Pull #19267 broke sysctl module.  Minor corrections

* Commit of gconftool2 module
8 years ago
Alex Sergeyev 28a3a13656 Support MariaDB engine version 10.1 (#19483) 8 years ago
redbloodmage 0568adc272 Added some clarity on the token confusion. (#19473) 8 years ago
Peter Sprygada 8f97ddd98a removes network os guess static method (#19467)
For devices that do not support mutliplexing, we cannot automatically
determine the network os.  This removes the os guess static method
from the terminal plugin.  For this devices, the network_os
value must be configured
8 years ago
Matthew c58461596a Support pacman packages using different types of compression (#19503)
It's possible to compress packages using several different compression
methods, or not compressed at all. Previously, the pacman module only
supported files compressed using xz. This update ensures that all
compression types currently supported by pacman are supported by the
ansible pacman module.

The list of supported compression methods at the time of writing can be
found here:
https://git.archlinux.org/pacman.git/tree/scripts/makepkg.sh.in#n747
8 years ago
Will Thames 87c0c33241 Fix include_role docs to be valid YAML (#19506)
Remove the colon from one of the documentation notes, which was
causing documentation schema validation to fail.
8 years ago
Will Thames dce445f956 Improve error message for module validation (#19501)
Print out the data that fails to validate when doing
schema checking on modules

This allows easier interpretation of error messages.

From:

```
ERROR: DOCUMENTATION.notes.2: expected basestring
```

To:

```
ERROR: DOCUMENTATION.notes.2: expected basestring @ data['notes'][2].
Got {"As with C(include) this task can be static or dynamic, If static
it implies that it won't need templating nor loops nor conditionals and
will show included tasks in the --list options. Ansible will try to
autodetect what is needed, but you can set `static": 'yes|no` at task
level to control this.'}
```
8 years ago
Brian Coca 48dee1b6d0 still needs static for task object 8 years ago
Dag Wieers 39c9c6b942 Ensure that command/shell errors are displayed
This fix ensures that if there are specific module errors (in our case
the python interpreter was not found) then command and shell returns a
proper error.

It also fixes a few other imperfections that we noticed during
troubleshooting:

- Return the real RC if it were available
- Improve a dictionary evaluation using .get()
- Return an RC of -1 if it is unknown (instead of returning 0)

This fixes #18846
8 years ago
Dag Wieers 41614fd8e6 Display proper error on group_vars syntax error
This fix ensures a proper error is shown when a group_vars files cannot
be parsed correctly. Without this patch you get:

```
[dag@moria ansible.testing]$ ansible-playbook test132.yml
ERROR! Unexpected Exception: dictionary update sequence element #0 has length 1; 2 is required
to see the full traceback, use -vvv
```

With this patch you get:
```
[dag@moria ansible.testing]$ ansible-playbook test132.yml
ERROR! Problem parsing file '/home/dag/home-made/ansible.testing/group_vars/test135': line 1, column 1
```

This fixes #18843
8 years ago
Brian Coca 5d82fe545f minor docs and option fixes 8 years ago
Brian Coca 884b529195 removed unused 'static' option
the task level directive is what actually controls this, this option was never used
8 years ago
Simon Wydooghe f97e6f8903 Bracket forgotten in inventory file 8 years ago
Jake Morrison 00859a4ced Handle inability to read /proc for ansible_service_mgr. Fixes #18957 8 years ago
Adrian Likins 5cd7a08418 Check solaris 'smbios' is exists before running it
smbios could potentially be None here, possibly causing
the solaris 8/9 failures seen at #19282

Fixes #19282
8 years ago
Ryan S. Brown 5204024f35 `s3_sync` module: Add ANSIBLE_METADATA parameter 8 years ago
tedder be7a568b33 New module `s3_sync`: boto3-powered s3 synchronization
Syncs groups of files faster than the `s3` module and support content
type detection/overriding and globbing.
8 years ago
Fabio Alessandro Locati f1b5dde4cb Improve YAML examples - packaging/kibana_plugin.py (#19409) 8 years ago
Dag Wieers 2f90091f0a Add an important example for SSHd
Sudoers is a great example to show how you can prevent shutting yourself
out. But SSHd is at least as important to avoid syntax errors causing a
lot of grieve. So I think it deserves a spot in this list :-)
8 years ago
Fabio Alessandro Locati fb0779f657 Improve YAML examples - windows/win_regedit.py (#19400) 8 years ago
Fabio Alessandro Locati b6f2565d60 Improve YAML examples - windows/win_template.py (#19408) 8 years ago
Fabio Alessandro Locati beb6ed08cd Improve YAML examples - windows/win_owner.py (#19406) 8 years ago
Fabio Alessandro Locati 12205598c3 Improve YAML examples - windows/win_acl_inheritance.py (#19405) 8 years ago
Fabio Alessandro Locati 5a87f26658 Improve YAML examples - windows/win_get_url.py (#19404) 8 years ago
Fabio Alessandro Locati 5f8f1fa782 Improve YAML examples - windows/win_iis_webapppool.py (#19403) 8 years ago
Fabio Alessandro Locati 83d0f621da Improve YAML examples - windows/win_iis_webapplication.py (#19402) 8 years ago
Fabio Alessandro Locati f57418c2c1 Improve YAML examples - windows/win_user.py (#19401) 8 years ago
Fabio Alessandro Locati 9b3d9e1780 Improve YAML examples - windows/win_file_version.py (#19399) 8 years ago