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-адреса.
- См. provider для получения дополнительной информации о каждом поддерживаемом типе пакета.
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| arguments raw | Любые аргументы, необходимые установщику для установки или удаления пакета. Если пакет — MSI, не передавайте аргументы /qn, /log или /norestart. Используется только для поставщиков msi, msp, и registry. Может быть списком аргументов, и модуль будет экранировать аргументы по необходимости. Рекомендуется использовать строку при работе с MSI-пакетами из-за особых проблем с экранированием в msiexec. | |
| chdir path | Устанавливает указанный путь в качестве текущей рабочей директории перед установкой или удалением пакета. Используется только для поставщиков 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, вход в систему может завершиться неудачей. Этот параметр принудительно отправляет заголовок Basic аутентификации при первоначальном запросе. |
| 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 строка | Имя пользователя для аутентификации по прокси. | |
| state строка |
| Установка или удаление пакета. Модуль использует product_id для определения наличия или отсутствия пакета. Для всех поставщиков, кроме auto, path может использоваться для проверок идемпотентности, если это локально доступный путь к файловой системе.Псевдоним ensure устарел и будет удален в следующей крупной версии после 2022-07-01. псевдонимы: ensure |
| url_method строка | HTTP-метод запроса. | |
| url_password строка | Пароль для url_username. | |
| url_timeout целое число | По умолчанию: 30 | Указывает, как долго запрос может ожидать, прежде чем истечёт время ожидания (в секундах). Установите значение 0, чтобы указать бесконечное время ожидания. |
| url_username строка | Имя пользователя для аутентификации. | |
| 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 строка | Имя пользователя учетной записи с доступом к пакету, если он находится на сетевом ресурсе. Это необходимо только в том случае, если транспорт 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и продукт — это исполняемый файл, путь может отличаться от пути, который использовался для первоначальной установки пакета. Если путь не задан, используемый путь будет соответствовать пути, заданному в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 строка | ошибка установки/удаления для пакетов MSI или MSP | Содержимое журнала MSI или MSP. Пример: Установка завершена успешно |
| rc целое число | изменение произошло | Код возврата процесса пакета. |
| reboot_required boolean | всегда | Необходимо ли перезагрузка для завершения установки пакета. Устанавливается в true, если код возврата исполняемого файла равен 3010. Пример: True |
| stderr строка | ошибка при установке или удалении | Поток stderr процесса пакета. Пример: Не удалось установить программу |
| stdout строка | ошибка при установке или удалении | Поток stdout процесса пакета. Пример: Установка программы |
Авторы
- Trond Hindenes (@trondhindenes)
- Jordan Borean (@jborean93)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/ansible/windows/win_package_module.html