![如何更改 Puppet 配置的服务器上的计算机名称](https://linux22.com/image/796203/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9%20Puppet%20%E9%85%8D%E7%BD%AE%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%90%8D%E7%A7%B0.png)
我是 Puppet 新手,我试图让 Puppet 在从 AWS 中的云形成模板启动 EC2 实例后对其进行配置。问题是从云形成模板启动的所有节点都具有相同的名称(新节点从 AMI 派生的名称)。
我很想找到一种方法,让 Puppet 在节点启动时重命名节点。(尽管据我所知,更改计算机名称需要重新启动,这是一个单独的问题……)
如果您能为我指出一些可以帮助我解决这个问题的文档,或者如果您有任何想法,那就太好了。我的最终目标是让每个 EC2 都以唯一的名称启动,以便我可以使用 New Relic 服务器监控来报告不同的服务器。
我最终需要为 Linux 和 Windows Server 2008 R2 实现这一点,但我认为我已经弄清楚了 Linux 方面的问题。
更新:
我与 New Relic 讨论了这个问题,他们确认 New Relic 目前无法使用除机器名称之外的其他名称进行报告。因此,从 New Relic 方面解决问题目前还不是一个选择。
我还想避免在创建机器后更改机器名称,因为我不想在机器启动后重新启动它。
我的理想选择是让 Cloud Formation 能够从 AMI 生成新的 EC2 实例,但在创建过程中使用特定的机器名称(例如将机器名称设置为实例 ID 或其他名称)。
答案1
对于 new relic,您只需更改主机名,因为这是他们使用的标识符。主机名更改不需要重新启动,至少对于 Linux 来说不需要。您可以在 puppet exec 中执行以下操作:
hostname `ifconfig eth0|grep "inet addr"| awk -F ":" '{print $2}'|awk '{print $1}'`
这会将您的主机名设置为 IP 地址,newrelic 可以使用它作为标识符。您也可以更轻松地诊断问题,因为它们将根据机器的 IP 地址显示。
答案2
如果启动 EC2 的 AMI 已配置为在 EC2 配置服务中将计算机名称设置为 ip-,则 EC2 将以唯一名称启动。
看看这个:http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/UsingConfig_WinAMI.html