changed_when: false
no_log: true
-- name: Set rhsm_registered
+- name: Set rhsm_registered if we're already registered
set_fact:
rhsm_registered: "{{ subscription.rc == 0 }}"
retries: 5
delay: 10
-- name: Get list of enabled repos
- shell: sudo subscription-manager repos --list | grep -B4 'Enabled:.*1' | grep 'Repo ID:' | sed -e 's/Repo ID:\s*\(.*\)/\1/' | sort
+- name: Set rhsm_registered if we just registered
+ set_fact:
+ rhsm_registered: true
+ when: entitled|success
+
+# Output of this command is, for example:
+# 7.1
+# 7.2
+# 7Server
+- name: List CDN releases available to system
+ shell: "subscription-manager release --list | grep -E '[0-9]'"
+ register: rhsm_release_list
+ changed_when: false
+
+# We don't need to be registered to CDN since there's no packages available
+# for this Beta/Alpha/RC installation
+- name: Unregister Beta/Alpha/RC system with subscription-manager
+ command: subscription-manager unregister
+ when: ansible_distribution_version not in rhsm_release_list.stdout_lines
+ register: unregistered_beta_distro
+
+# Setting rhsm_registered back to false allows the rest of the playbook
+# (except beta_repos.yml) to be skipped
+- name: Set rhsm_registered to false if Beta/Alpha/RC release
+ set_fact:
+ rhsm_registered: false
+ when: not unregistered_beta_distro|skipped
+
+- name: Run beta_repos.yml playbook for Beta/Alpha/RC release
+ include: beta_repos.yml
+ when: ansible_distribution_version not in rhsm_release_list.stdout_lines
+
+- name: Get list of enabled RHSM repos
+ shell: subscription-manager repos --list | grep -B4 'Enabled:.*1' | grep 'Repo ID:' | sed -e 's/Repo ID:\s*\(.*\)/\1/' | sort
register: repo_list_cmd
- # This only needs to happen if we are not newly-subscribed
when: rhsm_registered == true
changed_when: false
repo_list: "{{ repo_list_cmd.stdout.split('\n') }}"
when: repo_list_cmd is defined and not repo_list_cmd|skipped
-- name: Set replace_repos if entitlements are missing
+- name: Set replace_repos false if entitlements are missing or if we unregistered
set_fact:
replace_repos: false
- when: have_entitlements == false
+ when: have_entitlements == false or unregistered_beta_distro|changed
-- name: Set replace_repos if rhsm_repos differs from repo_list
+- name: Set replace_repos true if rhsm_repos differs from repo_list
set_fact:
replace_repos: "{{ repo_list|sort != rhsm_repos|sort }}"
when: repo_list is defined
-- name: Set replace_repos if newly-subscribed
+- name: Set replace_repos true if newly-subscribed
set_fact:
replace_repos: true
- when: entitled|changed and entitled.rc == 0
+ when: rhsm_registered == true and
+ (entitled|changed and entitled.rc == 0)
- name: Disable all rhsm repos
command: subscription-manager repos --disable '*'
- when: replace_repos|bool == true
+ when: rhsm_registered == true and
+ replace_repos|bool == true
# This produces an absurd amount of useless output
no_log: true
- name: Enable necessary rhsm repos
command: subscription-manager repos --enable {{ item }}
with_items: "{{ rhsm_repos }}"
- when: replace_repos
+ when: rhsm_registered == true and
+ replace_repos|bool == true
- name: Remove old apt-mirror repository definition.
file: