Spec-Zone.ru › Ansible

Модуль ansible.windows.win_package — устанавливает/удаляет устанавливаемый пакет

Примечание

Этот модуль входит в коллекцию ansible.windows (версия 3.6.1).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.

Чтобы установить её, используйте: ansible-galaxy collection install ansible.windows.

Чтобы использовать её в плейбуке, укажите: ansible.windows.win_package.

  • Краткое описание
  • Параметры
  • Примечания
  • См. также
  • Примеры
  • Возвращаемые значения

Краткое описание

  • Устанавливает или удаляет программные пакеты для Windows.
  • Поддерживает .exe, .msi, .msp, .appx, .appxbundle, .msix и .msixbundle.
  • Источником этих пакетов может быть локальная файловая система, сетевой файловый ресурс или URL.
  • Подробнее о каждом поддерживаемом типе пакетов см. в разделе provider.

Параметры

Параметр

Комментарии

arguments

any

Любые аргументы, необходимые установщику для установки или удаления пакета.

Если пакет имеет формат MSI, не указывайте аргументы /qn, /log или /norestart.

Используется только для поставщиков msi, msp и registry.

Можно указать список аргументов, и модуль экранирует их при необходимости. При работе с пакетами MSI рекомендуется использовать строку из-за особенностей экранирования в msiexec.

При использовании списка аргументов каждый его элемент считается отдельным аргументом. Поэтому, если аргумент списка содержит пробел, Ansible заключит его в кавычки, чтобы Windows воспринимала его как один аргумент. Если такое поведение нежелательно, разделите аргумент на два отдельных элемента списка. Подробнее см. в разделе примеров.

chdir

path

Перед установкой или удалением пакета задаёт указанный путь в качестве текущего рабочего каталога.

Используется только для поставщиков msi, msp и registry.

checksum

string

добавлено в ansible.windows 2.8.0

Если этому параметру передано значение checksum, перед запуском будет вычислена контрольная сумма пакета, чтобы проверить, что указанный путь или загруженный файл содержит ожидаемые данные.

checksum_algorithm

string

добавлено в ansible.windows 2.8.0

Указывает алгоритм хеширования, используемый при вычислении контрольной суммы указанного пути.

Варианты:

  • "md5"
  • "sha1" ← (по умолчанию)
  • "sha256"
  • "sha384"
  • "sha512"

client_cert

string

Путь к сертификату клиента (.pfx), используемому для аутентификации X509. Это может быть путь к pfx в файловой системе или путь к сертификату PowerShell Cert:\CurrentUser\My\<thumbprint>.

Подключение WinRM должно быть аутентифицировано с помощью CredSSP либо в задаче используется become, если файл сертификата не защищён паролем.

Для других типов аутентификации можно указать client_cert_password, если сертификат защищён паролем.

client_cert_password

string

Пароль для client_cert, если сертификат защищён паролем.

creates_path

path

Проверяет наличие указанного пути и использует результат, чтобы определить, установлен ли пакет.

Можно использовать вместе с product_id и другими creates_*.

creates_service

string

Проверяет наличие указанной службы и использует результат, чтобы определить, установлен ли пакет.

Можно использовать вместе с product_id и другими creates_*.

creates_version

string

Проверяет свойство версии файла по пути creates_path и использует результат, чтобы определить, установлен ли пакет.

Параметр creates_path ОБЯЗАТЕЛЬНО должен быть задан и указывать на файл.

Можно использовать вместе с product_id и другими creates_*.

expected_return_code

list / elements=integer

Один или несколько кодов возврата установки пакета, указывающих на успех.

Коды возврата считываются как знаковые целые числа. Любые значения больше 2147483647 необходимо представлять в виде соответствующего знакового числа, например 4294967295 — это -1.

Чтобы преобразовать беззнаковое число в соответствующее знаковое, можно выполнить “[Int32](“0x{0:X}” -f ([UInt32]3221225477))”.

