ресурс azure_virtual_machine
Используйте ресурс аудита Chef InSpec azure_virtual_machine, чтобы убедиться, что виртуальная машина была правильно провизионирована.
Доступность
Установка
Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.
Версия
Этот ресурс стал доступен в версии v2.0.16 InSpec.
Синтаксис
Для этого ресурса требуется имя машины и группа ресурсов в качестве свойств.
describe azure_virtual_machine(group_name: 'MyResourceGroup', name: 'MyVM') do
its('property') { should eq 'value' }
end
где
-
MyVm— имя виртуальной машины в Azure; это не имя хоста машины -
MyResourceGroup— имя группы ресурсов машины -
property— одно из свойств ресурса -
value— ожидаемый результат от соответствия
Примеры
В следующих примерах показано, как использовать этот ресурс аудита Chef InSpec.
Проверка размера первого диска данных
describe azure_virtual_machine_data_disk(group_name: 'InSpec-Azure', name: 'Linux-Internal-VM').where(number: 1) do
its('size') { should cmp >= 15 }
end
Параметры
group_namenameapiversion
Ниже приведены параметры, которые можно передать в ресурс.
group_name (обязательно)
Используйте этот параметр для определения группы Azure Resource, которую необходимо проверить.
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
Эти параметры также можно задать с помощью переменных среды:
AZURE_RESOURCE_GROUP_NAMEAZURE_RESOURCE_NAMEAZURE_RESOURCE_API_VERSION
Если параметры заданы, а также переменные среды, приоритет имеют переменные среды.
Свойства
-
type,location,name,publisher,offer,sku,os_type,os_disk_name,have_managed_osdisk,caching,create_option,disk_size_gb,have_data_disks,data_disk_count,storage_account_type,vm_size,computer_name,admin_username,have_nics,nic_count,connected_nics,have_password_authentication,password_authentication?,have_custom_data,custom_data?,have_ssh_keys,ssh_keys?,ssh_key_count,ssh_keys,have_boot_diagnostics,boot_diagnostics_storage_uri
Примеры свойств
Этот ресурс аудита Chef InSpec имеет следующие свойства, которые можно проверить:
тип
Тип Azure ресурса. Для виртуальной машины это всегда вернет Microsoft.Compute/virtualMachines
its('type') { should cmp 'Microsoft.Compute/virtualMachines' }
местоположение
Местоположение машины
its('location') { should eq 'westeurope' }
имя
Имя виртуальной машины в Azure. Имейте в виду, что это не имя компьютера или имя хоста, а имя машины, видимое в Azure Portal.
its('name') { should cmp 'InSpec-Azure' }
разработчик
Разработчик образа сборки этой машины.
nil если машина была создана из пользовательского образа.
its('publisher') { should cmp 'MicrosoftWindowsServer' }
предложение
Предложение от разработчика образа сборки.
nil если машина была создана из пользовательского образа.
its('offer') { should cmp 'WindowsServer' }
sku
Элемент от разработчика, который использовался для создания образа.
nil если машина была создана из пользовательского образа.
its('sku') { should cmp '2016-Datacenter' }
тип_os
Тестирование, которое возвращает классификацию в Azure типа операционной системы. Обычно это Linux или Windows.
its('os_type') { should cmp 'Windows' }
имя_диска_os
Возвращает имя диска операционной системы, подключенного к машине.
its('os_disk_name') { should cmp 'Windows-Internal-OSDisk-MD' }
кеширование
Возвращает тип кеширования, установленного на диске операционной системы.
its('caching') { should cmp 'ReadWrite' }
вариант_создания
При создании диска операционной системы как оно было создано, устанавливается как свойство. Это свойство возвращает, как был создан диск.
its('create_option') { should cmp 'FromImage' }
размер_диска_gb
Возвращает размер диска операционной системы.
its('disk_size_gb') { should be >= 30 }
количество_дисков_данных
Возвращает количество дисков данных, подключенных к машине.
тип_учета_хранилища
Это предоставляет тип учетной записи хранилища для машины, использующей управляемые диски для диска операционной системы.
its('storage_account_type') { should cmp 'Standard_LRS' }
размер_vm
Размер машины в Azure
its('vm_size') { should eq 'Standard_DS2_v2' }
имя_компьютера
Имя машины. Это то, что было назначено машине во время развертывания, и то, что должно возвращаться командой hostname.
its('computer_name') { should cmp 'win-internal-1' }
имя_пользователя_админа
Имя пользователя администратора, назначенное машине
ПРИМЕЧАНИЕ: Azure не позволяет использовать Administrator в качестве имени пользователя администратора на машине Windows
its('admin_username') { should cmp 'azure' }
количество_сетевых_интерфейсов
Количество сетевых интерфейсных карт, подключенных к машине
its('nic_count') { should eq 1 }
подключенные_сетевые_интерфейсы
Это возвращает массив идентификаторов сетевых интерфейсов, подключенных к машине. Это означает, что можно проверить, что к машине подключены правильные сетевые интерфейсы, а следовательно, и правильный подсеть.
its('connected_nics') { should include /Inspec-NIC-1/ }
Обратите внимание на использование здесь регулярного выражения. Это связано с тем, что идентификатор сетевого интерфейса — это длинная строка, содержащая идентификатор подписки, группу ресурсов, идентификатор машины, а также другую информацию. Используя регулярное выражение, можно проверить сетевой интерфейс, не разделяя эту строку. Это также означает, что могут быть выполнены и другие тесты.
Пример строки идентификатора: /subscriptions/1e0b427a-d58b-494e-ae4f-ee558463ebbf/resourceGroups/Inspec-Azure/providers/Microsoft.Network/networkInterfaces/Inspec-NIC-1
аутентификация_по_паролю?
Булево значение, указывающее, включена ли аутентификация по паролю для пользователя администратора.
its('password_authentication?') { should be false }
Это относится только к машинам Linux и всегда возвращает true на Windows.
дополнительные_данные
Булево значение, указывающее, содержит ли машина дополнительные данные.
its('custom_data') { should be true }
ключи_ssh?
Булево значение, указывающее, доступна ли машина с помощью ключей SSH.
its('ssh_keys?') { should be true }
### количество_ключей_ssh
Возвращает количество ключей SSH, примененных к машине.
Это относится только к машинам Linux и всегда возвращает 0 на Windows.
its('ssh_key_count') { should eq '0' }
ключи_ssh
Возвращает массив ключей, назначенных машине. Это позволяет проверить, назначены ли правильные ключи.
Большинство общедоступных ключей SSH имеют подпись в конце, которую можно проверить. Например:
its('ssh_keys') { should include /azure@inspec.local/ }
boot_diagnostics_storage_uri
Если для машины включены диагностические данные запуска, они будут сохранены в учетной записи хранения. Этот метод возвращает URI для учетной записи хранения.
its('boot_diagnostics_storage_uri') { should match 'ghjgjhgjg' }
Сопоставители
Доступно несколько встроенных операторов сравнения для проверки результата с ожидаемым значением.
Для получения информации обо всех доступных операторах обратитесь к странице Справочник по соответствиям Chef InSpec.
boot_diagnostics?
Булево значение, проверяющее, включены ли диагностические данные запуска на машине.
it { should have_boot_diagnostics }
иметь_дополнительные_данные
Возвращает булево значение, указывающее, есть ли у машины дополнительные данные.
it { should have_custom_data }
иметь_диски_данных
Указывает, подключены ли к машине диски данных.
it { should have_data_disks }
иметь_управляемый_диск_os
Определите, является ли диск операционной системы управляемым диском или нет.
Этот тест можно использовать следующим образом:
it { should have_managed_osdisk }
иметь_сетевые_интерфейсы
Возвращает булево значение, указывающее, подключены ли к машине сетевые интерфейсы.
Это можно использовать следующим образом:
it { should have_nics }
иметь_аутентификацию_по_паролю
Возвращает булево значение, обозначающее, доступна ли машина с помощью пароля.
it { should have_password_authentication }
иметь_ключи_ssh
Булево значение, указывающее, назначены ли машине ключи SSH.
it { should have_ssh_keys }
Для машины Windows это всегда будет ложно.
Теги
Возможно проверить теги, назначенные ресурсу. Есть несколько свойств, которые можно вызвать для проверки наличия тегов, правильного количества тегов и правильности назначенных тегов.
иметь_теги
Это простой тест, чтобы увидеть, назначены ли машине теги или нет.
it { should have_tags }
количество_тегов
Возвращает количество тегов, назначенных ресурсу.
its ('tag_count') { should eq 2 }
теги
Можно проверить, установлен ли определенный тег на ресурсе.
its('tags') { should include 'Owner' }
xxx_тег
Для получения значения тега создано несколько тестов из заданных тегов.
Например, если на ресурсе задан следующий тег:
- владелец: J.G. Jingleheimerschmidt
Тогда доступен тест, называемый Owner_tag.
its('owner_tag') { should cmp 'J.G. Jingleheimerschmidt' }
Примечание: Имя тега чувствительно к регистру, что делает тест чувствительным к регистру. Например, owner_tag не равно Owner_tag.
Ссылки
© 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_virtual_machine/