Spec-Zone.ru › Chef 17

Ресурс aws_ec2_instances

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

Используйте ресурс аудита InSpec aws_ec2_instances для проверки свойств некоторых или всех экземпляров 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

Контроль пройдёт, если описание вернёт по крайней мере один результат. Имена полей, описанные в таблице свойств, должны использоваться для <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