Ansible中带Jinja变量的多行shell脚本

Ansible中带Jinja变量的多行shell脚本,shell,ansible,jinja2,Shell,Ansible,Jinja2,我一直在关注这个问题,但是,这个解决方案在我的有点复杂的示例中不起作用。我正在努力使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 "$(dirnam

我一直在关注这个问题,但是,这个解决方案在我的有点复杂的示例中不起作用。我正在努力使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 }}"    

如何在Ansible playbook中放置包含Jinja变量的shell脚本

这是一条非常容易误导的错误消息,但您的问题实际上是
/dev/null“

末尾的双引号这是一条非常容易误导的错误消息,但您的问题实际上是
/dev/null”

末尾的双引号表明YAML很好,因此您无需做任何事情来让它工作。问题在于对YAML之外的标量的解释:平衡双引号(提示:查看块样式文字标量的最后一行)YAML是好的,因此不需要做任何事情就可以让它工作。问题在于在YAML之外对标量的解释:平衡双引号(提示:查看块样式文字标量的最后一行)