azure_resource_group ресурс
Используйте azure_resource_group_resource_count ресурс аудита Chef InSpec, чтобы проверить количество Azure-ресурсов в группе ресурсов.
Доступность
Установка
Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.
Версия
Этот ресурс стал доступен впервые в версии v2.0.16 InSpec.
Синтаксис
Имя группы ресурсов задаётся как параметр ресурса:
describe azure_resource_group(name: 'MyResourceGroup') do
its('property') { should eq 'value' }
end
где
-
MyResourceGroup— это имя группы ресурсов, которая проверяется -
property— это свойство ресурса -
value— ожидаемый результат от матчера
Примеры
Следующие примеры показывают, как использовать этот ресурс аудита Chef InSpec:
Убедитесь, что группа ресурсов имеет правильное количество ресурсов
describe azure_resource_group_resource_count(name: 'InSpec-Azure') do
its('total') { should eq 7}
end
Убедитесь, что группа ресурсов содержит правильные ресурсы
describe azure_resource_group_resource_count(name: 'InSpec-Azure') do
its('total') { should eq 7 }
its('vm_count') { should eq 2 }
its('nic_count') { should eq 2 }
its('public_ip_count') { should eq 1 }
its('sa_count') { should eq 1 }
its('vnet_count') { should eq 1 }
end
Параметры
group_namename
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
Если оба group_name и name установлены, то name имеет приоритет.
Эти параметры также можно задать, используя переменные среды:
AZURE_RESOURCE_GROUP_NAMEAZURE_RESOURCE_NAME
Когда параметры установлены, а также переменные среды, переменные среды имеют приоритет.
Пример параметра
describe azure_generic_resource(group_name: 'InSpec-Azure', name: 'Linux-Internal-VM') do
its('location') { should eq 'westeurope' }
end
Свойства
namelocationidprovisioning_statesubscription_idtotalnic_countvm_countextension_countvnet_countsa_countpublic_ip_countmanaged_disk_image_countmanaged_disk_counttag_count
name
Проверяет имя группы ресурсов.
its('name') { should cmp 'InSpec-Azure' }
location
Проверяет, где в Azure расположена группа ресурсов.
its('location') { should cmp 'westeurope' }
id
Проверяет полное квалифицированное ID группы ресурсов.
Это имеет формат: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>.
its('id') { should cmp 'FQDN' }
provisioning_state
Проверяет состояние подготовки группы ресурсов.
its('provisioning_state') { should cmp 'Succeeded' }
total
Проверяет общее количество ресурсов в группе ресурсов.
its('total') { should eq 13 }
nic_count
Проверяет количество сетевых адаптеров в группе ресурсов.
it { should have_nics }
its('nic_count') { should eq 3 }
vm_count
Проверяет количество виртуальных машин в группе ресурсов.
its('vm_count') { should eq 5 }
vnet_count
Проверяет количество виртуальных сетей в группе ресурсов.
its('vnet_count') { should eq 5 }
sa_count
Проверяет количество хранилищ в группе ресурсов.
its('sa_count') { should eq 5 }
public_ip_count
Проверяет количество общедоступных IP-адресов в группе ресурсов.
its('public_ip_count') { should eq 5 }
managed_disk_image_count
Проверяет количество образов управляемых дисков, которые находятся в группе ресурсов.
Управляемые диски создаются из образов дисков и затем подключаются к машинам. Как правило, образы создаются из базового образа или пользовательского образа (например, Packer).
its('managed_disk_image_count') { should eq 5 }
managed_disk_count
Проверяет количество управляемых дисков в группе ресурсов.
Если группа ресурсов содержит одну виртуальную машину с системным диском и 2 данными дисками, которые все являются управляемыми дисками, то счёт будет 3.
its('managed_disk_count') { should eq 3 }
Матчеры
Этот ресурс имеет ряд специальных матчеров, которые предоставляют простой способ проверить, существует ли конкретный тип Azure-ресурса в группе ресурсов.
Полный список доступных матчеров можно найти на нашей странице матчеров.
have_nics
Используйте этот матчер, чтобы проверить, существуют ли сетевые интерфейсы.
it { should have_nics }
have_vms
Используйте этот матчер, чтобы проверить, существуют ли виртуальные машины.
it { should have_vms }
have_extensions
Используйте этот матчер, чтобы проверить наличие расширений виртуальной машины.
it { should have_extensions }
have_nsgs
Используйте этот матчер, чтобы проверить, существуют ли группы безопасности сетей.
it { should have_nsgs }
have_vnets
Используйте этот матчер, чтобы проверить, существуют ли виртуальные сети.
it { should have_vnets }
have_managed_disks
Используйте этот матчер, чтобы проверить, существуют ли управляемые диски.
it { should have_managed_disks }
have_managed_disk_images
Используйте этот матчер, чтобы проверить, существуют ли образы управляемых дисков.
it { should have_managed_disk_images }
have_sas
Используйте этот матчер, чтобы проверить, существуют ли хранилища.
it { should have_sas }
have_public_ips
Используйте этот матчер, чтобы проверить, существуют ли общедоступные IP-адреса.
it { should have_public_ips }
Теги
Можно проверить теги, которые были назначены ресурсу. Есть некоторые свойства для проверки того, что у ресурса есть теги, что у него правильное количество тегов и что назначены правильные теги.
have_tags
Это простой тест, чтобы проверить, назначены ли теги машине или нет.
it { should have_tags }
tag_count
Возвращает количество тегов, назначенных ресурсу
its ('tag_count') { should eq 2 }
tags
Можно проверить, установлен ли конкретный тег на ресурсе.
its('tags') { should include 'owner' }
xxx_tag
Чтобы получить значение тега, создаются некоторые свойства из самих тегов.
Например, если следующий тег установлен на ресурсе:
- owner: JG Jinglehimerschmidt
Тогда доступно свойство Owner_tag.
its('owner_tag') { should cmp 'JG Jinglehimerschmidt' }
Примечание: Имя тега чувствительно к регистру, что делает тест чувствительным к регистру. Например, owner_tag не равно Owner_tag.
Ссылки
Дополнительную информацию о ресурсах Azure Ruby SDK можно найти по следующим ссылкам:
© 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_resource_group/