首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用ansible运行服务时使用系统范围的环境变量

使用ansible运行服务时使用系统范围的环境变量
EN

Stack Overflow用户
提问于 2019-06-03 22:19:14
回答 1查看 937关注 0票数 1

我想使用ansible来部署一个配置,作为最后一步,(重新)启动一个服务。该服务需要在我的主机(存储剧本的主机)中定义的环境变量。为了将这些env var传递给我的目标机器,我尝试通过执行以下操作向ansible service指令添加environment参数:

代码语言:javascript
复制
  - name: start service
    service:
      name: my_service
      state: restarted
    environment:
      OAUTH2_AUTHORIZE_URL: "{{ lookup('env','OAUTH2_AUTHORIZE_URL') }}"
      OAUTH2_TOKEN_URL: "{{ lookup('env','OAUTH2_TOKEN_URL') }}"
      CLIENT_SECRET: "{{ lookup('env','CLIENT_SECRET') }}"

然而,这是失败的,因为这些变量在服务启动时是未知的。我能找到的解决这个问题的唯一方法是通过执行以下操作来修改我的剧本:

代码语言:javascript
复制
  - name: set some env vars systemctl
    shell: |
      systemctl import-environment OAUTH2_AUTHORIZE_URL OAUTH2_TOKEN_URL CLIENT_SECRET
    args:
      executable: /bin/bash
    environment:
      OAUTH2_AUTHORIZE_URL: "{{ lookup('env','OAUTH2_AUTHORIZE_URL') }}"
      OAUTH2_TOKEN_URL: "{{ lookup('env','OAUTH2_TOKEN_URL') }}"
      CLIENT_SECRET: "{{ lookup('env','CLIENT_SECRET') }}"

  - name: start my service
    service:
      name: my_service
      state: restarted

这是继续下去的正确方式吗?

注:作为ansible的新手,我没有玩过role的东西,现在我想远离它。

系统配置文件:

代码语言:javascript
复制
[Unit]
Description=my_service
After=syslog.target network.target

[Service]
Environment="PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
ExecStart=/bin/bash /root/start_myservice.sh

[Install]
WantedBy=multi-user.target

要运行的服务:

代码语言:javascript
复制
#/bin/bash

echo "${CLIENT_SECRET}"
echo "${OAUTH2_AUTHORIZE_URL}"
echo "${OAUTH2_TOKEN_URL}"
EN

回答 1

Stack Overflow用户

发布于 2019-06-04 03:15:06

在systemd服务单元中,您可以使用EnvironmentFile指令以比使用Environment更方便的方式传递环境变量。如果需要,它还允许在服务之间共享变量。

您可以使用ansible通过简单的copytemplate安装包含环境变量的文件,例如在/etc/<service>/environment中。

这样您就不需要在每次部署时都设置这些变量。仅在您第一次设置服务以及需要更改这些设置时使用一次。

另外,据我所知,使用import-environment意味着systemd会将您导入的变量传递给所有单元,这可能不是您想要的。尤其是对于CLIENT_SECRET one。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56429231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档