运行 sed 命令时出现 Ansible 问题

问题描述 投票:0回答:1

尝试通过 Ansible 和 Azure cli 命令在 Azure VM 中运行命令,但出现模板问题

- name: Disable disk expansion   
   shell: |     az vm run-command invoke -g {{ resource_group_name }} -n {{ instance_name }} --command-id RunShellScript --scripts "{{ 'sed -i \'/gp/s/\^/#/g\' /etc/config.cfg' }}"

错误

azure-arm.teracloud-azure-arm:msg:'模板化时出现模板错误 字符串:142处出现意外的字符“\”。字符串:az vm run-command 调用 -g {{ 资源组名称 }} -n {{ 实例名称 }} --command-id RunShellScript --scripts "{{ ''sed -i \''/gp/s/\^/#/g\'' /etc/config.cfg'' }}"'

ansible ansible-2.x
1个回答
0
投票

我认为你真的不想为你的

{{
部分添加
}}
--scripts
,因为这会让 Jinja 将其解释为要替换的变量。另外,您应用于
sed
命令的“逃避疯狂”是不必要的,只要像
--scripts "sed -i '/gp/s/^/#/g' /etc/config.cfg"
那样就足够了:

- name: Disable disk expansion
  shell: |
    az vm run-command invoke -g {{ resource_group_name }} -n {{ instance_name }} --command-id RunShellScript --scripts "sed -i '/gp/s/^/#/g' /etc/config.cfg"
© www.soinside.com 2019 - 2024. All rights reserved.