如何判断当前Ansible是通过AWX还是命令行执行的?
判断Ansible Playbook运行途径(AWX vs 命令行)
以下是几种可靠的判断方法:
1. 检查AWX专属环境变量
AWX在运行playbook时会自动注入一系列环境变量,命令行运行时不会存在这些变量。常用的标识变量包括:
AWX_JOB_ID:AWX任务的唯一IDAWX_JOB_NAME:AWX任务名称AWX_PROJECT_DIR:AWX中项目的存储目录AWX_INVENTORY_ID:AWX使用的库存ID
示例Playbook任务
- name: 检测运行环境 debug: msg: "通过AWX平台运行,任务ID: {{ lookup('env', 'AWX_JOB_ID') }}" when: lookup('env', 'AWX_JOB_ID') | length > 0 - name: 检测运行环境 debug: msg: "通过命令行运行" when: lookup('env', 'AWX_JOB_ID') | length == 0
也可以提前设置一个标识变量,供后续任务使用:
- name: 设置运行环境标识 set_fact: is_awx_run: "{{ lookup('env', 'AWX_JOB_ID') is defined and lookup('env', 'AWX_JOB_ID') | length > 0 }}"
2. 检查当前工作目录
AWX运行playbook时,默认会在/var/lib/awx/projects/下的对应项目目录中执行,而命令行运行通常是你本地自定义的工作目录。可以通过ansible_env.PWD变量查看当前路径:
- name: 检查工作目录判断运行环境 debug: msg: "通过AWX平台运行" when: ansible_env.PWD starts with '/var/lib/awx/projects/' - name: 检查工作目录判断运行环境 debug: msg: "通过命令行运行" when: not ansible_env.PWD starts with '/var/lib/awx/projects/'
3. 查看日志输出特征
- AWX的任务日志开头会包含任务ID、模板名称、执行用户等AWX专属元数据
- 命令行运行的Ansible日志仅包含标准的playbook执行输出,无AWX相关标识
内容的提问来源于stack exchange,提问作者Costales
相关产品推荐
相关产品推荐

