Spec-Zone.ru › Chef 17

Ресурс google_compute_instance

[править на GitHub]

Синтаксис

Для проверки ресурса 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
  - STANDARD

alias_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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API