【问题标题】:How to run command before service starts up with saltstack如何在使用 saltstack 启动服务之前运行命令
【发布时间】:2019-09-09 21:22:35
【问题描述】:

我正在使用 saltstack 在 centos7 机器上启动 arangodb 实例。我想用自定义密码启动它,所以我想在机器上安装 arangodb 3.5 rpm 之后但在它启动之前运行ARANGODB_DEFAULT_ROOT_PASSWORD=<my password> arango-secure-installation,因为你只能在它不运行时设置密码。我不确定如何使用 salt stack 准确地做到这一点,但我认为它与 cmd.run salt 函数有关。

这是我的安装/启动 salt 代码:

arangodb_3_server:
  pkg.latest:
    - refresh: True
    - pkgs:
      - arangodb3
    cmd.run:
      - name: "ARANGODB_DEFAULT_ROOT_PASSWORD={{ arangodb.get('ARANGO_ROOT_PASSWORD', '') }} arango-secure-installation"
  service.running:
    - name: arangodb3
    - enable: True
    - watch:
      - file: /etc/arangodb3/arangod.conf

所以我想知道我基本上可以把安全安装命令放在某个地方来完成这个吗?根据我的尝试,我只收到了编译错误,或者没有设置密码。

【问题讨论】:

    标签: arangodb salt-stack


    【解决方案1】:

    在 Ubuntu 中,我使用 policy-rc.d 返回一个非零代码。我没有找到 CentOS 的替代解决方案。您可以在安装后使用 service.dead 停止服务,然后使用 cmd.run 运行您的命令,然后通过 service.running 启动服务

    【讨论】:

    • 我的 2 美分:这可行,但不是幂等的。该服务将按原样停止。您可能想要使用某种类型的必备项。
    • @pier 你是对的。也许我们可以用谷物来处理这个问题。如果我们在第一次之后添加颗粒并检查颗粒是否存在,请跳过重新启动部分。
    猜你喜欢
    • 2014-12-16
    • 2016-09-24
    • 1970-01-01
    • 2017-10-15
    • 2018-01-14
    • 2015-03-18
    • 2021-06-30
    • 1970-01-01
    • 2015-08-26
    相关资源
    最近更新 更多