Amazon ec2 可以在云配置中使用变量吗
使用#cloud config创建配置文件时,我将如何使用变量填充值 在我的特定情况下,我希望将EC2实例自动启动为预配置的salt仆从 假设我想获得特定的EC2实例id,并将其设置为salt仆从的id 如何为每个实例动态设置值?试试ec2metadata工具(只需查询EC2元数据)。假设将以下内容放入实例userdata中:Amazon ec2 可以在云配置中使用变量吗,amazon-ec2,boto,cloud-init,salt-stack,Amazon Ec2,Boto,Cloud Init,Salt Stack,使用#cloud config创建配置文件时,我将如何使用变量填充值 在我的特定情况下,我希望将EC2实例自动启动为预配置的salt仆从 假设我想获得特定的EC2实例id,并将其设置为salt仆从的id 如何为每个实例动态设置值?试试ec2metadata工具(只需查询EC2元数据)。假设将以下内容放入实例userdata中: wget http://s3.amazonaws.com/ec2metadata/ec2-metadata chmod u+x ec2-metadata # The fo
wget http://s3.amazonaws.com/ec2metadata/ec2-metadata
chmod u+x ec2-metadata
# The following gives you the instance id and you can pass it to your salt minion config
ec2-metadata -i
有关ec2元数据脚本的更多信息,请参见boot命令中的bootcmd
bootcmd
可以包含环境变量$INSTANCE\u ID
,您可以将其保存以供以后使用。看
例如,我确实喜欢下面的内容
#cloud-config
bootcmd:
- echo $INSTANCE_ID > /hello.txt
我见过的最接近可配置变量的是[实例元数据]。() 它说你可以使用:
- 实例创建时提供的用户数据
/run/cloud init/instance data.json
中创建的数据
您可以在YAML cloud配置中使用import this来导入此数据:
##模板:jinja
#云配置
runcmd:
-echo“EC2公用主机名分配给实例:{{
ds.meta_data.public_hostname}>/tmp/instance_metadata
-echo'EC2可用性区域:{{v1.availability_zone}}}>>
/tmp/instance\u元数据
-curl-X POST-d'{“hostname”:“{ds.meta_data.public_hostname}”,
“可用性区域”:“{v1.availability_zone}}”
https://example.com
但我不确定如何创建/run/cloud init/instance data.json
文件
这表明,如果将变量放入/etc/environment
中,则可以使用这些变量
例如,我知道有一些变量用于phone_home模块,如$MIRROR
$RELEASE
,$INSTANCE_ID