Код возврата 3010 обычно означает, что требуется перезагрузка. Возвращаемое значение reboot_required устанавливается, если код возврата равен 3010.

Используется только для поставщиков msi, msp и registry.

По умолчанию: [0, 3010]

follow_redirects

string

Определяет, должен ли модуль следовать перенаправлениям.

all будет следовать всем перенаправлениям.

none не будет следовать ни одному перенаправлению.

safe будет следовать только «безопасным» перенаправлениям, где «безопасным» считается перенаправление, при котором клиент выполняет для URI, на который перенаправлен запрос, только GET или HEAD.

При переходе по перенаправленному URL заголовок Authorization и любые заданные учётные данные будут удалены и не передадутся дальше.

Варианты:

  • "all"
  • "none"
  • "safe" ← (по умолчанию)

force_basic_auth

boolean

По умолчанию заголовок аутентификации отправляется только после того, как веб-служба ответит на первоначальный запрос статусом 401. Поскольку некоторые службы с базовой аутентификацией некорректно возвращают статус 401, вход в систему завершается ошибкой.

Этот параметр принудительно отправляет заголовок базовой аутентификации с исходным запросом.

Варианты:

  • false ← (по умолчанию)
  • true

headers

dictionary

Дополнительные заголовки запроса.

Значение должно быть словарём, где ключ — имя заголовка, а значение — его содержимое.

http_agent

string

Идентификатор клиента, обычно отображаемый в журналах веб-сервера.

Указывается в заголовке User-Agent HTTP-запроса.

По умолчанию: "ansible-httpget"

log_path

path

Указывает путь к файлу журнала, который сохраняется после установки или удаления пакета.

Используется только для поставщиков msi или msp.

Если параметр не указан, для этих поставщиков вместо него используется временный файл журнала.

Допустимо только для файлов MSI; для поставщика registry используйте arguments.

maximum_redirection

integer

Указывает, сколько раз модуль может перенаправить соединение на альтернативный URI до его сбоя.

Если задано значение 0, для follow_redirects указано none или safe при отсутствии GET или HEAD, все перенаправления запрещаются.

По умолчанию: 50

path

string

Расположение пакета для установки или удаления.

Пакет может находиться в локальной файловой системе, в сетевом ресурсе или по URL.

Если задано state=present, не указан product_id, а значение пути является URL, файл всегда будет загружаться во временный каталог для проверки идемпотентности. В противном случае файл будет загружен только в том случае, если по результатам проверок product_id пакет не установлен.

Если задано state=present, это значение ОБЯЗАТЕЛЬНО должно быть указано.

Если задано state=absent и указан product_id, это значение не требуется.

Модуль не может определить идентификатор продукта, если задано state=absent и путь является URL.

product_id

string

Идентификатор установленного пакета.

Используется для проверки, установлен ли продукт, а также для получения сведений об удалении, если задано state=absent.

Для пакетов MSI это ProductCode (GUID) пакета. Его можно найти в тех же разделах реестра, что и у поставщика registry.

Для пакетов MSP это PatchCode (GUID) пакета, который можно найти в Details -> Revision number свойств файла.

Для пакетов MSIX это Name или PackageFullName пакета, найденный с помощью командлета Get-AppxPackage.

Для пакетов реестра (EXE) это имя раздела реестра в путях реестра, указанных в provider.

Это значение игнорируется, если path задан как доступный локальный путь к файлу, а пакет не является exe.

Это значение СЛЕДУЕТ задавать, если пакет является exe либо путь представляет собой URL или сетевой ресурс, а делегирование учётных данных не используется. Вместо него можно использовать параметры creates_*, однако это не рекомендуется.

provider

string

Задаёт поставщика пакетов, который будет использоваться при поиске пакета.

Поставщик 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.

Варианты:

  • "auto" ← (по умолчанию)
  • "msi"
  • "msix"
  • "msp"
  • "registry"

proxy_password

string

