如何在 EC2 上的 CoreOS 上使用 "Instance ID" in cloud-config.yml?

How to use "Instance ID" in cloud-config.yml on CoreOS on EC2?

我在 Amazon EC2 上有 CoreOS 实例。

有一些预定义的变量可从云端访问-config.yml,例如“$private_ipv4”或“$public_ipv4”。

有没有办法访问 "Instance ID" 个 EC2 实例,如“$instance_id”? (我试过"$instance_id"和"$INSTANCE_ID"都没有生效)

该变量不是内置的,但您可以执行以下两项操作之一:

  1. 直接为该值卷曲元数据服务:

curl http://169.254.169.254/latest/meta-data/instance-id

  1. 有一个 "oneshot" 单元将 curl 的结果写到一个文件中,然后在你的单元中获取该文件,就像你可以获取环境信息一样。

oneshot 单元将 INSTANCE_ID=abc123 写入 /etc/instance-id,而您的常规单元将取决于 oneshot (Requires=instanceid.service/After=instanceid.service) 包含 EnvironmentFile=/etc/instance-id ,这将使 $INSTANCE_ID 可用于一个单元。

有关在单位中使用环境变量的更多文档:https://coreos.com/os/docs/latest/using-environment-variables-in-systemd-units.html#environmentfile-directive