azurerm_subnet ресурс
Используйте azurerm_subnet ресурс проверки InSpec для проверки свойств подсети заданной виртуальной сети.
Версия Azure REST API
Этот ресурс взаимодействует с версией 2018-02-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.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/