--- - name: Filter list of nodes to be upgraded if necessary hosts: oo_first_master tasks: - name: Retrieve list of openshift nodes matching upgrade label command: > {{ openshift.common.client_binary }} get nodes --config={{ openshift.common.config_base }}/master/admin.kubeconfig --selector={{ openshift_upgrade_nodes_label }} -o jsonpath='{.items[*].metadata.name}' register: matching_nodes changed_when: false when: openshift_upgrade_nodes_label is defined - set_fact: nodes_to_upgrade: "{{ matching_nodes.stdout.split(' ') }}" when: openshift_upgrade_nodes_label is defined # We got a list of nodes with the label, now we need to match these with inventory hosts # using their openshift.common.hostname fact. - name: Map labelled nodes to inventory hosts add_host: name: "{{ item }}" groups: temp_nodes_to_upgrade ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" ansible_become: "{{ g_sudo | default(omit) }}" with_items: " {{ groups['oo_nodes_to_config'] }}" when: openshift_upgrade_nodes_label is defined and hostvars[item].openshift.common.hostname in nodes_to_upgrade changed_when: false # Build up the oo_nodes_to_upgrade group, use the list filtered by label if # present, otherwise hit all nodes: - name: Evaluate oo_nodes_to_upgrade add_host: name: "{{ item }}" groups: oo_nodes_to_upgrade ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" ansible_become: "{{ g_sudo | default(omit) }}" with_items: "{{ groups['temp_nodes_to_upgrade'] | default(groups['oo_nodes_to_config']) }}"