Пароль для proxy_username.

proxy_url

string

Явно заданный прокси-сервер для запроса.

По умолчанию запрос использует прокси-сервер, заданный в Internet Explorer, если для use_proxy не указано no.

proxy_use_default_credential

boolean

Использует учётные данные текущего пользователя при аутентификации на прокси-сервере, защищённом с помощью NTLM, Kerberos или Negotiate.

Для прокси-серверов, использующих аутентификацию Basic, по-прежнему требуются явные учётные данные, указанные в параметрах proxy_username и proxy_password.

Модуль получит доступ к учётным данным пользователя, только если используется become с паролем, SSH-подключение установлено с помощью пароля или подключение WinRM использует CredSSP либо Kerberos with delegation.

Если не используется become или применяется другой способ аутентификации, не указанный выше, учётные данные по умолчанию будут недоступны и аутентификация на прокси-сервере не произойдёт.

Варианты:

  • false ← (по умолчанию)
  • true

proxy_username

string

Имя пользователя для аутентификации на прокси-сервере.

state

string

Определяет, нужно установить или удалить пакет.

Модуль использует product_id, чтобы определить, установлен ли пакет.

Для всех поставщиков, кроме auto, параметр path можно использовать для проверки идемпотентности, если он указывает на доступный локальный путь в файловой системе.

Варианты:

  • "absent"
  • "present" ← (по умолчанию)

url_method

string

Метод HTTP-запроса.

url_password

string

Пароль для url_username.

url_timeout

integer

Указывает, как долго запрос может оставаться ожидающим ответа до истечения времени ожидания (в секундах).

Задайте значение 0, чтобы установить бесконечное время ожидания.

По умолчанию: 30

url_username

string

Имя пользователя для аутентификации.

use_default_credential

boolean

Использует учётные данные текущего пользователя при аутентификации на сервере, защищённом с помощью NTLM, Kerberos или Negotiate.

Для сайтов, использующих аутентификацию Basic, по-прежнему требуются явные учётные данные, заданные параметрами url_username и url_password.

Модуль получит доступ к учётным данным пользователя, только если используется become с паролем, SSH-подключение установлено с помощью пароля или подключение WinRM использует CredSSP либо Kerberos with delegation.

Если не используется become или применяется другой способ аутентификации, не указанный выше, учётные данные по умолчанию будут недоступны и аутентификация не произойдёт.

Варианты:

  • false ← (по умолчанию)
  • true

use_proxy

boolean

Если задано no, прокси-сервер, определённый в Internet Explorer для текущего пользователя, использоваться не будет.

Варианты:

  • false
  • true ← (по умолчанию)

validate_certs

boolean

Если задано no, SSL-сертификаты проверяться не будут.

Используйте этот параметр только на сайтах, которыми вы управляете лично и которые используют самоподписанные сертификаты.

Варианты:

  • false
  • true ← (по умолчанию)

verify_signature

boolean

добавлено в ansible.windows 3.4.0

Если задано True, перед запуском проверяется подпись Authenticode файла установщика.

Задача завершится с ошибкой, если возвращаемый Get-AuthenticodeSignature статус подписи не равен Valid.

Если задано False, проверка Authenticode не выполняется.

Варианты:

  • false ← (по умолчанию)
  • true

wait_for_children

boolean

добавлено в ansible.windows 1.3.0

Модуль ожидает завершения запущенного им процесса, но не ожидает завершения процессов, запущенных этим дочерним процессом.

Задайте значение true, чтобы модуль дождался завершения всех процессов-потомков, прежде чем завершить работу.

Это полезно, если программа установки или удаления является лишь оболочкой, которая запускает фактическую программу установки как дочерний процесс. Если для этого параметра задано значение true, модуль дождётся завершения обоих процессов.

Для большинства программ установки этот параметр не требуется. Значение true может привести к тому, что модуль не завершится, пока ожидаемый процесс не будет остановлен вручную.

