如何在 playbook 中使用 Ansible Tower 登录凭据?

roc*_*aki 2 ansible

是否可以使用我用于直接在剧本中登录 Ansible Tower 的凭据?

rot*_*g05 8

是的,您可以通过在 Ansible Tower 上使用“ Ansible Tower ”凭证类型保存您的凭证来实现这一点。

从 Ansible Tower UI 中,转至 Credentials -> New Credential,然后选择凭证类型“Ansible Tower”

此凭证类型需要三个输入,即主机名、用户名和密码。保存凭据并将其作为凭据添加到作业模板后,您可以从 Playbook 中调用它们,如下所示:

---
- name: Trigger an Atower API
  hosts: localhost
  connection: local

  vars:

    tower_host: '{{ lookup("env", "TOWER_HOST") }}'
    tower_username: '{{ lookup("env", "TOWER_USERNAME") }}'
    tower_password: '{{ lookup("env", "TOWER_PASSWORD") }}'

  tasks:

  - name: Some tasks that can be achieved through "{{ apiEndpoint }}"
    uri:
      url: "{{ tower_host }}{{ apiEndpoint }}"
      method: GET
      url_username: "{{ tower_username }}"
      url_password: "{{ tower_password }}"
      force_basic_auth: yes
      validate_certs: False
    register: output
Run Code Online (Sandbox Code Playgroud)

顺便说一句,在为这种情况寻找正确的注入值时,我还发现了针对不同凭证类型的其他值。您可以在这里获取它们:

  vars:
    machine:
      username: '{{ ansible_user }}'
      password: '{{ ansible_password }}'
    network:
      username: '{{ lookup("env", "ANSIBLE_NET_USERNAME") }}'
      password: '{{ lookup("env", "ANSIBLE_NET_PASSWORD") }}'
    aws:
      access_key: '{{ lookup("env", "AWS_ACCESS_KEY_ID") }}'
      secret_key: '{{ lookup("env", "AWS_SECRET_ACCESS_KEY") }}'
      security_token: '{{ lookup("env", "AWS_SECURITY_TOKEN") }}'
    vmware:
      host: '{{ lookup("env", "VMWARE_HOST") }}'
      username: '{{ lookup("env", "VMWARE_USER") }}'
      password: '{{ lookup("env", "VMWARE_PASSWORD") }}'
    gce:
      email: '{{ lookup("env", "GCE_EMAIL") }}'
      project: '{{ lookup("env", "GCE_PROJECT") }}'
    azure:
      client_id: '{{ lookup("env", "AZURE_CLIENT_ID") }}'
      secret: '{{ lookup("env", "AZURE_SECRET") }}'
      tenant: '{{ lookup("env", "AZURE_TENANT") }}'
      subscription_id: '{{ lookup("env", "AZURE_SUBSCRIPTION_ID") }}'
    rhev:
       ovirt_url: '{{ lookup("env", "OVIRT_URL") }}'
       ovirt_username: '{{ lookup("env", "OVIRT_USERNAME") }}'
       ovirt_password: '{{ lookup("env", "OVIRT_PASSWORD") }}'
Run Code Online (Sandbox Code Playgroud)

最后,如果您想对您的剧本进行更灵活的注入,您可以检查此链接:

  • 很有帮助!请注意,Ansible Tower 版本 3.3.0 将 Ansible Tower 凭证类型的命名约定从 TOWER_x 切换为 AWX_x(示例:TOWER_HOST --> AWX_HOST)。我必须将我的变量切换到 AWX 变量才能使我的剧本正常工作。https://docs.ansible.com/ansible-tower/latest/html/release-notes/relnotes.html#ansible-tower-version-3-3-0 (2认同)