diff --git a/installer/roles/kubernetes/tasks/kubernetes.yml b/installer/roles/kubernetes/tasks/kubernetes.yml index fe630a67ec..89370bed1f 100644 --- a/installer/roles/kubernetes/tasks/kubernetes.yml +++ b/installer/roles/kubernetes/tasks/kubernetes.yml @@ -12,3 +12,12 @@ set_fact: postgresql_service_name: "{{ kubernetes_deployment_name }}-postgresql" when: "pg_hostname is not defined or pg_hostname == ''" + +- name: Get Kubernetes API version + command: | + kubectl version -o json + register: kube_version + +- name: Extract server version from command output + set_fact: + kube_api_version: "{{ (kube_version.stdout | from_json).serverVersion.gitVersion[1:] }}" diff --git a/installer/roles/kubernetes/tasks/main.yml b/installer/roles/kubernetes/tasks/main.yml index f17256a140..b0b9e18123 100644 --- a/installer/roles/kubernetes/tasks/main.yml +++ b/installer/roles/kubernetes/tasks/main.yml @@ -185,45 +185,6 @@ include_tasks: ssl_cert_gen.yml when: "rabbitmq_use_ssl|default(False)|bool" -- name: Get Kubernetes Config - command: | - {{ kubectl_or_oc }} config view -o json - register: kube_config_cmd - no_log: true - -- name: Convert kube config to dictionary - set_fact: - kube_config: "{{ kube_config_cmd.stdout | from_json }}" - no_log: true - -- name: Extract current context from kube config - set_fact: - current_kube_context: "{{ kube_config['current-context'] }}" - -- name: Find cluster for current context - set_fact: - kube_cluster: | - {{ (kube_config.contexts | - selectattr("name", "equalto", current_kube_context) | - list)[0].context.cluster }} - -- name: Find server for current context - set_fact: - kube_server: | - {{ (kube_config.clusters | - selectattr("name", "equalto", kube_cluster|trim) | - list)[0].cluster.server }} - -- name: Get kube version from api server - uri: - url: "{{ kube_server | trim }}/version" - validate_certs: false - register: kube_version - -- name: Extract server version from command output - set_fact: - kube_api_version: "{{ kube_version.json.gitVersion[1:] }}" - - name: Determine StatefulSet api version set_fact: kubernetes_statefulset_api_version: "{{ 'apps/v1' if kube_api_version is version('1.9', '>=') else 'apps/v1beta1' }}" diff --git a/installer/roles/kubernetes/tasks/openshift.yml b/installer/roles/kubernetes/tasks/openshift.yml index 358b017836..9c6f8d205f 100644 --- a/installer/roles/kubernetes/tasks/openshift.yml +++ b/installer/roles/kubernetes/tasks/openshift.yml @@ -32,3 +32,45 @@ - name: Add privileged SCC to service account shell: | {{ openshift_oc_bin }} adm policy add-scc-to-user privileged system:serviceaccount:{{ openshift_project }}:awx + +# https://github.com/openshift/origin/issues/19182#issuecomment-378233606 +# If oc version ever grows a -o json option, remove the following tasks +# and go with the approach in kubernetes.yml. +- name: Get Kubernetes Config + command: | + {{ openshift_oc_bin }} config view -o json + register: kube_config_cmd + no_log: true + +- name: Convert kube config to dictionary + set_fact: + kube_config: "{{ kube_config_cmd.stdout | from_json }}" + no_log: true + +- name: Extract current context from kube config + set_fact: + current_kube_context: "{{ kube_config['current-context'] }}" + +- name: Find cluster for current context + set_fact: + kube_cluster: | + {{ (kube_config.contexts | + selectattr("name", "equalto", current_kube_context) | + list)[0].context.cluster }} + +- name: Find server for current context + set_fact: + kube_server: | + {{ (kube_config.clusters | + selectattr("name", "equalto", kube_cluster|trim) | + list)[0].cluster.server }} + +- name: Get kube version from api server + uri: + url: "{{ kube_server | trim }}/version" + validate_certs: false + register: kube_version + +- name: Extract server version from command output + set_fact: + kube_api_version: "{{ kube_version.json.gitVersion[1:] }}"