mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-24 19:31:26 -07:00
* use of multiple chocolatey package names It might be helpful to users, to clarify whether/when <name:> must specify a single package. Users who are familiar with chocolatey may be accustomed to installing multiple packages in a single invocation of 'choco install'. I believe win_chocolatey currently accepts multiple package names when state: is latest or present. For instance, this appears to work currently: - win_chocolatey: name: >- pscx windirstat state: latest However, when state: is absent, uninstall is not performed if multiple package are specified. The chocolate.log output suggests that chocolatey is treating the multiple packages as an 'exact' name of a single package name: 2017-08-10 19:04:04,087 2424 [DEBUG] - Command line: "C:\ProgramData\chocolatey\choco.exe" list --local-only --exact pscx windirstat 2017-08-10 19:04:04,087 2424 [DEBUG] - Received arguments: list --local-only --exact pscx windirstat I find the current behavior helpful in terms of accepting multiple package names, even if uninstall must be treated differently. It might be helpful to show an example of how multiple uninstalls can be handled by looping over them. - win_chocolatey: name: "{{ item }}" state: absent with_items: - pscx - windirstat * revise per Jordan Borean. remote colon (:) from text. revise formating. * Update win_chocolatey.py
167 lines
4.7 KiB
Python
167 lines
4.7 KiB
Python
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# (c) 2014, Trond Hindenes <trond@hindenes.com>
|
|
#
|
|
# This file is part of Ansible
|
|
#
|
|
# Ansible is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# Ansible is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# this is a windows documentation stub. actual code lives in the .ps1
|
|
# file of the same name
|
|
|
|
ANSIBLE_METADATA = {'metadata_version': '1.0',
|
|
'status': ['preview'],
|
|
'supported_by': 'curated'}
|
|
|
|
DOCUMENTATION = r'''
|
|
---
|
|
module: win_chocolatey
|
|
version_added: "1.9"
|
|
short_description: Installs packages using chocolatey
|
|
description:
|
|
- Installs packages using Chocolatey (U(http://chocolatey.org/)).
|
|
- If Chocolatey is missing from the system, the module will install it.
|
|
- List of packages can be found at U(http://chocolatey.org/packages).
|
|
options:
|
|
name:
|
|
description:
|
|
- Name of the package to be installed.
|
|
- This must be a single package name.
|
|
required: yes
|
|
state:
|
|
description:
|
|
- State of the package on the system.
|
|
choices:
|
|
- absent
|
|
- latest
|
|
- present
|
|
- reinstalled
|
|
default: present
|
|
force:
|
|
description:
|
|
- Forces install of the package (even if it already exists).
|
|
- Using C(force) will cause ansible to always report that a change was made.
|
|
type: bool
|
|
default: 'no'
|
|
upgrade:
|
|
description:
|
|
- If package is already installed it, try to upgrade to the latest version or to the specified version.
|
|
- As of Ansible v2.3 this is deprecated, set parameter C(state) to C(latest) for the same result.
|
|
type: bool
|
|
default: 'no'
|
|
version:
|
|
description:
|
|
- Specific version of the package to be installed.
|
|
- Ignored when C(state) is set to C(absent).
|
|
source:
|
|
description:
|
|
- Specify source rather than using default chocolatey repository.
|
|
install_args:
|
|
description:
|
|
- Arguments to pass to the native installer.
|
|
version_added: '2.1'
|
|
params:
|
|
description:
|
|
- Parameters to pass to the package
|
|
version_added: '2.1'
|
|
allow_empty_checksums:
|
|
description:
|
|
- Allow empty checksums to be used.
|
|
type: bool
|
|
default: 'no'
|
|
version_added: '2.2'
|
|
ignore_checksums:
|
|
description:
|
|
- Ignore checksums altogether.
|
|
type: bool
|
|
default: 'no'
|
|
version_added: '2.2'
|
|
ignore_dependencies:
|
|
description:
|
|
- Ignore dependencies, only install/upgrade the package itself.
|
|
type: bool
|
|
default: 'no'
|
|
version_added: '2.1'
|
|
timeout:
|
|
description:
|
|
- The time to allow chocolatey to finish before timing out.
|
|
default: 2700
|
|
version_added: '2.3'
|
|
aliases: [ execution_timeout ]
|
|
skip_scripts:
|
|
description:
|
|
- Do not run I(chocolateyInstall.ps1) or I(chocolateyUninstall.ps1) scripts.
|
|
type: bool
|
|
default: 'no'
|
|
version_added: '2.4'
|
|
notes:
|
|
- Provide the C(version) parameter value as a string (e.g. C('6.1')), otherwise it
|
|
is considered to be a floating-point number and depending on the locale could
|
|
become C(6,1), which will cause a failure.
|
|
author:
|
|
- Trond Hindenes (@trondhindenes)
|
|
- Peter Mounce (@petemounce)
|
|
- Pepe Barbe (@elventear)
|
|
- Adam Keech (@smadam813)
|
|
'''
|
|
|
|
# TODO:
|
|
# * Better parsing when a package has dependencies - currently fails
|
|
# * Time each item that is run
|
|
# * Support 'changed' with gems - would require shelling out to `gem list` first and parsing, kinda defeating the point of using chocolatey.
|
|
# * Version provided not as string might be translated to 6,6 depending on Locale (results in errors)
|
|
|
|
EXAMPLES = r'''
|
|
- name: Install git
|
|
win_chocolatey:
|
|
name: git
|
|
state: present
|
|
|
|
- name: Upgrade installed packages
|
|
win_chocolatey:
|
|
name: all
|
|
state: latest
|
|
|
|
- name: Install notepadplusplus version 6.6
|
|
win_chocolatey:
|
|
name: notepadplusplus.install
|
|
version: '6.6'
|
|
|
|
- name: Install git from specified repository
|
|
win_chocolatey:
|
|
name: git
|
|
source: https://someserver/api/v2/
|
|
|
|
- name: Uninstall git
|
|
win_chocolatey:
|
|
name: git
|
|
state: absent
|
|
|
|
- name: install multiple packages
|
|
win_chocolatey:
|
|
name: "{{ item }}"
|
|
state: absent
|
|
with_items:
|
|
- pscx
|
|
- windirstat
|
|
|
|
- name: uninstall multiple packages
|
|
win_chocolatey:
|
|
name: "{{ item }}"
|
|
state: absent
|
|
with_items:
|
|
- pscx
|
|
- windirstat
|
|
'''
|