You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible Playbook中自动检测主机是否为WSL?

Ansible自动检测WSL主机的when条件

要自动检测主机是否为WSL环境并仅在该环境下运行任务,无需配置清单变量,可采用以下几种可靠方法:

方法一:检查WSL特征文件

WSL系统默认存在/proc/sys/fs/binfmt_misc/WSLInterop文件,直接通过Ansible已收集的facts判断该文件是否存在即可:

- name: "Run only in WSL"
  when: ansible_facts.files['/proc/sys/fs/binfmt_misc/WSLInterop'] is defined and ansible_facts.files['/proc/sys/fs/binfmt_misc/WSLInterop'].exists
  # task definition

注意:需确保Ansible已开启主机facts收集(默认自动开启,若未开启可在playbook中添加gather_facts: true)

方法二:用stat模块主动检查

如果不想依赖自动收集的facts,可先通过stat模块主动检查特征文件,再基于结果判断:

- name: Check if running in WSL
  stat:
    path: /proc/sys/fs/binfmt_misc/WSLInterop
  register: wsl_check

- name: "Run only in WSL"
  when: wsl_check.stat.exists
  # task definition

方法三:通过内核版本判断(备选)

WSL的内核版本通常包含microsoft或WSL关键字,可作为备选判断条件:

- name: "Run only in WSL"
  when: "'microsoft' in ansible_kernel or 'WSL' in ansible_kernel"
  # task definition

注:这种方法可靠性略低,部分自定义内核可能包含类似关键字

内容的提问来源于stack exchange,提问作者jehon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 16:42:36