有没有办法覆盖定义为ansible galaxy角色的模板?

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

我正在尝试使用ansible建立服务器,我想使用this galaxy role

它定义了一个我想定制的template,但我不知道如何。

现在我将角色定义为requirements.yml,我使用以下方法安装它:

ansible-galaxy install -r requirements.yml

它在我的系统上的某个地方安装了角色。

我尝试将文件夹树重新创建到我存储我的playbooks的存储库中:

roles
  |- ansible-role-passenger
     |- templates
        |- passenger.j2

但它不起作用。当我运行我的剧本时,ansible使用了galaxy角色里面的passenger.j2文件。

我想我可以在github上分叉galaxy角色,只是像我想的那样编辑文件passenger.j2,但我不知道这是否有“更好”的方法来做到这一点:)

ansible ansible-template ansible-galaxy
1个回答
3
投票

不幸的是,您的发现是正确的。除非角色的作者将其作为一个特征实现,否则覆盖来自调用playbook的角色中的硬编码模板是不可能的。

到目前为止我找到的最好的方法:假设角色包含templates/passenger.j2中的默认模板,在default/main.yml中添加一个变量,例如passenger_config_template: passenger.j2,并在角色中使用该变量。然后,用户可以覆盖其playbook / inventory中的var,并为模板使用不同的名称,该名称将以其他角色获取,或直接在playbook级别的templates目录中获取。

你可以看看我曾经在他的ansible-role-gitlab上给@geerlingguy做过的similar issuean accepted PR。他可能会考虑对他的乘客角色做同样的事情(或者如果你建议的话可能接受你的PR)。

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