在Ansible ad-hoc中运行sub shell命令

ton*_*o94 4 bash ansible

我想在临时Ansible命令中运行一个sub shell命令。

这是我想做的:

sudo ansible myservers -m shell -a "touch /var/tmp/$(uname -n)"
Run Code Online (Sandbox Code Playgroud)

它创建远程文件,但是使用本地主机的名称,它不会在远程服务器上执行uname命令。

ton*_*o94 8

我找到了解决方案:

sudo ansible myservers -m shell -a '/bin/bash -c "toto=`uname -n` ; touch /var/tmp/\$toto.json;"'
Run Code Online (Sandbox Code Playgroud)

似乎我必须启动一个Shell才能执行子Shell命令,但是它可以工作。