85 lines
2.3 KiB
YAML
85 lines
2.3 KiB
YAML
|
|
---
|
||
|
|
# NVIDIA GPU Exporter using NVML (pynvml)
|
||
|
|
# Works with consumer GPUs (RTX/GTX) and datacenter GPUs
|
||
|
|
# No DCGM required - uses pynvml Python library
|
||
|
|
|
||
|
|
- name: Create NVIDIA exporter group
|
||
|
|
ansible.builtin.group:
|
||
|
|
name: "{{ nvidia_exporter_user }}"
|
||
|
|
state: present
|
||
|
|
system: true
|
||
|
|
become: true
|
||
|
|
|
||
|
|
- name: Create NVIDIA exporter user
|
||
|
|
ansible.builtin.user:
|
||
|
|
name: "{{ nvidia_exporter_user }}"
|
||
|
|
group: "{{ nvidia_exporter_user }}"
|
||
|
|
home: "{{ nvidia_exporter_user_home }}"
|
||
|
|
system: true
|
||
|
|
create_home: true
|
||
|
|
shell: /usr/sbin/nologin
|
||
|
|
become: true
|
||
|
|
|
||
|
|
- name: Create NVIDIA exporter install directory
|
||
|
|
ansible.builtin.file:
|
||
|
|
path: "{{ item }}"
|
||
|
|
state: directory
|
||
|
|
owner: "{{ nvidia_exporter_user }}"
|
||
|
|
group: "{{ nvidia_exporter_user }}"
|
||
|
|
mode: "0755"
|
||
|
|
loop:
|
||
|
|
- "{{ nvidia_exporter_install_dir }}"
|
||
|
|
- "{{ nvidia_exporter_install_dir }}/logs"
|
||
|
|
become: true
|
||
|
|
|
||
|
|
- name: Copy NVIDIA exporter script
|
||
|
|
ansible.builtin.copy:
|
||
|
|
src: nvidia_gpu_exporter.py
|
||
|
|
dest: "{{ nvidia_exporter_script_path }}"
|
||
|
|
owner: "{{ nvidia_exporter_user }}"
|
||
|
|
group: "{{ nvidia_exporter_user }}"
|
||
|
|
mode: "0755"
|
||
|
|
become: true
|
||
|
|
notify:
|
||
|
|
- Restart nvidia_exporter
|
||
|
|
|
||
|
|
- name: Create Python virtual environment for NVIDIA exporter
|
||
|
|
ansible.builtin.command:
|
||
|
|
cmd: "{{ ansible_facts['python']['executable'] }} -m venv {{ nvidia_exporter_venv_path }}"
|
||
|
|
creates: "{{ nvidia_exporter_venv_path }}/bin/activate"
|
||
|
|
become: true
|
||
|
|
|
||
|
|
- name: Install nvidia-ml-py in NVIDIA exporter venv
|
||
|
|
ansible.builtin.pip:
|
||
|
|
name: "nvidia-ml-py"
|
||
|
|
virtualenv: "{{ nvidia_exporter_venv_path }}"
|
||
|
|
state: present
|
||
|
|
become: true
|
||
|
|
|
||
|
|
- name: Fix ownership of NVIDIA exporter directory
|
||
|
|
ansible.builtin.file:
|
||
|
|
path: "{{ nvidia_exporter_install_dir }}"
|
||
|
|
owner: "{{ nvidia_exporter_user }}"
|
||
|
|
group: "{{ nvidia_exporter_user }}"
|
||
|
|
recurse: true
|
||
|
|
become: true
|
||
|
|
|
||
|
|
- name: Copy NVIDIA exporter systemd service
|
||
|
|
ansible.builtin.template:
|
||
|
|
src: nvidia_exporter.service.j2
|
||
|
|
dest: "/etc/systemd/system/{{ nvidia_exporter_service_name }}.service"
|
||
|
|
owner: root
|
||
|
|
group: root
|
||
|
|
mode: "0644"
|
||
|
|
become: true
|
||
|
|
notify:
|
||
|
|
- Reload systemd daemon
|
||
|
|
- Restart nvidia_exporter
|
||
|
|
|
||
|
|
- name: Ensure NVIDIA exporter is enabled and started
|
||
|
|
ansible.builtin.systemd:
|
||
|
|
name: "{{ nvidia_exporter_service_name }}"
|
||
|
|
enabled: true
|
||
|
|
state: started
|
||
|
|
become: true
|