#ansible #package #uninstallation #deb
#ansible #пакет #удаление #deb
Вопрос:
Сегодня я столкнулся с проблемой при использовании 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
И для тех, кто задается вопросом, почему «- name» не определено, это потому, что задача является обработчиком.
Ответ №1:
Я глупый мальчик. после ознакомления с документацией, предложенной в моем недавнем «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 сегодня, опыт завтра.