You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/integration/targets/yum/tasks/yuminstallroot.yml

133 lines
4.1 KiB
YAML

# make a installroot
- name: Create installroot
command: mktemp -d "{{ remote_tmp_dir }}/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: get yum releasever
command: "{{ ansible_python_interpreter }} -c 'import yum; yb = yum.YumBase(); print(yb.conf.yumvar[\"releasever\"])'"
register: releasever
ignore_errors: yes
- name: Populate directory
copy:
content: "{{ releasever.stdout_lines[-1] }}\n"
dest: "/{{ yumroot.stdout }}/etc/yum/vars/releasever"
when: releasever is successful
# This will drag in > 200 MB.
- name: attempt installroot
yum: name=zlib installroot="{{ yumroot.stdout }}/" disable_gpg_check=yes
register: yum_result
- name: check sos with rpm in installroot
shell: rpm -q zlib --root="{{ yumroot.stdout }}/"
failed_when: False
register: 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
# Test for releasever working correctly
#
# Bugfix: https://github.com/ansible/ansible/issues/67050
#
# This test case is based on a reproducer originally reported on Reddit:
# https://www.reddit.com/r/ansible/comments/g2ps32/ansible_yum_module_throws_up_an_error_when/
#
# NOTE: For the Ansible upstream CI we can only run this for RHEL7 because the
# containerized runtimes in shippable don't allow the nested mounting of
# buildah container volumes.
- name: perform yuminstallroot in a buildah mount with releasever
when:
- ansible_facts["distribution_major_version"] == "7"
- ansible_facts["distribution"] == "RedHat"
block:
- name: install required packages for buildah test
yum:
state: present
name:
- buildah
- name: create buildah container from scratch
command: "buildah --name yum_installroot_releasever_test from scratch"
- name: mount the buildah container
command: "buildah mount yum_installroot_releasever_test"
register: buildah_mount
- name: figure out yum value of $releasever
shell: python -c 'import yum; yb = yum.YumBase(); print(yb.conf.yumvar["releasever"])' | tail -1
register: buildah_host_releasever
- name: test yum install of python using releasever
yum:
name: 'python'
state: present
installroot: "{{ buildah_mount.stdout }}"
releasever: "{{ buildah_host_releasever.stdout }}"
register: yum_result
- name: verify installation of python
assert:
that:
- "yum_result.rc == 0"
- "yum_result.changed"
- "rpm_result.rc == 0"
- name: remove python before another test
yum:
name: 'python'
state: absent
installroot: "{{ buildah_mount.stdout }}"
releasever: "{{ buildah_host_releasever.stdout }}"
- name: test yum install of python using releasever with latest
yum:
name: 'python'
state: latest
installroot: "{{ buildah_mount.stdout }}"
releasever: "{{ buildah_host_releasever.stdout }}"
register: yum_result
- name: verify installation of python
assert:
that:
- "yum_result.rc == 0"
- "yum_result.changed"
- "rpm_result.rc == 0"
always:
- name: remove buildah container
command: "buildah rm yum_installroot_releasever_test"
ignore_errors: yes
- name: remove buildah from CI system
yum:
state: absent
name:
- buildah