Как правильно экранировать символы $ и ' при передаче их в ansible shell?
Почитать документацию шелла по кавычкам.

Вкратце:
1. Внутри одинарных кавычек ВСЕ символы теряют свое специальное значение. Включая backslash, поэтому
'STRING1\'STRING2'
  - это не экранированная одинарная кавычка в кавычках, а строка STRING1\ в одинарных кавычках потом STRING2 без кавычек, а потом еще одна открывающая одинарная кавычка, которая незакрыта.
Можно делать так:
'STRING1'\''STRING2'

2. Внутри двойных кавычек, все символы теряют свое специальное значение кроме $, backslash и обратных одинарных кавычек. Примеры:
"${VARIABLE} \${VARIABLE} $(hostname) `hostname`"
значение VARIABLE, строка ${VARIABLE} которая раскроется позже, дважды результат команды hostname вызванный разными способами
Одинарные кавычки удваиваются если снаружи тоже одинарные