Browse Source

Add new_masters to scaleup playbook.

Andrew Butcher 9 years ago
parent
commit
6d3e176465

+ 7 - 1
playbooks/aws/openshift-cluster/cluster_hosts.yml

@@ -10,8 +10,14 @@ g_nfs_hosts:     "{{ g_all_hosts | intersect(groups['tag_host-type_nfs'] | defau
 
 g_master_hosts:  "{{ g_all_hosts | intersect(groups['tag_host-type_master'] | default([])) }}"
 
+g_new_master_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type_new_master'] | default([])) }}"
+
+g_all_master_hosts: "{{ (g_all_hosts | intersect(groups['tag_host-type_master'])) | union((g_all_hosts | intersect(groups['tag_host-type_new_master']))) | default([]) }}"
+
 g_node_hosts:    "{{ g_all_hosts | intersect(groups['tag_host-type_node'] | default([])) }}"
 
-g_infra_hosts:   "{{ g_node_hosts | intersect(groups['tag_sub-host-type_infra'] | default([])) }}"
+g_new_node_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type_new_node'] | default([])) }}"
+
+g_infra_hosts:   "{{ g_node_hosts | intersect(groups['tag_sub-host-type_infra']) | default([]) }}"
 
 g_compute_hosts: "{{ g_node_hosts | intersect(groups['tag_sub-host-type_compute'] | default([])) }}"

+ 4 - 0
playbooks/byo/openshift-cluster/cluster_hosts.yml

@@ -5,6 +5,10 @@ g_lb_hosts:     "{{ groups.lb | default([]) }}"
 
 g_master_hosts: "{{ groups.masters | default([]) }}"
 
+g_new_master_hosts: "{{ groups.new_masters | default([]) }}"
+
+g_all_master_hosts: "{{ g_master_hosts | union(g_new_master_hosts) | default([]) }}"
+
 g_node_hosts:   "{{ groups.nodes | default([]) }}"
 
 g_new_node_hosts: "{{ groups.new_nodes | default([]) }}"

+ 14 - 3
playbooks/common/openshift-cluster/evaluate_groups.yml

@@ -10,8 +10,8 @@
     when: g_etcd_hosts is not defined
 
   - fail:
-      msg: This playbook requires g_master_hosts to be set
-    when: g_master_hosts is not defined
+      msg: This playbook requires g_master_hosts or g_new_master_hosts to be set
+    when: g_master_hosts is not defined and g_new_master_hosts is not defined
 
   - fail:
       msg: This playbook requires g_node_hosts or g_new_node_hosts to be set
@@ -29,6 +29,14 @@
       msg: The nfs group must be limited to one host
     when: (groups[g_nfs_hosts] | default([])) | length > 1
 
+  - name: Evaluate oo_masters
+    add_host:
+      name: "{{ item }}"
+      groups: oo_masters
+      ansible_ssh_user: "{{ g_ssh_user | default(omit) }}"
+      ansible_sudo: "{{ g_sudo | default(omit) }}"
+    with_items: "{{ g_all_master_hosts | default([]) }}"
+
   - name: Evaluate oo_etcd_to_config
     add_host:
       name: "{{ item }}"
@@ -37,13 +45,16 @@
       ansible_sudo: "{{ g_sudo | default(omit) }}"
     with_items: "{{ g_etcd_hosts | default([]) }}"
 
+  - set_fact:
+      g_master_hosts_to_config: "{{ g_new_master_hosts | default(g_master_hosts | default([], true), true) }}"
+
   - name: Evaluate oo_masters_to_config
     add_host:
       name: "{{ item }}"
       groups: oo_masters_to_config
       ansible_ssh_user: "{{ g_ssh_user | default(omit) }}"
       ansible_sudo: "{{ g_sudo | default(omit) }}"
-    with_items: "{{ g_master_hosts | default([]) }}"
+    with_items: "{{ g_master_hosts_to_config | default([]) }}"
 
   # Use g_new_node_hosts if it exists otherwise g_node_hosts
   - set_fact:

+ 39 - 1
playbooks/common/openshift-cluster/scaleup.yml

