为什么盐导出和命令执行不会发生?

问题描述 投票:0回答:1

我有一个salt状态文件(方法1):

export_port:
  cmd.run:
    - name: export PORT=53000
    - cwd: /tmp
execute_cmd:
  cmd.run:
    - name: ./test.sh db host user log
    - cwd: /tmp

执行作业时,状态文件将返回错误,指出未安装psql程序。

我尝试使用shell脚本的salt sate文件,该脚本具有上面的所有export和shell命令(方法2):

script:
  cmd.script:
    - name: /tmp/test.sh
    - source: /source/dir/test.sh
    - cwd: /tmp

shell脚本有:

#! /bin/sh
export PORT=53000
./test.sh db host user log

这两种方法都用于导出值和执行命令的相同任务。第二种方法可以正常工作。我不确定为什么第一种方法失败了。有什么想法吗?

salt-stack
1个回答
0
投票

问题是你按顺序执行两个cmd.run,每个execute_cmd: cmd.run: - name: PORT=53000 ./test.sh db host user log - cwd: /tmp 产生一个新的独立shell,因此在第一个中导出的环境变量在第二个中不可用。

它应该合作

https://docs.saltstack.com/en/latest/ref/states/all/salt.states.cmd.html#salt.states.cmd.run

或者更好地使用cmd.run doc execute_cmd: cmd.run: - name: ./test.sh db host user log - cwd: /tmp - env: - PORT: 53000 中定义的env参数

qazxswpoi
© www.soinside.com 2019 - 2024. All rights reserved.