从简短的搜索 - 似乎没有为自动缩放组的成员设置动态主机名的方法。使用index
在OpenStack Heat中存在该功能 - 但我无法通过AWS自动缩放组找到任何相关信息。
例如,使用OpenStack Heat - 根据自动缩放组中的节点数自动为节点指定主机名:
instance_group:
type: OS::Heat::ResourceGroup
properties:
count: { get_param: instance_number }
resource_def:
type: OS::Nova::Server
properties:
name: instance%index%
如果我在自动缩放组中有3个实例,那么会给我以下内容
instance0
instance1
instance2
我可以使用AWS自动缩放组启动配置和/或cloud-init的类似方法吗?
答案 0 :(得分:0)
如果你坚持一些不合理的约定,我找到了一个效果很好的解决方案。
我启动的每种EC2实例,无论是在自动缩放组中是否有这种N服务器,还是它的独立实例,我都会为它创建一个实例配置文件。根据我的经验,这是一个好主意,即使你不需要实例访问任何aws服务,拥有空权限的角色/配置文件也不会受到伤害,这使得它更容易如果需要,可以让它访问s3桶或其他任何东西。
然后在user_data脚本(或配置管理工具,如果您正在使用诸如puppet或ansible之类的东西)的服务器启动时,我从metadata service查询实例配置文件名称并附加每个名称的唯一内容服务器,如私有IP,并将其设置为主机名。
您最终会得到像webserver-10-0-12-58
这样的主机名,这些主机名对于每个服务器都是人类可读且唯一的。
(这与增量整数的不利之处在于它们不可预测,并且不能用于为单个服务器设置唯一行为。例如,如果你有webserver- {0-8并且需要在一个服务器上运行一些进程,你可以使用如hostname == webserver-0然后run_thing的逻辑。)