Как передать массив аргументов в расширение Azure VM PowerShell из ANSIBLE PlayBook? - PullRequest
0 голосов
/ 02 ноября 2019

Я пытаюсь передать аргументы массива типа "string" из ansible playbook в сценарий powershell, который необходимо запускать как расширение vm для виртуальной машины, работающей в облаке Azure. Ниже приведен код ansible playbook

  - name: Create VM extension
    azure_rm_virtualmachine_extension:
       name: "Extension"
       location: "{{ var_location  }}"
       resource_group: "{{ var_ResourceGroup }}"
       virtual_machine_name: "{{ var_vmname }}"
       publisher: Microsoft.Compute
       state: present
       virtual_machine_extension_type: CustomScriptExtension
       type_handler_version: "1.9"
       auto_upgrade_minor_version: true
       settings: '{"fileUris": ["{{ var_powershellscriptUrl }}"]}'
       protected_settings: '{"commandToExecute": "[powershell -ExecutionPolicy Unrestricted -File {{PowershellUserScriptFileName }} -arg1 {{ Arrayofstring1 }} -arg2 {{ Arrayofstring2 }} -arg3 {{ Arrayofstring3 }} ]"}'
    ignore_errors: true

Вывод приведенного ниже кода

- debug:
   msg: {{ Arrayofstring1 }} 

   is    \"VM1\", \"VM2\", \"VM3\"

Ошибка, возникающая при выполнении playbook:

"msg": "аргумент protected_settings имеет тип типа 'str', и мы не смоглипреобразовать в dict: невозможно оценить строку как словарь "}

Вопрос в том, как передать массив этих параметров в код powershell из ansible?

1 Ответ

0 голосов
/ 04 ноября 2019

Исходя из исходного кода , кажется, что независимо от того, что показано в документации, они действительно хотят, чтобы dict появился в этом параметре, поэтому попробуйте предоставить эту структуру данных и посмотреть, улучшится ли ситуация

- name: Create VM extension
  azure_rm_virtualmachineextension:
    protected_settings:
      commandToExecute: "powershell -ExecutionPolicy Unrestricted -File {{PowershellUserScriptFileName }} -arg1 {{ Arrayofstring1 }} -arg2 {{ Arrayofstring2 }} -arg3 {{ Arrayofstring3 }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...