我有一个相当简单的ansible adhoc命令,使用shell来运行chfn:
ansible all -i ./inventory/all -s -K -m shell -a 'chfn -f "$HOSTNAME root" root'
chfn需要双引号,我尝试了几种不同的方法来转义它们,但都没有成功。我尝试用双引号和单引号将shell命令括起来,并使用/转义双引号,也尝试使用单引号。运行 chfn -f "$HOSTNAME root" root 运行得很好,但我不知道如何让ansible以这种方式运行它。(我知道这是一种选择,但如果可能的话,我不想把它转换成shell脚本,并通过ansible运行它)
chfn -f "$HOSTNAME root" root
发布于 2018-10-23 20:49:06
当您有嵌套的引号时,如下面的示例所示,您可以通过使用另一个单引号转义 来对单引号 进行 转义。
使周围的引号为单引号“,这样您就不需要转义双引号了”,您可以使用另一个单引号来转义命令中的单引号,如'‘
- name: Notify on slack command: 'curl -X POST -H ''Content-type: application/json'' --data ''{"text":"{{inventory_hostname}} has been updated"}'' https://hooks.slack.com/services/XXXX/YYY/ZZZ' when: inventory_hostname == 'host1.de' or inventory_hostname == 'host.de' delegate_to: localhost
发布于 2018-01-10 01:51:09
ansible在即席命令中对此很棘手。如果你想按原样传递它,你必须转义引号。下面是一些例子:
ansible localhost -a 'echo \"$HOSTNAME\"'