diff options
-rw-r--r-- | playbooks/common/openshift-node/config.yml | 20 | ||||
-rw-r--r-- | roles/openshift_master/handlers/main.yml | 14 |
2 files changed, 23 insertions, 11 deletions
diff --git a/playbooks/common/openshift-node/config.yml b/playbooks/common/openshift-node/config.yml index fbaf64300..336cbed5e 100644 --- a/playbooks/common/openshift-node/config.yml +++ b/playbooks/common/openshift-node/config.yml @@ -218,12 +218,20 @@ # Necessary because when you're on a node that's also a master the master will be # restarted after the node restarts docker and it will take up to 60 seconds for # systemd to start the master again - - name: Wait for master to become available before proceeding - wait_for: - host: "{{ hostvars[groups.oo_first_master.0].openshift.common.ip }}" - port: "{{ hostvars[groups.oo_first_master.0].openshift.master.api_port }}" - state: started - timeout: 180 + - name: Wait for master API to become available before proceeding + # Using curl here since the uri module requires python-httplib2 and + # wait_for port doesn't provide health information. + command: > + curl -k --head --silent {{ openshift.master.api_url }} + register: api_available_output + until: api_available_output.stdout.find("200 OK") != -1 + retries: 120 + delay: 1 + changed_when: false when: openshift.common.is_containerized | bool + - fail: + msg: > + Unable to contact master API at {{ openshift.master.api_url }} + when: openshift.common.is_containerized | bool and api_available_output.stdout.find("200 OK") == -1 roles: - openshift_manage_node diff --git a/roles/openshift_master/handlers/main.yml b/roles/openshift_master/handlers/main.yml index 523ba8ee4..6b9992eea 100644 --- a/roles/openshift_master/handlers/main.yml +++ b/roles/openshift_master/handlers/main.yml @@ -14,8 +14,12 @@ when: (openshift_master_ha | bool) and (not (master_controllers_service_status_changed | default(false) | bool)) and openshift.master.cluster_method == 'native' - name: Verify API Server - wait_for: - host: "{{ openshift.common.ip }}" - port: "{{ openshift.master.api_port }}" - state: started - timeout: 180 + # Using curl here since the uri module requires python-httplib2 and + # wait_for port doesn't provide health information. + command: > + curl -k --head --silent {{ openshift.master.api_url }} + register: api_available_output + until: api_available_output.stdout.find("200 OK") != -1 + retries: 120 + delay: 1 + changed_when: false |