无法在 Ansible 中使用 deb 模块卸载软件包

Mig*_*tiz 3 package uninstallation deb ansible

今天我在使用 ansible 并尝试卸载 debian 软件包时遇到问题。该包不是来自存储库,而是直接来自 .deb 文件,因此,在 Ansible 中我定义了安装任务:

- name: install nomachine
  apt:
    deb: /root/{{ nomachine_package }}
Run Code Online (Sandbox Code Playgroud)

这实际上有效,软件包被安装在 SO 中

但是,当需要删除它时:

- name: uninstall nomachine
  apt:
    deb: nomachine-enterprise-terminal-server
    state: absent
Run Code Online (Sandbox Code Playgroud)

惊恐的事件:

fatal: [SERVER]: FAILED! => {"changed": false, "failed": true, "msg": "deb only supports state=present"}
Run Code Online (Sandbox Code Playgroud)

我不是开发人员,但看了一下apt.py,卸载过程似乎仅适用于通过存储库安装的软件包?(它似乎针对 apt 的缓存进行验证)。

因此,作为此卸载过程的解决方法,我正在执行以下操作:

- name: uninstall nomachine
  shell: dpkg -r nomachine-enterprise-terminal-server
Run Code Online (Sandbox Code Playgroud)

我正在使用 ansible 2.3.0.0

也许我没有正确使用该工具或者该功能不可用。

感谢您对此提供的任何帮助。

H。

编辑:我认为我做得很好,因为遵循ansible 的示例

- name: Remove "foo" package
  apt:
    name: foo
    state: absent
Run Code Online (Sandbox Code Playgroud)

对于那些想知道为什么没有定义“-name”的人来说,这是因为该任务是一个处理程序。

Mig*_*tiz 5

我是个傻孩子。在查看了我最近在 github 上的“newbug”中建议的文档后,卸载软件包的语法有所不同,同一模块的用法略有不同(并且在我已经回答过的问题中):

# WRONG
- name: uninstall nomachine
  apt:
    deb: nomachine-enterprise-terminal-server
    state: absent

# RIGHT
- name: Remove "foo" package
  apt:
    name: foo
    state: absent
Run Code Online (Sandbox Code Playgroud)

德布 --> 名字!!只是为了卸载...为了安装软件包,它仍然是“deb”。

今天捂脸,明天体验。