Назад | Перейти на главную страницу

Systemd: проблема при получении имени хоста с параметром файла модуля «% H» в ОС Flatcar

Я пытаюсь запустить контейнер 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}'