我正在使用ansible -a命令在我的库存上执行一些tastsk(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
但它不起作用。如何在命令中包含特殊字符?
谢谢。
答案 0 :(得分:3)
您当前的命令嵌套了双引号。
您可以在外面使用单引号:
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
如果您使用sudo
-b
也是多余的