mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-24 05:40:23 -07:00
Ensure that apt is always chosen on debian/ubuntu (#44413)
One can install alternate packages managers on debuntu machines. However, doing so doesn't mean you want to suddenly start using them. Add in a check similar to the fedora yum/dnf check that sets apt as the pkg_mgr if the ansible_os_family is Debian.
This commit is contained in:
parent
6d52afeed6
commit
27ac2fc67c
3 changed files with 32 additions and 0 deletions
4
changelogs/fragments/zypper-on-ubuntu.yaml
Normal file
4
changelogs/fragments/zypper-on-ubuntu.yaml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
bugfixes:
|
||||||
|
- Fixed an issue where ``ansible_facts.pkg_mgr`` would incorrectly set
|
||||||
|
to ``zypper`` on Debian/Ubuntu systems that happened to have the
|
||||||
|
command installed.
|
|
@ -122,6 +122,10 @@ class PkgMgrFactCollector(BaseFactCollector):
|
||||||
if collected_facts['ansible_os_family'] == "RedHat":
|
if collected_facts['ansible_os_family'] == "RedHat":
|
||||||
if pkg_mgr_name not in ('yum', 'dnf'):
|
if pkg_mgr_name not in ('yum', 'dnf'):
|
||||||
pkg_mgr_name = self._check_rh_versions(pkg_mgr_name, collected_facts)
|
pkg_mgr_name = self._check_rh_versions(pkg_mgr_name, collected_facts)
|
||||||
|
elif collected_facts['ansible_os_family'] == 'Debian' and pkg_mgr_name != 'apt':
|
||||||
|
# It's possible to install yum, dnf, zypper, rpm, etc inside of
|
||||||
|
# Debian. Doing so does not mean the system wants to use them.
|
||||||
|
pkg_mgr_name = 'apt'
|
||||||
elif collected_facts['ansible_os_family'] == 'Altlinux':
|
elif collected_facts['ansible_os_family'] == 'Altlinux':
|
||||||
if pkg_mgr_name == 'apt':
|
if pkg_mgr_name == 'apt':
|
||||||
pkg_mgr_name = 'apt_rpm'
|
pkg_mgr_name = 'apt_rpm'
|
||||||
|
|
|
@ -46,6 +46,30 @@
|
||||||
setup:
|
setup:
|
||||||
when: ansible_distribution == "Fedora"
|
when: ansible_distribution == "Fedora"
|
||||||
|
|
||||||
|
# Verify correct default package manager for Debian/Ubuntu when Zypper installed
|
||||||
|
- block:
|
||||||
|
# Just make an executable file called "zypper" - installing zypper itself
|
||||||
|
# consistently is hard - and we're not going to use it
|
||||||
|
- name: install fake zypper
|
||||||
|
file:
|
||||||
|
state: touch
|
||||||
|
mode: 0755
|
||||||
|
path: /usr/bin/zypper
|
||||||
|
- name: gather facts again
|
||||||
|
setup:
|
||||||
|
- name: validate output
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- 'ansible_pkg_mgr == "apt"'
|
||||||
|
always:
|
||||||
|
- name: remove fake zypper
|
||||||
|
file:
|
||||||
|
path: /usr/bin/zypper
|
||||||
|
state: absent
|
||||||
|
- name: gather facts again
|
||||||
|
setup:
|
||||||
|
when: ansible_os_family == "Debian"
|
||||||
|
|
||||||
##
|
##
|
||||||
## package
|
## package
|
||||||
##
|
##
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue