在AWS OpsWorks(Chef)中更改主机名

时间:2014-08-22 00:49:34

标签: ruby amazon-web-services chef hostname aws-opsworks

在AWS OpsWorks中,我使用了这个社区hostname食谱。设置我的主机名以向其附加域。

原始FQDN: apple-pie.localdomain

node.default["set_fqdn"] = "*.example.com"
include_recipe 'hostname'

对FQDN的更改: apple-pie.localdomain.example.com

但是,大约10分钟后,主机名将返回原始主机名而不会追加我的域名。

我已经检查了OpsWorks生命周期:

  

新实例完成启动后,AWS OpsWorks会执行此操作   以下内容:

     
      
  1. 运行内置的设置配方。

  2.   
  3. 运行任何自定义安装配方。

  4.   
  5. 运行内置的Deploy配方。

  6.   
  7. 运行任何自定义部署配方。

  8.   

我在我的自定义部署配方中运行配方,所以它应该是最后运行的东西。不知道为什么/如何重置为原始主机名。

谢谢!

1 个答案:

答案 0 :(得分:2)

我明白了。您可以假设覆盖AWS提供的Chef中的默认模板。

Extending AWS OpsWorks Configuration Files Using Custom Templates

所以在我的食谱中,我制作了一个名为:

的文件
  

opsworks_stack_state_sync /模板/默认/ hosts.erb

添加文件如下所示:

# This file was generated by OpsWorks
# any manual changes will be removed on the next update.

# Set the hostname with proper format, the rest are aliases.
127.0.0.1 localhost localhost.example.com
127.0.1.1 <%= node[:opsworks][:instance][:hostname] %>.example.com <%= node[:opsworks][:instance][:hostname] %>

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

# OpsWorks Layer State
<% seen = [] -%>
<% node[:opsworks][:layers].each do |layer_name, layer_config| -%>
<% layer_config[:instances].each do |instance_name, instance_config| -%>
<% if !seen.include?(instance_name) && instance_config[:private_ip] -%>
<%= Resolv.getaddress(instance_config[:private_ip]) %> <%= instance_name %>
<% if instance_config[:ip] %>
<%= Resolv.getaddress(instance_config[:ip]) %> <%= instance_name %>-ext
<% end %>
<% seen << instance_name %>
<% end -%>
<% end -%>
<% end -%>

这会将您的主机名设置为 apple-pie.example.com