如何在Ansible Tower执行的Playbook中获取Git-Revision
在Ansible Tower Playbook中获取已检出的Git Revision
当然可以实现,Ansible Tower(包括AWX)在运行作业时会自动暴露当前项目的Git Revision相关变量,直接在Playbook中调用即可,具体方法如下:
方法1:直接使用Tower内置变量
Tower会自动将当前检出的Git Revision注入为{{ tower_project_revision }}变量(AWX对应{{ awx_project_revision }}),直接在Playbook中引用就行。比如要写入版本文件:
- name: 记录当前部署的Git版本 copy: content: "当前部署版本: {{ tower_project_revision }}" dest: /var/log/deployed_version.txt mode: '0644'
方法2:通过环境变量读取
如果内置变量未生效,也可以读取Tower设置的环境变量TOWER_PROJECT_REVISION(AWX为AWX_PROJECT_REVISION),用lookup插件获取:
- name: 获取Git版本号 set_fact: deployed_rev: "{{ lookup('env', 'TOWER_PROJECT_REVISION') }}" - name: 写入版本文件 copy: content: "部署版本SHA: {{ deployed_rev }}" dest: /opt/app/deployed_rev.txt mode: '0644'
注意事项
- 这些变量仅在Tower/AWX触发的作业中存在,本地手动运行Playbook时不会生成,可通过
when条件避免报错:when: tower_project_revision is defined - 确保你的Tower项目配置中,Git仓库的拉取策略设置为「每次作业前拉取」或定期同步,这样获取的Revision才是最新的已检出版本
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

