azurerm_subnet ресурс
Используйте ресурс проверки InSpec azurerm_subnet для тестирования свойств подсети заданной виртуальной сети.
Версия Azure REST API
Этот ресурс взаимодействует с версией 2018-02-01 Azure API управления. Более подробную информацию можно найти в официальной документации Azure.
В настоящее время нет способа выбрать версию документации Azure API. Если вы обнаружите новую версию, упомянутую в официальной документации, откройте вопрос или отправьте запрос на включение обновленной версии.
Доступность
Установка
Этот ресурс доступен в inspec-azure пакете ресурсов. Для его использования добавьте следующее в свой inspec.yml в профиле верхнего уровня:
depends:
- name: inspec-azure
git: https://github.com/inspec/inspec-azure.git
Также вам необходимо настроить свои учетные данные Azure; см. README пакета ресурсов.
Версия
Этот ресурс стал доступен в версии 1.2.0 пакета ресурсов inspec-azure.
Синтаксис
Должны быть заданы параметры resource_group, виртуальной сети vnet, и имени подсети. Поскольку подсеть должна быть в контексте виртуальной сети, этот параметр был включён.
describe azurerm_subnet(resource_group: 'MyResourceGroup', vnet: 'MyVnetName', name: 'MySubnetName') do
...
end
Примеры
Убедиться, что подсеть существует для заданной виртуальной сети
describe azurerm_subnet(resource_group: 'MyResourceGroup', vnet: 'MyVnetName', name: 'MySubnetName') do
it { should exist }
end
Убедиться, что префикс адреса подсети настроен как ожидается
describe azurerm_subnet(resource_group: 'MyResourceGroup', vnet: 'MyVnetName', name: 'MySubnetName') do
its('address_prefix') { should eq [192.168.0.0/24] }
end
Убедиться, что подсеть подключена к правильной группе безопасности сети
describe azurerm_subnet(resource_group: 'MyResourceGroup', vnet: 'MyVnetName', name: 'MySubnetName') do
its('nsg') { should eq 'NetworkSecurityGroupName'}
end
Параметры
resource_groupvnetname
Примеры параметров
resource_group (обязательно)
Определяет группу ресурсов подсети, в которой вы хотите проверить её существование.
describe azurerm_subnet(resource_group: 'MyResourceGroup', vnet: 'MyVnetName', name: 'MySubnetName') do
...
end
vnet (обязательно)
Определяет виртуальную сеть, частью которой является подсеть, которую вы хотите проверить.
describe azurerm_subnet(resource_group: 'MyResourceGroup', vnet: 'MyVnetName', name: 'MySubnetName') do
...
end
name (обязательно)
Определяет имя подсети, которую вы хотите проверить.
describe azurerm_subnet(resource_group: 'MyResourceGroup', vnet: 'MyVnetName', name: 'MySubnetName') do
...
end
Атрибуты
idnametypeaddress_prefixnsg
id
Идентификатор подсети.
its('id') { should eq(id) }
Идентификатор будет в формате:
'/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/Inspec-Azure-mmclane/providers/Microsoft.Network/virtualNetworks/Inspec-VNet/subnets/Inspec-Subnet'
name
Имя подсети.
its('name') { should eq('MySubnetName') }
type
Тип ресурса виртуальной сети.
its('type') { should eq 'Microsoft.Network/virtualNetworks/subnets' }
address_prefix
Префикс адреса подсети.
its('address_prefix') { should eq "x.x.x.x/x" }
nsg
Группа безопасности сети, прикреплённая к подсети.
its('nsg') { should eq 'MyNetworkSecurityGroupName' }
Другие атрибуты
Есть дополнительные атрибуты, к которым можно получить доступ, которые мы не документировали. Пожалуйста, ознакомьтесь с документацией Azure. Любой атрибут в ответе можно получить, используя имена ключей, разделенные точками (.).
API может не всегда возвращать ключи, у которых нет связанных данных. Возможно, вложенная свойство глубоко в цепочке вызовов может не иметь нужного атрибута. Если вы пишете тесты на свойства, которые могут быть nil, создайте форк этого пакета ресурсов и добавьте обработчик к ресурсу. В этом обработчике вы сможете защититься от nil ключей. Запросы на включение всегда приветствуются.
Матчеры
Этот ресурс проверки InSpec имеет следующие специальные матчеры. Полный список доступных матчеров можно найти на нашей странице универсальных матчеров.
exists
# If a subnet is found it will exist
describe azurerm_subnet(resource_group: 'MyResourceGroup', vnet: 'MyVnetName', name: 'MySubnetName') do
it { should exist }
end
# subnets that aren't found will not exist
describe azurerm_subnet(resource_group: 'MyResourceGroup', vnet: 'MyVnetName', name: 'DoesNotExist') do
it { should_not exist }
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_subnet/