Amazon ec2 可以在云配置中使用变量吗

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

使用#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 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