Spec-Zone.ru › Chef 17

azurerm_virtual_machine ресурс

[править на GitHub]

Используйте ресурс аудита azurerm_virtual_machine InSpec для проверки свойств, связанных с виртуальной машиной.

Версия Azure REST API

Этот ресурс взаимодействует с версией 2017-12-01 API управления Azure. Дополнительную информацию см. в официальной документации Azure.

В настоящее время, похоже, нет возможности выбрать версию документации Azure API. Если вы заметите упоминание новой версии в официальной документации, пожалуйста, создайте вопрос или отправьте исправление с обновленной версией.

Доступность

Установка

Этот ресурс доступен в inspec-azure пакете ресурсов. Для его использования добавьте следующее в ваш inspec.yml в вашем профиле верхнего уровня:

depends:
  - name: inspec-azure
    git: https://github.com/inspec/inspec-azure.git

Вам также потребуется настроить свои учетные данные Azure; см. README пакета ресурсов.

Версия

Этот ресурс стал доступен впервые в версии 1.0.0 пакета ресурсов inspec-azure.

Синтаксис

Имя resource_group и виртуальной машины name должны быть заданы в качестве параметров.

describe azurerm_virtual_machine(resource_group: 'MyResourceGroup', name: 'MyVmName') do
  ...
end

Примеры

Убедиться, что виртуальная машина имеет ожидаемые диски данных

describe azurerm_virtual_machine(resource_group: 'MyResourceGroup', name: 'MyVmName') do
  its('data_disks') { should include 'DataDisk1' }
  its('data_disks') { should include 'DataDisk2' }
end

Убедиться, что на виртуальной машине установлен ожидаемый агент мониторинга

describe azurerm_virtual_machine(resource_group: 'MyResourceGroup', name: 'MyVmName') do
  it { should have_monitoring_agent_installed }
end

Параметры

  • resource_group
  • name

Примеры параметров

resource_group (обязательно)

Определяет группу ресурсов, в которой находится виртуальная машина, которую вы хотите протестировать.

describe azurerm_virtual_machine(resource_group: 'MyResourceGroup', name: 'MyVmName') do
  ...
end

name (обязательно)

Определяет имя виртуальной машины, которую вы хотите протестировать.

describe azurerm_virtual_machine(resource_group: 'MyResourceGroup', name: 'MyVmName') do
  ...
end

Атрибуты

  • id
  • name
  • location
  • properties
  • resources
  • tags
  • type
  • zones
  • installed_extensions_types
  • installed_extensions_names
  • monitoring_agent_installed
  • os_disk_name
  • data_disk_names

id

Идентификатор виртуальной машины.

its('id') { should eq(id) }

Идентификатор будет в формате:

'/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/MyVirtualMachine'

name

Имя виртуальной машины.

its('name') { should eq('MyVmName') }

location

Расположение виртуальной машины.

its('location') { should eq('East US') }

метки

Метки виртуальной машины.

its('tags') { should eq({ 'key' => 'value' }) }

тип

Тип ресурса виртуальной машины.

its('type') { should eq('Microsoft.Compute/virtualMachines') }

зоны

Доступные зоны виртуальной машины.

its('zones') should include('zone1', 'zone2')

os_disk_name

Имя системного диска виртуальной машины.

its('os_disk_name') { should eq('OsDiskName') }

data_disk_names

Имена дисков данных виртуальной машины.

its('data_disk_names') { should include('DataDisk1') }

installed_extensions_types

Список типов всех установленных расширений для виртуальной машины.

its('installed_extensions_types') { should eq(['ExtensionType']) }

installed_extensions_names

Список имён всех установленных расширений для виртуальной машины.

its('installed_extensions_names') { should eq(['ExtensionName']) }

Другие атрибуты

Есть дополнительные атрибуты, к которым можно получить доступ, которые мы не задокументировали. Пожалуйста, ознакомьтесь с документацией Azure. Любой атрибут в ответе можно получить, используя имена ключей, разделенные точками (.).

API может не всегда возвращать ключи, для которых нет связанных данных. Может быть, что глубоко вложенное свойство не будет иметь требуемый атрибут по вашей цепочке вызовов. Если вы обнаружите, что пишете тесты для свойств, которые могут быть nil, создайте форк этого пакета ресурсов и добавьте к нему accessor. В этом accessor вы сможете защититься от nil ключей. Pull запросы всегда приветствуются.

Матчеры

Этот ресурс аудита InSpec имеет следующие специальные матчеры. Полный список доступных матчеров см. на нашей странице Универсальных матчеров.

exists

# If a virtual machine is found it will exist
describe azurerm_virtual_machine(resource_group: 'MyResourceGroup', name: 'MyVmName') do
  it { should exist }
end

# virtual machines that aren't found will not exist
describe azurerm_virtual_machine(resource_group: 'MyResourceGroup', name: 'DoesNotExist') do
  it { should_not exist }
end

have_only_approved_extensions

# Check if a virtual machine has only approved extensions. If an extension
# is used that's not in the list then the check will fail.
describe azurerm_virtual_machine(resource_group: 'MyResourceGroup', name: 'MyVmName') do
  it { should have_only_approved_extensions(['ApprovedExtension', 'OtherApprovedExtensions']) }
end

have_monitoring_agent_installed

# Will be true if the MicrosoftMonitoringAgent is installed (Windows only)
describe azurerm_virtual_machine(resource_group: 'MyResourceGroup', name: 'MyVmName') do
  it { should have_monitoring_agent_installed }
end

have_endpoint_protection_installed

# Will be true if any of the given extensions are installed.
describe azurerm_virtual_machine(resource_group: 'MyResourceGroup', name: 'MyVmName') do
  it { should have_endpoint_protection_installed(['Extension1', 'Extension2']) }
end

Разрешения Azure

Ваш Сервисный принцип должен быть настроен с ролью contributor на подписке, которую вы хотите протестировать.

© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/azurerm_virtual_machine/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API