Ansible 如何使通用AWX作业模板适用于具有不同SSH用户名的计算机?

Ansible 如何使通用AWX作业模板适用于具有不同SSH用户名的计算机?,ansible,ansible-awx,Ansible,Ansible Awx,我在AWX中有一个工作流,它按顺序运行多个作业模板。我想使这些作业模板对prod和非prod环境都通用。机器凭据在作业模板级别而不是作业工作流级别提供,因此,只能提供1个机器凭据。 我也不想在启动时提示选项,因为这与您松散的调度功能。 有没有办法让我的工作模板通用(剧本)?可以在具有不同用户名的多台计算机上运行的ssh? 注意:我没有访问AWX服务器的权限。只有用户界面。我不是系统管理员。以下是为实现这一点所做的更改- 编制特定于环境的清单-不要更改任何其他环境的节点部分的状态,这一点很重要,因

我在AWX中有一个工作流,它按顺序运行多个作业模板。我想使这些作业模板对prod和非prod环境都通用。机器凭据在作业模板级别而不是作业工作流级别提供,因此,只能提供1个机器凭据。 我也不想在启动时提示选项,因为这与您松散的调度功能。 有没有办法让我的工作模板通用(剧本)?可以在具有不同用户名的多台计算机上运行的ssh?

注意:我没有访问AWX服务器的权限。只有用户界面。我不是系统管理员。

以下是为实现这一点所做的更改-

  • 编制特定于环境的清单-不要更改任何其他环境的节点部分的状态,这一点很重要,因此有助于避免运行时出现意外情况

  • 移动凭证信息。将剧本中的内容放入库存中-您可以设置环境。库存水平上的特定变量以及魔术变量。魔术变量是已知的易变的。例如-
    ansible_连接、ansible_用户、ansible_ssh_传递。Ansible理解ok,它必须使用Ansible_用户Ansible_ssh_pass通过ssh登录到机器。
    这样,您就不必在AWX作业模板中提及凭据,并且在模板级别将机器凭据选项保留为空
    下面是我在库存级别定义的变量的快照

  • 变量和vault-请注意,凭证部分包含变量值。显然,我们不想将任何凭证公开为明文。因此,遵循Ansible的最佳实践,让Ansible在未加密文件中找到变量,并且所有敏感变量都来自加密文件,这一点很重要
    我维护一个变量文件,即配置文件和vault,以便在运行时在剧本中呈现。您可以创建一个子目录,比如vars,并将清单变量中提到的作为值的变量映射到vars/var.yml文件。vars.yml可以将键定义为-

    ssh_secret_dev:“{{vault_secret_pass}}”
    ssh\u user\u dev:username
    加密的vault文件可以具有最终值-

    金库密码:非常密码

  • 为什么要跳舞?为什么不定义vault中的所有内容并将库存变量与vault连接起来?这提供了一个额外的安全层,您可以在其中映射可变文件中的安全凭据和vault中的额外机密。显然,vault将被加密,所以您需要在作业模板级别提到vault凭据。作业模板级别的凭据部分将仅包含vault凭据

  • 为作业模板级别的库存选择启动时提示-由于我们制作的是特定于环境的工作流而不是作业模板,因此,我们可以在工作流级别提及库存,并在作业模板级别选择启动时提示选项,以允许库存应用于所有具有启动时提示选项的作业模板
  • 编辑剧本以加载这两个变量文件(vault.yml和vars.yml)

  • 您还可以使用在清单中定义的任何变量(不是特殊的ansible变量),并在您的剧本中使用它们,这些剧本的值可以从变量文件中选取。

    您需要查看如何定义凭据,并将这些信息从剧本/作业中移到清单中@Zeitounator的ansible最佳实践指南很有帮助。我自己写了这个问题的答案。
    - hosts: localhost
      vars_files:
        - ./vars/vault.yml
        - ./vars/vars.yml
      gather_facts: no
      no_log: true
      tasks:
         - .....some tasks......