使用Ansible自动配置AWS自动缩放组实例

frn*_*sys 6 deployment amazon-web-services aws-cloudformation autoscaling ansible

我正在使用Amazon Web Services在Elastic Load Balancer后面创建一个自动缩放的应用程序实例组.我正在使用CloudFormation模板来创建自动扩展组+负载均衡器,并且一直使用Ansible来配置其他实例.

我无法解决如何设计问题,以便在新的自动调节实例出现时,它们可以由Ansible自动配置(也就是说,我无需找到新实例的主机名并为其运行Ansible).我查看了Ansible的ansible-pull功能,但我不太清楚我是否理解如何使用它.它需要一个中央git存储库,它可以处理,但是你如何处理你不想提交的敏感信息?

此外,我使用Ansible与AWS的当前方式是使用CloudFormation模板创建堆栈,然后我将主机名作为堆栈的输出,然后为Ansible生成要使用的主机文件.这感觉不太对 - 这是"最佳实践"吗?

Ric*_*ico 7

是的,另一种方法是在实例启动后在本地运行您的Playbooks.例如,您可以在rc.local文件(Linux)调用中为部署创建EC2 AMI ansible-playbook -i <inventory-only-with-localhost-file> <your-playbook>.yml.rc.local几乎是启动时运行的最后一个脚本.

您可以将这些敏感信息存储在您的EC2 AMI中,但这是一个非常广泛的主题,实际上取决于它是什么类型的敏感信息.(您还可以使用私有git存储库来存储敏感数据).

例如,如果您的剧本定期更新,您可以在AMI中创建一个经常运行的cron条目,并实际运行您的剧本以确保您的实例配置始终是最新的.从而避免从远程工作站"推".

这只是一种可能有许多其他方法,它取决于您运行的服务类型,您使用的数据类型等.