Ресурс azure_virtual_machine
Используйте ресурс аудита Chef InSpec, чтобы убедиться, что виртуальная машина была правильно развернута.
Доступность
Установка
Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.
Версия
Этот ресурс стал доступен в версии InSpec v2.0.16.
Синтаксис
Имя машины и группа ресурсов требуются как свойства ресурса.
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, которая должна быть проверена.
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.
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' }
тип_ос
Проверка, возвращающая классификацию типа операционной системы в Azure. Обычно либо Linux либо Windows.
its('os_type') { should cmp 'Windows' }
имя_диска_ос
Возвращает имя диска операционной системы, подключенного к машине.
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' }
размер_вм
Размер машины в 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_key_count
Возвращает количество ключей 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 Chef InSpec Matchers Reference.
boot_diagnostics?
Булево значение, указывающее, включены ли диагностические данные запуска для машины.
it { should have_boot_diagnostics }
have_custom_data
Возвращает булево значение, указывающее, назначены ли машине пользовательские данные.
it { should have_custom_data }
have_data_disks
Указывает, подключены ли к машине диски данных.
it { should have_data_disks }
have_managed_osdisk
Определяет, является ли диск операционной системы управляемым диском или нет.
Этот тест можно использовать следующим образом:
it { should have_managed_osdisk }
have_nics
Возвращает булево значение, указывающее, подключены ли к машине сетевые адаптеры.
Это можно использовать следующим образом:
it { should have_nics }
have_password_authentication
Возвращает булево значение, указывающее, доступна ли машина по паролю.
it { should have_password_authentication }
have_ssh_keys
Булево значение, указывающее, назначены ли машине ключи SSH.
it { should have_ssh_keys }
Для машины с Windows это значение всегда будет false.
Теги
Можно проверить теги, назначенные ресурсу. Доступно несколько свойств для проверки наличия тегов, их количества и соответствия заданным.
have_tags
Простая проверка наличия или отсутствия тегов у машины.
it { should have_tags }
tag_count
Возвращает количество тегов, назначенных ресурсу.
its ('tag_count') { should eq 2 }
теги
Можно проверить, установлен ли конкретный тег на ресурсе.
its('tags') { should include 'Owner' }
xxx_тег
Для получения значения тега создано несколько проверок на основе установленных тегов.
Например, если на ресурсе установлен следующий тег:
- owner: 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/