我正在将 Ansible 剧本迁移到 Ansible AWX 项目中。
以前我会从 git 中签出 Ansible 剧本,然后从命令行运行它。
在这种特定情况下,我有一个创建VMware虚拟机的Ansible Playbook。我使用以下任务来收集有关 git 存储库和当前 git 提交哈希的信息,并在 VM 注释中使用此信息,以便以后可以使用它来标识用于创建 VM 的确切说明。
- name: return git commit hash
command: git rev-parse HEAD
register: gitCommitHash
delegate_to: localhost
become: false
become_user: "{{ lookup('env','USER') }}"
- name: get remote git repo
command: git config --get remote.origin.url
register: gitRemote
delegate_to: localhost
become: false
become_user: "{{ lookup('env','USER') }}"
我意识到在AWX中运行的剧本以awx
用户的身份运行。
无论如何,在剧本中,我可以获取运行 AWX 模板的 AWX 用户,并且可以获取 Ansible AWX 项目的网址吗?
更新
我发现我可以使用{{awx_user_name}}
获取运行模板的 AWX,但尚未了解如何获取项目/剧本的 git 远程 url。
我用一个简单的剧本运行了一个作业模板:
---
- name: Debug AWX
hosts: all
tasks:
- debug:
var: vars
在输出中,我可以看到这些变量:
"awx_inventory_id": 1,
"awx_inventory_name": "Demo Inventory",
"awx_job_id": 23,
"awx_job_launch_type": "manual",
"awx_job_template_id": 10,
"awx_job_template_name": "Debug AWX",
"awx_project_revision": "3214f37f271ad589f7a63d12c3d1ef9fa0972d91",
"awx_user_email": "admin@example.com",
"awx_user_first_name": "",
"awx_user_id": 1,
"awx_user_last_name": "",
"awx_user_name": "admin",
因此,不,您不会从作业中获取AWX项目URL。但是你得到的是项目 ID!。
因此,您可以查询 API 以获取job_template详细信息,然后查询项目详细信息以获取 URL。我建议使用 CLI 进行这些步骤。