Я пытаюсь запустить контейнер logspout с файлом модуля systemd. В идеале контейнер logspout должен иметь значение среды SYSLOG_HOSTNAME
как имя хоста экземпляра EC2, но он получает локальный хост как имя хоста.
After=systemd-hostnamed.service
ExecStart=/usr/bin/docker run --name logspout --hostname logspout \
--env SYSLOG_HOSTNAME=%H \
--env SYSLOG_TAG=latest \
--env INACTIVITY_TIMEOUT=1m \
gliderlabs/logspout:latest
Я также пробовал запустить эту службу после systemd-hostnamed.service
но это не сработало.
Я сделал это, создав службу systemd unit, как показано ниже, которая в основном отвечает за получение имени хоста из службы метаданных ec2.
systemd:
units:
- name: metadata.service
contents: |
[Unit]
Description=EC2 metadata agent
Requires=docker.socket
After=docker.socket
[Service]
Type=oneshot
Environment=OUTPUT=/run/metadata/ec2
ExecStart=/usr/bin/mkdir --parent /run/metadata
ExecStart=/usr/bin/bash -c 'echo "CUSTOM_EC2_IPV4_LOCAL=$(curl\
--silent --url http://169.254.169.254/2009-04-04/meta-data/local-ipv4\
--retry 10)" > $${OUTPUT}'