azurerm_virtual_machine ресурс
Используйте ресурс аудита 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_groupname
Примеры параметров
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
Атрибуты
idnamelocationpropertiesresourcestagstypezonesinstalled_extensions_typesinstalled_extensions_namesmonitoring_agent_installedos_disk_namedata_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/