Systemd:在 Flatcar OS 中使用“%H”单元文件参数获取主机名时出现问题

Systemd:在 Flatcar OS 中使用“%H”单元文件参数获取主机名时出现问题

我正在尝试使用 systemd 单元文件执行 logspout 容器。理想情况下,logspout 容器应获取 EC2 实例主机名的环境值,SYSLOG_HOSTNAME但它获取的是 localhost 作为主机名。

        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,但效果不太好。

答案1

用双引号将 %H 括起来。%H -> "%H" 请参阅此处的原始文档https://www.freedesktop.org/software/systemd/man/systemd.unit.html

答案2

我通过创建如下所示的 systemd 单元服务来实现此目的,该服务主要负责从 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}'

相关内容