Ресурс azure_generic_resource
Предупреждение
inspec-azure, который предлагает богатые функциональные возможности и специфические ресурсы для многих распространённых случаев использования.Используйте ресурс аудита Chef InSpec azure_generic_resource для проверки любого допустимого ресурса Azure. Это очень полезно, если вам нужно проверить что-то, для чего у нас ещё нет специального ресурса Chef InSpec.
Доступность
Установка
Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.
Версия
Этот ресурс впервые стал доступен в версии InSpec v2.0.16.
Синтаксис
describe azure_generic_resource(group_name: 'MyResourceGroup', name: 'MyResource') do
its('property') { should eq 'value' }
end
где:
-
MyResourceGroup— это имя группы ресурсов, содержащей Azure-ресурс, который необходимо проверить -
MyResource— это имя ресурса, который нужно проверить -
propertyЭтот универсальный ресурс динамически создаёт свойства на лету, основываясь на типе целевого ресурса. -
value— ожидаемый результат выбранного свойства
Параметры
group_namenameapiversiontype
Вот параметры, которые можно передать ресурсу.
group_name (обязательно)
Используйте этот параметр для определения группы ресурсов Azure, которую необходимо проверить.
describe azure_virtual_machine_data_disk(group_name: 'InSpec-Azure') do
...
end
name
Используйте этот параметр для определения имени Azure-ресурса для проверки.
describe azure_virtual_machine_data_disk(group_name: 'InSpec-Azure', name: 'Windows-Internal-VM') do
...
end
apiversion
Версия API, которую нужно использовать при запросе ресурса. По умолчанию используется последняя версия для ресурса.
describe azure_virtual_machine_data_disk(group_name: 'InSpec-Azure', name: 'Windows-Internal-VM', apiversion: '2.0') do
...
end
type
Используйте этот параметр для определения типа ресурсов для проверки.
describe azure_virtual_machine_data_disk(group_name: 'InSpec-Azure', name: 'Windows-Internal-VM', apiversion: '2.0', type: 'Microsoft.Compute/virtualMachines') do
...
end
Эти параметры также можно задать с помощью переменных среды:
AZURE_RESOURCE_GROUP_NAMEAZURE_RESOURCE_NAMEAZURE_RESOURCE_TYPEAZURE_RESOURCE_API_VERSION
Если параметры заданы и в переменных среды, приоритет имеют переменные среды.
Пример параметров
describe azure_generic_resource(group_name: 'Inspec-Azure', name: 'Linux-Internal-VM', apiversion: '2.0') do
its('location') { should eq 'westeurope' }
end
Свойства
Свойства, которые можно проверить, полностью зависят от проверяемого Azure-ресурса. Это означает, что свойства различаются. Лучший способ узнать, какие свойства доступны — использовать портал Azure Resources, чтобы выбрать интересующий вас ресурс и посмотреть, что можно проверить.
Этот ресурс позволяет проверять любой допустимый Azure-ресурс. Цена за это — язык проверки каждого элемента не такой естественный, как у родного ресурса Chef InSpec.
Примеры свойств
Следующие примеры показывают, как использовать некоторые свойства проверки Chef InSpec:
Проверка местоположения виртуальной машины
its('location') { should cmp 'westeurope' }
Проверка наличия указанного префикса адреса
its('properties.addressSpace.addressPrefixes') { should include '10.1.1.0/24' }
Проверка, что виртуальная машина была создана с правильного диска
its('properties.creationData.createOption') { should eq 'FromImage' }
Проверка, что образ — Ubuntu
its('properties.creationData.imageReference.id') { should match 'Canonical' }
its('properties.creationData.imageReference.id') { should match 'UbuntuServer' }
its('properties.creationData.imageReference.id') { should match '16.04.0-LTS' }
Проверка размера диска
its('properties.diskSizeGB') { should be > 25 }
Проверка состояния диска
its('properties.diskState') { should cmp 'Attached' }
Проверка отсутствия пользовательских настроек DNS
its('properties.dnsSettings.dnsServers.count') { should eq 0 }
its('properties.dnsSettings.appliedDnsServers.count') { should eq 0 }
Проверка, что сетевой адаптер подключен к правильному устройству
its('properties.virtualMachine.id') { should match 'Linux-External-VM' }
Проверка включения служб blob и файловых сервисов
its('properties.encryption.services.blob.enabled') { should be true }
its('properties.encryption.services.file.enabled') { should be true }
its('properties.encryption.keySource') { should cmp 'Microsoft.Storage' }
Проверка профиля оборудования
its('properties.hardwareProfile.vmSize') { should cmp 'Standard_DS2_v2' }
Проверка сетевых адаптеров
its('properties.networkProfile.networkInterfaces.count') { should eq 1 }
Проверка аутентификации и типа ОС
its('properties.osProfile.computerName') { should eq 'linux-external-1' }
its('properties.osProfile.adminUsername') { should eq 'azure' }
its('properties.osProfile.linuxConfiguration.disablePasswordAuthentication') { should be true }
Проверка правильности установки тегов
it { should have_tags }
its('tag_count') { should be 1 }
its('tags') { should include 'Description' }
its('Description_tag') { should match 'Externally facing' }
Сопоставители
Этот ресурс аудита Chef InSpec имеет следующие специальные сопоставители. Полный список доступных сопоставителей см. на странице сопоставителей.
Ссылки
Более подробные примеры использования этого ресурса см. в интеграционных тестах.
Интеграционные тесты Chef InSpec для универсальных ресурсов Azure
© 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/azure_generic_resource/