Как использовать "идентификатор экземпляра" в cloud-config.yml на CoreOS на EC2?


У меня есть экземпляры CoreOS на Amazon EC2.

Есть некоторые предопределенные переменные, доступные из cloud-config.yml, такие как" $private_ipv4 "или"$public_ipv4".

Есть ли способ получить доступ к "ID экземпляра" экземпляров EC2, таких как"$instance_id"? (Я пробовал "$instance_id " и "$INSTANCE_ID", но ни один из них не возымел действия)

1 2

1 ответ:

Эта переменная не встроена, но вы можете сделать одну из двух вещей:

  1. сверните службу метаданных для этого значения напрямую:

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

  1. пусть модуль "oneshot" запишет результат этого скручивания в файл, а затем отправит этот файл в свои модули, как вы можете сделать это для информации об окружающей среде.

Единица oneshot будет записываться INSTANCE_ID=abc123 в /etc/instance-id, и Ваша регулярная единица будет зависеть от oneshot (Requires=instanceid.service/After=instanceid.service) содержит EnvironmentFile=/etc/instance-id, который сделал бы $INSTANCE_ID доступно для использования в единице измерения.

Дополнительные документы, используя env vars в единицах: https://coreos.com/os/docs/latest/using-environment-variables-in-systemd-units.html#environmentfile-directive