我有一个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
这两种方法都用于导出值和执行命令的相同任务。第二种方法可以正常工作。我不确定为什么第一种方法失败了。有什么想法吗?
问题是你按顺序执行两个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