使用 Chef 基于集群的配置

Cluster based config using Chef

我正在使用 cloudformation 模板设置 consul 3 节点集群。我能够使用 chef-solo 自动安装 cluser,但无法找到使用集群 ip 更新 server.json 文件的方法,因为这些是动态创建的。有人遇到过这种情况吗?

在跨 3 个可用区启动 3 个节点后,userdata 将调用 chef-solo 来安装 consul,直到我能够自动化为止。

我正在寻找可以自动化 /etc/consul.d/server/json 文件的想法:

"retry_join": [ "10.x.x.x:8301",  "10.x.x.x:8301", "10.x.x.x:8301" ]

目前我已经对 ip 进行了硬编码,但是如何在启动 aws 堆栈时动态提取 IP?

通常的 AWS-y 方法是从每个节点查询 EC2 API 以查找所有其他节点,通常使用标签,但其他元数据也可以。您可以使用 IAM 实例配置文件安全地授予计算机有限的 API 访问权限。