Как прочитать значение, возвращаемое сценарием PowerShell с ansible - PullRequest
1 голос
/ 12 июля 2020

Я пробую следующий сценарий Powershell:

Function jello-code {
    return "jello"
}

jello-code

В Ansible playbook у меня есть задача, определенная как

- name : run jello script.
  win_shell: C:Projects\scripts\jello.ps1
  args:
    chdir:  C:Projects\scripts
  register : script_return
- debug : msg = {{script_return.stdout}}

В настоящее время значение, отображаемое задачей отладки, равно

ok: [clientmachine.com] => {
    "msg": "Hello world!"
}

Я всегда получаю одно и то же «Hello world!» сообщение.

Моя цель - выполнять другие задачи на основе значения, возвращаемого скриптом Powershell.

1 Ответ

2 голосов
/ 12 июля 2020

Это происходит потому, что сообщение по умолчанию модуля debug - Hello world!, вы можете обратиться к документации по умолчанию для параметра msg.

И потому что ваш Синтаксис YAML является фиктивным, тогда ваша задача debug выводит значение по умолчанию.

Хорошей рекомендацией будет избегать смешивания синтаксиса YAML и старого key=value синтаксиса. Рабочим примером этого может быть:

- name: run jello script.
  win_shell: C:Projects\scripts\jello.ps1
  args:
    chdir:  C:Projects\scripts
  register: script_return
- debug: 
    msg: "{{ script_return.stdout }}"

Если вы настаиваете на использовании другого синтаксиса, обратите внимание, что ваша проблема исходит из места, которое вы поместили вокруг своего знака равенства.

Вот различные варианты поведения с пробелами и без них:

  • - debug: msg={{script_return.stdout}}
    
    является правильным,
    "msg": "jello"
    
  • - debug: msg = {{script_return.stdout}}
    
    является фиктивным и печатает
    "msg": "Hello world!"
    
  • - debug: msg ={{script_return.stdout}}
    
    является подделкой и печатает
    "msg": "Hello world!"
    
  • - debug: msg= {{script_return.stdout}}
    
    поддельным и печатает
    "msg": ""
    

Короче говоря, в этом синтаксисе не добавляйте пробелы вокруг знака равенства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...