mat*_*ttm 1 curl amazon-web-services systemd
我使用的是亚马逊网络服务的服务器,并正在试图建立一个systemd作业需要作为输入AWS外部IP检索的curl
。
[Unit]
Description=My example with AWS external IP
Wants=network-online.target
After=network-online.target
[Service]
Type=forking
Environment=EXTERNAL_IP=$(/usr/bin/curl http://169.254.169.254/latest/meta-data/public-ipv4)
ExecStart=/path/to/myexample $EXTERNAL_IP
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
验证工具systemd-analyze verify myexample.service
表明curl
环境分配存在问题。
Invalid environment assignment, ignoring: EXTERNAL_IP=$(/usr/bin/curl http://169.254.169.254/latest/meta-data/public-ipv4)
如果我用curl
硬编码的 IP 字符串替换结果,我的守护进程就会启动。如何curl
在我的 systemd 作业中使用结果?
(首先,我假设您使用的是coturn或其前身之一。)
首先,systemd 单元不是 shell 脚本,也不会被 shell 解析。这就是为什么您不能只调用命令并将其输出用作环境变量的原因。
但是,您可以从调用 shellExecStart=
,这可能是启动和运行的最快方式。
Type=simple
ExecStart=/bin/bash -c '/usr/local/bin/turnserver -X $(/usr/bin/curl http://169.254.169.254/latest/meta-data/public-ipv4)'
Run Code Online (Sandbox Code Playgroud)
(在此配置,你应该不带守护进程turnserver -o
。)
您还可以编写一个脚本,您可以从中调用该脚本,该脚本ExecStartPre=
获取您的元数据,然后更改 turnserver.conf
,这将在守护程序启动之前发生。
归档时间: |
|
查看次数: |
1792 次 |
最近记录: |