如何从Ansible Tower凭据中获取OAuth Token并赋值给Playbook变量
从Ansible Tower凭据中获取OAuth Token并传入Playbook的方法
方法一:通过作业模板关联凭据自动注入变量
这是最直接的方式,只需在作业模板中关联目标凭据,Tower会自动将凭据字段作为变量传入Playbook:
打开Ansible Tower中你要使用的作业模板,在「凭据」选项卡中添加
cred_tower_oauth凭据。修改Playbook,使用该凭据类型对应的默认变量名调用OAuth Token:
- name: Access API with OAuth Token from Ansible Tower Credential hosts: localhost tasks: - name: Access API with OAuth Token uri: url: "https://api.example.com/data" method: GET headers: Authorization: "Bearer {{ tower_oauth_token }}" return_content: yes register: api_response - name: Display token debug: msg: "token: {{ tower_oauth_token }}"注:Red Hat Ansible Automation Platform类型的凭据,其OAuth Token对应的默认变量名为
tower_oauth_token。若想保留Playbook中
oauth_token的变量名,可在作业模板的「额外变量」中添加映射:oauth_token: "{{ tower_oauth_token }}"
方法二:使用Lookup插件直接查询凭据
如果无需通过作业模板关联凭据,或需要动态获取凭据内容,可使用awx.awx.credential lookup插件:
- 确保环境已安装
awx.awx集合(Tower默认已预装,若缺失可执行):ansible-galaxy collection install awx.awx - 修改Playbook,添加任务获取OAuth Token:
注:- name: Access API with OAuth Token from Ansible Tower Credential hosts: localhost tasks: - name: Fetch OAuth Token from Tower credential set_fact: oauth_token: "{{ lookup('awx.awx.credential', 'cred_tower_oauth', field='oauth_token', host='https://your-tower-instance-url') }}" vars: # 使用作业执行时的内置令牌验证,需确保作业拥有读取该凭据的权限 tower_oauth_token: "{{ lookup('env', 'AWX_OAUTH_TOKEN') }}" - name: Access API with OAuth Token uri: url: "https://api.example.com/data" method: GET headers: Authorization: "Bearer {{ oauth_token }}" return_content: yes register: api_response - name: Display token debug: msg: "token: {{ oauth_token }}"- 将
host参数替换为你的Tower实例实际URL; AWX_OAUTH_TOKEN是作业执行时Tower自动注入的环境变量,用于lookup请求的身份验证;- 需确保执行作业的角色/用户拥有读取
cred_tower_oauth凭据的权限。
- 将
内容的提问来源于stack exchange,提问作者Magicfades
相关产品推荐
相关产品推荐

