我有一个产品,我可以先安装它,然后更新它——这意味着为我的基础产品添加更多功能
我是第一次执行 MSI,然后进入添加\删除程序,选择产品时,您可以单击“更改”,安装向导将再次出现,允许您选择并安装产品中的附加功能
我为此任务创建了 2 个 ansible 角色和剧本第一个角色使用 ansible.windows.win_package 安装基础产品(参见下面的示例)
- name: Install Server.msi primary_appserver
ansible.windows.win_package:
path: C:\product.msi
log_path: C:\InstallProduct.log
arguments:
ADDLOCAL=DB,Agent
state: present
become: true
become_method: runas
vars:
ansible_become_user: "{{ ansible_user }}"
ansible_become_password: "{{ ansible_password }}"
when: "'primary_appservers' in group_names"
第二个角色再次使用 ansible.windows.win_package 和不同的 ADDLOCAL 参数(附加功能):
- name: Install Engine primary_appserver
ansible.windows.win_package:
path: C:\product.msi
log_path: C:\InstallEngine.log
arguments:
ADDLOCAL=Engine
state: present
become: true
become_method: runas
vars:
ansible_become_user: "{{ ansible_user }}"
ansible_become_password: "{{ ansible_password }}"
when: "'primary_appservers' in group_names"
第一个角色工作正常并执行 msi 文件,第二个角色 - 不是
这个问题很可能是
state: present
参数,因为在运行任务时包已经存在。相反,您可以使用creates_path
orcreates_service
参数来检查是否需要安装软件包。例子: