Я следил за этим вопросом Как создать многострочный сценарий оболочки в Ansible Однако в моем немного сложном примере это решение не работает.Я пытаюсь заставить этот кусок YAML работать:
- name: "set wifi country code to {{ wifi_country }}"
shell: |
list_wlan_interfaces() {
for dir in /sys/class/net/*/wireless; do
if [ -d "$dir" ]; then
basename "$(dirname "$dir")"
fi
done
}
IFACE="$(list_wlan_interfaces | head -n 1)"
wpa_cli -i "$IFACE" set country {{ wifi_country }}
wpa_cli -i "$IFACE" save_config > /dev/null"
Однако я получаю сообщение об ошибке:
ERROR! failed at splitting arguments, either an unbalanced jinja2 block or quotes: list_wlan_interfaces() {
for dir in /sys/class/net/*/wireless; do
if [ -d "$dir" ]; then
basename "$(dirname "$dir")"
fi
done
}
IFACE="$(list_wlan_interfaces | head -n 1)"
wpa_cli -i "$IFACE" set country {{ wifi_country }}
wpa_cli -i "$IFACE" save_config > /dev/null"
The error appears to have been in 'rpi.yml': line 7, column 5, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
tasks:
- name: "set wifi country code to {{ wifi_country }}"
^ here
We could be wrong, but this one looks like it might be an issue with
missing quotes. Always quote template expression brackets when they
start a value. For instance:
with_items:
- {{ foo }}
Should be written as:
with_items:
- "{{ foo }}"
Как поместить сценарий оболочки, содержащий переменные Jinja, в книгу воспроизведения Ansible?