【问题标题】:Programmatically change hostname of a newly created AWS instance以编程方式更改新创建的 AWS 实例的主机名
【发布时间】:2016-08-31 15:51:50
【问题描述】:

我能够使用 AWS Java SDK 创建一个 EC2 实例(Amazon Linux):

RunInstancesRequest runInstancesRequest = new RunInstancesRequest()
                .withInstanceType(InstanceType.valueOf("T2Micro"))
                .withImageId("ami-12345abc")
                .withMinCount(1)
                .withMaxCount(1)
                .withSecurityGroupIds("some-group")
                .withKeyName("my-key")

RunInstancesResult runInstancesResult = ec2.runInstances(runInstancesRequest);

现在我希望以编程方式更改由此创建的服务器的hostname。手动可以通过这个AWS documentation。我想自动化这个,所以我尝试使用user data shell scripts 作为:

RunInstancesRequest runInstancesRequest = new RunInstancesRequest()
                .withInstanceType(InstanceType.valueOf("T2Micro"))
                ......
                .withUserData(getUserDataScript());
RunInstancesResult runInstancesResult = ec2.runInstances(runInstancesRequest);

private static String getUserDataScript() {
        String str = "#!/bin/bash\n" +
                     "sudo sed -i -e 's/[before]/after/' /etc/sysconfig/network\n" + 
                     "sudo init 6";
        return Base64.getEncoder().encodeToString(str.getBytes());
}

现在的问题是我无法再登录到这样创建的实例。只是给出一个简单的connection refused 错误。检查了密钥和每个细节 - 如果我不提供用户数据脚本,我可以登录。

我是否正确更改了主机名?有没有其他方法可以自动执行此操作?

【问题讨论】:

  • 更新:现在我可以登录,但大约需要 15 分钟 - 在我的程序中创建实例时,我等待的值太高了

标签: linux amazon-web-services amazon-ec2 aws-sdk


【解决方案1】:

当您运行sudo init 6 时,您会重新启动,这可能需要一些时间,这就是您无法立即登录的原因;

您可以尝试运行hostname 命令以直接使用新主机名,这样脚本将类似于

    String str = "#!/bin/bash\n" +
                 "sudo sed -i -e 's/[before]/new_hostname/' /etc/sysconfig/network\n" + 
                 "sudo echo 'new_hostname' >> /etc/hostname" +
                 "sudo hostname new_hostname"; 

注意:我没有对此进行全面测试,但我希望它应该在不重新启动的情况下使用 new_hostname,因此它应该允许您连接 - 根据您的 linux 发行版的风格,它可能会有所不同,我建议您首先正常登录实例并运行命令以确保 ti 在您的 linux 发行版上工作

【讨论】:

  • 不错的建议,但遗憾的是它在没有重启的情况下无法在 Amazon Linux 上运行
猜你喜欢
  • 2016-01-06
  • 2021-04-16
  • 1970-01-01
  • 2014-05-28
  • 2010-12-16
  • 2017-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多