如何在Ansible Tower中为单个作业模板使用多个凭证?

时间:2019-07-17 14:26:28

标签: ansible ansible-tower

我需要在Ansible Tower Job-Template中为单个剧本使用两个不同的凭据。在剧本中,我包括两个角色(一个角色用于Windows计算机,一个角色用于Linux计算机)。配置作业模板时,我注意到我无法选择两个计算机凭据,因此剧本失败了。

我在https://stackoverflow.com/a/55870311/4715624处找到了一个解决方案,其中包括在variable instanceof Array文件夹下创建两个Ansible保管库(具有相同的保管库密码)并将密码保存在那里。此解决方案可从命令行运行,例如 host_vars

然后,我在Ansible Tower中创建了保险库类型凭证,并尝试使用该凭证运行相应的作业。但这不起作用(身份验证问题)。有人可以告诉我在Ansible Tower中为单个剧本使用多个凭证的正确方法吗?还是在Ansible Tower中根本不可能?

更新: 我的剧本看起来像这样:

ansible-playbook -v test-multi-credential-playbook-in-ansible-tower.yml --ask-vault-pass

2 个答案:

答案 0 :(得分:0)

为每个角色使用标签,并在Tower中创建两个模板。在模板中以凭据身份提及密码。

---
- hosts: all
  #become: yes
  roles:
  - role: role1
    tags: role1
  - role: role2
    tags: role2

答案 1 :(得分:0)

这可以通过在 Ansible Tower 中创建自定义凭据并将凭据分配为主机参数来处理。

  1. 使用以下配置创建类型的凭据-

输入配置:

fields:
  - type: string
    id: custom_user
    label: Username
  - secret: true
    type: string
    id: custom_pass
    label: Password
required:
  - custom_user
  - custom_pass

注射器配置:

extra_vars:
  my_pass: '{{custom_pass}}'
  my_user: '{{custom_user}}'
  1. 使用您刚刚创建的自定义凭据为您的环境创建 Windows 凭据。

  2. 然后在清单的 Windows 组中,您可以将这些凭据定义为 group_vars/host_vars,如下所示:

ansible_user: "{{ custom_user }}"
ansible_password: "{{ custom_pass }}"