- hosts:
- master[0]
name: get noded label
tasks:
- name: cleanup previous label cache
shell: "rm -rf /root/.ascend_deployer/dl_yaml/label/groups/"
- name: get pods info
command: kubectl get pod -Ao wide
register: pods_info
until: pods_info.rc == 0
retries: 5
delay: 5
ignore_errors: yes
changed_when: false
- name: get noded info
set_fact:
noded_label: "{{ 'on' if (pods_info.stdout.splitlines() | select('search', '^\\S+\\s+.*noded.*$') |
list | length > 0) else '' }}"
- hosts:
- worker
name: label node in k8s
tasks:
- name: set noded label
set_fact:
noded_label: "{{ hostvars[groups['master'][0]].noded_label | default('')}}"
- name: get label
label_node:
step: 'get_label'
ansible_run_tags: "{{ ansible_run_tags }}"
node_name: "{{ NODE_NAME }}"
master_node: "{{ inventory_hostname in groups['master'] }}"
worker_node: "{{ inventory_hostname in groups['worker'] }}"
noded_label: "{{ noded_label | default('') }}"
- name: save node label to yaml
run_once: yes
label_node:
step: 'save_label'
nodes_label: "{{ (groups['master'] | map('extract', hostvars, 'node_label') | map('default', {}) | list) |
combine((groups['worker'] | map('extract', hostvars, 'node_label') | map('default', {}) | list),
recursive=True) }}"
delegate_to: "{{ groups['worker'][0] }}"
- hosts: worker[0]
name: copy label yaml from worker[0] to controller
gather_facts: no
tasks:
- name: copy label yaml from worker[0] to controller
scp:
ip: "{{ inventory_hostname }}"
port: "{{ hostvars[inventory_hostname].ansible_ssh_port | default('22') }}"
remote_user: "{{ ansible_ssh_user }}"
passwd: "{{ ansible_ssh_pass | default(omit) }}"
src: "/root/.ascend_deployer/dl_yaml/label/label_node.json"
dest: "/tmp/ascend_label_cache/{{ inventory_hostname }}/"
fetch: 'true'
delegate_to: localhost
- hosts: master[0]
name: create directory and fetch label json on master
gather_facts: no
vars:
worker_ip: "{{ groups['worker'][0] }}"
tasks:
- name: create group directory on master
file:
path: "/root/.ascend_deployer/dl_yaml/label/groups/{{ worker_ip }}"
state: directory
mode: '0644'
- hosts: localhost
connection: local
name: copy label yaml from controller to master[0]
gather_facts: no
vars:
worker_ip: "{{ groups['worker'][0] }}"
master_ip: "{{ groups['master'][0] }}"
tasks:
- name: copy label yaml from controller to master[0]
scp:
ip: "{{ master_ip }}"
port: "{{ hostvars[master_ip].ansible_ssh_port | default('22') }}"
remote_user: "{{ hostvars[master_ip].ansible_ssh_user | default('root') }}"
passwd: "{{ hostvars[master_ip].ansible_ssh_pass | default(omit) }}"
src: "/tmp/ascend_label_cache/{{ worker_ip }}/label_node.json"
dest: "/root/.ascend_deployer/dl_yaml/label/groups/{{ worker_ip }}/label_node.json"
fetch: 'false'
- name: remove ascend_label_cache directory
file:
path: "/tmp/ascend_label_cache"
state: absent
- hosts: worker[0]
name: wait and label worker nodes
tasks:
- name: Wait for all group directories to be ready
shell: |
count=$(ls -d /root/.ascend_deployer/dl_yaml/label/groups/*/ 2>/dev/null | wc -l)
echo "Current group count: $count, Expected: {{ sub_group_count | default(1) | int }}"
[ $count -ge {{ sub_group_count | default(1) | int }} ] && exit 0 || exit 1
register: wait_result
until: wait_result.rc == 0
retries: 60
delay: 10
delegate_to: "{{ groups['master'][0] }}"
when: sub_group_idx | default(1) | int == 1
- name: label worker nodes
label_node:
step: 'label'
group_count: "{{ sub_group_count | default(1) | int }}"
delegate_to: "{{ groups['master'][0] }}"
register: label_result
when: sub_group_idx | default(1) | int == 1
- hosts:
- master
name: label master nodes
tasks:
- name: label master nodes
command: kubectl label --overwrite node {{ NODE_NAME }} masterselector=dls-master-node
delegate_to: "{{ groups['master'][0] }}"
register: label_result
when: sub_group_idx | default(1) | int == 1