gpt4 book ai didi

amazon-web-services - 无法使用 Troposphere/CloudFormation UserData 设置 ASG 实例主机名

转载 作者:行者123 更新时间:2023-12-03 07:28:40 25 4
gpt4 key购买 nike

这是我的对流层文件的相关部分:

LaunchConfiguration = t.add_resource(LaunchConfiguration(
"LaunchConfigA",
ImageId=UBUNTU_IMG,
SecurityGroups=[Ref(SecurityGroup)],
InstanceType="m3.medium",
UserData=Base64(Join('', [
"#cloud-boothook\n",
"#!/bin/bash\n",
"sudo hostname test\n",
"sudo sh -c 'echo test > /etc/hostname'\n",
"sudo sh -c 'echo 127.0.0.1 test >> /etc/hosts'\n",
"sudo touch /var/log/TESTING\n"
])),
))

AutoScalingGroupA = t.add_resource(AutoScalingGroup(
"GroupA",
AvailabilityZones=GetAZs(Ref(AWS_REGION)),
LaunchConfigurationName=Ref(LaunchConfiguration),
MinSize="1",
DesiredCapacity="2",
MaxSize="2",
))

当我从此模板创建全新的 CloudFormation 堆栈时,实例上的主机名看起来像默认的 ip-172-XXX-XXX-XXX

由于我的 TESTING 文件,我确信脚本正在运行:

atrose@ip-172-31-32-40:~$ ls -la /var/log/TESTING
-rw-r--r-- 1 root root 0 Jul 14 20:10 /var/log/TESTING

如果我手动运行脚本,则主机名已正确设置。就像这样:

atrose@ip-172-31-32-40:~$ hostname
ip-172-31-32-40

atrose@ip-172-31-32-40:~$ sudo cat /var/lib/cloud/instance/user-data.txt
#cloud-boothook
#!/bin/bash
sudo hostname test
sudo sh -c 'echo test > /etc/hostname'
sudo sh -c 'echo 127.0.0.1 test >> /etc/hosts'

atrose@ip-172-31-32-40:~$ sudo bash /var/lib/cloud/instance/user-data.txt

atrose@ip-172-31-32-40:~$ hostname
test

当实例首次启动到 ASG 时,如何在实例上设置主机名?

最佳答案

看起来您正在使用 Ubuntu AMI,这意味着 CloudInit 应该内置一个主机名参数,并且您不需要 shell 脚本来执行您想要的操作。我猜测 cloudinit 本身与您的脚本发生冲突。您应该检查一下:

http://bazaar.launchpad.net/~cloud-init-dev/cloud-init/trunk/view/head:/doc/examples/cloud-config.txt#L540

如果您对如何使用它有任何疑问,请告诉我。谢谢!

关于amazon-web-services - 无法使用 Troposphere/CloudFormation UserData 设置 ASG 实例主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38383482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com