Spec-Zone.ru › Chef 16

aws_ec2_instances ресурс

[edit on GitHub]

Используйте ресурс аудита aws_ec2_instances InSpec для проверки свойств некоторых или всех экземпляров AWS EC2. Для аудита одного экземпляра EC2 используйте aws_ec2_instance (единственное число).

Синтаксис

Блок ресурса aws_ec2_instances собирает группу экземпляров EC2 и затем проверяет эту группу.

describe aws_ec2_instances
  it { should exist }
end

Параметры

Этот ресурс не ожидает параметров.

Свойства

Свойство Описание
instance_ids ID экземпляра EC2. Имя поля — instance_id.
names Значение тега Name, если он применён к экземпляру. Имя поля — name.
vpc_ids ВPC, с которым связан экземпляр EC2. Имя поля — vpc_id.
subnet_ids Подсеть, с которой связан экземпляр EC2. Имя поля — subnet_id.
instance_types Тип экземпляра, например m5.large. Имя поля — instance_type.
entries Предоставляет доступ к исходным результатам запроса, которые могут обрабатываться как массив хешей.
tags Хеш, где каждая пара ключ-значение соответствует тегу экземпляра EC2, например, {"Name"=>"Testing Box", "Environment"=>"Dev"}. Это свойство доступно в пакете ресурсов InSpec AWS версии 1.12.0 и выше. Имя поля — tags.
iam_profiles Профиль IAM, связанный с экземпляром. Свойство role ресурса aws_ec2_instance (единственное число) может использоваться для проверки прикреплённой роли IAM в профиле. Имя поля — iam_profile.

Примеры

Убедитесь, что у вас ровно 3 экземпляра

describe aws_ec2_instances do
  its('instance_ids.count') { should cmp 3 }
end

Используйте этот ресурс InSpec для запроса ID всех экземпляров EC2, а затем проведите глубокий тест с помощью aws_ec2_instance.

aws_ec2_instances.instance_ids.each do |instance_id|
  describe aws_ec2_instance(instance_id) do
    it              { should_not have_roles }
    its('key_name') { should cmp 'admin-ssh-key' }
    its('image_id') { should eq 'ami-27a58d5c' }
  end
end

Отфильтруйте экземпляры EC2 с тегами Environment * равными Dev, а затем проведите глубокий тест с помощью aws_ec2_instance.

aws_ec2_instances.where(tags: {"Environment" => "Dev"}).instance_ids.each do |id|
  describe aws_ec2_instance(id) do
    it { should be_stopped }
  end
end

*Обратите внимание, что фильтр не вернёт экземпляры EC2 с несколькими тегами. В этом случае используйте регулярное выражение: /{"Environment"=>"Dev"}/

Отфильтруйте экземпляры EC2 с тегом stop-at-10-pm независимо от его значения, а затем проведите глубокий тест с помощью aws_ec2_instance.

aws_ec2_instances.where(tags: /"stop-at-10-pm"=>/).instance_ids.each do |id|
  describe aws_ec2_instance(id) do
    it { should be_stopped }
  end
end

Отфильтруйте экземпляры EC2 с именем name равным Test Box, а затем проверьте их роль с помощью aws_ec2_instance.

aws_ec2_instances.where(name: "Test Box").instance_ids.each do |id|
  describe aws_ec2_instance(id) do
    its('role) { should eq "test-role" }
  end
end

Сопоставители

Полный список доступных сопоставителей см. на странице Универсальные сопоставители.

exist

Контроль пройдет, если describe вернёт по крайней мере один результат. Имена полей, описанные в таблице свойств, должны использоваться для <property> в where разделе.

Используйте should_not для проверки, что сущность не должна существовать.

describe aws_ec2_instances.where( <property>: <value>) do
  it { should exist }
end

describe aws_ec2_instances.where( <property>: <value>) do
  it { should_not exist }
end

Разрешения AWS

У вашего Принципала должны быть разрешены действия ec2:DescribeInstances, и iam:GetInstanceProfile.

Более подробную документацию можно найти по адресам Действия, ресурсы и ключи условий для Amazon EC2 и Действия, ресурсы и ключи условий для управления удостоверениями и доступом.

© 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/aws_ec2_instances/

Spec-Zone.ru

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