尝试通过 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'' }}"'
我认为你真的不想为你的
{{
部分添加 }}
--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"