Ресурс google_compute_instance
Синтаксис
Для проверки ресурса Google Instance используется google_compute_instance
Ресурс бета-версии
В этом ресурсе доступны поля бета-версии. Чтобы получить доступ к этим полям, включите beta: true в конструктор ресурса
Примеры
describe google_compute_instance(project: 'chef-gcp-inspec', zone: 'zone', name: 'inspec-instance') do
it { should exist }
its('machine_type') { should match 'n1-standard-1' }
its('tags.items') { should include 'foo' }
its('tags.items') { should include 'bar' }
its('tag_count') { should cmp 2 }
its('service_account_scopes') { should include 'https://www.googleapis.com/auth/compute.readonly' }
its('metadata_keys') { should include '123' }
its('metadata_values') { should include 'asdf' }
end
describe google_compute_instance(project: 'chef-gcp-inspec', zone: 'zone', name: 'nonexistent') do
it { should_not exist }
end
Проверка отсутствия экземпляра GCP compute
describe google_compute_instance(project: 'chef-inspec-gcp', zone: 'us-east1-b', name: 'inspec-test-vm-not-there') do
it { should_not exist }
end
Проверка, что экземпляр GCP compute находится в ожидаемом состоянии (изучить возможные состояния здесь)
describe google_compute_instance(project: 'chef-inspec-gcp', zone: 'us-east1-b', name: 'inspec-test-vm') do
its('status') { should eq 'RUNNING' }
end
Проверка, что экземпляр GCP compute имеет ожидаемый размер
describe google_compute_instance(project: 'chef-inspec-gcp', zone: 'us-east1-b', name: 'inspec-test-vm') do
its('machine_type') { should match "f1-micro" }
end
Проверка, что экземпляр GCP compute имеет ожидаемую платформу процессора
describe google_compute_instance(project: 'chef-inspec-gcp', zone: 'us-east1-b', name: 'inspec-test-vm') do
its('cpu_platform') { should match "Intel" }
end
Проверка, что экземпляр GCP compute имеет ожидаемое количество подключенных дисков
describe google_compute_instance(project: 'chef-inspec-gcp', zone: 'us-east1-b', name: 'inspec-test-vm') do
its('disk_count'){should eq 2}
end
Проверка, что экземпляр GCP compute имеет ожидаемое количество подключенных сетевых интерфейсов
describe google_compute_instance(project: 'chef-inspec-gcp', zone: 'us-east1-b', name: 'inspec-test-vm') do
its('network_interfaces_count'){should eq 1}
end
Проверка, что экземпляр GCP compute имеет ожидаемое количество тегов
describe google_compute_instance(project: 'chef-inspec-gcp', zone: 'us-east1-b', name: 'inspec-test-vm') do
its('tag_count'){should eq 1}
end
Проверка, что у экземпляра GCP compute есть один публичный IP-адрес
describe google_compute_instance(project: 'chef-inspec-gcp', zone: 'us-east1-b', name: 'inspec-test-vm') do
its('first_network_interface_nat_ip_exists'){ should be true }
its('first_network_interface_name'){ should eq "external-nat" }
its('first_network_interface_type'){ should eq "one_to_one_nat" }
end
Проверка наличия определенного ключа метки экземпляра compute
describe google_compute_instance(project: 'chef-inspec-gcp', zone: 'us-east1-b', name: 'inspec-test-vm') do
its('labels_keys') { should include 'my_favourite_label' }
end
Проверка, что значение метки определенного экземпляра compute соответствует регулярному выражению
describe google_compute_instance(project: 'chef-inspec-gcp', zone:'us-east1-b', name:'inspec-test-vm').label_value_by_key('business-area') do
it { should match '^(marketing|research)$' }
end
Проверка наличия определенного ключа метаданных экземпляра compute
describe google_compute_instance(project: 'chef-inspec-gcp', zone:'us-east1-b', name:'inspec-test-vm') do
its('metadata_keys') { should include 'patching-type' }
end
Проверка, что значение метаданных определенного экземпляра compute соответствует регулярному выражению
describe google_compute_instance(project: 'chef-inspec-gcp', zone:'us-east1-b', name:'inspec-test-vm').metadata_value_by_key('patching-window') do
it { should match '^\d{1}-\d{2}$' }
end
Свойства
Свойства, которые можно получить из ресурса google_compute_instance:
can_ip_forward- Разрешает данному экземпляру отправлять и получать пакеты с несовпадающими IP-адресами назначения или источника. Это необходимо, если вы планируете использовать этот экземпляр для перенаправления маршрутов.
cpu_platform- Платформа процессора, используемая этим экземпляром.
creation_timestamp- Отметка времени создания в формате RFC3339.
deletion_protection- Следует ли защищать ресурс от удаления.
disks- Массив дисков, связанных с экземплярами, созданными из этой шаблона.
auto_delete- Указывает, будет ли диск автоматически удален при удалении экземпляра (но не при отсоединении диска от экземпляра). Совет: диски должны быть настроены на autoDelete=true, чтобы не оставлять лишние диски после удаления машины.
boot- Указывает, что это загрузочный диск. Виртуальная машина будет использовать первый раздел диска для своей корневой файловой системы.
device_name- Указывает уникальное имя устройства по вашему выбору, которое отражается в дереве /dev/disk/by-id/google-* операционной системы Linux, работающей внутри экземпляра. Это имя может быть использовано для ссылки на устройство для монтирования, изменения размера и т.д. внутри экземпляра.
disk_encryption_key- Шифрует или расшифровывает диск с помощью предоставленного клиентом ключа шифрования.
raw_key- Указывает 256-битный ключ шифрования, предоставленный клиентом, закодированный в base64 RFC 4648 для шифрования или расшифрования этого ресурса.
rsa_encrypted_key- Указывает закодированный в base64 RFC 4648, упакованный RSA 2048-битный ключ шифрования, предоставленный клиентом, для шифрования или расшифрования этого ресурса.
sha256- Закодированный в base64 RFC 4648 SHA-256 хэш ключа шифрования, предоставленного клиентом, который защищает этот ресурс.
index- Назначает индекс, начинающийся с нуля, этому диску, где 0 зарезервирован для загрузочного диска. Например, если к экземпляру подключено много дисков, каждый диск будет иметь уникальный номер индекса. Если не указано, сервер выберет подходящее значение.
initialize_params- Указывает параметры для нового диска, который будет создан вместе с новым экземпляром. Используйте параметры инициализации для создания загрузочных дисков или локальных SSD-дисков, подключенных к новому экземпляру.
disk_name- Указывает имя диска. Если не указано, по умолчанию используется имя экземпляра.
disk_size_gb- Указывает размер диска в гигабайтах в двоичной системе.
disk_type- Ссылка на тип диска. Указывает тип диска, который следует использовать для создания экземпляра. Если не указано, по умолчанию используется pd-standard.
source_image- Исходный образ для создания этого диска. При создании нового экземпляра требуется один из initializeParams.sourceImage или disks.source. Для создания диска с одним из общедоступных образов операционных систем укажите имя образа по его семейству.
source_image_encryption_key- Ключ шифрования, предоставленный клиентом, исходного образа. Требуется, если исходный образ защищен ключом шифрования, предоставленным клиентом. Шаблоны экземпляров не хранят ключи шифрования, предоставленные клиентом, поэтому вы не можете создать диски для экземпляров в группе управляемых экземпляров, если исходные образы зашифрованы с помощью ваших собственных ключей.
raw_key- Указывает 256-битный ключ шифрования, предоставленный клиентом, закодированный в base64 RFC 4648 для шифрования или расшифрования этого ресурса.
sha256- Закодированный в base64 RFC 4648 SHA-256 хэш ключа шифрования, предоставленного клиентом, который защищает этот ресурс.
interface- Указывает интерфейс диска для подключения этого диска, который может быть SCSI или NVME. По умолчанию используется SCSI. Постоянные диски всегда должны использовать SCSI, и запрос завершится ошибкой, если вы попытаетесь подключить постоянный диск в любом другом формате, кроме SCSI.
Возможные значения:
- SCSI
- NVME
mode- Режим подключения этого диска, либо READ_WRITE, либо READ_ONLY. Если не указано, по умолчанию диск подключается в режиме READ_WRITE.
Возможные значения:
- READ_WRITE
- READ_ONLY
source- Ссылка на диск. При создании нового экземпляра требуется один из initializeParams.sourceImage или disks.source. Если необходимо, вы также можете подключить существующие постоянные диски, не являющиеся корневыми, используя это свойство. Это поле применимо только к постоянным дискам.
type- Указывает тип диска, либо SCRATCH, либо PERSISTENT. Если не указано, по умолчанию используется PERSISTENT.
Возможные значения:
- SCRATCH
- PERSISTENT
licenses- Любые применимые общедоступные лицензии.
guest_accelerators- Список типов и количества ускорительных карт, подключенных к экземпляру
accelerator_count: Количество гостевых ускорительных карт, доступных этому экземпляру.accelerator_type: Полный или частичный URL ресурса типа ускорителя, который нужно предоставить этому экземпляру. hostname- Имя хоста создаваемого экземпляра. Указанное имя хоста должно соответствовать RFC1035. Если имя хоста не указано, по умолчанию используется [INSTANCE_NAME].c.[PROJECT_ID].internal при использовании глобального DNS и [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal при использовании зонального DNS.
id- Уникальный идентификатор ресурса. Этот идентификатор определен сервером.
label_fingerprint- Отпечаток, используемый для оптимистической блокировки этого ресурса. Используется внутри при обновлениях.
labels- Метки для применения к этому экземпляру. Список пар ключ-значение.
metadata- Пары ключ-значение метаданных, которые следует назначить экземплярам, созданным из этого шаблона. Эти пары могут состоять из пользовательских метаданных или предопределенных ключей.
machine_type- Ссылка на тип машины, которая определяет тип ВМ.
min_cpu_platform- Указывает минимальную платформу процессора для экземпляра ВМ. Применимы дружественные имена платформ процессоров.
name- Имя ресурса, предоставленное клиентом при первоначальном создании ресурса. Имя ресурса должно быть длиной от 1 до 63 символов и соответствовать RFC1035. В частности, имя должно быть длиной от 1 до 63 символов и соответствовать регулярному выражению
[a-z]([-a-z0-9]*[a-z0-9])?, что означает, что первый символ должен быть строчной буквой, а все последующие символы должны быть дефисом, строчной буквой или цифрой, за исключением последнего символа, который не может быть дефисом. network_interfaces- Массив конфигураций для этого интерфейса. Это определяет, как этот интерфейс настроен для взаимодействия с другими сетевыми службами, например, для подключения к интернету. Только один сетевой интерфейс поддерживается на экземпляр.
access_configs: Массив конфигураций для этого интерфейса. В настоящее время поддерживается только один access config, ONE_TO_ONE_NAT. Если accessConfigs не указаны, то у этого экземпляра не будет внешнего доступа к интернету.`name` : The name of this access configuration. The default and recommended name is External NAT but you can use any arbitrary string you would like. For example, My external IP or Network Access. `nat_ip` : Reference to an address. An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance. `type` : The type of configuration. The default and only option is ONE_TO_ONE_NAT. Possible values: - ONE_TO_ONE_NAT `set_public_ptr` : Specifies whether a public DNS PTR record should be created to map the external IP address of the instance to a DNS domain name. `public_ptr_domain_name` : The DNS domain name for the public PTR record. You can set this field only if the setPublicPtr field is enabled. `network_tier` : This signifies the networking tier used for configuring this access configuration. If an AccessConfig is specified without a valid external IP address, an ephemeral IP will be created with this networkTier. If an AccessConfig with a valid external IP address is specified, it must match that of the networkTier associated with the Address resource owning that IP. Possible values: - PREMIUM - STANDARDalias_ip_ranges: Массив псевдонимов диапазонов IP-адресов для этого сетевого интерфейса. Может быть указан только для сетевых интерфейсов в сетях с подсетью.`ip_cidr_range` : The IP CIDR range represented by this alias IP range. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. This range may be a single IP address (e.g. 10.2.3.4), a netmask (e.g. /24) or a CIDR format string (e.g. 10.1.2.0/24). `subnetwork_range_name` : Optional subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range. If left unspecified, the primary range of the subnetwork will be used.name: Имя сетевого интерфейса, сгенерированное сервером. Для сетевых устройств это eth0, eth1 и т.д.network: Указывает имя существующей сети. При создании экземпляра, если сеть или подсеть не указаны, используется сеть по умолчанию global/networks/default; если сеть не указана, а подсеть указана, сеть определяется.network_ip: Внутренний IPv4 адрес сети для назначения экземпляру для этого сетевого интерфейса. Если пользователь не укажет, внутренний IP-адрес будет назначен системой.subnetwork: Ссылка на сеть VPC. Если сетевой ресурс находится в режиме legacy, не указывайте это свойство. Если сеть находится в режиме автоматической подсети, указание подсети является необязательным. Если сеть находится в режиме пользовательской подсети, это поле должно быть указано. scheduling- Устанавливает параметры планирования для этого экземпляра.
automatic_restart: Указывает, должен ли экземпляр автоматически перезапускаться, если он был завершен Compute Engine (не пользователем). Вы можете задать параметр автоматического перезапуска только для стандартных экземпляров. Предварительные экземпляры не могут быть автоматически перезапущены.on_host_maintenance: Определяет поведение обслуживания для этого экземпляра. Для стандартных экземпляров поведение по умолчанию - MIGRATE. Для предварительных экземпляров поведение по умолчанию и единственное возможное поведение - TERMINATE. Для получения дополнительной информации см. Настройка параметров планирования экземпляра.preemptible: Определяет, является ли экземпляр предварительным. Это может быть задано только при создании экземпляра, после создания экземпляра оно не может быть изменено. service_accounts- Список учетных записей сервиса со своими указанными областями, авторизованными для этого экземпляра. Только одна учетная запись сервиса поддерживается на одну ВМ.
email: Электронный адрес учетной записи сервиса.scopes: Список областей, которые должны быть доступны для этой учетной записи сервиса. shielded_instance_config- Настройка различных параметров, связанных со защищенными экземплярами.
enable_secure_boot: Определяет, включен ли в экземпляре Secure Boot.enable_vtpm: Определяет, включен ли в экземпляре vTPM.enable_integrity_monitoring: Определяет, включен ли в экземпляре мониторинг целостности. status- Состояние экземпляра. Одно из следующих значений: PROVISIONING, STAGING, RUNNING, STOPPING, SUSPENDING, SUSPENDED и TERMINATED. Как пользователь, используйте RUNNING для поддержания машины «включенной» и TERMINATED для выключения машины.
Возможные значения:
- PROVISIONING
- STAGING
- RUNNING
- STOPPING
- SUSPENDING
- SUSPENDED
- TERMINATED
status_message- Необязательное, удобочитаемое объяснение статуса.
tags- Список меток для применения к этому экземпляру. Метки используются для идентификации допустимых источников или целей для сетевых брандмауэров и задаются клиентом при создании экземпляра. Метки могут быть изменены позже методом setTags. Каждая метка в списке должна соответствовать RFC1035.
fingerprint- Указывает отпечаток для этого запроса, который представляет собой хэш содержимого метаданных и используется для оптимистической блокировки. Отпечаток изначально генерируется Compute Engine и изменяется после каждого запроса на изменение или обновление метаданных. Вы всегда должны указывать обновленный хэш отпечатка для обновления или изменения метаданных.
items- Массив меток. Каждая метка должна быть длиной от 1 до 63 символов и соответствовать RFC1035.
zone
- Ссылка на зону, где находится машина.
Разрешения GCP
Убедитесь, что для текущего проекта включен API Compute Engine.
© 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/google_compute_instance/