- name: Install epel repo which is missing on rhel-7 and is needed for rpmfluff yum: name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm when: - ansible_distribution in ['RedHat'] - name: Install rpmfluff and deps yum: name: "{{ item }}" with_items: - python-rpmfluff - createrepo_c - createrepo # used by el6 version of rpmfluff - name: Copy script for creating a repo copy: src: create-repo.py dest: /tmp/create-repo.py mode: 0755 - name: Create RPMs and put them into a repo shell: "python /tmp/create-repo.py {{ ansible_architecture }}" register: repo - set_fact: repodir: "{{ repo.stdout_lines[-1] }}" - name: Install the repo yum_repository: name: "fake-{{ ansible_architecture }}" description: "fake-{{ ansible_architecture }}" baseurl: "file://{{ repodir }}" gpgcheck: no - name: Create RPMs and put them into a repo (i686) shell: "python /tmp/create-repo.py i686" register: repo_i686 - set_fact: repodir_i686: "{{ repo_i686.stdout_lines[-1] }}" - name: Install the repo (i686) yum_repository: name: "fake-i686" description: "fake-i686" baseurl: "file://{{ repodir_i686 }}" gpgcheck: no - name: Create RPMs and put them into a repo (ppc64) shell: "python /tmp/create-repo.py ppc64" register: repo_ppc64 - set_fact: repodir_ppc64: "{{ repo_ppc64.stdout_lines[-1] }}" - name: Install the repo (ppc64) yum_repository: name: "fake-ppc64" description: "fake-ppc64" baseurl: "file://{{ repodir_ppc64 }}" gpgcheck: no # ============================================================================ - name: Install foo-1.0-1 yum: name: foo-1.0-1 state: present register: yum_result - name: Check foo with rpm shell: rpm -q foo register: rpm_result - name: Verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout.startswith('foo-1.0-1')" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" # ============================================================================ - name: Install foo-1.0-1 again yum: name: foo-1.0-1 state: present register: yum_result - name: Check foo with rpm shell: rpm -q foo register: rpm_result - name: Verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "not yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout.startswith('foo-1.0-1')" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" # ============================================================================ - name: Install foo-1:1.0-2 yum: name: "foo-1:1.0-2.{{ ansible_architecture }}" state: present register: yum_result - name: Check foo with rpm shell: rpm -q foo register: rpm_result - name: Verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout.startswith('foo-1.0-2')" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" - name: Remove foo yum: name: foo state: absent # ============================================================================ - name: Install 1:foo-1.0-2 yum: name: "1:foo-1.0-2.{{ ansible_architecture }}" state: present register: yum_result - name: Check foo with rpm shell: rpm -q foo register: rpm_result - name: Verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout.startswith('foo-1.0-2')" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" # ============================================================================ - name: Install foo-1.0-2 again yum: name: foo-1.0-2 state: present register: yum_result - name: Check foo with rpm shell: rpm -q foo register: rpm_result - name: Verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "not yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout.startswith('foo-1.0-2')" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" # ============================================================================ - name: Update to the latest foo yum: name: foo state: latest register: yum_result - name: Check foo with rpm shell: rpm -q foo register: rpm_result - name: Verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout.startswith('foo-1.1-1')" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" # ============================================================================ - name: Install foo-1.0-1 from a file (higher version is already installed) yum: name: "{{ repodir }}/foo-1.0-1.{{ ansible_architecture }}.rpm" state: present register: yum_result - name: Check foo with rpm shell: rpm -q foo register: rpm_result - name: Verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "not yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout.startswith('foo-1.1-1')" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" - name: Remove foo yum: name: foo state: absent # ============================================================================ - name: Install foo-1.0-1 from a file yum: name: "{{ repodir }}/foo-1.0-1.{{ ansible_architecture }}.rpm" state: present register: yum_result - name: Check foo with rpm shell: rpm -q foo register: rpm_result - name: Verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout.startswith('foo-1.0-1')" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" # ============================================================================ - name: Install foo-1.0-1 from a file again yum: name: "{{ repodir }}/foo-1.0-1.{{ ansible_architecture }}.rpm" state: present register: yum_result - name: Check foo with rpm shell: rpm -q foo register: rpm_result - name: Verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "not yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout.startswith('foo-1.0-1')" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" # ============================================================================ - name: Install foo-1.0-2 from a file yum: name: "{{ repodir }}/foo-1.0-2.{{ ansible_architecture }}.rpm" state: present register: yum_result - name: Check foo with rpm shell: rpm -q foo register: rpm_result - name: Verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout.startswith('foo-1.0-2')" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" # ============================================================================ - name: Install foo-1.0-2 from a file again yum: name: "{{ repodir }}/foo-1.0-2.{{ ansible_architecture }}.rpm" state: present register: yum_result - name: Check foo with rpm shell: rpm -q foo register: rpm_result - name: Verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "not yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout.startswith('foo-1.0-2')" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" # ============================================================================ - name: Try to downgrade foo without allow_downgrade being set yum: name: foo-1.0-1 state: present allow_downgrade: no register: yum_result - name: Check foo with rpm shell: rpm -q foo register: rpm_result - name: Verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "not yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout.startswith('foo-1.0-2')" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" # ============================================================================ - name: Downgrade foo yum: name: foo-1.0-1 state: present allow_downgrade: yes register: yum_result - name: Check foo with rpm shell: rpm -q foo register: rpm_result - name: Verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout.startswith('foo-1.0-1')" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" # ============================================================================ - name: Update foo with update_only set yum: name: foo state: latest update_only: yes register: yum_result - name: Check foo with rpm shell: rpm -q foo register: rpm_result - name: Verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout.startswith('foo-1.1-1')" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" - name: Remove foo yum: name: foo state: absent # ============================================================================ - name: Try to update foo which is not installed, update_only is set yum: name: foo state: latest update_only: yes register: yum_result ignore_errors: yes - name: Check foo with rpm shell: rpm -q foo register: rpm_result ignore_errors: yes - name: Verify installation assert: that: - "rpm_result.rc == 1" - "yum_result.rc == 0" - "not yum_result.changed" - "not yum_result|failed" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" # ============================================================================ - name: Try to install incompatible arch yum: name: "{{ repodir_ppc64 }}/foo-1.0-1.ppc64.rpm" state: present register: yum_result ignore_errors: yes - name: Check foo with rpm shell: rpm -q foo register: rpm_result ignore_errors: yes - name: Verify installation assert: that: - "rpm_result.rc == 1" - "yum_result.rc == 1" - "not yum_result.changed" - "yum_result|failed" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" # ============================================================================ - name: Make sure latest foo is installed yum: name: foo state: latest - name: Downgrade foo using rpm file yum: name: "{{ repodir }}/foo-1.0-1.{{ ansible_architecture }}.rpm" state: present allow_downgrade: yes register: yum_result - name: Check foo with rpm shell: rpm -q foo register: rpm_result - name: Verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout.startswith('foo-1.0-1')" - name: Verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" # ============================================================================ - block: - name: make sure foo is not installed yum: name: foo state: absent - name: install foo both archs yum: name: "{{ item }}" state: present with_items: - "{{ repodir }}/foo-1.1-1.x86_64.rpm" - "{{ repodir_i686 }}/foo-1.1-1.i686.rpm" - name: try to install lower version of foo from rpm file, without allow_downgrade, just one arch yum: name: "{{ repodir_i686 }}/foo-1.0-1.i686.rpm" state: present register: yum_result - name: check foo with rpm shell: rpm -q foo register: rpm_result - name: verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "not yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout_lines[0].startswith('foo-1.1-1')" - "rpm_result.stdout_lines[1].startswith('foo-1.1-1')" - name: verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" when: ansible_architecture == "x86_64" # ============================================================================ - block: - name: make sure foo is not installed yum: name: foo state: absent - name: install foo both archs yum: name: "{{ item }}" state: present with_items: - "{{ repodir }}/foo-1.0-1.x86_64.rpm" - "{{ repodir_i686 }}/foo-1.0-1.i686.rpm" - name: Update both arch in one task using rpm files yum: name: "{{ repodir }}/foo-1.1-1.x86_64.rpm,{{ repodir_i686 }}/foo-1.1-1.i686.rpm" state: present register: yum_result - name: check foo with rpm shell: rpm -q foo register: rpm_result - name: verify installation assert: that: - "rpm_result.rc == 0" - "yum_result.rc == 0" - "yum_result.changed" - "not yum_result|failed" - "rpm_result.stdout_lines[0].startswith('foo-1.1-1')" - "rpm_result.stdout_lines[1].startswith('foo-1.1-1')" - name: verify yum module outputs assert: that: - "'changed' in yum_result" - "'msg' in yum_result" - "'rc' in yum_result" - "'results' in yum_result" when: ansible_architecture == "x86_64" # ============================================================================