---
- name: Update master count
  hosts: oo_masters:!oo_masters_to_config
  serial: 1
  roles:
  - openshift_facts
  post_tasks:
  - openshift_facts:
      role: master
      system_facts: "{{ vars_openshift_facts_system_facts }}"
      local_facts:
        master_count: "{{ openshift_master_count | default(groups.oo_masters | length) }}"
  - name: Update master count
    modify_yaml:
      dest: "{{ openshift.common.config_base}}/master/master-config.yaml"
      yaml_key: 'kubernetesMasterConfig.masterCount'
      yaml_value: "{{ openshift.master.master_count }}"
    notify:
    - restart master api
    - restart master controllers
  handlers:
  - name: restart master api
    service: name={{ openshift_service_type }}-master-controllers state=restarted
    notify: verify api server
  # We retry the controllers because the API may not be 100% initialized yet.
  - name: restart master controllers
    command: "systemctl restart {{ openshift_service_type }}-master-controllers"
    retries: 3
    delay: 5
    register: result
    until: result.rc == 0
  - name: verify api server
    command: >
      curl --silent --tlsv1.2 --max-time 2
      --cacert {{ openshift.common.config_base }}/master/ca-bundle.crt
      {{ openshift.master.api_url }}/healthz/ready
    args:
      # Disables the following warning:
      # Consider using get_url or uri module rather than running curl
      warn: no
    register: api_available_output
    until: api_available_output.stdout == 'ok'
    retries: 120
    delay: 1
    changed_when: false

- import_playbook: set_network_facts.yml

- import_playbook: ../../openshift-etcd/private/master_etcd_certificates.yml

- import_playbook: config.yml

- import_playbook: ../../openshift-loadbalancer/private/config.yml

- import_playbook: ../../openshift-node/private/certificates.yml

- import_playbook: ../../openshift-node/private/config.yml
