我想分发一些ansible部署脚本,其中客户只需要描述他们的基础架构并将一些重要的值放入库存文件中。有时,单个角色可能需要多次应用于单个主机。为了防止客户不得不对剧本本身进行修改,我希望他们能够描述类似于以下内容的基础设施:
inventory_file
[servers:children]
servers-a
servers-b
[servers-a]
host1 server_port=1337
[servers-b]
host1 server_port=1335
playbook.yml :
---
- name: Set up Servers
hosts: servers
roles:
- role: server_setup
我知道某个角色的 allow_duplicates 元值,并且已为示例'服务器'角色。看来这个角色只会在上面的剧本和后者定义的变量中应用一次。
我知道一种解决方案,即为主机创建其他主机名别名。
有人熟悉更好的解决方案吗?
答案 0 :(得分:1)
如果我理解正确,有时<
值应为server_port
或1335
。
我不建议以这种方式创建库存,因为它具有误导性。
如果服务器端口的值始终为1337
或1335
,我会在1337
下的server_setup
中配置默认值:
defaults\main.yml
如果要配置任何其他值,可以按如下方式执行剧本:
# server_setup\defaults\main.yml
server_port: 1335
在这种情况下,客户可以根据需要多次运行剧本。