43 lines
1.5 KiB
YAML
43 lines
1.5 KiB
YAML
- name: 创建角色专属日志目录
|
||
file:
|
||
path: "{{ log_base_dir }}/{{ driver.name }}"
|
||
state: directory
|
||
mode: "0750"
|
||
|
||
- name: 同步驱动脚本到目标服务器
|
||
copy:
|
||
src: "{{ driver.install_script }}"
|
||
dest: "{{ script_dest }}/{{ driver.install_script }}"
|
||
mode: "0755"
|
||
force: yes # 确保使用最新脚本
|
||
|
||
- name: 执行驱动操作(安装/卸载)
|
||
shell: |
|
||
{{ script_dest }}/{{ driver.install_script }} \
|
||
{{ operations[operation] }} \
|
||
{% if target_version is defined and target_version != "" %}--version {{ target_version }}{% endif %}
|
||
register: script_result
|
||
environment:
|
||
GPU_MODEL: "{{ hostvars[inventory_hostname]['gpu_model'] }}" # 注入主机硬件信息
|
||
retries: 3 # 企业级重试机制(失败3次终止)
|
||
delay: 30 # 重试间隔30秒
|
||
become: yes # 使用sudo执行
|
||
|
||
- name: 验证操作结果(安装时)
|
||
when: operation == "install"
|
||
shell: "{{ driver.service_check }}"
|
||
changed_when: false
|
||
failed_when: "GPU count: 0" in script_result.stderr
|
||
|
||
- name: 记录操作日志(企业级可观测性)
|
||
uri:
|
||
url: "http://logging.internal.com/api/ansible"
|
||
method: POST
|
||
body_format: json
|
||
body:
|
||
host: "{{ inventory_hostname }}"
|
||
component: "{{ driver.name }}_driver"
|
||
operation: "{{ operation }}"
|
||
version: "{{ target_version | default(driver.default_version) }}"
|
||
status: "{% if script_result.rc == 0 %}success{% else %}failed{% endif %}"
|