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

问题描述 投票:0回答:1

我在AWX中有一个工作流程,该工作流程可以依次运行多个作业模板。我想使这些Job模板对生产环境和非生产环境都通用。机器凭证是在作业模板级别而不是作业工作流级别给出的,因此只能提供1个机器凭证。我也不想在启动选项时提示您,因为这样会松动调度功能。有什么方法可以使我的Job模板通用(剧本)?哪些可以在具有不同ssh用户名的多台机器上运行?注意:我无权访问AWX服务器。仅UI。我不是系统管理员。

ansible ansible-awx
1个回答
0
投票

这里是为实现此目的而进行的更改-

  1. 制作特定于环境的清单-重要的是不要更改任何其他环境的节点部分的状态,因此有助于避免运行时出现意外情况。 https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#example-one-inventory-per-environment
  2. 移动凭据信息。从剧本到库存]]-您可以设置环境。库存级别的特定变量以及魔术变量。魔术变量是Ansible已知的。例如 -ansible_connection,ansible_user,ansible_ssh_pass。 Ansible知道可以,它必须使用ansible_user,ansible_ssh_pass通过ssh登录到计算机。这样,您不必在AWX作业模板中提及凭据,而可以在模板级别愉快地保留机器凭据选项emptyhttps://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html#magic。这是我在库存级别定义的变量的快照。enter image description here

  3. Variables and Vault

  4. -注意,凭据部分包含值作为变量。显然,我们不想将任何凭据公开为纯文本。因此,重要的是要遵循Ansible最佳实践,让Ansible在未加密的文件中查找变量,并且所有敏感变量都来自加密的文件。 https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#variables-and-vaults。我维护一个变量文件即config文件以及Vault,以便在运行时在Playbook中呈现。您可以创建一个子目录,例如vars,并将清单变量中作为值提及的变量映射到vars / var.yml文件。 vars.yml可以将键定义为-

    ssh_secret_dev:“ {{vault_secret_pass}}”ssh_user_dev:用户名并且加密的Vault文件可以具有最终值-

    vault_secret_pass:very_secret_password

    为什么要跳舞?为什么不只在Vault中定义所有内容并将库存变量与Vault连接?这提供了额外的安全性,您可以在其中映射安全凭证(在可变文件中)和额外机密(在Vault中)。显然,保管库将被加密,因此您需要在作业模板级别提及保管库凭证。作业模板级别的凭证部分将仅包含保管库凭证enter image description here

  1. [在作业模板级别为库存选择启动时提示-由于我们使工作流环境特定于作业模板,因此,我们可以在工作流程级别提及库存,并在作业模板级别选择启动选项提示以允许库存适用于所有具有启动提示功能的作业模板。
  2. 编辑剧本以加载这两个变量文件(vault.yml和vars.yml)。
  3. - hosts: localhost
      vars_files:
        - ./vars/vault.yml
        - ./vars/vars.yml
      gather_facts: no
      no_log: true
      tasks:
         - .....some tasks...... 
    

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

© www.soinside.com 2019 - 2024. All rights reserved.