JetSki
JetSki copied to clipboard
let user optionally choose provisioning host
For shared labs, users do not control how nodes are handed out in a reservation. This can lead to some serious problems:
- storage devices are not always the same among the nodes being allocated - for Ceph, this means lowest-common-denominator behavior
- some nodes are in the same rack, others aren't
- others TBS?
The provisioning host at present is always the first host in the ocpnodeinv_cloudXX.json supplied by labs, and this may not be the best choice. While this is a reasonable default, it would be great if we had a way to override.
Detailed example: For example, in the case of cloud17 on Oct 5 2020, I find that the first 3 nodes in the .json have 5.8-TB /dev/nvme0n1 and are all in the same rack, that's great! but the 4th node (on a different rack) has 1.8 TB. But JetSki always picks the first node, so I waste the 5.8-TB device and have to change my Ceph configuration so that all remaining 3 hosts uses 1.8 TB not 5.8, or else Ceph won't balance the load.
For example, define a var in the inventory/jetski/hosts file, something like:
provisioner_host: mgmt-e26-h13-740xd.alias.bos.scalelab.redhat.com
For now, I've implemented a patch that lets me reorder the nodes in the local ocpinv.json file to select the provisioner host:
diff --git a/ansible-ipi-install/roles/bootstrap/tasks/10_load_inv.yml b/ansible-ipi-install/roles/bootstrap/tasks/10_load_inv.yml
index b5e3d14..d90da4e 100644
--- a/ansible-ipi-install/roles/bootstrap/tasks/10_load_inv.yml
+++ b/ansible-ipi-install/roles/bootstrap/tasks/10_load_inv.yml
@@ -25,7 +25,7 @@
- set_fact:
ocpinv_content: "{{ response.json }}"
- when: lab_name == "alias"
+ when: lab_name == "alias" and not st.stat.exists
- name: Download ocpinv.json
block:
@@ -36,7 +36,13 @@
- set_fact:
ocpinv_content: "{{ response.json }}"
- when: lab_name == "scale"
+ when: lab_name == "scale" and not st.stat.exists
+
+- name: read local ocpinv json
+ block:
+ - set_fact:
+ ocpinv_content: "{{ lookup('file', ocpinv_file) }}"
+ when: st.stat.exists
- name: Checking for inventory conflicts
block
Thank you for raising this issue
@bengland2 Thanks for bringing this up. My design philosophy was making it stupid simple and exposing the least number of variables to the user.
Have you checked this out https://github.com/redhat-performance/JetSki#changing-node-rolesexcluding-nodes-in-your-allocation-from-the-deployment ?
This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days