You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
1.1 KiB

  1. ---
  2. - name: Set role and inventory node taint to empty list
  3. set_fact:
  4. role_node_taints: []
  5. inventory_node_taints: []
  6. - name: Node taint for nvidia GPU nodes
  7. set_fact:
  8. role_node_taints: "{{ role_node_taints + ['nvidia.com/gpu=:NoSchedule'] }}"
  9. when:
  10. - nvidia_gpu_nodes is defined
  11. - nvidia_accelerator_enabled | bool
  12. - inventory_hostname in nvidia_gpu_nodes
  13. - name: Populate inventory node taint
  14. set_fact:
  15. inventory_node_taints: "{{ inventory_node_taints + ['%s' | format(item)] }}"
  16. loop: "{{ node_taints | d([]) }}"
  17. when:
  18. - node_taints is defined
  19. - node_taints is not string
  20. - node_taints is not mapping
  21. - node_taints is iterable
  22. - debug: # noqa name[missing]
  23. var: role_node_taints
  24. - debug: # noqa name[missing]
  25. var: inventory_node_taints
  26. - name: Set taint to node
  27. command: >-
  28. {{ kubectl }} taint node {{ kube_override_hostname | default(inventory_hostname) }} {{ (role_node_taints + inventory_node_taints) | join(' ') }} --overwrite=true
  29. delegate_to: "{{ groups['kube_control_plane'][0] }}"
  30. changed_when: false
  31. when:
  32. - (role_node_taints + inventory_node_taints) | length > 0