使用cloud init's #cloud-config创建配置文件时,如何使用变量填充值?
在我的特定情况下,我希望自动启动EC2实例作为预先配置的salt助手。Example of salt minion cloud config
假设我想要获取特定的EC2实例id,并将其设置为salt minion的id。
我该如何为每个实例动态设置值呢?
发布于 2014-11-04 22:14:02
在引导命令bootcmd中可以有环境变量$INSTANCE_ID,您可以将其保存以备后用。请参阅http://cloudinit.readthedocs.org/en/latest/topics/examples.html#run-commands-on-first-boot
举个例子,我在下面这样做
#cloud-config
bootcmd:
- echo $INSTANCE_ID > /hello.txt发布于 2021-01-19 23:03:42
我见过的最接近可配置变量的是实例元数据。(https://cloudinit.readthedocs.io/en/latest/topics/instancedata.html#)
它说你可以使用:
在instance creation中提供的
您可以使用在/run/cloud-init/instance-data.json中创建的数据。
您可以使用YAML cloud-config中的Jinja templates导入此instance data,以获取以下数据:
模板: jinja #cloud-config runcmd:- echo‘分配给实例的EC2公共主机名:{{ ds.meta_data.public_hostname }}’> /tmp/instance_metadata - echo 'EC2可用区:{{ v1.availability_zone }}‘>> /tmp/instance_metadata - curl -X POST -d’{“主机名”:"{{ds.meta_data.public_hostname }}",“可用区”:"{{ v1.availability_zone }}"}‘https://example.com
但是我不太确定您是如何创建/run/cloud-init/instance-data.json文件的。
这个CoreOS issue建议,如果您将变量放入/etc/environment中,则可以使用这些变量。
例如,我知道使用了一些变量,如$MIRROR $RELEASE,$INSTANCE_ID用于phone_home模块。
发布于 2013-12-17 03:05:51
尝试使用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-元数据脚本here的更多信息
https://stackoverflow.com/questions/16540730
复制相似问题