Для использования требуется Windows Server 2012, Windows 8 или более поздняя версия.

Варианты:

  • false ← (по умолчанию)
  • true

Примечания

Примечание

  • Если задано state=absent, а продукт является EXE-файлом, путь может отличаться от использованного при первоначальной установке пакета. Если параметр path не задан, используется путь, указанный в реестре для этого product_id в разделе QuietUninstallString или UninstallString.
  • По умолчанию все установки и удаления MSI выполняются с аргументами /log, /qn, /norestart.
  • Все проверки установки в разделах product_id и creates_* объединяются: если хотя бы одна из них не пройдена, программа считается отсутствующей.

См. также

См. также

chocolatey.chocolatey.win_chocolatey

Управление пакетами с помощью chocolatey.

community.windows.win_hotfix

Официальная документация по модулю community.windows.win_hotfix.

ansible.windows.win_updates

Загрузка и установка обновлений Windows.

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 MSBuild thingy with arguments split to prevent quotes
  ansible.windows.win_package:
    path: https://download.visualstudio.microsoft.com/download/pr/9665567e-f580-4acd-85f2-bc94a1db745f/vs_BuildTools.exe
    product_id: '{D1437F51-786A-4F57-A99C-F8E94FBA1BD8}'
    arguments:
      - --norestart
      - --passive
      - --wait
      - --add
      - Microsoft.Net.Component.4.6.1.TargetingPack
      - --add
      - Microsoft.Net.Component.4.6.TargetingPack

- 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: Install Application from msi with multiple properties for installer
  ansible.windows.win_package:
    path: C:\temp\Application.msi
    state: present
    arguments: >-
      SERVICE=1
      DBNAME=ApplicationDB
      DBSERVER=.\SQLEXPRESS
      INSTALLDIR="C:\Program Files (x86)\App lication\App Server"

- name: Install Microsoft® SQL Server® 2019 Express (DPAPI example)
  ansible.windows.win_package:
    path: C:\temp\SQLEXPR_x64_ENU\SETUP.EXE
    product_id: Microsoft SQL Server SQL2019
    arguments:
      - SAPWD=VeryHardPassword
      - /ConfigurationFile=C:\temp\configuration.ini
  become: true
  vars:
    ansible_become_method: runas
    ansible_become_user: "{{ user }}"
    ansible_become_pass: "{{ password }}"

- 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

- 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: true
  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

- name: Install 7-Zip with Authenticode signature validation
  ansible.windows.win_package:
    path: C:\temp\7z.exe
    arguments: /S
    state: present
    verify_signature: true

Возвращаемые значения

Общие возвращаемые значения описаны здесь, ниже перечислены поля, уникальные для этого модуля:

Ключ

Описание

checksum

строка

добавлено в ansible.windows 2.8.0

Контрольная сумма пакета по алгоритму <algorithm>

Возвращается: задан параметр checksum_algorithm, пакет существует и не используется режим проверки

Пример: "6E642BB8DD5C2E027BF21DD923337CBB4214F827"

log

строка

Содержимое журнала MSI или MSP.

Возвращается: сбой установки или удаления пакетов MSI или MSP

Пример: "Installation completed successfully"

rc

целое число

Код возврата процесса пакета.

Возвращается: произошло изменение

Пример: 0

reboot_required

логическое значение

Требуется ли перезагрузка для завершения установки пакета. Значение равно true, если исполняемый файл вернул код 3010.

Возвращается: всегда

Пример: true

stderr

строка

Поток stderr процесса пакета.

Возвращается: сбой во время установки или удаления

Пример: "Failed to install program"

stdout

строка

Поток stdout процесса пакета.

Возвращается: сбой во время установки или удаления

Пример: "Installing program"

Авторы

  • Trond Hindenes (@trondhindenes)
  • Jordan Borean (@jborean93)
  • Aleksei Funtikov (@afuntikov)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/ansible/windows/win_package_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API