Невозможно удалить пакет, используя модуль deb в Ansible - PullRequest
1 голос
/ 29 марта 2019

Сегодня у меня возникла проблема с использованием ansible и попыткой удалить пакет debian. Пакет приходит не из репозитория, а напрямую из файла .deb, поэтому в Ansible я определил задачу установки:

- name: install nomachine
  apt:
    deb: /root/{{ nomachine_package }}

Что на самом деле работает, пакет устанавливается в S.O.

Но когда пришло время удалить его:

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

Ужас:

fatal: [SERVER]: FAILED! => {"changed": false, "failed": true, "msg": "deb only supports state=present"}

Я не разработчик, но посмотрите на apt.py и кажется, что процесс удаления доступен только для пакетов, установленных через репозиторий? (похоже, что он проверяет кеш apt).

Итак, в качестве обходного пути для этого процесса удаления я делаю:

- name: uninstall nomachine
  shell: dpkg -r nomachine-enterprise-terminal-server

Я использую ANSIBLE 2.3.0.0

Возможно, я неправильно использую этот инструмент или его функции недоступны.

Спасибо за любую помощь, которую вы можете оказать в этом.

H.

РЕДАКТИРОВАТЬ: Я думаю, что я делаю это хорошо, потому что следуя пример ANSIBLE :

- name: Remove "foo" package
  apt:
    name: foo
    state: absent

А для тех, кто интересуется, почему «- имя» не определено, это потому, что задача является обработчиком.

1 Ответ

1 голос
/ 29 марта 2019

Я глупый мальчик. после просмотра документации, как было предложено в моей недавней статье «newbug» на github, синтаксис для удаления пакетов различается, небольшая разница в использовании для одного и того же модуля (и в вопросе, на который я уже ответил сам):

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

# RIGHT
- name: Remove "foo" package
  apt:
    name: foo
    state: absent

deb -> name !! Просто для удаления ... для установки пакетов это все еще "deb".

Facepalm сегодня, опыт завтра.

...