2

我在 Amazon EC2 上有 CoreOS 实例。

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

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

4

1 回答 1

3

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

  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) contains EnvironmentFile=/etc/instance-id,这将使 $INSTANCE_ID 在单元中可用。

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

于 2015-08-20T19:29:26.613 回答