mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-23 13:20:23 -07:00
* Add --installroot to YUM and DNF modules, issue #11310 This continues ansible-modules-core#1558, and ansible-modules-core#1669 Allow specifying installroot for the yum and dnf modules to install and remove packages in a location other than /. * Remove empty aliases * Simpler installroot set default logic
This commit is contained in:
parent
d424a0468a
commit
1fdcda0996
8 changed files with 265 additions and 43 deletions
|
@ -19,4 +19,14 @@
|
|||
# Note: We install the yum package onto Fedora so that this will work on dnf systems
|
||||
# We want to test that for people who don't want to upgrade their systems.
|
||||
- include: 'yum.yml'
|
||||
when: ansible_distribution in ['RedHat', 'CentOS', 'ScientificLinux', 'Fedora'] and ansible_python.version.major == 2
|
||||
when: ansible_distribution in ['RedHat', 'CentOS', 'ScientificLinux', 'Fedora'] and
|
||||
ansible_python.version.major == 2
|
||||
|
||||
# We can't run yum --installroot tests on dnf systems. Dnf systems revert to
|
||||
# yum-deprecated, and yum-deprecated refuses to run if yum.conf exists
|
||||
# so we cannot configure yum-deprecated correctly in an empty /tmp/fake.root/
|
||||
# It will always run with $releasever unset
|
||||
- include: 'yuminstallroot.yml'
|
||||
when: (ansible_distribution in ['RedHat', 'CentOS', 'ScientificLinux'] or
|
||||
(ansible_distribution in ['Fedora'] and ansible_distribution_major_version < 23)) and
|
||||
ansible_python.version.major == 2
|
||||
|
|
|
@ -197,3 +197,35 @@
|
|||
assert:
|
||||
that:
|
||||
- non_existent_rpm|failed
|
||||
|
||||
# Install in installroot='/'
|
||||
- name: install sos
|
||||
yum: name=sos state=present installroot='/'
|
||||
register: yum_result
|
||||
|
||||
- name: check sos with rpm
|
||||
shell: rpm -q sos --root=/
|
||||
failed_when: False
|
||||
register: rpm_result
|
||||
|
||||
- debug: var=yum_result
|
||||
- debug: var=rpm_result
|
||||
|
||||
- name: verify installation of sos
|
||||
assert:
|
||||
that:
|
||||
- "yum_result.rc == 0"
|
||||
- "yum_result.changed"
|
||||
- "rpm_result.rc == 0"
|
||||
|
||||
- name: verify yum module outputs
|
||||
assert:
|
||||
that:
|
||||
- "'changed' in yum_result"
|
||||
- "'msg' in yum_result"
|
||||
- "'rc' in yum_result"
|
||||
- "'results' in yum_result"
|
||||
|
||||
- name: uninstall sos
|
||||
yum: name=sos installroot='/'
|
||||
register: yum_result
|
||||
|
|
60
test/integration/targets/yum/tasks/yuminstallroot.yml
Normal file
60
test/integration/targets/yum/tasks/yuminstallroot.yml
Normal file
|
@ -0,0 +1,60 @@
|
|||
# make a installroot
|
||||
- name: Create installroot
|
||||
local_action:
|
||||
module: command mktemp -d "{{ lookup('env', 'TMPDIR') | default('/tmp', true) }}/ansible.test.XXXXXX"
|
||||
register: yumroot
|
||||
|
||||
#- name: Populate directory
|
||||
# file:
|
||||
# path: "/{{ yumroot.stdout }}/etc/"
|
||||
# state: directory
|
||||
# mode: 0755
|
||||
#
|
||||
#- name: Populate directory2
|
||||
# copy:
|
||||
# content: "[main]\ndistropkgver={{ ansible_distribution_version }}\n"
|
||||
# dest: "/{{ yumroot.stdout }}/etc/yum.conf"
|
||||
|
||||
- name: Make a necessary directory
|
||||
file:
|
||||
path: "/{{ yumroot.stdout }}/etc/yum/vars/"
|
||||
state: directory
|
||||
mode: 0755
|
||||
|
||||
- name: Populate directory
|
||||
copy:
|
||||
content: "{{ ansible_lsb.major_release }}\n"
|
||||
dest: "/{{ yumroot.stdout }}/etc/yum/vars/releasever"
|
||||
|
||||
# This will drag in > 200 MB.
|
||||
- name: attempt installroot
|
||||
yum: name=sos installroot="/{{ yumroot.stdout }}/" disable_gpg_check=yes
|
||||
register: yum_result
|
||||
|
||||
- name: check sos with rpm in installroot
|
||||
shell: rpm -q sos --root="/{{ yumroot.stdout }}/"
|
||||
failed_when: False
|
||||
register: rpm_result
|
||||
|
||||
- debug: var=yum_result
|
||||
- debug: var=rpm_result
|
||||
|
||||
- name: verify installation of sos
|
||||
assert:
|
||||
that:
|
||||
- "yum_result.rc == 0"
|
||||
- "yum_result.changed"
|
||||
- "rpm_result.rc == 0"
|
||||
|
||||
- name: verify yum module outputs
|
||||
assert:
|
||||
that:
|
||||
- "'changed' in yum_result"
|
||||
- "'msg' in yum_result"
|
||||
- "'rc' in yum_result"
|
||||
- "'results' in yum_result"
|
||||
|
||||
- name: cleanup installroot
|
||||
file:
|
||||
path: "/{{ yumroot.stdout }}/"
|
||||
state: absent
|
Loading…
Add table
Add a link
Reference in a new issue