使用变量时出现ansible剧本语法错误

时间:2019-08-27 09:21:27

标签: ansible

运行剧本时出现语法错误。

  

错误!加载YAML时的语法错误。找不到预期的“-”   指示灯错误似乎在   '/var/lib/awx/projects/_39__common/Hyper-V_Shutdown_VM.yml':第8行   第5列,但取决于确切的位置,可能在文件的其他位置   语法问题。

违规行似乎是:

   - win_shell: |  
    $a = Get-ClusterGroup | Where-Object {$_.Name -like "{{ vm }}" -and $_.State -eq 'Online'}  
    ^ here  

我们可能是错的,但是这似乎与
有关 缺少引号。总是在引用模板表达式括号时引用
开始一个值。例如:

    with_items:  
      - {{ foo }}  
Should be written as:  
    with_items:  
      - "{{ foo }}"   

我的编码........

---
- name: Hyper-V shutdown VM
  hosts: all
  gather_facts: no

  tasks:

      win_shell: |
        $a = Get-ClusterGroup | Where-Object {$_.Name -like "{{ vm }}" -and $_.State -eq 'Online'}
        $b = $a.OwnerNode
        Stop-VM -Name "{{ vm }}" -ComputerName $b

2 个答案:

答案 0 :(得分:1)

模块名称前缺少破折号'-'。正确的语法如下

  tasks:
    - win_shell:

这是错误的原因

  

未找到预期的'-'指示器

答案 1 :(得分:1)

---
- hosts: all
  gather_facts: no
  tasks:
  - name: Hyper-V shutdown VM
    win_shell: |
        $a = Get-ClusterGroup | Where-Object {$_.Name -like "{{ vm }}" -and $_.State -eq 'Online'}
        $b = $a.OwnerNode
        Stop-VM -Name "{{ vm }}" -ComputerName $b