Spec-Zone.ru › Chef 16

azurerm_virtual_machine ресурс

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

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

Версия Azure REST API

Этот ресурс взаимодействует с версией 2017-12-01 API Azure Management. Дополнительную информацию см. в официальной документации 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')

имя_диска_ОС

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

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

имена_дисков_данных

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

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

типы_установленных_расширений

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

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

имена_установленных_расширений

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

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

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

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

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

Сопоставители

В этом ресурсе 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

иметь_только_утвержденные_расширения

# 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

иметь_установленный_агент_мониторинга

# 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

иметь_установленную_защиту_от_уязвимостей

# 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