Рейтинг:1

Почему второй запуск ansible.windows.win_package не работает?

флаг uz

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

Я делаю это, запуская MSI в первый раз, затем переходя в «Установка и удаление программ», и при выборе продукта вы можете нажать «Изменить», и мастер установки снова появится, что позволит вам выбрать и установить дополнительные функции в продукте.

Я создал 2 роли ansible и playbooks для этой миссии. Первая роль использует ansible.windows.win_package для установки базового продукта (см. пример ниже).

- имя: Установить Server.msi primary_appserver
  ansible.windows.win_package:
    путь: C:\product.msi
    путь_журнала: C:\InstallProduct.log
    аргументы:
     ADDLOCAL=БД,Агент
    состояние: присутствует
  стать истинным
  be_method: руны
  вары:
    ansible_become_user: "{{ ansible_user }}"
    ansible_become_password: "{{ ansible_password }}"
  когда: "'primary_appservers' в group_names"

Вторая роль снова использует ansible.windows.win_package с другими аргументами ADDLOCAL (дополнительные функции):

- имя: Install Engine primary_appserver
  ansible.windows.win_package:
    путь: C:\product.msi
    путь_журнала: C:\InstallEngine.log
    аргументы:
     ADDLOCAL=Двигатель
    состояние: присутствует
  стать истинным
  be_method: руны
  вары:
    ansible_become_user: "{{ ansible_user }}"
    ansible_become_password: "{{ ansible_password }}"
  когда: "'primary_appservers' в group_names"

Первая роль работает нормально и выполняет msi файл, вторая - нет Если я выполняю эти две задачи с помощью CLI, msiexec /i, все работает нормально. Итак, почему он не работает при выполнении ansible.windows.win_package?

флаг in
Я предполагаю, что это «состояние: настоящее». Он уже присутствует, поэтому нет необходимости запускать его снова. Есть ли какой-либо файл/папка или служба, которые вы можете проверить с помощью `creates_path` или `creates_service`, которые создаются только при втором запуске?
флаг uz
новый файл журнала установки можно считать?
флаг in
Возможно. Стоит попробовать.
флаг uz
Дополнительная возможность - необходимо добавить дополнительную директорию с названием "Движок" в папку продукта. Можем ли мы использовать его в ключе ```create_path```?
флаг in
Да, это цель `create_path`, чтобы проверить, существует ли он. Если нет, ваша задача должна быть выполнена.
флаг uz
@GeraldSchneider Я удалил ```state``` и добавил ключ ```creates_path``` - он работает как по волшебству. Спасибо
Рейтинг:1
флаг in

Эта проблема, скорее всего, состояние: присутствует параметр, так как пакет уже присутствует при запуске задачи. Вместо этого вы можете использовать create_path или же create_service params, чтобы проверить, нужен ли он для установки пакета.

Пример:

- имя: Install Engine primary_appserver
  ansible.windows.win_package:
    путь: C:\product.msi
    путь_журнала: C:\InstallEngine.log
    аргументы:
    ADDLOCAL=Двигатель
    create_path: "C:\Путь\к\продукту\папке"
  стать истинным
  be_method: руны
  вары:
    ansible_become_user: "{{ ansible_user }}"
    ansible_become_password: "{{ ansible_password }}"
  когда: "'primary_appservers' в group_names"

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.