@@ -12,5 +12,43 @@
   - openshift_docker
 
 - include: ../openshift-node/config.yml
+
+- name: Gather facts
+  hosts: oo_etcd_to_config:oo_masters_to_config:oo_nodes_to_config
+  roles:
+  - openshift_facts
+
+- name: Update master count
+  hosts: oo_masters:!oo_masters_to_config
+  serial: 1
   vars:
-    openshift_deployment_type: "{{ deployment_type }}"
+    openshift_master_count: "{{ groups.oo_masters | length }}"
+  roles:
+  - openshift_facts
+  post_tasks:
+  - name: Update master count
+    lineinfile:
+      dest: "{{ openshift.common.config_base}}/master/master-config.yaml"
+      regexp: '^  masterCount:.*$'
+      line: "  masterCount: {{ openshift_master_count }}"
+    register: master_config
+  - name: Restart master api
+    service: name={{ openshift.common.service_type }}-master-api state=restarted
+    when: master_config | changed
+    notify: Verify api server
+  - name: restart master controllers
+    service: name={{ openshift.common.service_type }}-master-controllers state=restarted
+    when: master_config | changed
+  handlers:
+  - name: Verify api server
+    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
+
+- include: ../openshift-master/config.yml
+
+- include: ../openshift-node/config.yml

+ 8 - 8
playbooks/common/openshift-master/config.yml

@@ -1,6 +1,6 @@
 ---
 - name: Set master facts and determine if external etcd certs need to be generated
-  hosts: oo_masters_to_config
+  hosts: oo_first_master:oo_masters_to_config
   pre_tasks:
   - name: Check for RPM generated config marker file .config_managed
     stat:
@@ -144,7 +144,7 @@
     when: etcd_client_certs_missing is defined and etcd_client_certs_missing
 
 - name: Determine if master certificates need to be generated
-  hosts: oo_masters_to_config
+  hosts: oo_first_master:oo_masters_to_config
   tasks:
   - set_fact:
       openshift_master_certs_no_etcd:
@@ -228,7 +228,7 @@
   gather_facts: no
   tasks:
   - set_fact:
-      haproxy_backend_servers: "{{ hostvars | oo_select_keys(groups['oo_masters_to_config']) | oo_haproxy_backend_masters }}"
+      haproxy_backend_servers: "{{ hostvars | oo_select_keys(groups['oo_masters']) | oo_haproxy_backend_masters }}"
 
 - name: Configure load balancers
   hosts: oo_lb_to_config
@@ -252,7 +252,7 @@
   roles:
   - role: openshift_facts
   - role: haproxy
-    when: groups.oo_masters_to_config | length > 1
+    when: groups.oo_masters | length > 1
 
 - name: Check for cached session secrets
   hosts: oo_first_master
@@ -334,8 +334,8 @@
   serial: 1
   vars:
     sync_tmpdir: "{{ hostvars.localhost.g_master_mktemp.stdout }}"
-    openshift_master_ha: "{{ groups.oo_masters_to_config | length > 1 }}"
-    openshift_master_count: "{{ groups.oo_masters_to_config | length }}"
+    openshift_master_ha: "{{ groups.oo_masters | length > 1 }}"
+    openshift_master_count: "{{ groups.oo_masters | length }}"
     openshift_master_session_auth_secrets: "{{ hostvars[groups.oo_first_master.0].openshift.master.session_auth_secrets }}"
     openshift_master_session_encryption_secrets: "{{ hostvars[groups.oo_first_master.0].openshift.master.session_encryption_secrets }}"
   pre_tasks:
@@ -364,8 +364,8 @@
   vars:
     cockpit_plugins: "{{ osm_cockpit_plugins | default(['cockpit-kubernetes']) }}"
     etcd_urls: "{{ openshift.master.etcd_urls }}"
