我有一个盐状态文件(方法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程序。
我用一个包含以上所有export和shell命令(方法2)的shell脚本尝试了salt sate文件:
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
这两种方法都是针对同一任务导出值并执行命令。第二种方法按预期工作良好。我不确定为什么第一种方法失败了。有什么想法吗?
答案 0 :(得分:0)
问题是您要依次执行两个cmd.run
,每个都产生一个新的独立shell,因此在第一个中导出的环境变量在第二个中不可用。
它应该与
一起使用execute_cmd:
cmd.run:
- name: PORT=53000 ./test.sh db host user log
- cwd: /tmp
或更好地使用cmd.run doc https://docs.saltstack.com/en/latest/ref/states/all/salt.states.cmd.html#salt.states.cmd.run
中定义的env参数execute_cmd:
cmd.run:
- name: ./test.sh db host user log
- cwd: /tmp
- env:
- PORT: 53000