如何使用Ansible卸载Chocolatey包?

时间:2016-02-15 11:08:53

标签: powershell ansible chocolatey

我编写了一个简单的手册来从运行windows10的虚拟机(VM)卸载firefox。我是ansible / chocolatey的新手,所以这里是代码:

- name: Test win_chocolatey module
  hosts: win1
  tasks:
    - name: Uninstall firefox
      win_chocolatey:
        name: firefox
        state: absent

在我的机器上执行此代码之后,在Windows VM上安装的巧克力软件包中不再出现firefox。但是仍然安装了firefox,它在Windows VM上运行正常。

我查找了卸载命令的ansible文档,我找到了一个注释:

“....只有当软件包维护者提供了mockyUninstall.ps1脚本时,choco uninstall才会从系统中删除软件包。”

所以,我修改了我之前的剧本,以便包含我下载的powershell脚本(https://github.com/Iristyle/ChocolateyPackages/blob/master/HipChat/tools/chocolateyUninstall.ps1):

- name: Test win_chocolatey module
  hosts: win1
  tasks:
    - name: Run PS script
      script: /home/ansible_example/chocolateyUninstall.ps1
    - name: Uninstall firefox
      win_chocolatey:
        name: firefox
        state: absent

我的Windows VM仍然没有使用firefox。 我使用的是ansible 2.0.0.2,chocolatey 0.9.9.11

有任何帮助吗?谢谢

1 个答案:

答案 0 :(得分:2)

Chocolatey.org上的每个软件包都需要它自己的chocolateyUninstall.ps1文件。您无法使用其他软件包的chocolateyUninstall.ps1文件,并希望它能够卸载另一个软件包,而这根本不是它的工作原理。

正如您所看到的here,Chocolatey.org上的Firefox软件包确实没有卸载文件,因此,ansible无法调用它。

你可能想要尝试的是使用" new" Chocolatey中提供的自动卸载功能。您可以使用以下方法找到有关此内容的更多信息:

choco feature -h

启用该功能后,再次安装Firefox,然后尝试卸载它,看看是否有所需的结果。

此外,在等式中没有ansible可能值得测试。用Chocolatey直接测试它,确保它有效,然后加入ansible。