-    openshift_master_ha: "{{ groups.oo_masters_to_config | length > 1 }}"
-    omc_cluster_hosts: "{{ groups.oo_masters_to_config | join(' ')}}"
+    openshift_master_ha: "{{ groups.oo_masters | length > 1 }}"
+    omc_cluster_hosts: "{{ groups.oo_masters | join(' ')}}"
   roles:
   - role: openshift_master_cluster
     when: openshift_master_ha | bool and openshift.master.cluster_method == "pacemaker"

+ 7 - 1
playbooks/gce/openshift-cluster/cluster_hosts.yml

@@ -10,8 +10,14 @@ g_nfs_hosts:     "{{ g_all_hosts | intersect(groups['tag_host-type-nfs'] | defau
 
 g_master_hosts:  "{{ g_all_hosts | intersect(groups['tag_host-type-master'] | default([])) }}"
 
+g_new_master_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-new-master'] | default([])) }}"
+
+g_all_master_hosts: "{{ (g_all_hosts | intersect(groups['tag_host-type-master'])) | union((g_all_hosts | intersect(groups['tag_host-type-new-master']))) | default([]) }}"
+
 g_node_hosts:    "{{ g_all_hosts | intersect(groups['tag_host-type-node'] | default([])) }}"
 
-g_infra_hosts:   "{{ g_node_hosts | intersect(groups['tag_sub-host-type-infra'] | default([])) }}"
+g_new_node_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-new-node'] | default([])) }}"
+
+g_infra_hosts:   "{{ g_node_hosts | intersect(groups['tag_sub-host-type-infra']) | default([]) }}"
 
 g_compute_hosts: "{{ g_node_hosts | intersect(groups['tag_sub-host-type-compute'] | default([])) }}"

+ 7 - 1
playbooks/libvirt/openshift-cluster/cluster_hosts.yml

@@ -10,8 +10,14 @@ g_nfs_hosts:     "{{ g_all_hosts | intersect(groups['tag_host-type-nfs'] | defau
 
 g_master_hosts:  "{{ g_all_hosts | intersect(groups['tag_host-type-master'] | default([])) }}"
 
+g_new_master_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-new-master'] | default([])) }}"
+
+g_all_master_hosts: "{{ (g_all_hosts | intersect(groups['tag_host-type-master'])) | union((g_all_hosts | intersect(groups['tag_host-type-new-master']))) | default([]) }}"
+
 g_node_hosts:    "{{ g_all_hosts | intersect(groups['tag_host-type-node'] | default([])) }}"
 
-g_infra_hosts:   "{{ g_node_hosts | intersect(groups['tag_sub-host-type-infra'] | default([])) }}"
+g_new_node_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type-new-node'] | default([])) }}"
+
+g_infra_hosts:   "{{ g_node_hosts | intersect(groups['tag_sub-host-type-infra']) | default([]) }}"
 
 g_compute_hosts: "{{ g_node_hosts | intersect(groups['tag_sub-host-type-compute'] | default([])) }}"

+ 7 - 1
playbooks/openstack/openshift-cluster/cluster_hosts.yml

@@ -10,8 +10,14 @@ g_nfs_hosts:     "{{ g_all_hosts | intersect(groups['tag_host-type_nfs'] | defau
 
 g_master_hosts:  "{{ g_all_hosts | intersect(groups['tag_host-type_master'] | default([])) }}"
 
+g_new_master_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type_new_master'] | default([])) }}"
+
+g_all_master_hosts: "{{ (g_all_hosts | intersect(groups['tag_host-type_master'])) | union((g_all_hosts | intersect(groups['tag_host-type_new_master']))) | default([]) }}"
+
 g_node_hosts:    "{{ g_all_hosts | intersect(groups['tag_host-type_node'] | default([])) }}"
 
-g_infra_hosts:   "{{ g_node_hosts | intersect(groups['tag_sub-host-type_infra'] | default([])) }}"
+g_new_node_hosts: "{{ g_all_hosts | intersect(groups['tag_host-type_new_node'] | default([])) }}"
+
+g_infra_hosts:   "{{ g_node_hosts | intersect(groups['tag_sub-host-type_infra']) | default([]) }}"
 
 g_compute_hosts: "{{ g_node_hosts | intersect(groups['tag_sub-host-type_compute'] | default([])) }}"