ansible.windows.win_package – Установка/удаление установочного пакета
Примечание
Этот плагин входит в состав коллекции ansible.windows (версия 1.3.0).
Для его установки используйте: ansible-galaxy collection install ansible.windows.
Чтобы использовать его в плейбуке, укажите: ansible.windows.win_package.
Описание
- Устанавливает или удаляет программные пакеты для Windows.
- Поддерживает
.exe,.msi,.msp,.appx,.appxbundle,.msix, и.msixbundle. - Эти пакеты могут быть получены из локальной файловой системы, сетевого ресурса или URL.
- См. поставщик для получения дополнительной информации о каждом типе поддерживаемых пакетов.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| arguments сырые | Любые аргументы, необходимые установщику для установки или удаления пакета. Если пакет — MSI, не предоставляйте аргументы /qn, /log или /norestart. Это используется только для поставщиков msi, msp, и registry. Может быть списком аргументов, и модуль будет экранировать аргументы по мере необходимости. Рекомендуется использовать строку при работе с MSI-пакетами из-за особых проблем с экранированием с msiexec. | |
| chdir путь | Установите указанный путь как текущую рабочую директорию перед установкой или удалением пакета. Это используется только для поставщиков msi, msp, и registry. | |
| client_cert строка | Путь к клиенту сертификату (.pfx), используемому для аутентификации X509. Этот путь может быть путём к pfx в файловой системе или путём к сертификату PowerShell Cert:\CurrentUser\My\<thumbprint>. Подключение WinRM должно быть аутентифицировано с помощью CredSSP или become, если файл сертификата не защищён паролем.Другие типы аутентификации могут устанавливать client_cert_password, когда сертификат защищён паролем. | |
| client_cert_password строка | Пароль для client_cert, если сертификат защищён паролем. | |
| creates_path путь | Проверит существование указанного пути и использует результат для определения, установлен ли пакет. Можно использовать совместно с product_id и другими creates_*. | |
| creates_service строка | Проверит существование указанной службы и использует результат для определения, установлен ли пакет. Можно использовать совместно с product_id и другими creates_*. | |
| creates_version строка | Проверит свойство версии файла по адресу creates_path и использует результат для определения, установлен ли пакет.creates_path ДОЛЖЕН быть установлен и представляет собой файл.Можно использовать совместно с product_id и другими creates_*. | |
| expected_return_code список / элементы=целое | Значение по умолчанию: [0, 3010] | Один или несколько кодов возврата из установки пакета, указывающие на успех. Коды возврата читаются как целые числа со знаком. Любые значения, большие 2147483647, должны быть представлены как эквиваленты со знаком, например, 4294967295 — -1. Для преобразования беззнакового числа в эквивалент со знаком можно выполнить команду "[Int32]("0x{0:X}" -f ([UInt32]3221225477))". Код возврата 3010 обычно означает, что требуется перезагрузка; значение reboot_required устанавливается, если код возврата 3010. Это используется только для поставщиков msi, msp, и registry. |
| follow_redirects строка |
| Следует ли модулю следовать перенаправлениям. all будет следовать всем перенаправлениям.none не будет следовать ни одному перенаправлению.safe будет следовать только «безопасным» перенаправлениям, где «безопасный» означает, что клиент выполняет только GET или HEAD на URI, на который он перенаправляется.При следовании перенаправленному URL-адресу заголовок Authorization и любые установленные учетные данные будут удалены и не перенаправлены. |
| force_basic_auth логическое |
| По умолчанию заголовок аутентификации отправляется только тогда, когда веб-сервис отвечает на первоначальный запрос со статусом 401. Поскольку некоторые службы базовой аутентификации не отправляют 401 должным образом, вход в систему может завершиться ошибкой. Этот параметр принудительно отправляет заголовок базовой аутентификации при первоначальном запросе. |
| headers словарь | Дополнительные заголовки для установки на запрос. Это должен быть словарь, где ключ — имя заголовка, а значение — значение для этого заголовка. | |
| http_agent строка | Значение по умолчанию: "ansible-httpget" | Заголовок для идентификации, обычно отображается в журналах веб-сервера. Это устанавливается в заголовок User-Agent в HTTP-запросе. |
| log_path путь | Указывает путь к файлу журнала, который сохраняется после установки или удаления пакета. Это используется только для поставщиков msi или msp. При отсутствии используется временный файл журнала для этих поставщиков. Это допустимо только для MSI-файлов; используйте arguments для поставщика registry. | |
| maximum_redirection целое число | Значение по умолчанию: 50 | Укажите, сколько раз модуль будет перенаправлять соединение на альтернативный URI, прежде чем соединение завершится ошибкой. Если установлено 0 или follow_redirects установлено на none, или safe при отсутствии GET или HEAD, это предотвращает все перенаправления. |
| password строка | Пароль для user_name, должен быть установлен, когда user_name.Этот параметр устарел в пользу использования become; см. примеры для получения дополнительной информации. Будет удалён в основной версии после 2022-07-01.псевдонимы: user_password | |
| path строка | Расположение пакета для установки или удаления. Этот пакет может находиться в локальной файловой системе, на сетевом ресурсе или по URL. Если state=present, product_id не установлено, а путь является URL-адресом, этот файл всегда будет загружен во временную директорию для проверки идемпотентности, в противном случае файл будет загружен только в том случае, если пакет не был установлен на основе проверок product_id. Если state=present, то это значение ДОЛЖНО быть установлено.Если state=absent, то это значение не нужно устанавливать, если product_id. | |
| product_id строка | Идентификатор продукта установленного пакета. Используется для проверки, установлен ли продукт, и получения информации об удалении, если state=absent.Для MSI-пакетов это ProductCode (GUID) пакета. Его можно найти в тех же реестровых путях, что и поставщика registry. Для пакетов msp это PatchCode (GUID) пакета, который можно найти в свойствах файла Details -> Revision number. Для пакетов msix это Name или PackageFullName пакета, найденного в командлете Get-AppxPackage. Для пакетов реестра (exe) это имя реестрового ключа в реестровых путях, указанных в provider. Это значение игнорируется, если path задан как путь к локальному доступному файлу, а пакет не является exe. Это ДОЛЖНО быть установлено, если пакет — exe, или путь — URL-адрес или сетевой ресурс, и не используется делегирование учетных данных. Вместо этого можно использовать параметры creates_*, но это не рекомендуется.Псевдоним productid устарел и будет удален в основной версии после 2022-07-01.псевдонимы: productid | |
| provider строка |
| Установите поставщика пакета для поиска пакета. Поставщик auto выберет правильного поставщика, если path, иначе сканирует всех остальных поставщиков на основе product_id.Поставщик msi сканирует установленные MSI-пакеты на уровне всей машины и в контексте текущего пользователя на основе ProductCode MSI.Поставщик msix используется для установки пакетов .appx, .msix, .appxbundle, или .msixbundle. Эти пакеты устанавливаются или удаляются только в контексте текущего пользователя. Хост должен быть настроен на разрешение загрузки сторонних приложений или в режиме разработчика. См. примеры для активации. Если пакет уже установлен, но path указывает на обновлённый пакет, он будет установлен поверх существующего.Поставщик msp сканирует все установленные исправления MSP на уровне всей машины и в контексте текущего пользователя на основе PatchCode MSP. Исправление msp будет применено или удалено ко всем продуктам msi, к которым оно применяется, и установлено. Если исправление устарело или заменено, никаких действий не будет выполнено.Поставщик registry используется для традиционных установщиков exe и использует следующие реестровые пути для определения, был ли продукт установлен: HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall, HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall, HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall, и HKCU:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall. |
| proxy_password строка | Пароль для proxy_username. | |
| proxy_url строка | Явное использование прокси для запроса. По умолчанию запрос использует прокси IE, если параметр use_proxy не установлен на no. |
| proxy_use_default_credential boolean |
| Использует учетные данные текущего пользователя при аутентификации с прокси-хостом, защищенным с помощью аутентификации NTLM, Kerberos, или Negotiate. Прокси, использующие аутентификацию Basic, по-прежнему потребуют явных учетных данных через параметры proxy_username и proxy_password.Модуль получит доступ к учетным данным пользователя только при использовании become с паролем, подключении к SSH с паролем или подключении к WinRM с помощью CredSSP или Kerberos with delegation. Если не используется become или другой метод аутентификации, указанный выше, учетные данные по умолчанию недоступны, и аутентификация по прокси не произойдет. |
| proxy_username string | Имя пользователя для аутентификации по прокси. | |
| state string |
| Установка или удаление пакета. Модуль использует product_id для определения установленного пакета. Для всех поставщиков, кроме auto, path может использоваться для проверки идемпотентности, если это локальный доступный путь к файловой системе.Псевдоним ensure устарел и будет удален в следующей основной версии после 2022-07-01. Псевдонимы: ensure |
| url_method string | Метод HTTP запроса. | |
| url_password string | Пароль для url_username. | |
| url_timeout integer | Значение по умолчанию: 30 | Указывает, сколько времени запрос может ожидать, прежде чем истечёт время ожидания (в секундах). Установите значение 0, чтобы указать бесконечное время ожидания. |
| url_username string | Имя пользователя для аутентификации. | |
| use_default_credential boolean |
| Использует учетные данные текущего пользователя при аутентификации с сервером, защищенным аутентификацией NTLM, Kerberos, или Negotiate. Сайты, использующие аутентификацию Basic, по-прежнему потребуют явных учетных данных через параметры url_username и url_password.Модуль получит доступ к учетным данным пользователя только при использовании become с паролем, подключении к SSH с паролем или подключении к WinRM с помощью CredSSP или Kerberos with delegation. Если не используется become или другой метод аутентификации, указанный выше, учетные данные по умолчанию недоступны и аутентификация не произойдет. |
| use_proxy boolean |
| Если no, прокси, определенный в IE для текущего пользователя, не будет использоваться. |
| username string | Имя пользователя учетной записи с доступом к пакету, если он находится на сетевом ресурсе. Это необходимо только в том случае, если транспорт WinRM использует метод аутентификации, не поддерживающий делегирование учетных данных, например, Basic или NTLM, или не используется become. Этот параметр устарел в пользу использования become, см. примеры для получения дополнительной информации. Будет удален в следующей основной версии после 2022-07-01. Псевдонимы: user_name | |
| validate_certs boolean |
| Если no, сертификаты SSL не будут проверены.Это следует использовать только на сайтах, контролируемых лично, использующих самозаверяющие сертификаты. |
| wait_for_children boolean добавлен в 1.3.0 ansible.windows |
| Модуль будет ждать завершения процесса, который он запускает, но любые процессы, запущенные в дочернем процессе, игнорируются. Установите значение yes, чтобы ждать завершения всех дочерних процессов перед возвратом модуля.Это полезно, если установщик/деинсталлятор — это просто оболочка, которая затем вызывает фактический установщик как свой собственный дочерний процесс. Когда этот параметр yes, модуль будет ждать завершения обоих процессов перед возвратом.Для большинства установщиков это не требуется, и установка значения yes может привести к тому, что модуль не вернётся, пока процесс, который он ждёт, не будет остановлен вручную.Требуется Windows Server 2012 или Windows 8 или более поздние версии. |
Примечания
Примечание
- Когда
state=absentи продукт — это исполняемый файл (exe), путь может отличаться от пути, используемого при первоначальной установке пакета. Если путь не задан, используемый путь будет установлен вQuietUninstallStringилиUninstallStringв реестре для данного product_id. - По умолчанию все установки и удаления MSI выполняются с аргументами
/log, /qn, /norestart. - Все проверки установки в
product_idиcreates_*суммируются; если одна из них завершается неудачно, программа считается отсутствующей.
См. также
См. также
- chocolatey.chocolatey.win_chocolatey
-
Официальная документация по модулю chocolatey.chocolatey.win_chocolatey.
- community.windows.win_hotfix
-
Официальная документация по модулю community.windows.win_hotfix.
- ansible.windows.win_updates
-
Официальная документация по модулю ansible.windows.win_updates.
- community.windows.win_inet_proxy
-
Официальная документация по модулю community.windows.win_inet_proxy.
Примеры
- name: Install the Visual C thingy
ansible.windows.win_package:
path: http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe
product_id: '{CF2BEA3C-26EA-32F8-AA9B-331F7E34BA97}'
arguments: /install /passive /norestart
- name: Install Visual C thingy with list of arguments instead of a string
ansible.windows.win_package:
path: http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe
product_id: '{CF2BEA3C-26EA-32F8-AA9B-331F7E34BA97}'
arguments:
- /install
- /passive
- /norestart
- name: Install Remote Desktop Connection Manager from msi with a permanent log
ansible.windows.win_package:
path: https://download.microsoft.com/download/A/F/0/AF0071F3-B198-4A35-AA90-C68D103BDCCF/rdcman.msi
product_id: '{0240359E-6A4C-4884-9E94-B397A02D893C}'
state: present
log_path: D:\logs\vcredist_x64-exe-{{lookup('pipe', 'date +%Y%m%dT%H%M%S')}}.log
- name: Uninstall Remote Desktop Connection Manager
ansible.windows.win_package:
product_id: '{0240359E-6A4C-4884-9E94-B397A02D893C}'
state: absent
- name: Install Remote Desktop Connection Manager locally omitting the product_id
ansible.windows.win_package:
path: C:\temp\rdcman.msi
state: present
- name: Uninstall Remote Desktop Connection Manager from local MSI omitting the product_id
ansible.windows.win_package:
path: C:\temp\rdcman.msi
state: absent
# 7-Zip exe doesn't use a guid for the Product ID
- name: Install 7zip from a network share with specific credentials
ansible.windows.win_package:
path: \\domain\programs\7z.exe
product_id: 7-Zip
arguments: /S
state: present
become: yes
become_method: runas
become_flags: logon_type=new_credential logon_flags=netcredentials_only
vars:
ansible_become_user: DOMAIN\User
ansible_become_password: Password
- name: Install 7zip and use a file version for the installation check
ansible.windows.win_package:
path: C:\temp\7z.exe
creates_path: C:\Program Files\7-Zip\7z.exe
creates_version: 16.04
state: present
- name: Uninstall 7zip from the exe
ansible.windows.win_package:
path: C:\Program Files\7-Zip\Uninstall.exe
product_id: 7-Zip
arguments: /S
state: absent
- name: Uninstall 7zip without specifying the path
ansible.windows.win_package:
product_id: 7-Zip
arguments: /S
state: absent
- name: Install application and override expected return codes
ansible.windows.win_package:
path: https://download.microsoft.com/download/1/6/7/167F0D79-9317-48AE-AEDB-17120579F8E2/NDP451-KB2858728-x86-x64-AllOS-ENU.exe
product_id: '{7DEBE4EB-6B40-3766-BB35-5CBBC385DA37}'
arguments: '/q /norestart'
state: present
expected_return_code: [0, 666, 3010]
- name: Install a .msp patch
ansible.windows.win_package:
path: C:\Patches\Product.msp
state: present
- name: Remove a .msp patch
ansible.windows.win_package:
product_id: '{AC76BA86-A440-FFFF-A440-0C13154E5D00}'
state: absent
- name: Enable installation of 3rd party MSIX packages
ansible.windows.win_regedit:
path: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock
name: AllowAllTrustedApps
data: 1
type: dword
state: present
- name: Install an MSIX package for the current user
ansible.windows.win_package:
path: C:\Installers\Calculator.msix # Can be .appx, .msixbundle, or .appxbundle
state: present
- name: Uninstall an MSIX package using the product_id
ansible.windows.win_package:
product_id: InputApp
state: absent
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| log string | ошибка установки/удаления для пакетов MSI или MSP | Содержимое журнала MSI или MSP. Пример: Установка завершена успешно |
| rc integer | изменения произошли | Код возврата процесса пакета. |
| reboot_required boolean | всегда | Требуется ли перезагрузка для завершения установки пакета. Устанавливается в значение true, если код возврата исполняемого файла равен 3010. Пример: True |
| stderr string | ошибка во время установки или удаления | Поток stderr процесса пакета. Пример: Не удалось установить программу |
| stdout string | ошибка во время установки или удаления | Поток stdout процесса пакета. Пример: Установка программы |
Авторы
- Trond Hindenes (@trondhindenes)
- Jordan Borean (@jborean93)
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/ansible/windows/win_package_module.html