az vm параметры команды запуска в ключе = ссылка на формат значения? - PullRequest
0 голосов
/ 08 октября 2018

Я запускаю эту команду:

az vm  run-command invoke -g my-group --name my-vm  --command-id RunShellScript  --scripts 'echo "$@"' --parameters 'foo=bar' 'color=red' 'thing=car'

Вывод:

{
"value": [
{
  "code": "ProvisioningState/succeeded",
  "displayStatus": "Provisioning succeeded",
  "level": "Info",
  "message": "Enable succeeded: \n[stdout]\nbar red car\n\n[stderr]\n",
  "time": null
  }
 ]
}

Где проблема?Я не знаю, как ссылаться на значения.

Кажется, что они доступны во время выполнения в env:

`az vm  run-command invoke -g my-group --name my-vm  --command-id RunShellScript  --scripts 'env | grep -E "foo|color|thing"' --parameters 'foo=bar' 'color=red' 'thing=car'

Вывод:

{
"value": [
{
  "code": "ProvisioningState/succeeded",
  "displayStatus": "Provisioning succeeded",
  "level": "Info",
  "message": "Enable succeeded: \n[stdout]\nfoo=bar\nthing=car\ncolor=red\n\n[stderr]\n",
  "time": null
  }
 ]
}

Если я хочу использоватьчто-то вроде этого:

az vm  run-command invoke -g my-group --name my-vm  --command-id RunShellScript  --scripts "for i ; do echo ${i} >> vars.file; done" --parameters 'foo=bar' 'color=red' 'thing=car'

и затем используйте:

source vars.file

Теперь это будет работать, потому что параметры анализируются как ключ и значение, и только значения перенаправляются в vars.file

Конечно, я могу сделать что-то вроде этого:

az vm  run-command invoke -g my-group --name my-vm  --command-id RunShellScript  --scripts 'env | grep -E "EXPORTED_"' --parameters 'EXPORTER_foo=bar' 'EXPORTED_color=red' 'EXPORTED_thing=car'

, но это слишком сложное и грязное решение.

Спасибо

1 Ответ

0 голосов
/ 09 октября 2018

Для команды az vm run-command invoke результат, который вы опубликовали, является правильным и он просто отображается в виде строки.Так что у него нет читабельности.Но вы поймете результат, если запустите его на портале Azure.

enter image description here

И вы можете сослаться на ссылку, которую я разместил, чтобы отформатировать параметры, которые выхочу поставить в команду.И если вы просто хотите показать результат команды, вы можете добавить параметр --query value[*].message или --query value[0].message.

Обновить

Команда Azure CLI можетпросто выполните простую команду bash с предоставленными простыми параметрами.Существуют последовательные способы запуска скриптов в Linux VM .Вы можете выбрать один из них, чем Azure CLI.

...