有条件地在 Ansible 中安装包

Install packages in Ansible conditionally

这是我最终要实现的目标。我想在 AWS 中使用 Foundation->Base->Specialized Base->Application 建立一个分层的 AMI 系统。

我希望将尽可能多的配置烘焙到这些 AMI 中。我用来完成此任务的工具是 Jenkins、Packer 和 Ansible。

我遇到的问题是我希望 ansible 只在为生产设置的实例上安装某些包。我最初以为我可以做这样的事情

{ role: <<package_name>>, when: "{{ lookup('env', 'PROD') }}"  }

但那是在主机而不是 AWS 目标上查找。我试图在这里重新评估我的过程,并想看看是否有人对如何将某些软件包的安装限制在某些机器上有更好的建议。我知道我可以创建一个生产基地和一个非生产基地,但这将使我拥有的所有下游 AMI 翻倍,我正在努力避免这种情况。

根据 documentation{{ ansible_env.SOME_VARIABLE }} 应该可行。