首页 > 解决方案 > 如何设置剧本以在从引擎运行时使用保险库,并在从 Tower/AWX 运行时跳过保险库

问题描述

我找不到涵盖此特定主题的文档或问答。我将它与答案一起发布在这里,希望有人觉得它有用。我是一小群自动化工程师中的一员。一项任务是在 Tower 中为其他工程师和管理员提供自动化。

自动化团队对我们当前的设置感到满意,它允许我们从命令行运行游戏而无需锁定我们的帐户,无需每次都输入密码,也无需以纯文本形式存储密码:

处于作业隔离模式的 Tower 无法访问主目录。而且我们不希望 Vault+key 在管理员的主文件夹之外,受到随机窥探。Tower 有自己的保险库系统,我们在使用 Tower 时会使用它。我们希望保持我们当前的命令行运行方法,但能够在 Tower 和 Engine 中使用相同的剧本。

我试过了:

标签: ansibleansible-awxansible-tower

解决方案


我发现有效的方法:

  • skip-tags做我需要做的事
  • 了解include_vars (这是一个可以标记的任务模块)
  • 了解pre_tasks (因为我们在保险库中包含了成为凭据,因此永远不会执行常规任务,因为“没有 SUDO 凭据”会阻止任务运行)

所以:

pre_tasks:
- include_vars: ~/.ansible/vault.yml
  tags: engine

并且,在 Tower 中,将作业模板设置为skip-tags: engine

现在,同样的剧本在塔内或塔外都有效。使用最少的身份验证。没有明文密码。


推荐阅读