Ansible shell 命令 -a 带有特殊字符 "

Ansible shell command -a with special characters "

我正在使用 ansible -a 命令在我的清单上执行一些任务(df -h,检查文件夹...)。但是现在,我需要在所有主机上创建一个用户。

我正在使用以下命令:

ansible -i [INVENTORYNAME].inventory allservers -m shell -a "sudo useradd -c "Name & lastname" [USERNAME]" >> [FILE].txt --extra-vars "ansible_sudo_pass=[MYPASS]" -b

但它不起作用。如何在命令中包含特殊字符?

谢谢。

您当前的命令包含嵌套双引号。

你可以在外面使用单引号:

ansible -i inventory all -m shell -a 'sudo useradd -c "Name & lastname" [USERNAME]' >> [FILE].txt --extra-vars "ansible_sudo_pass=[MYPASS]" -b

或者转义里面的双引号:

ansible -i inventory all -m shell -a "sudo useradd -c \"Name & lastname\" [USERNAME]" >> [FILE].txt --extra-vars "ansible_sudo_pass=[MYPASS]" -b

第二个选项将允许您包含来自执行 Ansible 命令的机器(您的 PC)的环境变量。

作为旁注,我强烈建议使用 user module
如果使用 -b

sudo 也是多余的