为何SaltStack的test.echo与cmd.run命令输出存在差异?
两条SaltStack命令的区别解析
这两条命令的核心差异在于变量解析时机和执行上下文完全不同:
salt '*' test.echo "$PWD"
这里的$PWD是在**执行salt命令的本地Shell(即Salt Master机器)**中被解析的,解析后会把Master当前的工作目录路径作为参数传给test.echo模块。随后Salt Master将这个已经解析好的字符串发送给所有Minion,Minion只是原样返回该字符串。最终所有Minion返回的都是Master机器上执行命令时的工作目录。salt '*' cmd.run "pwd"
这条命令是把pwd作为原始命令字符串发送给所有Minion,由Minion机器自身的Shell执行该命令。pwd命令会返回Minion进程当前的工作目录(通常是Minion启动时的目录,比如/root或者Minion运行用户的主目录)。最终每个Minion返回的是自己机器上的当前工作目录。
举个实际场景:假设你在Master的/home/yourname目录下执行这两条命令,第一条会让所有Minion返回/home/yourname;第二条则会返回每个Minion各自的pwd输出,比如多数情况下是/root。
内容的提问来源于stack exchange,提问作者mohamad hosein mohaghegh
相关产品推荐
相关产品推荐

