Установка и настройка Azure CLI описывается в посте Azure: установка Azure CLI.
Содержание
Подготовка
Подключаемся к аккаунту:
$ azure login
Проверяем доступные подписки:
$ azure account list info: Executing command account list data: Name Id Current State data: ---------- ------------------------------------ ------- ------- data: Free Trial 97214f99-1f75-4602-91ee-715556cd5906 true Enabled info: account list command OK
Для переключения между подписками — выполните:
$ azure account set 97214f99-1f75-4602-91ee-715556cd5906 true info: Executing command account set info: Setting subscription to "Free Trial" with id "97214f99-1f75-4602-91ee-715556cd5906". info: Changes saved info: account set command OK
Проверяем доступные локации:
$ azure vm location list info: Executing command vm location list + Getting locations data: Name data: -------------- data: East US data: Central US data: Southeast Asia data: Japan West info: vm location list command OK
По умолчанию — Azure CLI работает в режиме service management, тогда как нам потребуется resource group.
Переключаемся:
$ azure config mode arm info: New mode is arm
Что бы переключиться обратно в service management режим — выполните:
$ azure config mode asm info: New mode is asm
Дальнейшие действия должны выполняться в режиме arm
.
Получение подсказки
Как и во многих CLI — есть возможность получить помощь, проходя по «дереву» команд.
Например:
$ azure vm --help help: Commands to manage your virtual machines help: help: Create a virtual machine in a resource group help: vm create [options] <resource-group> <name> <location> <os-type>
И далее — по vm create
:
$ azure vm create --help help: Create a virtual machine in a resource group help: help: Usage: vm create [options] <resource-group> <name> <location> <os-type> help: help: Options: help: -h, --help output usage information help: -v, --verbose use verbose output
И, конечно, документация на сайте. Тут к MS никаких претензий.
Описание шаблонов и групп ресурсов
Большая часть приложений состоит из нескольких различных типов ресурсов (например — одна или несколько виртуальных машин, хранилищ данных, база данных SQL, виртуальная сеть и тому подобное).
Шаблоны Azure Resource Manager (arm
) позволяют деплоить и управлять этими ресурсами как единым объектом деплоя. Вместо того, что бы явно указывать Azure что необходимо деплоить, выполняя команду за командой — вы можете описать весь деплой в JSON-файле, после чего Azure выполнит деплой всех указанных в нем ресурсов единой группой.
Создание виртуальной машины с помощью quick-create
Что бы быстро создать виртуальную машину, не углубляясь в ее настройки — используйте команду azure vm quick-create
.
Сначала — создаем группу ресурсов:
$ azure group create RTFM westus info: Executing command group create + Getting resource group RTFM + Creating resource group RTFM info: Created resource group RTFM data: Id: /subscriptions/97214f99-1f75-4602-91ee-715556cd5906/resourceGroups/RTFM data: Name: RTFM data: Location: westus data: Provisioning State: Succeeded data: Tags: null data: info: group create command OK
Проверяем:
$ azure group list info: Executing command group list + Listing resource groups data: Name Location Provisioning State Tags: data: ----- ----------- ------------------ ----- data: Group eastus Succeeded null data: RTFM westus Succeeded null data: test1 northeurope Succeeded null data: WP-NE northeurope Succeeded null info: group list command OK
Ищем подходящий образ.
Мы будем запускать виртуальную машину с Ubuntu.
Находим «издателя» в локации westus:
$ azure vm image list-publishers westus info: Executing command vm image list-publishers + Getting virtual machine and/or extension image publishers (Location: "westus") data: Publisher Location data: ---------------------------------------------------- -------- data: 4psa westus ... data: Canonical westus ...
Теперь, зная издателя — находим ОС:
$ azure vm image list-offers westus Canonical info: Executing command vm image list-offers + Getting virtual machine image offers (Publisher: "Canonical" Location:"westus") data: Publisher Offer Location data: --------- ----------------------- -------- data: Canonical Ubuntu15.04Snappy westus data: Canonical Ubuntu15.04SnappyDocker westus data: Canonical UbunturollingSnappy westus data: Canonical UbuntuServer westus info: vm image list-offers command OK
У нас есть локация — westus, издатель — Canonical, ОС — UbuntuServer.
Находим доступные версии:
$ azure vm image list-skus westus Canonical UbuntuServer info: Executing command vm image list-skus + Getting virtual machine image skus (Publisher:"Canonical" Offer:"UbuntuServer" Location:"westus") data: Publisher Offer sku Location data: --------- ------------ ----------------- -------- data: Canonical UbuntuServer 12.04.2-LTS westus ... data: Canonical UbuntuServer 15.10-beta westus data: Canonical UbuntuServer 15.10-DAILY westus data: Canonical UbuntuServer 16.04.0-DAILY-LTS westus info: vm image list-skus command OK
И последний шаг — получить т.н. Urn:
$ azure vm image list westus Canonical UbuntuServer 14.04.2-LTS info: Executing command vm image list + Getting virtual machine images (Publisher:"Canonical" Offer:"UbuntuServer" Sku: "14.04.2-LTS" Location:"westus") data: Publisher Offer Sku OS Version Location Urn data: --------- ------------ ----------- ----- --------------- -------- -------------------------------------------------- data: Canonical UbuntuServer 14.04.2-LTS Linux 14.04.201503090 westus Canonical:UbuntuServer:14.04.2-LTS:14.04.201503090 ... data: Canonical UbuntuServer 14.04.2-LTS Linux 14.04.201507060 westus Canonical:UbuntuServer:14.04.2-LTS:14.04.201507060 info: vm image list command OK
Теперь, имея Urn (например, возьмем Canonical:UbuntuServer:14.04.2-LTS:14.04.201507060) — можно создавать новую машину.
В случае ошибки вида:
error: The subscription must be registered to use namespace "Microsoft.Storage" [...]
Подключаем необходимых провайдеров.
Мне потребовалось подключить три:
$ azure provider register Microsoft.Storage $ azure provider register Microsoft.Network $ azure provider register Microsoft.Compute
При чем о том, что провайдер не активен — Azure CLI сообщает после того, как вы пять раз запустите vm quick-create
(поэтому — параметры лучше передавать в командной строке, что бы не вводить их каждый раз заново), и он упадет с ошибкой из-за отсутствующего провайдера.
Теперь — создаем саму машину.
Имейте ввиду, что пароль должен быть минимум 8 символов разного регистра и содержать минимум 1 спецсимвол. А имя — не должно содержать никаких символов подчеркивания и других нестандартных знаков — так как из него будет сформирована DNS-запись для нового хоста.
И опять-таки — об этом вы узнаете, когда vm quick-create
сфейлится.
Необходимые параметры можно указать вручную во время создания:
$ azure vm quick-create info: Executing command vm quick-create Resource group name: RTFM Virtual machine name: rtfm-example Location name: westus Operating system Type [Windows, Linux]: Linux ImageURN (format: "publisherName:offer:skus:version"): Canonical:UbuntuServer:14.04.2-LTS:14.04.201507060 User name: setevoy Password: ********* Confirm password: ********* ...
Либо передать все в параметрах:
$ azure vm quick-create -g RTFM -n rtfm-example -l westus -y Linux -Q Canonical:UbuntuServer:14.04.2-LTS:14.04.201507060 -u setevoy -p P@ssword1 info: Executing command vm quick-create + Looking up the VM "rtfm-example" info: Using the VM Size "Standard_D1" info: The [OS, Data] Disk or image configuration requires storage account + Retrieving storage accounts info: Using the storage account "clia76d815175d27d9814514" in "westus" + Looking up the NIC "rtfm--westu-1451489821984-nic" info: An nic with given name "rtfm--westu-1451489821984-nic" not found, creating a new one + Looking up the virtual network "rtfm--westu-1451489821984-vnet" info: Preparing to create new virtual network and subnet + Creating a new virtual network "rtfm--westu-1451489821984-vnet" [address prefix: "10.0.0.0/16"] with subnet "rtfm--westu-1451489821984-snet" [address prefix: "10.0.1.0/24"] + Looking up the virtual network "rtfm--westu-1451489821984-vnet" + Looking up the subnet "rtfm--westu-1451489821984-snet" under the virtual network "rtfm--westu-1451489821984-vnet" info: Found public ip parameters, trying to setup PublicIP profile + Looking up the public ip "rtfm--westu-1451489821984-pip" info: PublicIP with given name "rtfm--westu-1451489821984-pip" not found, creating a new one + Creating public ip "rtfm--westu-1451489821984-pip" + Looking up the public ip "rtfm--westu-1451489821984-pip" + Creating NIC "rtfm--westu-1451489821984-nic" + Looking up the NIC "rtfm--westu-1451489821984-nic" + Creating VM "rtfm-example" + Looking up the VM "rtfm-example" + Looking up the NIC "rtfm--westu-1451489821984-nic" + Looking up the public ip "rtfm--westu-1451489821984-pip" data: Id :/subscriptions/97214f99-1f75-4602-91ee-715556cd5906/resourceGroups/RTFM/providers/Microsoft.Compute/virtualMachines/rtfm-example data: ProvisioningState :Succeeded data: Name :rtfm-example data: Location :westus data: FQDN :rtfm--westu-1451489821984-pip.westus.cloudapp.azure.com data: Type :Microsoft.Compute/virtualMachines data: data: Hardware Profile: data: Size :Standard_D1 data: data: Storage Profile: data: Image reference: data: Publisher :Canonical data: Offer :UbuntuServer data: Sku :14.04.2-LTS data: Version :14.04.201507060 data: data: OS Disk: data: OSType :Linux data: Name :cli8552da36493957f4-os-1451489823131 data: Caching :ReadWrite data: CreateOption :FromImage data: Vhd: data: Uri :https://clia76d815175d27d9814514.blob.core.windows.net/vhds/cli8552da36493957f4-os-1451489823131.vhd data: data: OS Profile: data: Computer Name :rtfm-example data: User Name :setevoy data: Linux Configuration: data: Disable Password Auth :false data: data: Network Profile: data: Network Interfaces: data: Network Interface #1: data: Id :/subscriptions/97214f99-1f75-4602-91ee-715556cd5906/resourceGroups/RTFM/providers/Microsoft.Network/networkInterfaces/rtfm--westu-1451489821984-nic data: Primary :true data: MAC Address :00-0D-3A-30-59-AF data: Provisioning State :Succeeded data: Name :rtfm--westu-1451489821984-nic data: Location :westus data: Private IP alloc-method :Dynamic data: Private IP address :10.0.1.4 data: Public IP address :40.112.143.2 data: FQDN :rtfm--westu-1451489821984-pip.westus.cloudapp.azure.com data: data: Diagnostics Profile: data: data: Diagnostics Instance View: info: vm quick-create command OK
Проверяем:
$ azure vm list RTFM info: Executing command vm list + Getting virtual machines data: ResourceGroupName Name ProvisioningState PowerState Location Size data: ----------------- ------------ ----------------- ---------- -------- ----------- data: RTFM rtfm-example Succeeded VM running westus Standard_D1 info: vm list command OK
Ссылки по теме
поиск образов:
https://azure.microsoft.com/en-us/documentation/articles/resource-groups-vm-searching
команды arm vs asm:
https://azure.microsoft.com/en-us/documentation/articles/xplat-cli-azure-manage-vm-asm-arm
оригинал документа: