summaryrefslogtreecommitdiffstats
path: root/roles
diff options
context:
space:
mode:
Diffstat (limited to 'roles')
-rw-r--r--roles/static_inventory/tasks/filter_out_new_app_nodes.yaml15
-rw-r--r--roles/static_inventory/tasks/openstack.yml26
-rw-r--r--roles/static_inventory/templates/inventory.j24
3 files changed, 43 insertions, 2 deletions
diff --git a/roles/static_inventory/tasks/filter_out_new_app_nodes.yaml b/roles/static_inventory/tasks/filter_out_new_app_nodes.yaml
new file mode 100644
index 000000000..826efe78d
--- /dev/null
+++ b/roles/static_inventory/tasks/filter_out_new_app_nodes.yaml
@@ -0,0 +1,15 @@
+---
+- name: Add all new app nodes to new_app_nodes
+ when:
+ - 'oc_old_app_nodes is defined'
+ - 'oc_old_app_nodes | list'
+ - 'node.name not in oc_old_app_nodes'
+ - 'node["metadata"]["sub-host-type"] == "app"'
+ register: result
+ set_fact:
+ new_app_nodes: '{{ new_app_nodes }} + [ {{ node }} ]'
+
+- name: If the node was added to new_nodes, remove it from registered nodes
+ set_fact:
+ registered_nodes: '{{ registered_nodes | difference([ node ]) }}'
+ when: 'not result | skipped'
diff --git a/roles/static_inventory/tasks/openstack.yml b/roles/static_inventory/tasks/openstack.yml
index e36974d93..adf78c966 100644
--- a/roles/static_inventory/tasks/openstack.yml
+++ b/roles/static_inventory/tasks/openstack.yml
@@ -37,7 +37,6 @@
with_items: "{{ registered_nodes|difference(registered_nodes_floating) }}"
add_host:
name: '{{ item.name }}'
- groups: '{{ item.metadata.group }}'
ansible_host: >-
{% if use_bastion|bool -%}
{{ item.name }}
@@ -57,7 +56,6 @@
with_items: "{{ registered_nodes_floating }}"
add_host:
name: '{{ item.name }}'
- groups: '{{ item.metadata.group }}'
ansible_host: >-
{% if use_bastion|bool -%}
{{ item.name }}
@@ -80,6 +78,30 @@
{{ item.public_v4 }}
{%- endif %}
+ # Split registered_nodes into old nodes and new app nodes
+ # Add new app nodes to new_nodes host group for upscaling
+ - name: Create new_app_nodes variable
+ set_fact:
+ new_app_nodes: []
+
+ - name: Filter new app nodes out of registered_nodes
+ include: filter_out_new_app_nodes.yaml
+ with_items: "{{ registered_nodes }}"
+ loop_control:
+ loop_var: node
+
+ - name: Add new app nodes to the new_nodes section (if a deployment already exists)
+ with_items: "{{ new_app_nodes }}"
+ add_host:
+ name: "{{ item.name }}"
+ groups: new_nodes, app
+
+ - name: Add the rest of cluster nodes to their corresponding groups
+ with_items: "{{ registered_nodes }}"
+ add_host:
+ name: '{{ item.name }}'
+ groups: '{{ item.metadata.group }}'
+
- name: Add bastion node to inventory
add_host:
name: bastion
diff --git a/roles/static_inventory/templates/inventory.j2 b/roles/static_inventory/templates/inventory.j2
index 8863fb7c4..9dfbe3a5b 100644
--- a/roles/static_inventory/templates/inventory.j2
+++ b/roles/static_inventory/templates/inventory.j2
@@ -40,6 +40,7 @@ dns
nodes
etcd
lb
+new_nodes
# Set variables common for all OSEv3 hosts
[OSEv3:vars]
@@ -78,6 +79,8 @@ dns.{{ stack_name }}
[lb:children]
lb.{{ stack_name }}
+[new_nodes:children]
+
# Empty placeholders for all groups of the cluster nodes
[masters.{{ stack_name }}]
[etcd.{{ stack_name }}]
@@ -86,6 +89,7 @@ lb.{{ stack_name }}
[app.{{ stack_name }}]
[dns.{{ stack_name }}]
[lb.{{ stack_name }}]
+[new_nodes.{{ stack_name }}]
# BEGIN Autogenerated groups
{% for group in groups %}